From: =?utf-8?b?T25kxZllaiBTdXLDvQ==?= <ondrej@sury.org>
Date: Mon, 21 Jul 2025 18:53:37 +0200
Subject: Add upstream tests to the package

---
 xdebug-3.4.5/contrib/branch-coverage-to-dot.php    | 118 ++++++++
 xdebug-3.4.5/contrib/online_profiling_prepend.php  | 167 +++++++++++
 xdebug-3.4.5/php_xdebug.stub.php                   | 235 ++++++++++++++++
 xdebug-3.4.5/tests/base/001.phpt                   |   8 +
 xdebug-3.4.5/tests/base/bug00001.phpt              |  20 ++
 xdebug-3.4.5/tests/base/bug00241.phpt              | 101 +++++++
 xdebug-3.4.5/tests/base/bug00419-sunos.phpt        |  13 +
 xdebug-3.4.5/tests/base/bug00419.phpt              |  13 +
 xdebug-3.4.5/tests/base/bug00538.inc               |  14 +
 xdebug-3.4.5/tests/base/bug00558-001.phpt          |  11 +
 xdebug-3.4.5/tests/base/bug00665.phpt              |  48 ++++
 xdebug-3.4.5/tests/base/bug00723.phpt              |  24 ++
 xdebug-3.4.5/tests/base/bug00787.phpt              |  15 +
 xdebug-3.4.5/tests/base/bug00801.phpt              |  49 ++++
 xdebug-3.4.5/tests/base/bug00823.phpt              |  11 +
 xdebug-3.4.5/tests/base/bug00913-php80.phpt        | 239 ++++++++++++++++
 xdebug-3.4.5/tests/base/bug00913-php81.phpt        |  33 +++
 xdebug-3.4.5/tests/base/bug00931.phpt              |  21 ++
 xdebug-3.4.5/tests/base/bug00978-002.phpt          |  17 ++
 xdebug-3.4.5/tests/base/bug00978.inc               |   9 +
 xdebug-3.4.5/tests/base/bug01048-002.phpt          |  17 ++
 xdebug-3.4.5/tests/base/bug01048.inc               |  12 +
 xdebug-3.4.5/tests/base/bug01088.phpt              |  82 ++++++
 xdebug-3.4.5/tests/base/bug01133.phpt              |  22 ++
 xdebug-3.4.5/tests/base/bug01148.phpt              |  10 +
 xdebug-3.4.5/tests/base/bug01266.phpt              |  19 ++
 xdebug-3.4.5/tests/base/bug01272-002.phpt          |  25 ++
 xdebug-3.4.5/tests/base/bug01272.inc               |  10 +
 xdebug-3.4.5/tests/base/bug01515-001.phpt          | Bin 0 -> 897 bytes
 xdebug-3.4.5/tests/base/bug01515.inc               |   7 +
 xdebug-3.4.5/tests/base/bug01556.phpt              |  16 ++
 xdebug-3.4.5/tests/base/bug01583.phpt              |  27 ++
 xdebug-3.4.5/tests/base/bug01629.phpt              |  26 ++
 xdebug-3.4.5/tests/base/bug01758.phpt              |  18 ++
 xdebug-3.4.5/tests/base/bug01790.phpt              |  47 ++++
 xdebug-3.4.5/tests/base/bug01907.phpt              |  32 +++
 xdebug-3.4.5/tests/base/bug02020.phpt              |  26 ++
 xdebug-3.4.5/tests/base/bug02034.phpt              |  11 +
 xdebug-3.4.5/tests/base/bug02036-php83.phpt        |  39 +++
 xdebug-3.4.5/tests/base/bug02036-php84.phpt        |  33 +++
 xdebug-3.4.5/tests/base/bug02100.phpt              |  27 ++
 xdebug-3.4.5/tests/base/bug02295.phpt              |  51 ++++
 xdebug-3.4.5/tests/base/bug02307-001.phpt          |  12 +
 xdebug-3.4.5/tests/base/bug02307-002.phpt          |  20 ++
 xdebug-3.4.5/tests/base/bug02307-003.inc           |   2 +
 xdebug-3.4.5/tests/base/bug02307-003.phpt          |  15 +
 xdebug-3.4.5/tests/base/bug02319.phpt              |  14 +
 xdebug-3.4.5/tests/base/bug02321-001.phpt          |  20 ++
 xdebug-3.4.5/tests/base/bug02321-002.phpt          |  20 ++
 xdebug-3.4.5/tests/base/bug02321-003.phpt          |  20 ++
 xdebug-3.4.5/tests/base/bug02321-004.phpt          |  20 ++
 .../tests/base/deprecated-setting-001.phpt         |  12 +
 .../tests/base/deprecated-setting-002.phpt         |  12 +
 .../tests/base/deprecated-setting-003.phpt         |  12 +
 xdebug-3.4.5/tests/base/filter-errors.phpt         |  23 ++
 .../tests/base/internal-function-calls.phpt        |  15 +
 xdebug-3.4.5/tests/base/peak_memory_usage.phpt     |  44 +++
 .../tests/coverage/670-ConsistentHashing.inc       | 220 +++++++++++++++
 xdebug-3.4.5/tests/coverage/bug00212-001.inc       |  11 +
 xdebug-3.4.5/tests/coverage/bug00212-001.phpt      |  27 ++
 xdebug-3.4.5/tests/coverage/bug00212-002.inc       |  10 +
 xdebug-3.4.5/tests/coverage/bug00212-002.phpt      |  27 ++
 xdebug-3.4.5/tests/coverage/bug00212-003.inc       |  11 +
 xdebug-3.4.5/tests/coverage/bug00212-003.phpt      |  26 ++
 xdebug-3.4.5/tests/coverage/bug00213-opcache.phpt  |  35 +++
 xdebug-3.4.5/tests/coverage/bug00213.inc           |  13 +
 xdebug-3.4.5/tests/coverage/bug00213.phpt          |  37 +++
 xdebug-3.4.5/tests/coverage/bug00313.inc           |   2 +
 xdebug-3.4.5/tests/coverage/bug00313.phpt          |  17 ++
 xdebug-3.4.5/tests/coverage/bug00318.inc           |   4 +
 xdebug-3.4.5/tests/coverage/bug00318.phpt          |  14 +
 .../tests/coverage/bug00334-noopcache.phpt         |  41 +++
 xdebug-3.4.5/tests/coverage/bug00334-opcache.phpt  |  39 +++
 xdebug-3.4.5/tests/coverage/bug00334.inc           |   8 +
 xdebug-3.4.5/tests/coverage/bug00422.inc           |  10 +
 xdebug-3.4.5/tests/coverage/bug00422.phpt          |  19 ++
 xdebug-3.4.5/tests/coverage/bug00470.inc           |  13 +
 xdebug-3.4.5/tests/coverage/bug00470.phpt          |  57 ++++
 xdebug-3.4.5/tests/coverage/bug00472.inc           | 121 ++++++++
 xdebug-3.4.5/tests/coverage/bug00472.phpt          | 172 ++++++++++++
 xdebug-3.4.5/tests/coverage/bug00515.inc           |  21 ++
 xdebug-3.4.5/tests/coverage/bug00515.phpt          |  50 ++++
 xdebug-3.4.5/tests/coverage/bug00535.phpt          |  35 +++
 xdebug-3.4.5/tests/coverage/bug00562.phpt          |  37 +++
 xdebug-3.4.5/tests/coverage/bug00651-001.phpt      |  58 ++++
 xdebug-3.4.5/tests/coverage/bug00651-002.phpt      |  58 ++++
 xdebug-3.4.5/tests/coverage/bug00651-003.phpt      |  58 ++++
 xdebug-3.4.5/tests/coverage/bug00670.phpt          |  12 +
 xdebug-3.4.5/tests/coverage/bug00697-php83.phpt    |  42 +++
 .../tests/coverage/bug00697-php84-noopcache.phpt   |  40 +++
 .../tests/coverage/bug00697-php84-opcache.phpt     |  40 +++
 xdebug-3.4.5/tests/coverage/bug00697.inc           |   9 +
 xdebug-3.4.5/tests/coverage/bug00703.inc           |  14 +
 xdebug-3.4.5/tests/coverage/bug00703.phpt          |  40 +++
 xdebug-3.4.5/tests/coverage/bug00757-001.phpt      |  40 +++
 .../tests/coverage/bug00757-002-noopcache.phpt     |  56 ++++
 .../tests/coverage/bug00757-002-opcache.phpt       |  54 ++++
 xdebug-3.4.5/tests/coverage/bug00766.inc           |  10 +
 xdebug-3.4.5/tests/coverage/bug00766.phpt          |  40 +++
 xdebug-3.4.5/tests/coverage/bug00879.inc           |   7 +
 xdebug-3.4.5/tests/coverage/bug00879.phpt          |  45 +++
 .../coverage/bug01034-001-noopcache-php828.phpt    |  59 ++++
 .../coverage/bug01034-001-noopcache-php829.phpt    |  59 ++++
 .../coverage/bug01034-001-opcache-php828.phpt      |  59 ++++
 .../coverage/bug01034-001-opcache-php829.phpt      |  59 ++++
 xdebug-3.4.5/tests/coverage/bug01034-001.inc       |  35 +++
 .../tests/coverage/bug01034-002-noopcache.phpt     |  32 +++
 xdebug-3.4.5/tests/coverage/bug01034-002.inc       |   6 +
 .../tests/coverage/bug01034-003-noopcache.phpt     |  65 +++++
 xdebug-3.4.5/tests/coverage/bug01034-003.inc       |  36 +++
 .../tests/coverage/bug01034-004-noopcache.phpt     |  52 ++++
 xdebug-3.4.5/tests/coverage/bug01034-004.inc       |  25 ++
 .../tests/coverage/bug01034-005-noopcache.phpt     |  51 ++++
 .../tests/coverage/bug01034-005-opcache.phpt       |  51 ++++
 xdebug-3.4.5/tests/coverage/bug01034-005.inc       |  18 ++
 xdebug-3.4.5/tests/coverage/bug01094-001.phpt      |  35 +++
 xdebug-3.4.5/tests/coverage/bug01094-002.phpt      |  39 +++
 xdebug-3.4.5/tests/coverage/bug01180.phpt          |  58 ++++
 xdebug-3.4.5/tests/coverage/bug01192.phpt          |  71 +++++
 xdebug-3.4.5/tests/coverage/bug01195.inc           |  12 +
 xdebug-3.4.5/tests/coverage/bug01195.phpt          |  42 +++
 xdebug-3.4.5/tests/coverage/bug01200.inc           |  16 ++
 xdebug-3.4.5/tests/coverage/bug01200.phpt          |  36 +++
 .../tests/coverage/bug01210-noopcache.phpt         |  58 ++++
 xdebug-3.4.5/tests/coverage/bug01210-opcache.phpt  |  58 ++++
 xdebug-3.4.5/tests/coverage/bug01210.inc           |  26 ++
 xdebug-3.4.5/tests/coverage/bug01241-001.phpt      |  53 ++++
 xdebug-3.4.5/tests/coverage/bug01241-002.inc       |  16 ++
 xdebug-3.4.5/tests/coverage/bug01241-002.phpt      |  58 ++++
 xdebug-3.4.5/tests/coverage/bug01241.inc           |  17 ++
 xdebug-3.4.5/tests/coverage/bug01258.phpt          |  66 +++++
 xdebug-3.4.5/tests/coverage/bug01263.inc           |  21 ++
 xdebug-3.4.5/tests/coverage/bug01263.phpt          |  24 ++
 .../tests/coverage/bug01270-noopcache.phpt         |  64 +++++
 xdebug-3.4.5/tests/coverage/bug01270-opcache.phpt  |  50 ++++
 xdebug-3.4.5/tests/coverage/bug01270.inc           |  34 +++
 xdebug-3.4.5/tests/coverage/bug01278.inc           |   8 +
 xdebug-3.4.5/tests/coverage/bug01278.phpt          |  24 ++
 xdebug-3.4.5/tests/coverage/bug01357.phpt          |  67 +++++
 xdebug-3.4.5/tests/coverage/bug01381.inc           |  22 ++
 xdebug-3.4.5/tests/coverage/bug01381.phpt          |  53 ++++
 xdebug-3.4.5/tests/coverage/bug01386-class1.inc    |  12 +
 xdebug-3.4.5/tests/coverage/bug01386-class2.inc    |  12 +
 .../tests/coverage/bug01386-noopcache.phpt         |  60 ++++
 xdebug-3.4.5/tests/coverage/bug01386-opcache.phpt  |  58 ++++
 xdebug-3.4.5/tests/coverage/bug01394.phpt          |  33 +++
 xdebug-3.4.5/tests/coverage/bug01403.inc           |  17 ++
 xdebug-3.4.5/tests/coverage/bug01403.phpt          |  28 ++
 .../tests/coverage/bug01420-noopcache.phpt         |  44 +++
 xdebug-3.4.5/tests/coverage/bug01420.inc           |  17 ++
 xdebug-3.4.5/tests/coverage/bug01429.phpt          |  21 ++
 xdebug-3.4.5/tests/coverage/bug01439.phpt          |  24 ++
 xdebug-3.4.5/tests/coverage/bug01446.inc           |  22 ++
 xdebug-3.4.5/tests/coverage/bug01446.phpt          |  40 +++
 .../tests/coverage/bug01486-001-noopcache.phpt     | 198 +++++++++++++
 .../tests/coverage/bug01486-001-php81-opcache.phpt | 197 +++++++++++++
 .../tests/coverage/bug01486-001-php82-opcache.phpt | 198 +++++++++++++
 xdebug-3.4.5/tests/coverage/bug01486-001.inc       |  45 +++
 .../tests/coverage/bug01486-002-noopcache.phpt     |  50 ++++
 xdebug-3.4.5/tests/coverage/bug01486-002.inc       |   9 +
 xdebug-3.4.5/tests/coverage/bug01502.inc           |  22 ++
 xdebug-3.4.5/tests/coverage/bug01502.phpt          |  32 +++
 .../tests/coverage/bug01509-noopcache.phpt         |  38 +++
 xdebug-3.4.5/tests/coverage/bug01509-opcache.phpt  |  34 +++
 xdebug-3.4.5/tests/coverage/bug01509.inc           |  24 ++
 .../tests/coverage/bug01530-noopcache.phpt         |  29 ++
 xdebug-3.4.5/tests/coverage/bug01530-opcache.phpt  |  27 ++
 xdebug-3.4.5/tests/coverage/bug01530.inc           |   8 +
 xdebug-3.4.5/tests/coverage/bug01571-php82.phpt    |  32 +++
 xdebug-3.4.5/tests/coverage/bug01571-php84.phpt    |  32 +++
 xdebug-3.4.5/tests/coverage/bug01679.inc           |  16 ++
 xdebug-3.4.5/tests/coverage/bug01679.phpt          |  28 ++
 xdebug-3.4.5/tests/coverage/bug01691.inc           |  26 ++
 xdebug-3.4.5/tests/coverage/bug01691.phpt          |  36 +++
 xdebug-3.4.5/tests/coverage/bug01713.inc           |  21 ++
 xdebug-3.4.5/tests/coverage/bug01713.phpt          |  23 ++
 xdebug-3.4.5/tests/coverage/bug01728.inc           |  21 ++
 xdebug-3.4.5/tests/coverage/bug01728.phpt          |  22 ++
 xdebug-3.4.5/tests/coverage/bug01733.inc           |  17 ++
 xdebug-3.4.5/tests/coverage/bug01733.phpt          |  28 ++
 xdebug-3.4.5/tests/coverage/bug01733a.inc          |   3 +
 xdebug-3.4.5/tests/coverage/bug01779.inc           |  21 ++
 xdebug-3.4.5/tests/coverage/bug01779.phpt          |  23 ++
 xdebug-3.4.5/tests/coverage/bug01787.inc           |   3 +
 xdebug-3.4.5/tests/coverage/bug01787.phpt          |  26 ++
 xdebug-3.4.5/tests/coverage/bug01788.phpt          |  32 +++
 xdebug-3.4.5/tests/coverage/bug01788a.inc          |   3 +
 xdebug-3.4.5/tests/coverage/bug01788b.inc          |   9 +
 xdebug-3.4.5/tests/coverage/bug01841-001.inc       |  15 +
 xdebug-3.4.5/tests/coverage/bug01841-001.phpt      |  33 +++
 xdebug-3.4.5/tests/coverage/bug01841-002.inc       |  15 +
 xdebug-3.4.5/tests/coverage/bug01841-002.phpt      |  33 +++
 xdebug-3.4.5/tests/coverage/bug01841-003.inc       |  17 ++
 xdebug-3.4.5/tests/coverage/bug01841-003.phpt      |  32 +++
 xdebug-3.4.5/tests/coverage/bug01841-004.inc       |  14 +
 xdebug-3.4.5/tests/coverage/bug01841-004.phpt      |  33 +++
 xdebug-3.4.5/tests/coverage/bug01841-005.inc       |  15 +
 xdebug-3.4.5/tests/coverage/bug01841-005.phpt      |  44 +++
 xdebug-3.4.5/tests/coverage/bug01851.inc           |  28 ++
 xdebug-3.4.5/tests/coverage/bug01851.phpt          |  30 ++
 xdebug-3.4.5/tests/coverage/bug01903-001.phpt      |  10 +
 xdebug-3.4.5/tests/coverage/bug01903-002.phpt      |  16 ++
 xdebug-3.4.5/tests/coverage/bug01910.inc           |  15 +
 xdebug-3.4.5/tests/coverage/bug01910.phpt          |  30 ++
 xdebug-3.4.5/tests/coverage/bug01922.inc           |  32 +++
 xdebug-3.4.5/tests/coverage/bug01922.phpt          |  32 +++
 xdebug-3.4.5/tests/coverage/bug01932.inc           |  30 ++
 xdebug-3.4.5/tests/coverage/bug01932.phpt          |  31 +++
 xdebug-3.4.5/tests/coverage/bug01938-Bar.inc       |  15 +
 xdebug-3.4.5/tests/coverage/bug01938-FooTrait.inc  |  13 +
 xdebug-3.4.5/tests/coverage/bug01938.phpt          |  49 ++++
 xdebug-3.4.5/tests/coverage/bug01992-filter.inc    |   3 +
 xdebug-3.4.5/tests/coverage/bug01992.phpt          |  15 +
 xdebug-3.4.5/tests/coverage/bug02009.phpt          |  13 +
 xdebug-3.4.5/tests/coverage/bug02075.inc           |  22 ++
 xdebug-3.4.5/tests/coverage/bug02075.phpt          |  31 +++
 xdebug-3.4.5/tests/coverage/bug02085.inc           |  16 ++
 xdebug-3.4.5/tests/coverage/bug02085.phpt          |  18 ++
 .../tests/coverage/bug02179-noopcache-php828.phpt  |  37 +++
 .../tests/coverage/bug02179-noopcache-php829.phpt  |  38 +++
 xdebug-3.4.5/tests/coverage/bug02179-opcache.phpt  |  35 +++
 xdebug-3.4.5/tests/coverage/bug02179.inc           |  28 ++
 xdebug-3.4.5/tests/coverage/bug02332.inc           |   9 +
 xdebug-3.4.5/tests/coverage/bug02332.phpt          |  33 +++
 .../coverage/coverage-filter-path-exclude-001.phpt |  62 +++++
 .../coverage/coverage-filter-path-include-001.phpt |  62 +++++
 xdebug-3.4.5/tests/coverage/coverage.inc           |  24 ++
 xdebug-3.4.5/tests/coverage/coverage.phpt          |  46 +++
 xdebug-3.4.5/tests/coverage/coverage2.phpt         |  50 ++++
 xdebug-3.4.5/tests/coverage/coverage3.phpt         |  52 ++++
 xdebug-3.4.5/tests/coverage/coverage4.inc          |  25 ++
 xdebug-3.4.5/tests/coverage/coverage4.phpt         |  38 +++
 xdebug-3.4.5/tests/coverage/coverage5-php828.phpt  |  51 ++++
 xdebug-3.4.5/tests/coverage/coverage5-php829.phpt  |  51 ++++
 xdebug-3.4.5/tests/coverage/coverage5.inc          |  10 +
 xdebug-3.4.5/tests/coverage/coverage6.inc          |  25 ++
 xdebug-3.4.5/tests/coverage/coverage6.phpt         |  76 +++++
 .../tests/coverage/coverage7-noopcache-php828.phpt |  80 ++++++
 .../tests/coverage/coverage7-noopcache-php829.phpt |  80 ++++++
 xdebug-3.4.5/tests/coverage/coverage7.inc          |  34 +++
 xdebug-3.4.5/tests/coverage/coverage_exit.inc      |  12 +
 xdebug-3.4.5/tests/coverage/coverage_exit.phpt     |  42 +++
 .../tests/coverage/dump-branch-coverage.inc        |  74 +++++
 xdebug-3.4.5/tests/coverage/jmp_frameless.inc      |   6 +
 xdebug-3.4.5/tests/coverage/jmp_frameless.phpt     |  32 +++
 .../coverage/xdebug_code_coverage_started.phpt     |  22 ++
 xdebug-3.4.5/tests/debugger/break-echo.inc         |   6 +
 xdebug-3.4.5/tests/debugger/break-with-error.inc   |   6 +
 xdebug-3.4.5/tests/debugger/bug00168.phpt          |  12 +
 xdebug-3.4.5/tests/debugger/bug00209.inc           |   8 +
 xdebug-3.4.5/tests/debugger/bug00209.phpt          |  10 +
 xdebug-3.4.5/tests/debugger/bug00421-001.phpt      |  48 ++++
 xdebug-3.4.5/tests/debugger/bug00421-002.phpt      |  46 +++
 xdebug-3.4.5/tests/debugger/bug00421.inc           |  32 +++
 xdebug-3.4.5/tests/debugger/bug00475.inc           |   4 +
 xdebug-3.4.5/tests/debugger/bug00475.phpt          |  45 +++
 xdebug-3.4.5/tests/debugger/bug00494-php80.phpt    |  40 +++
 xdebug-3.4.5/tests/debugger/bug00494-php81.phpt    |  40 +++
 xdebug-3.4.5/tests/debugger/bug00494.inc           |  18 ++
 xdebug-3.4.5/tests/debugger/bug00530.inc           |  21 ++
 xdebug-3.4.5/tests/debugger/bug00530.phpt          |  55 ++++
 xdebug-3.4.5/tests/debugger/bug00538.inc           |  14 +
 xdebug-3.4.5/tests/debugger/bug00538.phpt          |  45 +++
 xdebug-3.4.5/tests/debugger/bug00566-002.inc       |  19 ++
 xdebug-3.4.5/tests/debugger/bug00566-002.phpt      |  43 +++
 xdebug-3.4.5/tests/debugger/bug00606-002.inc       |  11 +
 xdebug-3.4.5/tests/debugger/bug00606-002.phpt      |  65 +++++
 xdebug-3.4.5/tests/debugger/bug00606.inc           |   6 +
 xdebug-3.4.5/tests/debugger/bug00606.phpt          |  40 +++
 xdebug-3.4.5/tests/debugger/bug00614-php80.phpt    |  60 ++++
 xdebug-3.4.5/tests/debugger/bug00614-php81.phpt    |  60 ++++
 xdebug-3.4.5/tests/debugger/bug00614.inc           |  63 +++++
 xdebug-3.4.5/tests/debugger/bug00619.inc           |  21 ++
 xdebug-3.4.5/tests/debugger/bug00619.phpt          |  55 ++++
 xdebug-3.4.5/tests/debugger/bug00622.inc           |  12 +
 xdebug-3.4.5/tests/debugger/bug00622.phpt          |  70 +++++
 xdebug-3.4.5/tests/debugger/bug00623.inc           |  27 ++
 xdebug-3.4.5/tests/debugger/bug00623.phpt          |  95 +++++++
 .../tests/debugger/bug00627-symlink-target.inc     |   6 +
 xdebug-3.4.5/tests/debugger/bug00627-symlink.inc   |   1 +
 xdebug-3.4.5/tests/debugger/bug00627.inc           |  10 +
 xdebug-3.4.5/tests/debugger/bug00627.phpt          |  47 ++++
 xdebug-3.4.5/tests/debugger/bug00667.inc           |  10 +
 xdebug-3.4.5/tests/debugger/bug00667.phpt          |  35 +++
 xdebug-3.4.5/tests/debugger/bug00678-001.inc       |   9 +
 xdebug-3.4.5/tests/debugger/bug00678-001.phpt      |  50 ++++
 xdebug-3.4.5/tests/debugger/bug00678-002.inc       |  10 +
 xdebug-3.4.5/tests/debugger/bug00678-002.phpt      |  45 +++
 xdebug-3.4.5/tests/debugger/bug00686.inc           |  13 +
 xdebug-3.4.5/tests/debugger/bug00686.phpt          |  50 ++++
 xdebug-3.4.5/tests/debugger/bug00687.inc           |   5 +
 xdebug-3.4.5/tests/debugger/bug00687.phpt          |  40 +++
 xdebug-3.4.5/tests/debugger/bug00688.inc           |   4 +
 xdebug-3.4.5/tests/debugger/bug00688.phpt          |  55 ++++
 xdebug-3.4.5/tests/debugger/bug00689.inc           |   6 +
 xdebug-3.4.5/tests/debugger/bug00689.phpt          |  60 ++++
 xdebug-3.4.5/tests/debugger/bug00763.inc           |   9 +
 xdebug-3.4.5/tests/debugger/bug00763.phpt          |  75 +++++
 xdebug-3.4.5/tests/debugger/bug00774.inc           |   5 +
 xdebug-3.4.5/tests/debugger/bug00774.phpt          |  45 +++
 xdebug-3.4.5/tests/debugger/bug00777.inc           |   8 +
 xdebug-3.4.5/tests/debugger/bug00777.phpt          |  45 +++
 xdebug-3.4.5/tests/debugger/bug00778.inc           |   9 +
 xdebug-3.4.5/tests/debugger/bug00778.phpt          |  55 ++++
 xdebug-3.4.5/tests/debugger/bug00790-001.inc       |  17 ++
 xdebug-3.4.5/tests/debugger/bug00790-001.phpt      |  49 ++++
 xdebug-3.4.5/tests/debugger/bug00790-002.inc       |  18 ++
 xdebug-3.4.5/tests/debugger/bug00790-002.phpt      |  43 +++
 xdebug-3.4.5/tests/debugger/bug00797.inc           |  19 ++
 xdebug-3.4.5/tests/debugger/bug00797.phpt          |  40 +++
 xdebug-3.4.5/tests/debugger/bug00806.inc           |   4 +
 xdebug-3.4.5/tests/debugger/bug00806.phpt          |  55 ++++
 xdebug-3.4.5/tests/debugger/bug00814.inc           |   2 +
 xdebug-3.4.5/tests/debugger/bug00814.phpt          |  65 +++++
 xdebug-3.4.5/tests/debugger/bug00815.inc           |   4 +
 xdebug-3.4.5/tests/debugger/bug00815.phpt          |  95 +++++++
 xdebug-3.4.5/tests/debugger/bug00838.inc           |  19 ++
 xdebug-3.4.5/tests/debugger/bug00838.phpt          |  35 +++
 xdebug-3.4.5/tests/debugger/bug00839.inc           |  42 +++
 xdebug-3.4.5/tests/debugger/bug00839.phpt          |  35 +++
 xdebug-3.4.5/tests/debugger/bug00840.inc           |  32 +++
 xdebug-3.4.5/tests/debugger/bug00840.phpt          |  35 +++
 xdebug-3.4.5/tests/debugger/bug00842-001.phpt      |  91 ++++++
 xdebug-3.4.5/tests/debugger/bug00842-002.phpt      |  60 ++++
 xdebug-3.4.5/tests/debugger/bug00842-003.phpt      |  30 ++
 xdebug-3.4.5/tests/debugger/bug00842-004.phpt      |  63 +++++
 xdebug-3.4.5/tests/debugger/bug00842.inc           |  22 ++
 xdebug-3.4.5/tests/debugger/bug00864.inc           |  14 +
 xdebug-3.4.5/tests/debugger/bug00864.phpt          |  50 ++++
 xdebug-3.4.5/tests/debugger/bug00886.inc           |   5 +
 xdebug-3.4.5/tests/debugger/bug00886.phar          | Bin 0 -> 6998 bytes
 xdebug-3.4.5/tests/debugger/bug00886.phpt          |  73 +++++
 xdebug-3.4.5/tests/debugger/bug00923.inc           |  13 +
 xdebug-3.4.5/tests/debugger/bug00923.phpt          |  45 +++
 xdebug-3.4.5/tests/debugger/bug00932.phpt          |  15 +
 xdebug-3.4.5/tests/debugger/bug00964-001.phpt      |  27 ++
 xdebug-3.4.5/tests/debugger/bug00964-002.phpt      |  27 ++
 xdebug-3.4.5/tests/debugger/bug00978-001.phpt      |  60 ++++
 xdebug-3.4.5/tests/debugger/bug00978.inc           |   9 +
 xdebug-3.4.5/tests/debugger/bug00979.inc           |   4 +
 xdebug-3.4.5/tests/debugger/bug00979.phpt          |  75 +++++
 xdebug-3.4.5/tests/debugger/bug00987-005.inc       |  17 ++
 xdebug-3.4.5/tests/debugger/bug00987-005.phpt      | 100 +++++++
 xdebug-3.4.5/tests/debugger/bug00990-001.inc       |   5 +
 xdebug-3.4.5/tests/debugger/bug00990-001.phpt      |  48 ++++
 xdebug-3.4.5/tests/debugger/bug00990-002.inc       |   4 +
 xdebug-3.4.5/tests/debugger/bug00990-002.phpt      |  48 ++++
 xdebug-3.4.5/tests/debugger/bug00990-003.inc       |   4 +
 xdebug-3.4.5/tests/debugger/bug00990-003.phpt      |  48 ++++
 xdebug-3.4.5/tests/debugger/bug00996-001.phpt      |  76 +++++
 xdebug-3.4.5/tests/debugger/bug00996-002.phpt      |  66 +++++
 xdebug-3.4.5/tests/debugger/bug00996.inc           |  16 ++
 xdebug-3.4.5/tests/debugger/bug00998-ipv4.phpt     |  17 ++
 .../tests/debugger/bug00998-ipv4_localhost.phpt    |  17 ++
 xdebug-3.4.5/tests/debugger/bug00998-ipv6.phpt     |  18 ++
 .../tests/debugger/bug00998-ipv6_localhost.phpt    |  19 ++
 xdebug-3.4.5/tests/debugger/bug00998.inc           |   0
 xdebug-3.4.5/tests/debugger/bug01007-index.inc     |   6 +
 .../tests/debugger/bug01007-simpleclass.inc        |  17 ++
 xdebug-3.4.5/tests/debugger/bug01007.phpt          |  48 ++++
 xdebug-3.4.5/tests/debugger/bug01025.inc           |   3 +
 xdebug-3.4.5/tests/debugger/bug01025.phpt          |  64 +++++
 xdebug-3.4.5/tests/debugger/bug01048-001.phpt      |  54 ++++
 xdebug-3.4.5/tests/debugger/bug01048.inc           |  12 +
 xdebug-3.4.5/tests/debugger/bug01059.inc           |   5 +
 xdebug-3.4.5/tests/debugger/bug01083.inc           |  25 ++
 xdebug-3.4.5/tests/debugger/bug01083.phpt          |  41 +++
 xdebug-3.4.5/tests/debugger/bug01084.inc           |  32 +++
 xdebug-3.4.5/tests/debugger/bug01084.phpt          |  55 ++++
 xdebug-3.4.5/tests/debugger/bug01101.inc           |   8 +
 xdebug-3.4.5/tests/debugger/bug01101.phpt          |  36 +++
 xdebug-3.4.5/tests/debugger/bug01104.inc           |   9 +
 xdebug-3.4.5/tests/debugger/bug01104.phpt          |  60 ++++
 xdebug-3.4.5/tests/debugger/bug01105-001.inc       |  19 ++
 xdebug-3.4.5/tests/debugger/bug01105-001.phpt      |  65 +++++
 xdebug-3.4.5/tests/debugger/bug01105-002.inc       |  21 ++
 xdebug-3.4.5/tests/debugger/bug01105-002.phpt      |  65 +++++
 xdebug-3.4.5/tests/debugger/bug01105-003.inc       |  22 ++
 xdebug-3.4.5/tests/debugger/bug01105-003.phpt      |  65 +++++
 xdebug-3.4.5/tests/debugger/bug01111-001.inc       |   8 +
 xdebug-3.4.5/tests/debugger/bug01111-001.phpt      |  40 +++
 xdebug-3.4.5/tests/debugger/bug01111-002.inc       |   9 +
 xdebug-3.4.5/tests/debugger/bug01111-002.phpt      |  45 +++
 xdebug-3.4.5/tests/debugger/bug01165.inc           |  16 ++
 xdebug-3.4.5/tests/debugger/bug01165.phpt          |  50 ++++
 xdebug-3.4.5/tests/debugger/bug01181.inc           |  23 ++
 xdebug-3.4.5/tests/debugger/bug01181.phpt          |  40 +++
 xdebug-3.4.5/tests/debugger/bug01202-001.phpt      |  50 ++++
 xdebug-3.4.5/tests/debugger/bug01202-002.phpt      |  55 ++++
 xdebug-3.4.5/tests/debugger/bug01202.inc           |  10 +
 xdebug-3.4.5/tests/debugger/bug01203-001.phpt      |  50 ++++
 xdebug-3.4.5/tests/debugger/bug01203-002.phpt      |  55 ++++
 xdebug-3.4.5/tests/debugger/bug01218-002.phpt      |  33 +++
 xdebug-3.4.5/tests/debugger/bug01218.inc           |  19 ++
 xdebug-3.4.5/tests/debugger/bug01223.inc           |  12 +
 xdebug-3.4.5/tests/debugger/bug01223.phpt          |  65 +++++
 xdebug-3.4.5/tests/debugger/bug01272-001.phpt      |  65 +++++
 xdebug-3.4.5/tests/debugger/bug01272.inc           |  10 +
 xdebug-3.4.5/tests/debugger/bug01305.inc           |  13 +
 xdebug-3.4.5/tests/debugger/bug01305.phpt          | 100 +++++++
 xdebug-3.4.5/tests/debugger/bug01312.inc           |  27 ++
 xdebug-3.4.5/tests/debugger/bug01312.phpt          |  65 +++++
 xdebug-3.4.5/tests/debugger/bug01335-php80.phpt    |  73 +++++
 xdebug-3.4.5/tests/debugger/bug01335-php81.phpt    |  73 +++++
 xdebug-3.4.5/tests/debugger/bug01335.inc           |  39 +++
 xdebug-3.4.5/tests/debugger/bug01385.inc           |  22 ++
 xdebug-3.4.5/tests/debugger/bug01385.phpt          |  45 +++
 xdebug-3.4.5/tests/debugger/bug01388-01.inc        |   9 +
 xdebug-3.4.5/tests/debugger/bug01388-01.phpt       |  60 ++++
 xdebug-3.4.5/tests/debugger/bug01388-02.inc        |  11 +
 xdebug-3.4.5/tests/debugger/bug01388-02.phpt       |  53 ++++
 xdebug-3.4.5/tests/debugger/bug01388-03.inc        |  24 ++
 xdebug-3.4.5/tests/debugger/bug01388-03.phpt       |  66 +++++
 xdebug-3.4.5/tests/debugger/bug01388-04.inc        |   6 +
 xdebug-3.4.5/tests/debugger/bug01388-04.phpt       |  48 ++++
 xdebug-3.4.5/tests/debugger/bug01388-05.inc        |   7 +
 xdebug-3.4.5/tests/debugger/bug01388-05.phpt       |  48 ++++
 xdebug-3.4.5/tests/debugger/bug01388-06.inc        |   5 +
 xdebug-3.4.5/tests/debugger/bug01388-06.phpt       |  48 ++++
 xdebug-3.4.5/tests/debugger/bug01388-07.inc        |   6 +
 xdebug-3.4.5/tests/debugger/bug01388-07.phpt       |  87 ++++++
 xdebug-3.4.5/tests/debugger/bug01388-08.phpt       |  67 +++++
 xdebug-3.4.5/tests/debugger/bug01388-08a.inc       |   5 +
 xdebug-3.4.5/tests/debugger/bug01388-08b.inc       |  16 ++
 xdebug-3.4.5/tests/debugger/bug01388-09.inc        |  11 +
 xdebug-3.4.5/tests/debugger/bug01388-09.phpt       |  68 +++++
 xdebug-3.4.5/tests/debugger/bug01388-10.inc        |  17 ++
 xdebug-3.4.5/tests/debugger/bug01388-10.phpt       |  73 +++++
 xdebug-3.4.5/tests/debugger/bug01388-11.phpt       |  53 ++++
 xdebug-3.4.5/tests/debugger/bug01388-12.inc        |  17 ++
 xdebug-3.4.5/tests/debugger/bug01388-12.phpt       |  48 ++++
 xdebug-3.4.5/tests/debugger/bug01388-13.inc        |  19 ++
 xdebug-3.4.5/tests/debugger/bug01388-13.phpt       |  56 ++++
 xdebug-3.4.5/tests/debugger/bug01388-14-index.inc  |   5 +
 .../tests/debugger/bug01388-14-simpleclass.inc     |  17 ++
 xdebug-3.4.5/tests/debugger/bug01388-14.phpt       |  59 ++++
 xdebug-3.4.5/tests/debugger/bug01388-15.inc        |  33 +++
 xdebug-3.4.5/tests/debugger/bug01388-15.phpt       |  91 ++++++
 xdebug-3.4.5/tests/debugger/bug01388-16.inc        |  32 +++
 xdebug-3.4.5/tests/debugger/bug01388-16.phpt       |  71 +++++
 xdebug-3.4.5/tests/debugger/bug01388-17.inc        |  25 ++
 xdebug-3.4.5/tests/debugger/bug01388-17.phpt       |  51 ++++
 xdebug-3.4.5/tests/debugger/bug01388-18.inc        |   6 +
 xdebug-3.4.5/tests/debugger/bug01388-18.phpt       |  53 ++++
 xdebug-3.4.5/tests/debugger/bug01388-19.inc        |   9 +
 xdebug-3.4.5/tests/debugger/bug01388-19.phpt       |  92 ++++++
 xdebug-3.4.5/tests/debugger/bug01388-20.inc        |   6 +
 xdebug-3.4.5/tests/debugger/bug01388-20.phpt       |  48 ++++
 xdebug-3.4.5/tests/debugger/bug01388-21.phpt       |  70 +++++
 xdebug-3.4.5/tests/debugger/bug01417.inc           |  13 +
 xdebug-3.4.5/tests/debugger/bug01417.phpt          |  45 +++
 xdebug-3.4.5/tests/debugger/bug01449.inc           |   7 +
 xdebug-3.4.5/tests/debugger/bug01449.phpt          |  51 ++++
 xdebug-3.4.5/tests/debugger/bug01488.inc           |   9 +
 xdebug-3.4.5/tests/debugger/bug01488.phpt          | 304 ++++++++++++++++++++
 xdebug-3.4.5/tests/debugger/bug01512.inc           |  22 ++
 xdebug-3.4.5/tests/debugger/bug01512.phpt          |  50 ++++
 xdebug-3.4.5/tests/debugger/bug01514.inc           |   6 +
 xdebug-3.4.5/tests/debugger/bug01514.phpt          |  50 ++++
 xdebug-3.4.5/tests/debugger/bug01515-002.phpt      |  60 ++++
 xdebug-3.4.5/tests/debugger/bug01515.inc           |   7 +
 xdebug-3.4.5/tests/debugger/bug01516.inc           |   9 +
 xdebug-3.4.5/tests/debugger/bug01516.phpt          |  70 +++++
 xdebug-3.4.5/tests/debugger/bug01520.inc           |  20 ++
 xdebug-3.4.5/tests/debugger/bug01520.phpt          |  80 ++++++
 xdebug-3.4.5/tests/debugger/bug01532.inc           |   1 +
 xdebug-3.4.5/tests/debugger/bug01532.phpt          |  43 +++
 xdebug-3.4.5/tests/debugger/bug01551.inc           |  11 +
 xdebug-3.4.5/tests/debugger/bug01551.phpt          |  70 +++++
 xdebug-3.4.5/tests/debugger/bug01568.inc           |  24 ++
 xdebug-3.4.5/tests/debugger/bug01568.phpt          |  75 +++++
 xdebug-3.4.5/tests/debugger/bug01586-php83.phpt    |  55 ++++
 xdebug-3.4.5/tests/debugger/bug01586-php84.phpt    |  55 ++++
 xdebug-3.4.5/tests/debugger/bug01586.inc           |  12 +
 xdebug-3.4.5/tests/debugger/bug01647.inc           |   4 +
 xdebug-3.4.5/tests/debugger/bug01647.phpt          |  35 +++
 xdebug-3.4.5/tests/debugger/bug01656.phpt          |  19 ++
 xdebug-3.4.5/tests/debugger/bug01660.phpt          |  54 ++++
 xdebug-3.4.5/tests/debugger/bug01662.inc           |  17 ++
 xdebug-3.4.5/tests/debugger/bug01662.phpt          |  40 +++
 xdebug-3.4.5/tests/debugger/bug01682-001.phpt      |  50 ++++
 xdebug-3.4.5/tests/debugger/bug01682-002.phpt      |  45 +++
 xdebug-3.4.5/tests/debugger/bug01682.inc           |   6 +
 xdebug-3.4.5/tests/debugger/bug01708.inc           |   9 +
 xdebug-3.4.5/tests/debugger/bug01708.phpt          |  40 +++
 xdebug-3.4.5/tests/debugger/bug01734.inc           |   6 +
 xdebug-3.4.5/tests/debugger/bug01734.phpt          |  36 +++
 xdebug-3.4.5/tests/debugger/bug01735.inc           |  14 +
 xdebug-3.4.5/tests/debugger/bug01735.phpt          |  71 +++++
 xdebug-3.4.5/tests/debugger/bug01753-PageIndex.inc |  12 +
 .../tests/debugger/bug01753-SkeletonPage.inc       |  12 +
 xdebug-3.4.5/tests/debugger/bug01753.inc           |   5 +
 xdebug-3.4.5/tests/debugger/bug01753.phpt          |  62 +++++
 xdebug-3.4.5/tests/debugger/bug01782.phpt          |  27 ++
 xdebug-3.4.5/tests/debugger/bug01901.phpt          |  16 ++
 xdebug-3.4.5/tests/debugger/bug01915.phpt          |  17 ++
 xdebug-3.4.5/tests/debugger/bug01931-001.inc       |   9 +
 xdebug-3.4.5/tests/debugger/bug01931-001.phpt      |  56 ++++
 xdebug-3.4.5/tests/debugger/bug01931-002.inc       |  13 +
 xdebug-3.4.5/tests/debugger/bug01931-002.phpt      |  76 +++++
 xdebug-3.4.5/tests/debugger/bug01931-003.inc       |  14 +
 xdebug-3.4.5/tests/debugger/bug01931-003.phpt      |  51 ++++
 xdebug-3.4.5/tests/debugger/bug01949.inc           |   7 +
 xdebug-3.4.5/tests/debugger/bug01949.phpt          |  55 ++++
 xdebug-3.4.5/tests/debugger/bug01978.phpt          |  89 ++++++
 xdebug-3.4.5/tests/debugger/bug01989.inc           |  19 ++
 xdebug-3.4.5/tests/debugger/bug01989.phpt          |  35 +++
 xdebug-3.4.5/tests/debugger/bug01993.inc           |   5 +
 xdebug-3.4.5/tests/debugger/bug01993.phpt          |  45 +++
 .../tests/debugger/bug01996-001-php81.phpt         |  60 ++++
 .../tests/debugger/bug01996-001-php82.phpt         |  60 ++++
 xdebug-3.4.5/tests/debugger/bug01996-001.inc       |  18 ++
 .../tests/debugger/bug01996-002-php81.phpt         |  60 ++++
 .../tests/debugger/bug01996-002-php82.phpt         |  60 ++++
 xdebug-3.4.5/tests/debugger/bug01996-002.inc       |  18 ++
 xdebug-3.4.5/tests/debugger/bug01998.inc           |  23 ++
 xdebug-3.4.5/tests/debugger/bug01998.phpt          |  51 ++++
 xdebug-3.4.5/tests/debugger/bug01999.inc           |  15 +
 xdebug-3.4.5/tests/debugger/bug01999.phpt          |  45 +++
 xdebug-3.4.5/tests/debugger/bug02006-001.phpt      |  50 ++++
 xdebug-3.4.5/tests/debugger/bug02006-002.phpt      |  50 ++++
 xdebug-3.4.5/tests/debugger/bug02006.inc           |  12 +
 xdebug-3.4.5/tests/debugger/bug02011-php81.phpt    |  45 +++
 xdebug-3.4.5/tests/debugger/bug02011-php82.phpt    |  50 ++++
 xdebug-3.4.5/tests/debugger/bug02011-php84.phpt    |  50 ++++
 xdebug-3.4.5/tests/debugger/bug02011.inc           |  14 +
 xdebug-3.4.5/tests/debugger/bug02025.inc           |  19 ++
 xdebug-3.4.5/tests/debugger/bug02025.phpt          |  35 +++
 xdebug-3.4.5/tests/debugger/bug02049.inc           |   8 +
 xdebug-3.4.5/tests/debugger/bug02049.phpt          | 100 +++++++
 xdebug-3.4.5/tests/debugger/bug02053.inc           |  23 ++
 xdebug-3.4.5/tests/debugger/bug02053.phpt          |  75 +++++
 xdebug-3.4.5/tests/debugger/bug02055.inc           |  19 ++
 xdebug-3.4.5/tests/debugger/bug02055.phpt          |  50 ++++
 xdebug-3.4.5/tests/debugger/bug02063.inc           |   4 +
 xdebug-3.4.5/tests/debugger/bug02063.phpt          |  55 ++++
 xdebug-3.4.5/tests/debugger/bug02083.inc           |   9 +
 xdebug-3.4.5/tests/debugger/bug02083.phpt          |  45 +++
 xdebug-3.4.5/tests/debugger/bug02090.inc           |  18 ++
 xdebug-3.4.5/tests/debugger/bug02090.phpt          |  70 +++++
 xdebug-3.4.5/tests/debugger/bug02094-php81.phpt    |  45 +++
 xdebug-3.4.5/tests/debugger/bug02094-php82.phpt    |  45 +++
 xdebug-3.4.5/tests/debugger/bug02094-php84.phpt    |  45 +++
 xdebug-3.4.5/tests/debugger/bug02094.inc           |  20 ++
 xdebug-3.4.5/tests/debugger/bug02098-001.inc       |   4 +
 xdebug-3.4.5/tests/debugger/bug02098-001.phpt      |  35 +++
 xdebug-3.4.5/tests/debugger/bug02098-002.inc       |  33 +++
 xdebug-3.4.5/tests/debugger/bug02098-002.phpt      |  75 +++++
 xdebug-3.4.5/tests/debugger/bug02101.inc           |  36 +++
 xdebug-3.4.5/tests/debugger/bug02101.phpt          |  50 ++++
 xdebug-3.4.5/tests/debugger/bug02113-001.inc       |  11 +
 xdebug-3.4.5/tests/debugger/bug02113-001.phpt      |  45 +++
 xdebug-3.4.5/tests/debugger/bug02113-002.inc       |  17 ++
 xdebug-3.4.5/tests/debugger/bug02113-002.phpt      |  65 +++++
 xdebug-3.4.5/tests/debugger/bug02121.inc           |   5 +
 xdebug-3.4.5/tests/debugger/bug02121.phpt          |  50 ++++
 xdebug-3.4.5/tests/debugger/bug02122.inc           |  27 ++
 xdebug-3.4.5/tests/debugger/bug02122.phpt          |  35 +++
 xdebug-3.4.5/tests/debugger/bug02123.inc           |   3 +
 xdebug-3.4.5/tests/debugger/bug02123.phpt          |  47 ++++
 xdebug-3.4.5/tests/debugger/bug02126.inc           |  13 +
 xdebug-3.4.5/tests/debugger/bug02126.phpt          |  70 +++++
 .../tests/debugger/bug02170-array-iterator.inc     |   4 +
 .../tests/debugger/bug02170-array-iterator.phpt    |  50 ++++
 .../tests/debugger/bug02172-spl-datastructures.inc |  15 +
 .../debugger/bug02172-spl-datastructures.phpt      |  75 +++++
 xdebug-3.4.5/tests/debugger/bug02180.inc           |  10 +
 xdebug-3.4.5/tests/debugger/bug02180.phpt          |  45 +++
 xdebug-3.4.5/tests/debugger/bug02211-php82.phpt    |  40 +++
 xdebug-3.4.5/tests/debugger/bug02211-php84.phpt    |  40 +++
 xdebug-3.4.5/tests/debugger/bug02211.inc           |   6 +
 xdebug-3.4.5/tests/debugger/bug02250.phpt          |  12 +
 xdebug-3.4.5/tests/debugger/bug02251.phpt          |  19 ++
 xdebug-3.4.5/tests/debugger/bug02261-001.phpt      |  42 +++
 xdebug-3.4.5/tests/debugger/bug02261-002.phpt      |  43 +++
 xdebug-3.4.5/tests/debugger/bug02305.phpt          |  12 +
 xdebug-3.4.5/tests/debugger/bug02314-001.inc       |  33 +++
 xdebug-3.4.5/tests/debugger/bug02314-001.phpt      |  55 ++++
 xdebug-3.4.5/tests/debugger/bug02314-002.inc       |  36 +++
 xdebug-3.4.5/tests/debugger/bug02314-002.phpt      |  50 ++++
 xdebug-3.4.5/tests/debugger/bug02322.phpt          |  32 +++
 xdebug-3.4.5/tests/debugger/bug02326-php83.phpt    |  81 ++++++
 xdebug-3.4.5/tests/debugger/bug02326-php84.phpt    |  81 ++++++
 xdebug-3.4.5/tests/debugger/bug02326.inc           |  19 ++
 xdebug-3.4.5/tests/debugger/bug02326.xml           |  34 +++
 xdebug-3.4.5/tests/debugger/bug02331.inc           |   4 +
 xdebug-3.4.5/tests/debugger/bug02331.phpt          |  45 +++
 xdebug-3.4.5/tests/debugger/bug02340.inc           |   5 +
 xdebug-3.4.5/tests/debugger/bug02340.phpt          |  51 ++++
 xdebug-3.4.5/tests/debugger/bug02343.inc           |  16 ++
 xdebug-3.4.5/tests/debugger/bug02343.phpt          |  65 +++++
 xdebug-3.4.5/tests/debugger/bug02348.inc           |  13 +
 xdebug-3.4.5/tests/debugger/bug02348.phpt          |  83 ++++++
 xdebug-3.4.5/tests/debugger/bug02356.inc           |  39 +++
 xdebug-3.4.5/tests/debugger/bug02356.phpt          |  55 ++++
 .../debugger/dbgp-breakpoint-call-function.inc     |  14 +
 .../debugger/dbgp-breakpoint-call-function.phpt    |  55 ++++
 .../tests/debugger/dbgp-breakpoint-call-method.inc |  21 ++
 .../debugger/dbgp-breakpoint-call-method.phpt      |  60 ++++
 .../tests/debugger/dbgp-breakpoint-error.inc       |  11 +
 .../tests/debugger/dbgp-breakpoint-error.phpt      |  50 ++++
 .../dbgp-breakpoint-line-with-condition.inc        |  10 +
 .../dbgp-breakpoint-line-with-condition.phpt       |  55 ++++
 .../tests/debugger/dbgp-breakpoint-line.inc        |   4 +
 .../tests/debugger/dbgp-breakpoint-line.phpt       |  45 +++
 .../dbgp-breakpoint-return-function-001.phpt       |  55 ++++
 .../dbgp-breakpoint-return-function-002.phpt       |  60 ++++
 .../dbgp-breakpoint-return-function-003.inc        |  28 ++
 .../dbgp-breakpoint-return-function-003.phpt       |  65 +++++
 .../dbgp-breakpoint-return-function-004.phpt       | 125 +++++++++
 .../dbgp-breakpoint-return-function-005.phpt       | 105 +++++++
 .../dbgp-breakpoint-return-function-006.inc        |  15 +
 .../dbgp-breakpoint-return-function-006.phpt       | 105 +++++++
 .../debugger/dbgp-breakpoint-return-method.phpt    |  60 ++++
 xdebug-3.4.5/tests/debugger/dbgp-context-get.inc   |   4 +
 xdebug-3.4.5/tests/debugger/dbgp-context-get.phpt  |  47 ++++
 .../debugger/dbgp-feature-breakpoint-details.phpt  |  40 +++
 xdebug-3.4.5/tests/debugger/dbgp-property-enum.inc |  24 ++
 .../tests/debugger/dbgp-property-enum.phpt         |  46 +++
 .../debugger/dbgp-property-get-constants.phpt      |  57 ++++
 .../tests/debugger/dbgp-property-value.inc         |   6 +
 .../tests/debugger/dbgp-property-value.phpt        |  65 +++++
 xdebug-3.4.5/tests/debugger/dbgp/dbgpclient.php    | 310 +++++++++++++++++++++
 xdebug-3.4.5/tests/debugger/empty-echo.inc         |   4 +
 xdebug-3.4.5/tests/debugger/fiber-001.inc          |  82 ++++++
 xdebug-3.4.5/tests/debugger/fiber-001.phpt         | 105 +++++++
 xdebug-3.4.5/tests/debugger/fiber-002.inc          |  30 ++
 .../tests/debugger/fiber-step-into-001.phpt        |  60 ++++
 .../tests/debugger/fiber-step-over-001.phpt        |  60 ++++
 .../tests/debugger/fiber-step-over-002.phpt        |  70 +++++
 xdebug-3.4.5/tests/debugger/remote_log-unix-2.phpt |  33 +++
 xdebug-3.4.5/tests/debugger/remote_log-unix.phpt   |  28 ++
 xdebug-3.4.5/tests/debugger/remote_log-win.phpt    |  34 +++
 xdebug-3.4.5/tests/debugger/remote_log1.phpt       |  28 ++
 xdebug-3.4.5/tests/debugger/remote_log2.phpt       |  30 ++
 xdebug-3.4.5/tests/debugger/remote_log3.phpt       |  32 +++
 xdebug-3.4.5/tests/debugger/remote_log4.phpt       |  34 +++
 xdebug-3.4.5/tests/debugger/remote_log5.phpt       |  24 ++
 xdebug-3.4.5/tests/debugger/spl-iterators.inc      | 117 ++++++++
 .../tests/debugger/start_ignore_0_env.phpt         |  41 +++
 .../tests/debugger/start_ignore_no_cookie.phpt     |  43 +++
 .../tests/debugger/start_ignore_no_env.phpt        |  41 +++
 .../tests/debugger/start_ignore_no_get.phpt        |  43 +++
 .../tests/debugger/start_ignore_no_post.phpt       |  43 +++
 .../tests/debugger/start_ignore_yes_cookie.phpt    |  32 +++
 .../tests/debugger/start_ignore_yes_env.phpt       |  33 +++
 .../tests/debugger/start_ignore_yes_get.phpt       |  32 +++
 .../tests/debugger/start_ignore_yes_post.phpt      |  32 +++
 .../start_upon_error_no_trigger_error.phpt         |  15 +
 .../debugger/start_upon_error_trigger_error.phpt   |  28 ++
 .../debugger/start_with_request_always_break.phpt  |  27 ++
 .../debugger/start_with_request_always_config.phpt |  33 +++
 .../debugger/start_with_request_always_no_env.phpt |  31 +++
 .../start_with_request_always_session.phpt         |  33 +++
 .../start_with_request_always_session_start.phpt   |  33 +++
 .../debugger/start_with_request_default_break.phpt |  27 ++
 ...t_with_request_default_break_session_start.phpt |  18 ++
 .../start_with_request_default_config.phpt         |  33 +++
 .../start_with_request_default_no_env.phpt         |  14 +
 .../start_with_request_default_session-001.phpt    |  33 +++
 .../start_with_request_default_session-002.phpt    |  33 +++
 ...art_with_request_default_session_start-001.phpt |  33 +++
 ...art_with_request_default_session_start-002.phpt |  33 +++
 .../debugger/start_with_request_never_break.phpt   |  15 +
 ...art_with_request_never_break_session_start.phpt |  17 ++
 .../debugger/start_with_request_never_config.phpt  |  17 ++
 .../debugger/start_with_request_never_no_env.phpt  |  15 +
 .../debugger/start_with_request_never_session.phpt |  17 ++
 .../start_with_request_never_session_start.phpt    |  17 ++
 .../debugger/start_with_request_trigger_break.phpt |  27 ++
 ...t_with_request_trigger_break_session_start.phpt |  17 ++
 .../start_with_request_trigger_config.phpt         |  33 +++
 .../start_with_request_trigger_match-001.phpt      |  34 +++
 .../start_with_request_trigger_match-002.phpt      |  17 ++
 .../start_with_request_trigger_match-003.phpt      |  35 +++
 .../start_with_request_trigger_match-004.phpt      |  35 +++
 .../start_with_request_trigger_match-005.phpt      |  35 +++
 .../start_with_request_trigger_match-006.phpt      |  35 +++
 .../start_with_request_trigger_match-007.phpt      |  35 +++
 .../start_with_request_trigger_match-008.phpt      |  35 +++
 .../start_with_request_trigger_match-009.phpt      |  42 +++
 .../start_with_request_trigger_match-010.phpt      |  43 +++
 .../start_with_request_trigger_no_env.phpt         |  15 +
 .../start_with_request_trigger_session-001.phpt    |  33 +++
 .../start_with_request_trigger_session-002.phpt    |  33 +++
 ...art_with_request_trigger_session_start-001.phpt |  33 +++
 ...art_with_request_trigger_session_start-002.phpt |  33 +++
 ...uest_trigger_session_start_and_session-001.phpt |  34 +++
 ...uest_trigger_session_start_and_session-002.phpt |  34 +++
 ...st_trigger_session_start_shared_secret-001.phpt |  40 +++
 .../tests/debugger/xdebug_connect_to_client.inc    |  15 +
 .../tests/debugger/xdebug_connect_to_client.phpt   |  61 ++++
 xdebug-3.4.5/tests/debugger/xdebug_notify-001.phpt |  49 ++++
 xdebug-3.4.5/tests/debugger/xdebug_notify-002.phpt |  10 +
 xdebug-3.4.5/tests/debugger/xdebug_notify-003.phpt |  35 +++
 xdebug-3.4.5/tests/debugger/xdebug_notify-004.phpt |  52 ++++
 xdebug-3.4.5/tests/debugger/xdebug_notify.inc      |   4 +
 .../tests/debugger/xdebug_notify_complex.inc       |  21 ++
 xdebug-3.4.5/tests/develop/backtrace-args.phpt     |  31 +++
 xdebug-3.4.5/tests/develop/backtrace-complex.phpt  |  54 ++++
 xdebug-3.4.5/tests/develop/backtrace-simple.phpt   |  28 ++
 xdebug-3.4.5/tests/develop/bug00022.phpt           |  52 ++++
 xdebug-3.4.5/tests/develop/bug00032.phpt           |  37 +++
 xdebug-3.4.5/tests/develop/bug00057.phpt           |  26 ++
 xdebug-3.4.5/tests/develop/bug00089.phpt           |  25 ++
 xdebug-3.4.5/tests/develop/bug00176.phpt           |  28 ++
 xdebug-3.4.5/tests/develop/bug00178.phpt           |  30 ++
 xdebug-3.4.5/tests/develop/bug00265.phpt           |  89 ++++++
 xdebug-3.4.5/tests/develop/bug00280.phpt           |  18 ++
 xdebug-3.4.5/tests/develop/bug00298.phpt           |  16 ++
 xdebug-3.4.5/tests/develop/bug00305.phpt           |  20 ++
 xdebug-3.4.5/tests/develop/bug00314-win.phpt       |  33 +++
 xdebug-3.4.5/tests/develop/bug00314.phpt           |  33 +++
 xdebug-3.4.5/tests/develop/bug00315.phpt           |  14 +
 xdebug-3.4.5/tests/develop/bug00328-php80.phpt     |  38 +++
 xdebug-3.4.5/tests/develop/bug00328-php81.phpt     |  38 +++
 xdebug-3.4.5/tests/develop/bug00340-001.phpt       |  38 +++
 xdebug-3.4.5/tests/develop/bug00340-002.phpt       |  38 +++
 xdebug-3.4.5/tests/develop/bug00389.phpt           |  44 +++
 xdebug-3.4.5/tests/develop/bug00391.phpt           |  45 +++
 xdebug-3.4.5/tests/develop/bug00450-001.phpt       |  48 ++++
 xdebug-3.4.5/tests/develop/bug00450-002.phpt       |  48 ++++
 xdebug-3.4.5/tests/develop/bug00450-003.phpt       |  50 ++++
 xdebug-3.4.5/tests/develop/bug00457-001.phpt       |  80 ++++++
 xdebug-3.4.5/tests/develop/bug00457-002.phpt       |  80 ++++++
 xdebug-3.4.5/tests/develop/bug00476-001.phpt       |  74 +++++
 xdebug-3.4.5/tests/develop/bug00476-002.phpt       |  74 +++++
 xdebug-3.4.5/tests/develop/bug00476-003.phpt       |  76 +++++
 xdebug-3.4.5/tests/develop/bug00476-004.phpt       | 101 +++++++
 xdebug-3.4.5/tests/develop/bug00538-002.phpt       |  66 +++++
 xdebug-3.4.5/tests/develop/bug00565.phpt           |  28 ++
 xdebug-3.4.5/tests/develop/bug00567-noopcache.phpt |  22 ++
 xdebug-3.4.5/tests/develop/bug00567-opcache.phpt   |  22 ++
 xdebug-3.4.5/tests/develop/bug00570.phpt           |  21 ++
 xdebug-3.4.5/tests/develop/bug00575.phpt           |  32 +++
 xdebug-3.4.5/tests/develop/bug00609.phpt           |  19 ++
 xdebug-3.4.5/tests/develop/bug00625-001.phpt       |  19 ++
 xdebug-3.4.5/tests/develop/bug00625-002.phpt       |  25 ++
 xdebug-3.4.5/tests/develop/bug00635.phpt           |  44 +++
 xdebug-3.4.5/tests/develop/bug00654.phpt           |  24 ++
 xdebug-3.4.5/tests/develop/bug00684.phpt           |  15 +
 xdebug-3.4.5/tests/develop/bug00709.phpt           |  15 +
 xdebug-3.4.5/tests/develop/bug00744.phpt           |  18 ++
 xdebug-3.4.5/tests/develop/bug00747.phpt           |  21 ++
 xdebug-3.4.5/tests/develop/bug00800.phpt           |  16 ++
 xdebug-3.4.5/tests/develop/bug00811.phpt           |  52 ++++
 xdebug-3.4.5/tests/develop/bug00885.phpt           |  15 +
 xdebug-3.4.5/tests/develop/bug00898.phpt           |  20 ++
 xdebug-3.4.5/tests/develop/bug00903.phpt           |  28 ++
 xdebug-3.4.5/tests/develop/bug00947-001.phpt       |  22 ++
 xdebug-3.4.5/tests/develop/bug00947-002.phpt       |  18 ++
 xdebug-3.4.5/tests/develop/bug00987-001.phpt       |  25 ++
 xdebug-3.4.5/tests/develop/bug00987-002.phpt       |  23 ++
 xdebug-3.4.5/tests/develop/bug00987-003.phpt       |  24 ++
 xdebug-3.4.5/tests/develop/bug00987-006.phpt       |  30 ++
 xdebug-3.4.5/tests/develop/bug01004-001.phpt       |  31 +++
 xdebug-3.4.5/tests/develop/bug01004-002.phpt       |  31 +++
 xdebug-3.4.5/tests/develop/bug01106.phpt           |  23 ++
 xdebug-3.4.5/tests/develop/bug01130.phpt           |  22 ++
 xdebug-3.4.5/tests/develop/bug01166.phpt           |  50 ++++
 xdebug-3.4.5/tests/develop/bug01174.phpt           |  12 +
 xdebug-3.4.5/tests/develop/bug01194.phpt           |  22 ++
 xdebug-3.4.5/tests/develop/bug01218-001.phpt       |  19 ++
 xdebug-3.4.5/tests/develop/bug01218.inc            |  19 ++
 xdebug-3.4.5/tests/develop/bug01245.phpt           |  26 ++
 xdebug-3.4.5/tests/develop/bug01247-opcache.phpt   |  55 ++++
 xdebug-3.4.5/tests/develop/bug01262.phpt           |  17 ++
 xdebug-3.4.5/tests/develop/bug01282-32bit.phpt     |  23 ++
 xdebug-3.4.5/tests/develop/bug01282-64bit.phpt     |  24 ++
 xdebug-3.4.5/tests/develop/bug01288.phpt           |  31 +++
 xdebug-3.4.5/tests/develop/bug01323-001.phpt       |  73 +++++
 xdebug-3.4.5/tests/develop/bug01343-32bit.phpt     |  26 ++
 xdebug-3.4.5/tests/develop/bug01343-64bit.phpt     |  26 ++
 xdebug-3.4.5/tests/develop/bug01501-001-32bit.phpt |  39 +++
 xdebug-3.4.5/tests/develop/bug01501-001-64bit.phpt |  39 +++
 xdebug-3.4.5/tests/develop/bug01501-002-32bit.phpt |  39 +++
 xdebug-3.4.5/tests/develop/bug01501-002-64bit.phpt |  40 +++
 xdebug-3.4.5/tests/develop/bug01501-003-32bit.phpt |  39 +++
 xdebug-3.4.5/tests/develop/bug01501-003-64bit.phpt |  39 +++
 xdebug-3.4.5/tests/develop/bug01534.phpt           |  24 ++
 xdebug-3.4.5/tests/develop/bug01562-noopcache.phpt | 168 +++++++++++
 xdebug-3.4.5/tests/develop/bug01562-opcache.phpt   | 164 +++++++++++
 xdebug-3.4.5/tests/develop/bug01613-001.phpt       |  22 ++
 xdebug-3.4.5/tests/develop/bug01613-002.phpt       |  26 ++
 xdebug-3.4.5/tests/develop/bug01665.phpt           |  20 ++
 xdebug-3.4.5/tests/develop/bug01837-002.phpt       |  63 +++++
 xdebug-3.4.5/tests/develop/bug01837-003.phpt       |  70 +++++
 .../tests/develop/bug01996-001-ansi-php81.phpt     |  94 +++++++
 .../tests/develop/bug01996-001-ansi-php82.phpt     |  94 +++++++
 .../tests/develop/bug01996-001-html-php81.phpt     |  73 +++++
 .../tests/develop/bug01996-001-html-php82.phpt     |  77 +++++
 .../tests/develop/bug01996-001-text-php81.phpt     |  93 +++++++
 .../tests/develop/bug01996-001-text-php82.phpt     |  93 +++++++
 .../tests/develop/bug01996-002-ansi-php81.phpt     |  93 +++++++
 .../tests/develop/bug01996-002-ansi-php82.phpt     |  93 +++++++
 .../tests/develop/bug01996-002-html-php81.phpt     |  73 +++++
 .../tests/develop/bug01996-002-html-php82.phpt     |  77 +++++
 .../tests/develop/bug01996-002-text-php81.phpt     |  93 +++++++
 .../tests/develop/bug01996-002-text-php82.phpt     |  93 +++++++
 xdebug-3.4.5/tests/develop/bug01999-ansi.phpt      |  35 +++
 xdebug-3.4.5/tests/develop/bug01999-html.phpt      |  33 +++
 xdebug-3.4.5/tests/develop/bug01999-text.phpt      |  34 +++
 xdebug-3.4.5/tests/develop/bug02041.phpt           |  32 +++
 xdebug-3.4.5/tests/develop/bug02104-001.phpt       |  40 +++
 xdebug-3.4.5/tests/develop/bug02104-002.phpt       |  22 ++
 xdebug-3.4.5/tests/develop/bug02121.phpt           |  33 +++
 xdebug-3.4.5/tests/develop/bug02182.phpt           |  25 ++
 xdebug-3.4.5/tests/develop/bug02186.phpt           |  38 +++
 .../tests/develop/bug02194-exception-warning.phpt  |  27 ++
 xdebug-3.4.5/tests/develop/bug02194-noopcache.phpt | 182 ++++++++++++
 .../develop/bug02195-exception-noopcache.phpt      | 185 ++++++++++++
 .../tests/develop/bug02195-exception-opcache.phpt  | 186 +++++++++++++
 xdebug-3.4.5/tests/develop/bug02208.phpt           |  64 +++++
 .../tests/develop/bug02226-exceptions.phpt         |  44 +++
 xdebug-3.4.5/tests/develop/bug02264.phpt           |  17 ++
 xdebug-3.4.5/tests/develop/bug02339-index.inc      |   6 +
 .../tests/develop/bug02339-second-file.inc         |   4 +
 xdebug-3.4.5/tests/develop/bug02339.phpt           |  17 ++
 xdebug-3.4.5/tests/develop/bug02352-php80.phpt     |  41 +++
 xdebug-3.4.5/tests/develop/bug02352-php81.phpt     |  40 +++
 xdebug-3.4.5/tests/develop/bug02352-php82.phpt     |  39 +++
 xdebug-3.4.5/tests/develop/bug02354.phpt           |  34 +++
 xdebug-3.4.5/tests/develop/dump-superglobal.phpt   |  48 ++++
 .../tests/develop/error_collection-001.phpt        |  20 ++
 .../tests/develop/error_collection-002.phpt        |  20 ++
 .../tests/develop/error_collection-003.phpt        |  36 +++
 xdebug-3.4.5/tests/develop/errorlog_variadic.phpt  |  39 +++
 xdebug-3.4.5/tests/develop/exception.phpt          |  22 ++
 .../tests/develop/force_display_errors.phpt        |  23 ++
 .../force_error_reporting-display_errors-001.phpt  |  21 ++
 .../force_error_reporting-display_errors-002.phpt  |  28 ++
 .../force_error_reporting-display_errors-003.phpt  |  35 +++
 .../force_error_reporting-log_errors-001.phpt      |  22 ++
 .../force_error_reporting-log_errors-002.phpt      |  26 ++
 .../force_error_reporting-log_errors-003.phpt      |  30 ++
 .../tests/develop/local_vars_in_error.phpt         |  33 +++
 .../tests/develop/max_nesting_level-001.phpt       | 149 ++++++++++
 .../tests/develop/max_nesting_level-002.phpt       |  27 ++
 .../tests/develop/max_nesting_level-003.phpt       |  29 ++
 xdebug-3.4.5/tests/develop/max_stack_frames.phpt   |  27 ++
 .../tests/develop/monitor-functions-001.phpt       |  11 +
 .../tests/develop/monitor-functions-002.phpt       |  13 +
 .../tests/develop/monitor-functions-003.inc        |   7 +
 .../tests/develop/monitor-functions-003.phpt       |  51 ++++
 .../tests/develop/monitor-functions-004.phpt       |  49 ++++
 .../print_function_stack-no-description-001.phpt   |  26 ++
 .../print_function_stack-no-description-002.phpt   |  26 ++
 .../print_function_stack-no-description-003.phpt   |  32 +++
 .../tests/develop/print_function_stack.phpt        |  27 ++
 xdebug-3.4.5/tests/develop/scream.phpt             |  22 ++
 xdebug-3.4.5/tests/develop/scream_cli.phpt         |  23 ++
 xdebug-3.4.5/tests/develop/scream_html.phpt        |  28 ++
 xdebug-3.4.5/tests/develop/shutdown.phpt           |  14 +
 .../tests/develop/stack-filter-ns-exclude-001.phpt |  72 +++++
 .../tests/develop/stack-filter-ns-include-001.phpt |  68 +++++
 .../develop/stack-filter-path-exclude-001.phpt     |  92 ++++++
 .../develop/stack-filter-path-include-001.phpt     |  92 ++++++
 xdebug-3.4.5/tests/develop/stacktrace_html.phpt    |  40 +++
 xdebug-3.4.5/tests/develop/stacktrace_text.phpt    |  34 +++
 .../tests/develop/stacktrace_variadic_html.phpt    |  51 ++++
 .../tests/develop/stacktrace_variadic_text.phpt    |  43 +++
 .../tests/develop/vardump-overload-cli-001.phpt    |  94 +++++++
 .../tests/develop/vardump-overload-cli-002.phpt    |  94 +++++++
 xdebug-3.4.5/tests/develop/xdebug_call.phpt        |  70 +++++
 .../tests/develop/xdebug_call_depth-1.phpt         |  70 +++++
 xdebug-3.4.5/tests/develop/xdebug_call_depth0.phpt |  70 +++++
 xdebug-3.4.5/tests/develop/xdebug_call_depth1.phpt |  70 +++++
 xdebug-3.4.5/tests/develop/xdebug_call_depth2.phpt |  70 +++++
 xdebug-3.4.5/tests/develop/xdebug_call_depth3.phpt |  70 +++++
 .../tests/develop/xdebug_debug_zval-noopcache.phpt |  52 ++++
 .../tests/develop/xdebug_debug_zval-opcache.phpt   |  52 ++++
 .../xdebug_debug_zval_cli_color-noopcache-nts.phpt |  86 ++++++
 .../xdebug_debug_zval_cli_color-noopcache-zts.phpt |  86 ++++++
 .../xdebug_debug_zval_cli_color-opcache.phpt       |  84 ++++++
 .../xdebug_debug_zval_stdout-noopcache.phpt        |  52 ++++
 .../develop/xdebug_debug_zval_stdout-opcache.phpt  |  52 ++++
 ...debug_get_function_stack_exception_handler.phpt |  58 ++++
 .../xdebug_get_function_stack_local_vars.phpt      |  58 ++++
 .../xdebug_get_function_stack_variadic.phpt        |  92 ++++++
 xdebug-3.4.5/tests/develop/xdebug_time_index.phpt  |  28 ++
 xdebug-3.4.5/tests/develop/xdebug_var_dump.phpt    |  54 ++++
 .../tests/develop/xdebug_var_dump_datetime.phpt    |  23 ++
 .../tests/develop/xdebug_var_dump_enum-ansi.phpt   |  47 ++++
 .../tests/develop/xdebug_var_dump_enum-html.phpt   |  47 ++++
 .../tests/develop/xdebug_var_dump_enum-text.phpt   |  47 ++++
 .../tests/develop/xdebug_var_dump_file.phpt        |  55 ++++
 .../tests/develop/xdebug_var_dump_file_link.phpt   |  55 ++++
 .../develop/xdebug_var_dump_fileformat-ansi.phpt   |  61 ++++
 .../develop/xdebug_var_dump_fileformat-html.phpt   |  57 ++++
 .../develop/xdebug_var_dump_fileformat-text.phpt   |  61 ++++
 .../tests/develop/xdebug_var_dump_limitations.phpt |  53 ++++
 .../develop/xdebug_var_dump_limitations_cli.phpt   |  59 ++++
 .../develop/xdebug_var_dump_non_overload.phpt      |  40 +++
 .../xdebug_var_dump_typed_properties-ansi.phpt     |  61 ++++
 .../xdebug_var_dump_typed_properties-html.phpt     |  51 ++++
 .../xdebug_var_dump_typed_properties-text.phpt     |  61 ++++
 xdebug-3.4.5/tests/filter/bug01508-exclude.phpt    |  22 ++
 xdebug-3.4.5/tests/filter/bug01508-include.phpt    |  22 ++
 xdebug-3.4.5/tests/filter/bug01508.php             |  10 +
 xdebug-3.4.5/tests/filter/bug01919-001.phpt        |  20 ++
 xdebug-3.4.5/tests/filter/bug01919-002.phpt        |  20 ++
 xdebug-3.4.5/tests/filter/foobar/foobar.php        |  13 +
 xdebug-3.4.5/tests/filter/stack/one.php            |  22 ++
 xdebug-3.4.5/tests/filter/stack/three.php          |  22 ++
 xdebug-3.4.5/tests/filter/stack/two.php            |  22 ++
 xdebug-3.4.5/tests/filter/xdebug/trace/xdebug.php  |  15 +
 xdebug-3.4.5/tests/filter/xdebug/xdebug.php        |  13 +
 xdebug-3.4.5/tests/gcstats/bug01928.phpt           |  12 +
 .../tests/gcstats/xdebug_gc_stats-001.phpt         |  19 ++
 .../tests/gcstats/xdebug_gc_stats-002.phpt         |  32 +++
 .../tests/gcstats/xdebug_gc_stats-003.phpt         |  37 +++
 .../tests/gcstats/xdebug_gc_stats-004.phpt         |  62 +++++
 .../tests/gcstats/xdebug_gc_stats-005.phpt         |  44 +++
 .../tests/gcstats/xdebug_gc_stats-006.phpt         |  22 ++
 .../tests/gcstats/xdebug_gc_stats-007.phpt         |  24 ++
 .../tests/gcstats/xdebug_gc_stats-008.phpt         |  60 ++++
 .../tests/gcstats/xdebug_gc_stats-009.phpt         |  18 ++
 .../tests/gcstats/xdebug_gc_stats-010.phpt         |  48 ++++
 xdebug-3.4.5/tests/library/xdebug_constants.phpt   |  15 +
 .../tests/library/xdebug_info-mode-001.phpt        |  18 ++
 .../tests/library/xdebug_info-mode-002.phpt        |  13 +
 .../tests/library/xdebug_info-mode-003.phpt        |  19 ++
 .../tests/library/xdebug_info-mode-004.phpt        |  19 ++
 .../tests/library/xdebug_info-mode-005.phpt        |  15 +
 .../tests/library/xdebug_mode_from_env-001.phpt    |  17 ++
 .../tests/library/xdebug_mode_from_env-002.phpt    |  14 +
 .../tests/library/xdebug_mode_warning-001.phpt     |  11 +
 .../tests/library/xdebug_mode_warning-002.phpt     |  11 +
 xdebug-3.4.5/tests/profiler/bug00360-php83.phpt    |  68 +++++
 xdebug-3.4.5/tests/profiler/bug00360-php84.phpt    |  76 +++++
 xdebug-3.4.5/tests/profiler/bug00631-php83.phpt    |  65 +++++
 xdebug-3.4.5/tests/profiler/bug00631-php84.phpt    |  73 +++++
 xdebug-3.4.5/tests/profiler/bug00639-php83.phpt    | 162 +++++++++++
 xdebug-3.4.5/tests/profiler/bug00639-php84.phpt    | 170 +++++++++++
 xdebug-3.4.5/tests/profiler/bug00639.inc           |   6 +
 xdebug-3.4.5/tests/profiler/bug00643-php83.phpt    | 116 ++++++++
 xdebug-3.4.5/tests/profiler/bug00643-php84.phpt    | 124 +++++++++
 xdebug-3.4.5/tests/profiler/bug00643-t1.inc        |  29 ++
 xdebug-3.4.5/tests/profiler/bug00643-t2.inc        |  15 +
 xdebug-3.4.5/tests/profiler/bug00693.phpt          |  27 ++
 xdebug-3.4.5/tests/profiler/bug00714-php83.phpt    | 119 ++++++++
 xdebug-3.4.5/tests/profiler/bug00714-php84.phpt    | 127 +++++++++
 xdebug-3.4.5/tests/profiler/bug00728-php83.phpt    |  84 ++++++
 xdebug-3.4.5/tests/profiler/bug00728-php84.phpt    |  92 ++++++
 .../tests/profiler/bug00785-001-php83.phpt         | 201 +++++++++++++
 .../tests/profiler/bug00785-001-php84.phpt         | 209 ++++++++++++++
 xdebug-3.4.5/tests/profiler/bug00785-001.inc       |  13 +
 .../tests/profiler/bug00785-002-php83.phpt         | 264 ++++++++++++++++++
 .../tests/profiler/bug00785-002-php84.phpt         | 272 ++++++++++++++++++
 xdebug-3.4.5/tests/profiler/bug00785-002.inc       |  27 ++
 xdebug-3.4.5/tests/profiler/bug01437.phpt          |  24 ++
 .../tests/profiler/bug01571-002-php82.phpt         |  80 ++++++
 .../tests/profiler/bug01571-002-php84.phpt         |  88 ++++++
 xdebug-3.4.5/tests/profiler/bug01571-002.inc       |   6 +
 xdebug-3.4.5/tests/profiler/bug01589-append.inc    |  10 +
 xdebug-3.4.5/tests/profiler/bug01589-php83.phpt    |  85 ++++++
 xdebug-3.4.5/tests/profiler/bug01589-php84.phpt    |  93 +++++++
 xdebug-3.4.5/tests/profiler/bug01589-prepend.inc   |  25 ++
 xdebug-3.4.5/tests/profiler/bug01989-php83.phpt    |  80 ++++++
 xdebug-3.4.5/tests/profiler/bug01989-php84.phpt    |  88 ++++++
 xdebug-3.4.5/tests/profiler/bug01989.inc           |  18 ++
 .../profiler/bug02001-no-zlib-compression.phpt     |  25 ++
 .../profiler/bug02001-no-zlib-no-compression.phpt  |  21 ++
 .../tests/profiler/bug02001-zlib-compression.phpt  |  21 ++
 .../profiler/bug02001-zlib-no-compression.phpt     |  21 ++
 xdebug-3.4.5/tests/profiler/bug02037.phpt          |  23 ++
 .../profiler/bug02069-zlib-compression-append.phpt |  30 ++
 xdebug-3.4.5/tests/profiler/capture-profile.inc    |  17 ++
 .../profiler/start_with_request_always_no_env.phpt |  24 ++
 .../start_with_request_always_no_match.phpt        |  24 ++
 .../start_with_request_default_no_env.phpt         |  24 ++
 .../start_with_request_default_no_match.phpt       |  24 ++
 .../profiler/start_with_request_never_match.phpt   |  17 ++
 .../profiler/start_with_request_never_no_env.phpt  |  14 +
 .../start_with_request_trigger_env-001.phpt        |  27 ++
 .../start_with_request_trigger_env-002.phpt        |  27 ++
 .../start_with_request_trigger_match-001.phpt      |  28 ++
 .../start_with_request_trigger_match-002.phpt      |  28 ++
 .../start_with_request_trigger_no_env.phpt         |  14 +
 .../start_with_request_trigger_no_match.phpt       |  15 +
 xdebug-3.4.5/tests/tracing/array_map.phpt          |  28 ++
 .../tests/tracing/assert_test-001-php83.phpt       |  54 ++++
 .../tests/tracing/assert_test-002-php83.phpt       |  53 ++++
 .../tests/tracing/assert_test-003-php83.phpt       |  63 +++++
 .../tests/tracing/assert_test-004-php83.phpt       |  66 +++++
 .../tests/tracing/assignment-trace-001.phpt        |  64 +++++
 .../tests/tracing/assignment-trace-002.phpt        |  68 +++++
 .../tests/tracing/assignment-trace-003.phpt        |  36 +++
 .../tests/tracing/assignment-trace-004.phpt        |  36 +++
 .../tests/tracing/assignment-trace-005.phpt        |  25 ++
 .../tests/tracing/assignment-trace-006.phpt        |  51 ++++
 .../tests/tracing/assignment-trace-007.phpt        |  61 ++++
 .../tests/tracing/assignment-trace-008.phpt        |  70 +++++
 .../tests/tracing/assignment-trace-009.phpt        |  70 +++++
 .../tests/tracing/assignment-trace-010.phpt        |  48 ++++
 .../tests/tracing/assignment-trace-011.phpt        |  23 ++
 .../tests/tracing/assignment-trace-dim-op.phpt     |  46 +++
 .../tests/tracing/assignment-trace-obj-op-001.phpt |  47 ++++
 .../tests/tracing/assignment-trace-obj-op-002.phpt |  47 ++++
 .../tests/tracing/assignment-trace-obj-op-003.phpt |  47 ++++
 .../tests/tracing/assignment-trace-op.phpt         |  46 +++
 .../assignment-trace-static-prop-op-001.phpt       |  51 ++++
 .../assignment-trace-static-prop-op-002.phpt       |  52 ++++
 .../tracing/assignment-trace-this-op-001.phpt      |  51 ++++
 .../tracing/assignment-trace-this-op-002.phpt      |  51 ++++
 xdebug-3.4.5/tests/tracing/bug00002.inc            |   5 +
 xdebug-3.4.5/tests/tracing/bug00002.phpt           |  24 ++
 xdebug-3.4.5/tests/tracing/bug00003.phpt           |  21 ++
 xdebug-3.4.5/tests/tracing/bug00146.phpt           |  29 ++
 xdebug-3.4.5/tests/tracing/bug00173.phpt           |  37 +++
 xdebug-3.4.5/tests/tracing/bug00184.phpt           |  27 ++
 xdebug-3.4.5/tests/tracing/bug00355.phpt           |  49 ++++
 xdebug-3.4.5/tests/tracing/bug00501.phpt           |  31 +++
 xdebug-3.4.5/tests/tracing/bug00558-002.phpt       |  28 ++
 xdebug-3.4.5/tests/tracing/bug00566-001.phpt       |  54 ++++
 xdebug-3.4.5/tests/tracing/bug00642.phpt           |  46 +++
 xdebug-3.4.5/tests/tracing/bug00690-001.phpt       |  24 ++
 xdebug-3.4.5/tests/tracing/bug00690-002.phpt       |  34 +++
 xdebug-3.4.5/tests/tracing/bug00699.inc            |  20 ++
 xdebug-3.4.5/tests/tracing/bug00699.phpt           |  33 +++
 xdebug-3.4.5/tests/tracing/bug00701.phpt           |  29 ++
 xdebug-3.4.5/tests/tracing/bug00702-001.phpt       |  43 +++
 xdebug-3.4.5/tests/tracing/bug00702-002.phpt       |  42 +++
 xdebug-3.4.5/tests/tracing/bug00756.phpt           |  56 ++++
 xdebug-3.4.5/tests/tracing/bug00799.phpt           |  43 +++
 xdebug-3.4.5/tests/tracing/bug00843-001.phpt       |  33 +++
 xdebug-3.4.5/tests/tracing/bug00843-002.phpt       |  29 ++
 xdebug-3.4.5/tests/tracing/bug00847-001.phpt       |  17 ++
 xdebug-3.4.5/tests/tracing/bug00847-002.phpt       |  17 ++
 xdebug-3.4.5/tests/tracing/bug00905.phpt           |  57 ++++
 xdebug-3.4.5/tests/tracing/bug01073.phpt           |  35 +++
 xdebug-3.4.5/tests/tracing/bug01112.phpt           |  21 ++
 xdebug-3.4.5/tests/tracing/bug01140.phpt           |  39 +++
 xdebug-3.4.5/tests/tracing/bug01209.phpt           | Bin 0 -> 1468 bytes
 xdebug-3.4.5/tests/tracing/bug01215.phpt           |  12 +
 xdebug-3.4.5/tests/tracing/bug01471.phpt           |  25 ++
 xdebug-3.4.5/tests/tracing/bug01571-001-php81.phpt |  32 +++
 xdebug-3.4.5/tests/tracing/bug01571-001-php82.phpt |  32 +++
 xdebug-3.4.5/tests/tracing/bug01571-001-php84.phpt |  32 +++
 xdebug-3.4.5/tests/tracing/bug01599-001.phpt       |  49 ++++
 xdebug-3.4.5/tests/tracing/bug01599-002.phpt       |  54 ++++
 xdebug-3.4.5/tests/tracing/bug01676.phpt           |  44 +++
 xdebug-3.4.5/tests/tracing/bug01739.phpt           |  33 +++
 xdebug-3.4.5/tests/tracing/bug01829.phpt           |  23 ++
 xdebug-3.4.5/tests/tracing/bug01837-001.phpt       |  40 +++
 xdebug-3.4.5/tests/tracing/bug01837-004.phpt       |  43 +++
 xdebug-3.4.5/tests/tracing/bug01875-001.phpt       |  31 +++
 xdebug-3.4.5/tests/tracing/bug01875-002.phpt       |  35 +++
 xdebug-3.4.5/tests/tracing/bug01896-php81.phpt     |  34 +++
 xdebug-3.4.5/tests/tracing/bug01896-php82.phpt     |  34 +++
 xdebug-3.4.5/tests/tracing/bug01903-001.phpt       |  10 +
 xdebug-3.4.5/tests/tracing/bug01903-002.phpt       |  16 ++
 xdebug-3.4.5/tests/tracing/bug01927.phpt           |  12 +
 xdebug-3.4.5/tests/tracing/bug01944.phpt           |  20 ++
 xdebug-3.4.5/tests/tracing/bug01950.phpt           |  50 ++++
 xdebug-3.4.5/tests/tracing/bug01954.phpt           |  16 ++
 xdebug-3.4.5/tests/tracing/bug01996-001-php81.phpt |  65 +++++
 xdebug-3.4.5/tests/tracing/bug01996-001-php82.phpt |  65 +++++
 xdebug-3.4.5/tests/tracing/bug01996-002-php81.phpt |  49 ++++
 xdebug-3.4.5/tests/tracing/bug01996-002-php82.phpt |  49 ++++
 xdebug-3.4.5/tests/tracing/bug01999.phpt           |  43 +++
 xdebug-3.4.5/tests/tracing/bug02054.phpt           |  29 ++
 xdebug-3.4.5/tests/tracing/bug02104-001.phpt       |  39 +++
 xdebug-3.4.5/tests/tracing/bug02104-002.phpt       |  31 +++
 xdebug-3.4.5/tests/tracing/bug02127-001-php81.phpt |  48 ++++
 xdebug-3.4.5/tests/tracing/bug02127-001-php82.phpt |  48 ++++
 xdebug-3.4.5/tests/tracing/bug02127-001-php84.phpt |  48 ++++
 xdebug-3.4.5/tests/tracing/bug02127-002-php81.phpt |  54 ++++
 xdebug-3.4.5/tests/tracing/bug02127-002-php82.phpt |  54 ++++
 xdebug-3.4.5/tests/tracing/bug02127-002-php84.phpt |  54 ++++
 xdebug-3.4.5/tests/tracing/bug02214-001.phpt       |  24 ++
 xdebug-3.4.5/tests/tracing/bug02214-002.phpt       |  30 ++
 xdebug-3.4.5/tests/tracing/bug02214.inc            |  11 +
 .../tests/tracing/call_user_func_array-001.phpt    |  42 +++
 .../tests/tracing/call_user_func_array-002.inc     |  10 +
 .../tests/tracing/call_user_func_array-002.phpt    |  37 +++
 xdebug-3.4.5/tests/tracing/capture-trace.inc       |  21 ++
 .../tests/tracing/circular-references.phpt         |  39 +++
 .../tests/tracing/comp-without-params.phpt         |  35 +++
 xdebug-3.4.5/tests/tracing/complex-parameters.phpt |  32 +++
 xdebug-3.4.5/tests/tracing/fiber-001.inc           |  38 +++
 xdebug-3.4.5/tests/tracing/flamegraph-001.phpt     |  50 ++++
 xdebug-3.4.5/tests/tracing/flamegraph-002.phpt     |  63 +++++
 xdebug-3.4.5/tests/tracing/flamegraph-003.phpt     |  49 ++++
 xdebug-3.4.5/tests/tracing/flamegraph-004.phpt     |  70 +++++
 xdebug-3.4.5/tests/tracing/flamegraph-005.phpt     |  59 ++++
 xdebug-3.4.5/tests/tracing/function_counter.phpt   |  17 ++
 xdebug-3.4.5/tests/tracing/functrace_comp.phpt     |  48 ++++
 .../tests/tracing/functrace_comp_assign.phpt       | 166 +++++++++++
 xdebug-3.4.5/tests/tracing/functrace_comp_r.phpt   |  54 ++++
 .../tests/tracing/functrace_typed_properties.phpt  |  48 ++++
 .../tests/tracing/functrace_variadics.phpt         |  33 +++
 xdebug-3.4.5/tests/tracing/include-file.phpt       |  36 +++
 .../tests/tracing/internal-parameters.phpt         |  23 ++
 .../tests/tracing/nested-function-calls.phpt       | 168 +++++++++++
 .../tests/tracing/nested-indirect-function.phpt    |  45 +++
 .../tests/tracing/nested-static-method-calls.phpt  |  41 +++
 .../tests/tracing/start_no_zlib_compression.phpt   |  48 ++++
 .../tracing/start_no_zlib_no_compression.phpt      |  37 +++
 xdebug-3.4.5/tests/tracing/start_trace.phpt        |  19 ++
 .../tracing/start_with_request_always_no_env.phpt  |  29 ++
 .../start_with_request_always_no_match.phpt        |  30 ++
 .../start_with_request_default_env-001.phpt        |  31 +++
 .../start_with_request_default_env-002.phpt        |  31 +++
 .../start_with_request_default_function_call.phpt  |  26 ++
 .../start_with_request_default_match-001.phpt      |  32 +++
 .../start_with_request_default_match-002.phpt      |  32 +++
 .../tracing/start_with_request_default_no_env.phpt |  14 +
 .../tracing/start_with_request_never_match.phpt    |  17 ++
 .../tracing/start_with_request_never_no_env.phpt   |  14 +
 .../start_with_request_trigger_env-001.phpt        |  31 +++
 .../start_with_request_trigger_env-002.phpt        |  31 +++
 .../start_with_request_trigger_match-001.phpt      |  32 +++
 .../start_with_request_trigger_match-002.phpt      |  32 +++
 .../tracing/start_with_request_trigger_no_env.phpt |  14 +
 .../start_with_request_trigger_no_match.phpt       |  17 ++
 .../tests/tracing/start_zlib_compression.phpt      |  37 +++
 .../tests/tracing/start_zlib_no_compression.phpt   |  37 +++
 .../tests/tracing/static-method-calls.phpt         |  28 ++
 xdebug-3.4.5/tests/tracing/test11.phpt             |  28 ++
 xdebug-3.4.5/tests/tracing/test15.phpt             |  37 +++
 xdebug-3.4.5/tests/tracing/test18.phpt             |  42 +++
 xdebug-3.4.5/tests/tracing/test18a.phpt            |  53 ++++
 xdebug-3.4.5/tests/tracing/test18b.phpt            |  42 +++
 xdebug-3.4.5/tests/tracing/test7b.phpt             |  49 ++++
 xdebug-3.4.5/tests/tracing/test_class.inc          |  14 +
 .../tests/tracing/text-without-params.phpt         |  31 +++
 xdebug-3.4.5/tests/tracing/trace-001.phpt          | 235 ++++++++++++++++
 xdebug-3.4.5/tests/tracing/trace-002.phpt          |  55 ++++
 xdebug-3.4.5/tests/tracing/trace-003.phpt          | 135 +++++++++
 .../tests/tracing/trace-filter-ns-exclude-001.phpt |  39 +++
 .../tests/tracing/trace-filter-ns-exclude-002.phpt |  41 +++
 .../tests/tracing/trace-filter-ns-exclude-003.phpt |  39 +++
 .../tests/tracing/trace-filter-ns-include-001.phpt |  40 +++
 .../tests/tracing/trace-filter-ns-include-002.phpt |  40 +++
 .../tests/tracing/trace-filter-ns-include-003.phpt |  40 +++
 .../tests/tracing/trace-filter-ns-include-004.phpt |  40 +++
 .../tracing/trace-filter-path-exclude-001.phpt     |  34 +++
 .../tracing/trace-filter-path-include-001.phpt     |  31 +++
 .../tracing/trace-filter-path-include-002.phpt     |  34 +++
 .../tracing/trace-filter-path-include-003.phpt     |  29 ++
 .../tracing/trace-filter-path-include-004.phpt     |  43 +++
 xdebug-3.4.5/tests/tracing/trace_enum-001.phpt     |  60 ++++
 xdebug-3.4.5/tests/tracing/trace_enum-002.phpt     |  64 +++++
 .../tracing/trace_with_magic_call_method.phpt      |  41 +++
 .../trace_with_magic_call_method_and_contents.phpt |  41 +++
 .../tests/tracing/trace_with_magic_methods.phpt    |  47 ++++
 .../tests/tracing/trace_with_naked_filename.phpt   |  24 ++
 xdebug-3.4.5/tests/tracing/variable-functions.phpt |  56 ++++
 xdebug-3.4.5/tests/utils.inc                       | 222 +++++++++++++++
 1150 files changed, 45897 insertions(+)
 create mode 100644 xdebug-3.4.5/contrib/branch-coverage-to-dot.php
 create mode 100644 xdebug-3.4.5/contrib/online_profiling_prepend.php
 create mode 100644 xdebug-3.4.5/php_xdebug.stub.php
 create mode 100644 xdebug-3.4.5/tests/base/001.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug00001.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug00241.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug00419-sunos.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug00419.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug00538.inc
 create mode 100644 xdebug-3.4.5/tests/base/bug00558-001.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug00665.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug00723.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug00787.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug00801.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug00823.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug00913-php80.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug00913-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug00931.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug00978-002.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug00978.inc
 create mode 100644 xdebug-3.4.5/tests/base/bug01048-002.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug01048.inc
 create mode 100644 xdebug-3.4.5/tests/base/bug01088.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug01133.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug01148.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug01266.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug01272-002.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug01272.inc
 create mode 100644 xdebug-3.4.5/tests/base/bug01515-001.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug01515.inc
 create mode 100644 xdebug-3.4.5/tests/base/bug01556.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug01583.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug01629.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug01758.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug01790.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug01907.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug02020.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug02034.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug02036-php83.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug02036-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug02100.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug02295.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug02307-001.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug02307-002.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug02307-003.inc
 create mode 100644 xdebug-3.4.5/tests/base/bug02307-003.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug02319.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug02321-001.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug02321-002.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug02321-003.phpt
 create mode 100644 xdebug-3.4.5/tests/base/bug02321-004.phpt
 create mode 100644 xdebug-3.4.5/tests/base/deprecated-setting-001.phpt
 create mode 100644 xdebug-3.4.5/tests/base/deprecated-setting-002.phpt
 create mode 100644 xdebug-3.4.5/tests/base/deprecated-setting-003.phpt
 create mode 100644 xdebug-3.4.5/tests/base/filter-errors.phpt
 create mode 100644 xdebug-3.4.5/tests/base/internal-function-calls.phpt
 create mode 100644 xdebug-3.4.5/tests/base/peak_memory_usage.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/670-ConsistentHashing.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00212-001.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00212-001.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00212-002.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00212-002.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00212-003.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00212-003.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00213-opcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00213.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00213.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00313.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00313.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00318.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00318.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00334-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00334-opcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00334.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00422.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00422.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00470.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00470.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00472.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00472.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00515.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00515.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00535.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00562.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00651-001.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00651-002.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00651-003.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00670.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00697-php83.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00697-php84-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00697-php84-opcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00697.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00703.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00703.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00757-001.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00757-002-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00757-002-opcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00766.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00766.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00879.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug00879.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01034-001-noopcache-php828.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01034-001-noopcache-php829.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01034-001-opcache-php828.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01034-001-opcache-php829.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01034-001.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01034-002-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01034-002.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01034-003-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01034-003.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01034-004-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01034-004.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01034-005-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01034-005-opcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01034-005.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01094-001.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01094-002.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01180.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01192.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01195.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01195.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01200.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01200.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01210-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01210-opcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01210.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01241-001.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01241-002.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01241-002.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01241.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01258.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01263.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01263.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01270-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01270-opcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01270.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01278.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01278.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01357.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01381.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01381.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01386-class1.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01386-class2.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01386-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01386-opcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01394.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01403.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01403.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01420-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01420.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01429.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01439.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01446.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01446.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01486-001-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01486-001-php81-opcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01486-001-php82-opcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01486-001.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01486-002-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01486-002.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01502.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01502.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01509-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01509-opcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01509.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01530-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01530-opcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01530.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01571-php82.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01571-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01679.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01679.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01691.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01691.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01713.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01713.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01728.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01728.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01733.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01733.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01733a.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01779.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01779.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01787.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01787.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01788.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01788a.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01788b.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01841-001.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01841-001.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01841-002.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01841-002.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01841-003.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01841-003.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01841-004.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01841-004.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01841-005.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01841-005.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01851.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01851.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01903-001.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01903-002.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01910.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01910.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01922.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01922.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01932.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01932.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01938-Bar.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01938-FooTrait.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01938.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01992-filter.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug01992.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug02009.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug02075.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug02075.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug02085.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug02085.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug02179-noopcache-php828.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug02179-noopcache-php829.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug02179-opcache.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/bug02179.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug02332.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/bug02332.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/coverage-filter-path-exclude-001.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/coverage-filter-path-include-001.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/coverage.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/coverage.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/coverage2.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/coverage3.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/coverage4.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/coverage4.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/coverage5-php828.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/coverage5-php829.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/coverage5.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/coverage6.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/coverage6.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/coverage7-noopcache-php828.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/coverage7-noopcache-php829.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/coverage7.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/coverage_exit.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/coverage_exit.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/dump-branch-coverage.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/jmp_frameless.inc
 create mode 100644 xdebug-3.4.5/tests/coverage/jmp_frameless.phpt
 create mode 100644 xdebug-3.4.5/tests/coverage/xdebug_code_coverage_started.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/break-echo.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/break-with-error.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00168.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00209.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00209.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00421-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00421-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00421.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00475.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00475.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00494-php80.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00494-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00494.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00530.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00530.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00538.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00538.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00566-002.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00566-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00606-002.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00606-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00606.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00606.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00614-php80.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00614-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00614.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00619.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00619.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00622.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00622.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00623.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00623.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00627-symlink-target.inc
 create mode 120000 xdebug-3.4.5/tests/debugger/bug00627-symlink.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00627.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00627.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00667.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00667.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00678-001.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00678-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00678-002.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00678-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00686.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00686.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00687.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00687.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00688.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00688.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00689.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00689.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00763.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00763.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00774.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00774.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00777.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00777.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00778.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00778.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00790-001.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00790-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00790-002.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00790-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00797.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00797.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00806.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00806.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00814.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00814.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00815.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00815.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00838.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00838.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00839.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00839.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00840.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00840.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00842-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00842-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00842-003.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00842-004.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00842.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00864.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00864.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00886.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00886.phar
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00886.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00923.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00923.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00932.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00964-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00964-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00978-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00978.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00979.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00979.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00987-005.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00987-005.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00990-001.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00990-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00990-002.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00990-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00990-003.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00990-003.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00996-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00996-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00996.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00998-ipv4.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00998-ipv4_localhost.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00998-ipv6.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00998-ipv6_localhost.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug00998.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01007-index.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01007-simpleclass.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01007.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01025.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01025.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01048-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01048.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01059.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01083.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01083.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01084.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01084.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01101.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01101.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01104.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01104.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01105-001.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01105-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01105-002.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01105-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01105-003.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01105-003.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01111-001.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01111-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01111-002.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01111-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01165.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01165.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01181.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01181.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01202-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01202-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01202.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01203-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01203-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01218-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01218.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01223.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01223.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01272-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01272.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01305.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01305.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01312.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01312.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01335-php80.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01335-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01335.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01385.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01385.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-01.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-01.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-02.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-02.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-03.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-03.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-04.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-04.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-05.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-05.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-06.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-06.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-07.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-07.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-08.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-08a.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-08b.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-09.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-09.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-10.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-10.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-11.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-12.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-12.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-13.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-13.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-14-index.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-14-simpleclass.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-14.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-15.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-15.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-16.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-16.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-17.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-17.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-18.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-18.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-19.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-19.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-20.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-20.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01388-21.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01417.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01417.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01449.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01449.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01488.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01488.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01512.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01512.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01514.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01514.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01515-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01515.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01516.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01516.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01520.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01520.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01532.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01532.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01551.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01551.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01568.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01568.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01586-php83.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01586-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01586.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01647.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01647.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01656.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01660.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01662.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01662.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01682-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01682-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01682.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01708.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01708.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01734.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01734.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01735.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01735.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01753-PageIndex.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01753-SkeletonPage.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01753.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01753.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01782.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01901.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01915.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01931-001.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01931-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01931-002.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01931-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01931-003.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01931-003.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01949.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01949.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01978.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01989.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01989.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01993.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01993.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01996-001-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01996-001-php82.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01996-001.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01996-002-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01996-002-php82.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01996-002.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01998.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01998.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01999.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug01999.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02006-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02006-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02006.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02011-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02011-php82.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02011-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02011.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02025.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02025.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02049.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02049.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02053.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02053.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02055.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02055.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02063.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02063.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02083.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02083.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02090.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02090.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02094-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02094-php82.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02094-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02094.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02098-001.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02098-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02098-002.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02098-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02101.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02101.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02113-001.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02113-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02113-002.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02113-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02121.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02121.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02122.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02122.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02123.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02123.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02126.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02126.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02170-array-iterator.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02170-array-iterator.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02172-spl-datastructures.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02172-spl-datastructures.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02180.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02180.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02211-php82.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02211-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02211.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02250.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02251.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02261-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02261-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02305.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02314-001.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02314-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02314-002.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02314-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02322.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02326-php83.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02326-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02326.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02326.xml
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02331.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02331.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02340.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02340.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02343.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02343.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02348.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02348.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02356.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/bug02356.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-breakpoint-call-function.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-breakpoint-call-function.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-breakpoint-call-method.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-breakpoint-call-method.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-breakpoint-error.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-breakpoint-error.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-breakpoint-line-with-condition.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-breakpoint-line-with-condition.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-breakpoint-line.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-breakpoint-line.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-003.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-003.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-004.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-005.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-006.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-006.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-method.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-context-get.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-context-get.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-feature-breakpoint-details.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-property-enum.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-property-enum.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-property-get-constants.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-property-value.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp-property-value.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/dbgp/dbgpclient.php
 create mode 100644 xdebug-3.4.5/tests/debugger/empty-echo.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/fiber-001.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/fiber-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/fiber-002.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/fiber-step-into-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/fiber-step-over-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/fiber-step-over-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/remote_log-unix-2.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/remote_log-unix.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/remote_log-win.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/remote_log1.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/remote_log2.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/remote_log3.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/remote_log4.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/remote_log5.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/spl-iterators.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/start_ignore_0_env.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_ignore_no_cookie.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_ignore_no_env.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_ignore_no_get.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_ignore_no_post.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_ignore_yes_cookie.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_ignore_yes_env.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_ignore_yes_get.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_ignore_yes_post.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_upon_error_no_trigger_error.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_upon_error_trigger_error.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_always_break.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_always_config.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_always_no_env.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_always_session.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_always_session_start.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_default_break.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_default_break_session_start.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_default_config.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_default_no_env.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_default_session-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_default_session-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_default_session_start-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_default_session_start-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_never_break.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_never_break_session_start.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_never_config.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_never_no_env.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_never_session.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_never_session_start.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_break.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_break_session_start.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_config.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-003.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-004.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-005.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-006.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-007.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-008.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-009.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-010.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_no_env.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_session-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_session-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_session_start-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_session_start-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_session_start_and_session-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_session_start_and_session-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/start_with_request_trigger_session_start_shared_secret-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/xdebug_connect_to_client.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/xdebug_connect_to_client.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/xdebug_notify-001.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/xdebug_notify-002.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/xdebug_notify-003.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/xdebug_notify-004.phpt
 create mode 100644 xdebug-3.4.5/tests/debugger/xdebug_notify.inc
 create mode 100644 xdebug-3.4.5/tests/debugger/xdebug_notify_complex.inc
 create mode 100644 xdebug-3.4.5/tests/develop/backtrace-args.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/backtrace-complex.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/backtrace-simple.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00022.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00032.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00057.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00089.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00176.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00178.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00265.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00280.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00298.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00305.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00314-win.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00314.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00315.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00328-php80.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00328-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00340-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00340-002.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00389.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00391.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00450-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00450-002.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00450-003.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00457-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00457-002.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00476-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00476-002.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00476-003.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00476-004.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00538-002.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00565.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00567-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00567-opcache.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00570.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00575.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00609.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00625-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00625-002.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00635.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00654.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00684.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00709.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00744.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00747.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00800.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00811.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00885.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00898.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00903.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00947-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00947-002.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00987-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00987-002.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00987-003.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug00987-006.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01004-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01004-002.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01106.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01130.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01166.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01174.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01194.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01218-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01218.inc
 create mode 100644 xdebug-3.4.5/tests/develop/bug01245.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01247-opcache.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01262.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01282-32bit.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01282-64bit.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01288.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01323-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01343-32bit.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01343-64bit.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01501-001-32bit.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01501-001-64bit.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01501-002-32bit.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01501-002-64bit.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01501-003-32bit.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01501-003-64bit.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01534.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01562-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01562-opcache.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01613-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01613-002.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01665.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01837-002.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01837-003.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01996-001-ansi-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01996-001-ansi-php82.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01996-001-html-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01996-001-html-php82.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01996-001-text-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01996-001-text-php82.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01996-002-ansi-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01996-002-ansi-php82.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01996-002-html-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01996-002-html-php82.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01996-002-text-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01996-002-text-php82.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01999-ansi.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01999-html.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug01999-text.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug02041.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug02104-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug02104-002.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug02121.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug02182.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug02186.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug02194-exception-warning.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug02194-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug02195-exception-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug02195-exception-opcache.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug02208.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug02226-exceptions.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug02264.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug02339-index.inc
 create mode 100644 xdebug-3.4.5/tests/develop/bug02339-second-file.inc
 create mode 100644 xdebug-3.4.5/tests/develop/bug02339.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug02352-php80.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug02352-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug02352-php82.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/bug02354.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/dump-superglobal.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/error_collection-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/error_collection-002.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/error_collection-003.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/errorlog_variadic.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/exception.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/force_display_errors.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/force_error_reporting-display_errors-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/force_error_reporting-display_errors-002.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/force_error_reporting-display_errors-003.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/force_error_reporting-log_errors-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/force_error_reporting-log_errors-002.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/force_error_reporting-log_errors-003.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/local_vars_in_error.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/max_nesting_level-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/max_nesting_level-002.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/max_nesting_level-003.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/max_stack_frames.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/monitor-functions-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/monitor-functions-002.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/monitor-functions-003.inc
 create mode 100644 xdebug-3.4.5/tests/develop/monitor-functions-003.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/monitor-functions-004.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/print_function_stack-no-description-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/print_function_stack-no-description-002.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/print_function_stack-no-description-003.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/print_function_stack.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/scream.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/scream_cli.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/scream_html.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/shutdown.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/stack-filter-ns-exclude-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/stack-filter-ns-include-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/stack-filter-path-exclude-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/stack-filter-path-include-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/stacktrace_html.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/stacktrace_text.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/stacktrace_variadic_html.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/stacktrace_variadic_text.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/vardump-overload-cli-001.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/vardump-overload-cli-002.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_call.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_call_depth-1.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_call_depth0.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_call_depth1.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_call_depth2.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_call_depth3.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_debug_zval-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_debug_zval-opcache.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_debug_zval_cli_color-noopcache-nts.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_debug_zval_cli_color-noopcache-zts.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_debug_zval_cli_color-opcache.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_debug_zval_stdout-noopcache.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_debug_zval_stdout-opcache.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_get_function_stack_exception_handler.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_get_function_stack_local_vars.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_get_function_stack_variadic.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_time_index.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_var_dump.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_var_dump_datetime.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_var_dump_enum-ansi.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_var_dump_enum-html.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_var_dump_enum-text.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_var_dump_file.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_var_dump_file_link.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_var_dump_fileformat-ansi.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_var_dump_fileformat-html.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_var_dump_fileformat-text.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_var_dump_limitations.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_var_dump_limitations_cli.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_var_dump_non_overload.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_var_dump_typed_properties-ansi.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_var_dump_typed_properties-html.phpt
 create mode 100644 xdebug-3.4.5/tests/develop/xdebug_var_dump_typed_properties-text.phpt
 create mode 100644 xdebug-3.4.5/tests/filter/bug01508-exclude.phpt
 create mode 100644 xdebug-3.4.5/tests/filter/bug01508-include.phpt
 create mode 100644 xdebug-3.4.5/tests/filter/bug01508.php
 create mode 100644 xdebug-3.4.5/tests/filter/bug01919-001.phpt
 create mode 100644 xdebug-3.4.5/tests/filter/bug01919-002.phpt
 create mode 100644 xdebug-3.4.5/tests/filter/foobar/foobar.php
 create mode 100644 xdebug-3.4.5/tests/filter/stack/one.php
 create mode 100644 xdebug-3.4.5/tests/filter/stack/three.php
 create mode 100644 xdebug-3.4.5/tests/filter/stack/two.php
 create mode 100644 xdebug-3.4.5/tests/filter/xdebug/trace/xdebug.php
 create mode 100644 xdebug-3.4.5/tests/filter/xdebug/xdebug.php
 create mode 100644 xdebug-3.4.5/tests/gcstats/bug01928.phpt
 create mode 100644 xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-001.phpt
 create mode 100644 xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-002.phpt
 create mode 100644 xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-003.phpt
 create mode 100644 xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-004.phpt
 create mode 100644 xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-005.phpt
 create mode 100644 xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-006.phpt
 create mode 100644 xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-007.phpt
 create mode 100644 xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-008.phpt
 create mode 100644 xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-009.phpt
 create mode 100644 xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-010.phpt
 create mode 100644 xdebug-3.4.5/tests/library/xdebug_constants.phpt
 create mode 100644 xdebug-3.4.5/tests/library/xdebug_info-mode-001.phpt
 create mode 100644 xdebug-3.4.5/tests/library/xdebug_info-mode-002.phpt
 create mode 100644 xdebug-3.4.5/tests/library/xdebug_info-mode-003.phpt
 create mode 100644 xdebug-3.4.5/tests/library/xdebug_info-mode-004.phpt
 create mode 100644 xdebug-3.4.5/tests/library/xdebug_info-mode-005.phpt
 create mode 100644 xdebug-3.4.5/tests/library/xdebug_mode_from_env-001.phpt
 create mode 100644 xdebug-3.4.5/tests/library/xdebug_mode_from_env-002.phpt
 create mode 100644 xdebug-3.4.5/tests/library/xdebug_mode_warning-001.phpt
 create mode 100644 xdebug-3.4.5/tests/library/xdebug_mode_warning-002.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00360-php83.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00360-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00631-php83.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00631-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00639-php83.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00639-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00639.inc
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00643-php83.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00643-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00643-t1.inc
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00643-t2.inc
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00693.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00714-php83.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00714-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00728-php83.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00728-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00785-001-php83.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00785-001-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00785-001.inc
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00785-002-php83.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00785-002-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug00785-002.inc
 create mode 100644 xdebug-3.4.5/tests/profiler/bug01437.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug01571-002-php82.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug01571-002-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug01571-002.inc
 create mode 100644 xdebug-3.4.5/tests/profiler/bug01589-append.inc
 create mode 100644 xdebug-3.4.5/tests/profiler/bug01589-php83.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug01589-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug01589-prepend.inc
 create mode 100644 xdebug-3.4.5/tests/profiler/bug01989-php83.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug01989-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug01989.inc
 create mode 100644 xdebug-3.4.5/tests/profiler/bug02001-no-zlib-compression.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug02001-no-zlib-no-compression.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug02001-zlib-compression.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug02001-zlib-no-compression.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug02037.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/bug02069-zlib-compression-append.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/capture-profile.inc
 create mode 100644 xdebug-3.4.5/tests/profiler/start_with_request_always_no_env.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/start_with_request_always_no_match.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/start_with_request_default_no_env.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/start_with_request_default_no_match.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/start_with_request_never_match.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/start_with_request_never_no_env.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/start_with_request_trigger_env-001.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/start_with_request_trigger_env-002.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/start_with_request_trigger_match-001.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/start_with_request_trigger_match-002.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/start_with_request_trigger_no_env.phpt
 create mode 100644 xdebug-3.4.5/tests/profiler/start_with_request_trigger_no_match.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/array_map.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assert_test-001-php83.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assert_test-002-php83.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assert_test-003-php83.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assert_test-004-php83.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assignment-trace-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assignment-trace-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assignment-trace-003.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assignment-trace-004.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assignment-trace-005.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assignment-trace-006.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assignment-trace-007.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assignment-trace-008.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assignment-trace-009.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assignment-trace-010.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assignment-trace-011.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assignment-trace-dim-op.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assignment-trace-obj-op-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assignment-trace-obj-op-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assignment-trace-obj-op-003.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assignment-trace-op.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assignment-trace-static-prop-op-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assignment-trace-static-prop-op-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assignment-trace-this-op-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/assignment-trace-this-op-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00002.inc
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00003.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00146.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00173.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00184.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00355.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00501.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00558-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00566-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00642.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00690-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00690-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00699.inc
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00699.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00701.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00702-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00702-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00756.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00799.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00843-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00843-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00847-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00847-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug00905.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01073.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01112.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01140.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01209.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01215.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01471.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01571-001-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01571-001-php82.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01571-001-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01599-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01599-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01676.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01739.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01829.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01837-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01837-004.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01875-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01875-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01896-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01896-php82.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01903-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01903-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01927.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01944.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01950.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01954.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01996-001-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01996-001-php82.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01996-002-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01996-002-php82.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug01999.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug02054.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug02104-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug02104-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug02127-001-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug02127-001-php82.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug02127-001-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug02127-002-php81.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug02127-002-php82.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug02127-002-php84.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug02214-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug02214-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/bug02214.inc
 create mode 100644 xdebug-3.4.5/tests/tracing/call_user_func_array-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/call_user_func_array-002.inc
 create mode 100644 xdebug-3.4.5/tests/tracing/call_user_func_array-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/capture-trace.inc
 create mode 100644 xdebug-3.4.5/tests/tracing/circular-references.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/comp-without-params.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/complex-parameters.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/fiber-001.inc
 create mode 100644 xdebug-3.4.5/tests/tracing/flamegraph-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/flamegraph-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/flamegraph-003.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/flamegraph-004.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/flamegraph-005.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/function_counter.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/functrace_comp.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/functrace_comp_assign.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/functrace_comp_r.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/functrace_typed_properties.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/functrace_variadics.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/include-file.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/internal-parameters.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/nested-function-calls.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/nested-indirect-function.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/nested-static-method-calls.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_no_zlib_compression.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_no_zlib_no_compression.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_trace.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_with_request_always_no_env.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_with_request_always_no_match.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_with_request_default_env-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_with_request_default_env-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_with_request_default_function_call.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_with_request_default_match-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_with_request_default_match-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_with_request_default_no_env.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_with_request_never_match.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_with_request_never_no_env.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_with_request_trigger_env-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_with_request_trigger_env-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_with_request_trigger_match-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_with_request_trigger_match-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_with_request_trigger_no_env.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_with_request_trigger_no_match.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_zlib_compression.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/start_zlib_no_compression.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/static-method-calls.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/test11.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/test15.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/test18.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/test18a.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/test18b.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/test7b.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/test_class.inc
 create mode 100644 xdebug-3.4.5/tests/tracing/text-without-params.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace-003.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace-filter-ns-exclude-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace-filter-ns-exclude-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace-filter-ns-exclude-003.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace-filter-ns-include-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace-filter-ns-include-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace-filter-ns-include-003.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace-filter-ns-include-004.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace-filter-path-exclude-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace-filter-path-include-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace-filter-path-include-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace-filter-path-include-003.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace-filter-path-include-004.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace_enum-001.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace_enum-002.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace_with_magic_call_method.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace_with_magic_call_method_and_contents.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace_with_magic_methods.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/trace_with_naked_filename.phpt
 create mode 100644 xdebug-3.4.5/tests/tracing/variable-functions.phpt
 create mode 100644 xdebug-3.4.5/tests/utils.inc

diff --git a/xdebug-3.4.5/contrib/branch-coverage-to-dot.php b/xdebug-3.4.5/contrib/branch-coverage-to-dot.php
new file mode 100644
index 0000000..7bc9360
--- /dev/null
+++ b/xdebug-3.4.5/contrib/branch-coverage-to-dot.php
@@ -0,0 +1,118 @@
+<?php
+/*
+   +----------------------------------------------------------------------+
+   | Xdebug                                                               |
+   +----------------------------------------------------------------------+
+   | Copyright (c) 2002-2018 Derick Rethans                               |
+   +----------------------------------------------------------------------+
+   | This source file is subject to version 1.01 of the Xdebug license,   |
+   | that is bundled with this package in the file LICENSE, and is        |
+   | available at through the world-wide-web at                           |
+   | https://xdebug.org/license.php                                       |
+   | If you did not receive a copy of the Xdebug license and are unable   |
+   | to obtain it through the world-wide-web, please send a note to       |
+   | derick@xdebug.org so we can mail you a copy immediately.             |
+   +----------------------------------------------------------------------+
+ */
+function branch_coverage_to_dot( $info, $pathInsteadOfBranch = true )
+{
+	$output = '';
+
+	$c = 0;
+
+	$output .= "digraph {\n";
+
+	ksort($info);
+	foreach ( $info as $fname => $file )
+	{
+		if ( preg_match( '/dump-branch-coverage.inc$/', $fname ) )
+		{
+			continue;
+		}
+		if ( preg_match( '/branch-coverage-to-dot.php$/', $fname ) )
+		{
+			continue;
+		}
+
+		if ( !isset( $file['functions'] ) )
+		{
+			continue;
+		}
+
+		$output .= sprintf("subgraph cluster_file_%s {\nlabel=\"%s\";\n", md5($fname), $fname);
+
+		ksort( $file['functions'] );
+		foreach ( $file['functions'] as $fname => $function )
+		{
+			$output .= sprintf("subgraph cluster_%s {\n\tlabel=\"%s\";\n\tgraph [rankdir=\"LR\"];\n\tnode [shape = record];\n", md5($fname), $fname);
+
+			foreach ( $function['branches'] as $bnr => $branch )
+			{
+				$output .= sprintf( "\t\"__%s_%d\" [ label = \"{ op #%d-%d | line %d-%d }\" ];\n",
+					$fname, $bnr,
+					$branch['op_start'], $branch['op_end'],
+					$branch['line_start'], $branch['line_end']
+				);
+
+				if ( ! $pathInsteadOfBranch )
+				{
+					if ( isset( $branch['out'][0] ) )
+					{
+						$output .= sprintf( "\t\"__%s_%d\" -> \"__%s_%d\" %s;\n",
+							$fname, $bnr, $fname, $branch['out'][0],
+							$branch['out_hit'][0] ? '' : '[style=dashed]'
+						);
+					}
+					if ( isset( $branch['out'][1] ) )
+					{
+						$output .= sprintf( "\t\"__%s_%d\" -> \"__%s_%d\" %s;\n",
+							$fname, $bnr, $fname, $branch['out'][1],
+							$branch['out_hit'][1] ? '' : '[style=dashed]'
+						);
+					}
+				}
+			}
+
+			if ( $pathInsteadOfBranch )
+			{
+				$output .= sprintf( "\t\"__%s_ENTRY\" [label=\"ENTRY\"];", $fname );
+				$output .= sprintf( "\t\"__%s_EXIT\" [label=\"EXIT\"];", $fname );
+				foreach( $function['paths'] as $path )
+				{
+					$output .= sprintf( "\t\"__%s_ENTRY\" -> \"__%s_%d\"",
+							$fname, $fname, $path['path'][0]
+					);
+					for ( $i = 1; $i < sizeof( $path['path'] ); $i++ )
+					{
+						$output .= sprintf( " -> \"__%s_%d\"",
+							$fname, $path['path'][$i]
+						);
+					}
+					$lastOp = $path['path'][sizeof($path['path']) - 1];
+
+					if ( isset( $function['branches'][$lastOp]['out'][0] ) && $function['branches'][$lastOp]['out'][0] == 2147483645 )
+					{
+						$output .= sprintf( " -> \"__%s_EXIT\"", $fname );
+					}
+					if ( isset( $function['branches'][$lastOp]['out'][1] ) && $function['branches'][$lastOp]['out'][1] == 2147483645 )
+					{
+						$output .= sprintf( " -> \"__%s_EXIT\"", $fname );
+					}
+					$output .= sprintf( " [color=\"/set19/%d\" penwidth=3 %s];\n",
+						($c % 9) + 1,
+						$path['hit'] ? '' : ' style=dashed'
+					);
+					$c++;
+				}
+			}
+
+			$output .= "}\n";
+		}
+
+		$output .= "}\n";
+	}
+
+	$output .= "}\n";
+
+	return $output;
+}
diff --git a/xdebug-3.4.5/contrib/online_profiling_prepend.php b/xdebug-3.4.5/contrib/online_profiling_prepend.php
new file mode 100644
index 0000000..20e2269
--- /dev/null
+++ b/xdebug-3.4.5/contrib/online_profiling_prepend.php
@@ -0,0 +1,167 @@
+<?php
+
+/*
+ * Online profiling dump - Written by Jani Taskinen <sniper@iki.fi> A.D. 2007
+ *
+ * Usage:
+ *
+ * You can either have this file included by using the php.ini
+ * directive "auto_prepend_file" or including it in your script.
+ *
+ * Passing XDEBUG_PROFILE in GET/POST/COOKIE enables the output.
+ *
+ * Example of download.php:
+
+  <?php
+
+  if (file_exists("/{$_GET['file']}"))
+  {
+    $filesize=filesize("/{$_GET['file']}");
+    $file=basename("/{$_GET['file']}");
+
+// If you want to have always same filename uncomment this:
+//  header("Content-Disposition: attachment; filename=\"cachegrind.out\"");
+    header("Content-Type: application/x-kcachegrind");
+    header("Content-Length: {$filesize}");
+    passthru("cat /tmp/xdebug/{$file}",$err);
+  }
+
+  exit;
+
+  ?>
+
+ *
+ * Example of php.ini options:
+ *
+
+ [xdebug]
+ zend_extension_debug = ${extension_dir}"/xdebug.so"
+ xdebug.profiler_enable = Off
+ xdebug.profiler_enable_trigger = On
+ xdebug.profiler_output_dir = /tmp/xdebug
+ xdebug.profiler_append = On
+ xdebug.profiler_aggregate = Off
+ xdebug.profiler_output_name = %H.%S ; <HTTP_HOST>.<SESSION_ID>
+ xdebug.extended_info = 1
+
+ *
+ */
+
+function xdebug_profiler_shutdown_cb()
+{
+  $is_xmlhttprequest = (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
+
+  if (isset($_REQUEST['XDEBUG_PROFILE']))
+  {
+    $used_memory = xdebug_memory_usage();
+    $sizename = array(" Bytes", " KB", " MB", " GB");
+    $used_memory = round($used_memory / pow(1024, ($i = floor(log($used_memory, 1024)))), 2) . $sizename[$i];
+    $elapsed_time = round(xdebug_time_index() * 1000, 3);
+    $profile = xdebug_get_profiler_filename();
+    $profile_id = md5($profile);
+
+    /* Show result box */
+    if (!$is_xmlhttprequest) // FIXME: How to provide profiler links without breaking possible json?
+    {
+      if ($profile === false)
+      {
+        $path = ini_get('xdebug.profiler_output_dir');
+
+        if ($path != '')
+        {
+          $reason = is_dir($path) ? 'Directory is not writeable' : (file_exists($path) ? "'{$path}' is not directory" : "'$path' does not exist");
+          $output = sprintf('Error: Could not create profile dump in %s<br />(Reason: %s)', $path, $reason);
+        }
+        else
+        {
+          $output = 'Error: xdebug.profiler_output_dir is not set';
+        }
+      }
+      else
+      {
+        $output = "
+<b>Page generated in</b> {$elapsed_time} ms <b>Used memory:</b> {$used_memory}
+<b>Profiler dump:</b> <a href='/download.php?file={$profile}'>{$profile}</a>
+";
+
+        if ($_REQUEST['XDEBUG_PROFILE'] == 'long')
+        {
+          $output.= shell_exec("/usr/bin/callgrind_annotate --inclusive=yes --tree=both $profile");
+        }
+      }
+
+      echo <<< DATA
+<div style="position: absolute; top: 0; z-index: 5000; border: dashed black 1px; background-color: #fff;" id="xdebug_profile_{$profile_id}">
+ <a href="#" style="font-size: 11px;" onclick="javascript: document.getElementById('xdebug_profile_{$profile_id}').style.display = 'none'; return false;">[close]</a>
+ <pre style="padding: 5px;">{$output}</pre>
+ <a href="#" style="font-size: 11px;" onclick="javascript: document.getElementById('xdebug_profile_{$profile_id}').style.display = 'none'; return false;">[close]</a>
+</div>
+DATA;
+    }
+  }
+
+  /* Output box with toggles to enable/disable profiler and annotation */
+  if (!$is_xmlhttprequest)
+  {
+    $profiler = isset($_REQUEST['XDEBUG_PROFILE']) ?
+    array
+    (
+      'enabled' => 1,
+      'checked' => 'checked="checked"',
+      'display' => 'inline',
+    ) :
+    array
+    (
+      'enabled' => 0,
+      'checked' => '',
+      'display' => 'none',
+    );
+
+    $profiler['checked_annotate'] = isset($_REQUEST['XDEBUG_PROFILE']) && $_REQUEST['XDEBUG_PROFILE'] == 'long' ? 'checked="checked"' : '';
+
+    echo <<< DATA
+<!-- XDEBUG Dynamic Profiler -->
+<script type="text/javascript">
+<!--
+var xdebug_Profiler = {$profiler['enabled']};
+function xdebug_setCookie(value)
+{
+  if (value == '')
+    document.cookie = "XDEBUG_PROFILE=; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT";
+  else
+    document.cookie = "XDEBUG_PROFILE=" + value + "; path=/; expires=Fri, 01-Jan-2038 00:00:01 GMT";
+}
+function xdebug_toggleProfiler(output)
+{
+  var annotate = document.getElementById('xdebug_profiler_annotate');
+
+  if (xdebug_Profiler) {
+    xdebug_setCookie('');
+    xdebug_Profiler = 0;
+    annotate.style.display = 'none';
+  } else {
+    xdebug_setCookie(output);
+    xdebug_Profiler = 1;
+    annotate.style.display = 'inline';
+  }
+  return xdebug_Profiler;
+}
+// -->
+</script>
+<div style="padding: 5px; border: dashed black 1px; background-color: #fff; z-index: 1000; position: absolute; top: 0px; right: 5px; " id="xdebug_profile_enable_cookie">
+ <label for="xdebug_toggler" style="vertical-align: top">Toggle Profiler</label>
+ <input id="xdebug_toggler" type="checkbox" onclick="this.checked = xdebug_toggleProfiler(this.value);" value="short" {$profiler['checked']} />
+ <div id="xdebug_profiler_annotate" style="display: {$profiler['display']}">
+  <label for="xdebug_annotate" style="vertical-align: top">Annotate</label>
+  <input id="xdebug_annotate" type="checkbox" onclick="xdebug_setCookie((this.checked)?this.value:'short');" value="long" {$profiler['checked_annotate']} />
+ </div>
+</div>
+DATA;
+  }
+}
+
+/* Register shutdown function */
+if (PHP_SAPI != 'cli')
+{
+  register_shutdown_function('xdebug_profiler_shutdown_cb');
+}
diff --git a/xdebug-3.4.5/php_xdebug.stub.php b/xdebug-3.4.5/php_xdebug.stub.php
new file mode 100644
index 0000000..1a879ab
--- /dev/null
+++ b/xdebug-3.4.5/php_xdebug.stub.php
@@ -0,0 +1,235 @@
+<?php
+/** @generate-function-entries */
+
+/* This file is generated by the 'xdebug.org:html/docs/create-stubs.php' robot
+ * for Xdebug 3.1.0-dev — do not modify by hand */
+
+/* Emits a breakpoint to the debug client */
+function xdebug_break(): bool {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns the calling class */
+/** @return mixed */
+function xdebug_call_class(int $depth = 2) {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns the calling file */
+/** @return mixed */
+function xdebug_call_file(int $depth = 2) {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns the calling function/method */
+/** @return mixed */
+function xdebug_call_function(int $depth = 2) {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns the calling line number */
+/** @return mixed */
+function xdebug_call_line(int $depth = 2) {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns whether code coverage is active */
+function xdebug_code_coverage_started(): bool {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Instructs Xdebug to establish a debugging session */
+function xdebug_connect_to_client(): bool {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Displays information about a variable */
+/** @return void */
+function xdebug_debug_zval(string ...$varname) {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns information about variables to stdout */
+/** @return void */
+function xdebug_debug_zval_stdout(string ...$varname) {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Displays information about super globals */
+/** @return void */
+function xdebug_dump_superglobals() {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns code coverage information */
+function xdebug_get_code_coverage(): array {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns all collected error messages */
+/** @return void */
+function xdebug_get_collected_errors(bool $emptyList = false) {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns the number of functions that have been called */
+function xdebug_get_function_count(): int {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns information about the stack */
+function xdebug_get_function_stack(array $options = []): array {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns the number of garbage collection runs that have been triggered so far */
+function xdebug_get_gc_run_count(): int {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns the number of variable roots that have been collected so far */
+function xdebug_get_gc_total_collected_roots(): int {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns the garbage collection statistics filename */
+/** @return mixed */
+function xdebug_get_gcstats_filename() {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns all the headers as set by calls to PHP's header() function */
+function xdebug_get_headers(): array {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns information about monitored functions */
+function xdebug_get_monitored_functions(): array {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns the profile information filename */
+/** @return mixed */
+function xdebug_get_profiler_filename() {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns the current stack depth level */
+function xdebug_get_stack_depth(): int {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns the name of the function trace file */
+/** @return mixed */
+function xdebug_get_tracefile_name() {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Show and retrieve diagnostic information */
+/** @return mixed */
+function xdebug_info(string $category = null) {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns whether a debugging session is active */
+function xdebug_is_debugger_active(): bool {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns the current memory usage */
+function xdebug_memory_usage(): int {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Sends data to a debugging client */
+function xdebug_notify(mixed $data): bool {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns the peak memory usage */
+function xdebug_peak_memory_usage(): int {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Displays the current function stack */
+/** @return void */
+function xdebug_print_function_stack(string $message = "user triggered", int $options = 0) {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Set filter */
+/** @return void */
+function xdebug_set_filter(int $group, int $listType, array $configuration) {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Starts code coverage */
+/** @return void */
+function xdebug_start_code_coverage(int $options = 0) {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Starts recording all notices, warnings and errors and prevents their display */
+/** @return void */
+function xdebug_start_error_collection() {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Starts function monitoring */
+/** @return void */
+function xdebug_start_function_monitor(array $listOfFunctionsToMonitor) {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Start the collection of garbage collection statistics */
+/** @return mixed */
+function xdebug_start_gcstats(?string $gcstatsFile = null) {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Starts a new function trace */
+function xdebug_start_trace(?string $traceFile = null, int $options = 0): ?string {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Stops code coverage */
+/** @return void */
+function xdebug_stop_code_coverage(bool $cleanUp = true) {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Stops recording of all notices, warnings and errors as started by <a href="/docs/all_functions#xdebug_start_error_collection">xdebug_start_error_collection()</a> */
+/** @return void */
+function xdebug_stop_error_collection() {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Stops monitoring functions */
+/** @return void */
+function xdebug_stop_function_monitor() {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Stops the current garbage collection statistics collection */
+/** @return false|string */
+function xdebug_stop_gcstats() {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Stops the current function trace */
+/** @return false|string */
+function xdebug_stop_trace() {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Returns the current time index */
+function xdebug_time_index(): float {}
+
+/* -----------------------------------------------------------------------*/
+
+/* Displays detailed information about a variable */
+/** @return void */
+function xdebug_var_dump(mixed ...$variable) {}
+
+/* -----------------------------------------------------------------------*/
+
diff --git a/xdebug-3.4.5/tests/base/001.phpt b/xdebug-3.4.5/tests/base/001.phpt
new file mode 100644
index 0000000..16e84bd
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/001.phpt
@@ -0,0 +1,8 @@
+--TEST--
+Check for xdebug presence
+--FILE--
+<?php 
+echo "xdebug extension is available";
+?>
+--EXPECT--
+xdebug extension is available
diff --git a/xdebug-3.4.5/tests/base/bug00001.phpt b/xdebug-3.4.5/tests/base/bug00001.phpt
new file mode 100644
index 0000000..ac88130
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug00001.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Test for crash with a destructor
+--INI--
+xdebug.mode=develop
+xdebug.auto_profile=0
+--FILE--
+<?php
+	class A {
+		public function __destruct() {
+			echo "destructor!\n";
+		}
+	}
+
+	$obj = new A();
+
+	echo "I'm alive!\n";
+?>
+--EXPECT--
+I'm alive!
+destructor!
diff --git a/xdebug-3.4.5/tests/base/bug00241.phpt b/xdebug-3.4.5/tests/base/bug00241.phpt
new file mode 100644
index 0000000..3d680b9
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug00241.phpt
@@ -0,0 +1,101 @@
+--TEST--
+Test for bug #241: Crash in xdebug_get_function_stack()
+--INI--
+xdebug.mode=develop
+xdebug.auto_profile=0
+xdebug.var_display_max_depth=3
+xdebug.var_display_max_children=4
+--FILE--
+<?php
+function error_handler($errno, $string, $file, $line)
+{
+	$entry = Error_Class::newError();
+}
+
+class Error_Class
+{
+	public static function newError($errno = false)
+	{
+		return new Error_Entry(false, $errno);
+	}
+
+	public static function getBT()
+	{
+		$tmp = xdebug_get_function_stack();
+		var_dump($tmp);
+	}
+
+}
+
+class Error_Entry
+{
+	public function __construct($base, $errno)
+	{
+		Error_Class::getBT();
+	}
+}
+
+set_error_handler('error_handler');
+
+$tmp = $_SERVER['FOO'];
+echo "The End\n";
+?>
+--EXPECTF--
+%sbug00241.php:17:
+array(5) {
+  [0] =>
+  array(6) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(6) "{main}"
+    'file' =>
+    string(%d) "%sbug00241.php"
+
+    (more elements)...
+  }
+  [1] =>
+  array(6) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(13) "error_handler"
+    'file' =>
+    string(%d) "%sbug00241.php"
+
+    (more elements)...
+  }
+  [2] =>
+  array(8) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(8) "newError"
+    'type' =>
+    string(6) "static"
+
+    (more elements)...
+  }
+  [3] =>
+  array(8) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(11) "__construct"
+    'type' =>
+    string(7) "dynamic"
+
+    (more elements)...
+  }
+
+  (more elements)...
+}
+The End
diff --git a/xdebug-3.4.5/tests/base/bug00419-sunos.phpt b/xdebug-3.4.5/tests/base/bug00419-sunos.phpt
new file mode 100644
index 0000000..8ecb45f
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug00419-sunos.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Test for bug #419: make use of P_tmpdir if defined instead of hardcoded '/tmp'
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('sunos');
+?>
+--FILE--
+<?php
+echo ini_get( 'xdebug.output_dir' ), "\n";
+?>
+--EXPECT--
+/var/tmp/
diff --git a/xdebug-3.4.5/tests/base/bug00419.phpt b/xdebug-3.4.5/tests/base/bug00419.phpt
new file mode 100644
index 0000000..f4565c6
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug00419.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Test for bug #419: make use of P_tmpdir if defined instead of hardcoded '/tmp'
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('linux');
+?>
+--FILE--
+<?php
+echo ini_get( 'xdebug.output_dir' ), "\n";
+?>
+--EXPECT--
+/tmp
diff --git a/xdebug-3.4.5/tests/base/bug00538.inc b/xdebug-3.4.5/tests/base/bug00538.inc
new file mode 100644
index 0000000..c3e835d
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug00538.inc
@@ -0,0 +1,14 @@
+<?php
+    function call($param1, $param2, $param3)
+    {
+        echo $param1;
+        echo $param2;
+        echo $param3;
+
+		var_dump(xdebug_get_function_stack());
+    }
+
+    $test=getcwd();
+	$value = 'candena\\a\nb';
+	echo $value, "\n";
+    call($test, $value, 'caneda \\\a \\\\b \\\\\c|');
diff --git a/xdebug-3.4.5/tests/base/bug00558-001.phpt b/xdebug-3.4.5/tests/base/bug00558-001.phpt
new file mode 100644
index 0000000..a732260
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug00558-001.phpt
@@ -0,0 +1,11 @@
+--TEST--
+Test for bug #558: PHP segfaults when running a nested eval
+--FILE--
+<?php
+$any = 'printf("foo\n");';
+eval('eval($any);');
+?>
+DONE
+--EXPECT--
+foo
+DONE
diff --git a/xdebug-3.4.5/tests/base/bug00665.phpt b/xdebug-3.4.5/tests/base/bug00665.phpt
new file mode 100644
index 0000000..f4b443d
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug00665.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test for bug #665: xdebug does not respect display_errors=stderr
+--FILE--
+<?php
+$php = getenv('TEST_PHP_EXECUTABLE') . ' -d log_errors=Off -d xdebug.mode=Off';
+
+$force = '-d xdebug.force_display_errors=0';
+
+$error = '-r ' . escapeshellarg('trigger_error("PASS");');
+$exception = '-r ' . escapeshellarg('throw new Exception("PASS");');
+
+$errors_stdout = '-d display_errors=On';
+$errors_stderr = '-d display_errors=stderr';
+$errors_nowhere = '-d display_errors=Off';
+
+$null = substr(PHP_OS, 0, 3) == 'WIN' ? 'NUL' : '/dev/null';
+$output_stdout = "2>$null";
+$output_stderr = "2>&1 >$null";
+
+if (`$php $force $error $errors_stdout $output_stdout`) echo "PASS1\n";
+if (!`$php $force $error $errors_stderr $output_stdout`) echo "PASS2\n";
+if (!`$php $force $error $errors_nowhere $output_stdout`) echo "PASS3\n";
+
+if (!`$php $force $error $errors_stdout $output_stderr`) echo "PASS4\n";
+if (`$php $force $error $errors_stderr $output_stderr`) echo "PASS5\n";
+if (!`$php $force $error $errors_nowhere $output_stderr`) echo "PASS6\n";
+
+if (`$php $force $exception $errors_stdout $output_stdout`) echo "PASS7\n";
+if (!`$php $force $exception $errors_stderr $output_stdout`) echo "PASS8\n";
+if (!`$php $force $exception $errors_nowhere $output_stdout`) echo "PASS9\n";
+
+if (!`$php $force $exception $errors_stdout $output_stderr`) echo "PASS10\n";
+if (`$php $force $exception $errors_stderr $output_stderr`) echo "PASS11\n";
+if (!`$php $force $exception $errors_nowhere $output_stderr`) echo "PASS12\n";
+?>
+--EXPECT--
+PASS1
+PASS2
+PASS3
+PASS4
+PASS5
+PASS6
+PASS7
+PASS8
+PASS9
+PASS10
+PASS11
+PASS12
diff --git a/xdebug-3.4.5/tests/base/bug00723.phpt b/xdebug-3.4.5/tests/base/bug00723.phpt
new file mode 100644
index 0000000..1e84773
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug00723.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Test for bug #723: xdebug is stricter than PHP regarding Exception property types
+--INI--
+html_errors=0
+display_errors=1
+error_reporting=-1
+--FILE--
+<?php
+class MyException extends Exception {
+    function __construct($message) {
+        parent::__construct($message);
+        $this->line = "42"; // this triggers it. if it's before the constructor, PHP freaks out regardless of xdebug
+    }
+}
+
+try {
+    throw new MyException('test');
+} catch (Exception $ex) {
+}
+
+echo "survived";
+?>
+--EXPECTF--
+survived
diff --git a/xdebug-3.4.5/tests/base/bug00787.phpt b/xdebug-3.4.5/tests/base/bug00787.phpt
new file mode 100644
index 0000000..a8bc504
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug00787.phpt
@@ -0,0 +1,15 @@
+--TEST--
+Test for bug #787: Segmentation Fault with PHP header_remove()
+--FILE--
+<?php
+class Utils
+{
+    public static function redirect( $url)
+    {
+        header_remove();
+        exit( 'After header_remove()');
+    }
+}
+Utils::redirect('');
+--EXPECT--
+After header_remove()
diff --git a/xdebug-3.4.5/tests/base/bug00801.phpt b/xdebug-3.4.5/tests/base/bug00801.phpt
new file mode 100644
index 0000000..2b4c01f
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug00801.phpt
@@ -0,0 +1,49 @@
+--TEST--
+Test for bug #801: Segfault with streamwrapper, unclosed $fp and xdebug on destruction
+--FILE--
+<?php
+
+class Handler
+{
+    protected $_sp;
+
+    public function __construct()
+    {
+        $this->_sp = fopen('wrap://lalal', 'a');
+    }
+}
+
+class Wrapper
+{
+    public $context;
+    protected $_fp;
+
+    public function stream_close()
+    {
+        die('DONE');
+    }
+
+    public function stream_open($path, $mode)
+    {
+        $this->_fp = fopen(sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'asdf', $mode);
+
+        return true;
+    }
+}
+
+stream_wrapper_register('wrap', 'Wrapper');
+
+class Manager
+{
+    public static $stuff;
+}
+
+Manager::$stuff = new stdClass();
+Manager::$stuff->Logs = new Handler;
+?>
+--AFTER--
+<?php
+unlink(sys_get_temp_dir() .'/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'asdf');
+?>
+--EXPECT--
+DONE
diff --git a/xdebug-3.4.5/tests/base/bug00823.phpt b/xdebug-3.4.5/tests/base/bug00823.phpt
new file mode 100644
index 0000000..67a0ac2
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug00823.phpt
@@ -0,0 +1,11 @@
+--TEST--
+Test for bug #823: Single quotes are escaped in var_dumped string output
+--INI--
+xdebug.mode=off
+xdebug.cli_color=0
+--FILE--
+<?php
+var_dump("'hello world'");
+?>
+--EXPECT--
+string(13) "'hello world'"
diff --git a/xdebug-3.4.5/tests/base/bug00913-php80.phpt b/xdebug-3.4.5/tests/base/bug00913-php80.phpt
new file mode 100644
index 0000000..3376129
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug00913-php80.phpt
@@ -0,0 +1,239 @@
+--TEST--
+Test for bug #913: "Added debug info handler to DOM objects" not supported (< PHP 8.1)
+--INI--
+xdebug.mode=develop
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.1; class DOMDocument');
+?>
+--FILE--
+<?php
+$DOMDocumentNode = new DOMDocument();
+$DOMDocumentNode->loadXML('<example a="b">Test</example>');
+$DOMElementNode   = $DOMDocumentNode->documentElement;
+$DOMAttributeNode = $DOMElementNode->getAttributeNode('a');
+$DOMTextNode      = $DOMElementNode->firstChild;
+
+error_reporting(0);
+var_dump($DOMDocumentNode, $DOMElementNode, $DOMAttributeNode, $DOMTextNode);
+?>
+--EXPECTF--
+%sbug00913-php80.php:%d:
+class DOMDocument#%d (38) {
+  public $doctype =>
+  NULL
+  public $implementation =>
+  string(22) "(object value omitted)"
+  public $documentElement =>
+  string(22) "(object value omitted)"
+  public $actualEncoding =>
+  NULL
+  public $encoding =>
+  NULL
+  public $xmlEncoding =>
+  NULL
+  public $standalone =>
+  bool(true)
+  public $xmlStandalone =>
+  bool(true)
+  public $version =>
+  string(3) "1.0"
+  public $xmlVersion =>
+  string(3) "1.0"
+  public $strictErrorChecking =>
+  bool(true)
+  public $documentURI =>
+  string(%d) "%s"
+  public $config =>
+  NULL
+  public $formatOutput =>
+  bool(false)
+  public $validateOnParse =>
+  bool(false)
+  public $resolveExternals =>
+  bool(false)
+  public $preserveWhiteSpace =>
+  bool(true)
+  public $recover =>
+  bool(false)
+  public $substituteEntities =>
+  bool(false)
+  public $firstElementChild =>
+  string(22) "(object value omitted)"
+  public $lastElementChild =>
+  string(22) "(object value omitted)"
+  public $childElementCount =>
+  int(1)
+  public $nodeName =>
+  string(9) "#document"
+  public $nodeValue =>
+  NULL
+  public $nodeType =>
+  int(9)
+  public $parentNode =>
+  NULL
+  public $childNodes =>
+  string(22) "(object value omitted)"
+  public $firstChild =>
+  string(22) "(object value omitted)"
+  public $lastChild =>
+  string(22) "(object value omitted)"
+  public $previousSibling =>
+  NULL
+  public $nextSibling =>
+  NULL
+  public $attributes =>
+  NULL
+  public $ownerDocument =>
+  NULL
+  public $namespaceURI =>
+  NULL
+  public $prefix =>
+  string(0) ""
+  public $localName =>
+  NULL
+  public $baseURI =>
+  string(%d) "%s"
+  public $textContent =>
+  string(4) "Test"
+}
+%sbug00913-php80.php:%d:
+class DOMElement#2 (23) {
+  public $tagName =>
+  string(7) "example"
+  public $schemaTypeInfo =>
+  NULL
+  public $firstElementChild =>
+  NULL
+  public $lastElementChild =>
+  NULL
+  public $childElementCount =>
+  int(0)
+  public $previousElementSibling =>
+  NULL
+  public $nextElementSibling =>
+  NULL
+  public $nodeName =>
+  string(7) "example"
+  public $nodeValue =>
+  string(4) "Test"
+  public $nodeType =>
+  int(1)
+  public $parentNode =>
+  string(22) "(object value omitted)"
+  public $childNodes =>
+  string(22) "(object value omitted)"
+  public $firstChild =>
+  string(22) "(object value omitted)"
+  public $lastChild =>
+  string(22) "(object value omitted)"
+  public $previousSibling =>
+  NULL
+  public $nextSibling =>
+  NULL
+  public $attributes =>
+  string(22) "(object value omitted)"
+  public $ownerDocument =>
+  string(22) "(object value omitted)"
+  public $namespaceURI =>
+  NULL
+  public $prefix =>
+  string(0) ""
+  public $localName =>
+  string(7) "example"
+  public $baseURI =>
+  string(%d) "%s"
+  public $textContent =>
+  string(4) "Test"
+}
+%sbug00913-php80.php:%d:
+class DOMAttr#3 (21) {
+  public $name =>
+  string(1) "a"
+  public $specified =>
+  bool(true)
+  public $value =>
+  string(1) "b"
+  public $ownerElement =>
+  string(22) "(object value omitted)"
+  public $schemaTypeInfo =>
+  NULL
+  public $nodeName =>
+  string(1) "a"
+  public $nodeValue =>
+  string(1) "b"
+  public $nodeType =>
+  int(2)
+  public $parentNode =>
+  string(22) "(object value omitted)"
+  public $childNodes =>
+  string(22) "(object value omitted)"
+  public $firstChild =>
+  string(22) "(object value omitted)"
+  public $lastChild =>
+  string(22) "(object value omitted)"
+  public $previousSibling =>
+  NULL
+  public $nextSibling =>
+  NULL
+  public $attributes =>
+  NULL
+  public $ownerDocument =>
+  string(22) "(object value omitted)"
+  public $namespaceURI =>
+  NULL
+  public $prefix =>
+  string(0) ""
+  public $localName =>
+  string(1) "a"
+  public $baseURI =>
+  string(%d) "%s"
+  public $textContent =>
+  string(1) "b"
+}
+%sbug00913-php80.php:%d:
+class DOMText#4 (21) {
+  public $wholeText =>
+  string(4) "Test"
+  public $data =>
+  string(4) "Test"
+  public $length =>
+  int(4)
+  public $previousElementSibling =>
+  NULL
+  public $nextElementSibling =>
+  NULL
+  public $nodeName =>
+  string(5) "#text"
+  public $nodeValue =>
+  string(4) "Test"
+  public $nodeType =>
+  int(3)
+  public $parentNode =>
+  string(22) "(object value omitted)"
+  public $childNodes =>
+  string(22) "(object value omitted)"
+  public $firstChild =>
+  NULL
+  public $lastChild =>
+  NULL
+  public $previousSibling =>
+  NULL
+  public $nextSibling =>
+  NULL
+  public $attributes =>
+  NULL
+  public $ownerDocument =>
+  string(22) "(object value omitted)"
+  public $namespaceURI =>
+  NULL
+  public $prefix =>
+  string(0) ""
+  public $localName =>
+  NULL
+  public $baseURI =>
+  string(%d) "%s"
+  public $textContent =>
+  string(4) "Test"
+}
diff --git a/xdebug-3.4.5/tests/base/bug00913-php81.phpt b/xdebug-3.4.5/tests/base/bug00913-php81.phpt
new file mode 100644
index 0000000..8133bdd
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug00913-php81.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test for bug #913: "Added debug info handler to DOM objects" not supported (>= PHP 8.1)
+--INI--
+xdebug.mode=develop
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1; class DOMDocument');
+?>
+--FILE--
+<?php
+$DOMDocumentNode = new DOMDocument();
+$DOMDocumentNode->loadXML('<example a="b">Test</example>');
+$DOMElementNode   = $DOMDocumentNode->documentElement;
+$DOMAttributeNode = $DOMElementNode->getAttributeNode('a');
+$DOMTextNode      = $DOMElementNode->firstChild;
+
+error_reporting(0);
+var_dump($DOMDocumentNode, $DOMElementNode, $DOMAttributeNode, $DOMTextNode);
+?>
+--EXPECTF--
+%sbug00913-php81.php:%d:
+class DOMDocument#1 (%d) {%A
+}
+%sbug00913-php81.php:%d:
+class DOMElement#2 (%d) {%A
+}
+%sbug00913-php81.php:%d:
+class DOMAttr#3 (%d) {%A
+}
+%sbug00913-php81.php:%d:
+class DOMText#4 (%d) {%A
+}
diff --git a/xdebug-3.4.5/tests/base/bug00931.phpt b/xdebug-3.4.5/tests/base/bug00931.phpt
new file mode 100644
index 0000000..04d645b
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug00931.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Test for bug #931: Crash with exception in shut-down stage
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext session');
+?>
+--INI--
+xdebug.mode=off
+--FILE--
+<?php
+session_start();
+$_SESSION['test'] = function() { };
+echo "DONE";
+?>
+--EXPECTF--
+DONE
+Fatal error: Uncaught%sSerialization of 'Closure' is not allowed%sin [no active file]:0
+Stack trace:
+#0 {main}
+  thrown in [no active file] on line 0
diff --git a/xdebug-3.4.5/tests/base/bug00978-002.phpt b/xdebug-3.4.5/tests/base/bug00978-002.phpt
new file mode 100644
index 0000000..cf45ca1
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug00978-002.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Test for bug #978: Inspection of array with negative keys fails
+--FILE--
+<?php
+include dirname(__FILE__) . '/bug00978.inc';
+
+xdebug_debug_zval('$a');
+xdebug_debug_zval('$a[-1]');
+xdebug_debug_zval('$a[-]');
+xdebug_debug_zval('$a[1]');
+?>
+--EXPECTF--
+4
+$a: (%s, is_ref=0)=array (0 => (%s, is_ref=0)='nul', -1 => (%s, is_ref=0)='minus one', -2 => (%s, is_ref=0)='not two', 1 => (%s, is_ref=0)='een')
+$a[-1]: (%s, is_ref=0)='minus one'
+$a[-]: no such symbol
+$a[1]: (%s, is_ref=0)='een'
diff --git a/xdebug-3.4.5/tests/base/bug00978.inc b/xdebug-3.4.5/tests/base/bug00978.inc
new file mode 100644
index 0000000..2cead5a
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug00978.inc
@@ -0,0 +1,9 @@
+<?php
+$a = array(
+	0 => 'nul',
+	-1 => 'minus one',
+	-2 => 'not two',
+	1 => 'een',
+);
+echo count($a), "\n";
+?>
diff --git a/xdebug-3.4.5/tests/base/bug01048-002.phpt b/xdebug-3.4.5/tests/base/bug01048-002.phpt
new file mode 100644
index 0000000..0e7bcfb
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug01048-002.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Test for bug #1048: Can not get $GLOBAL variable by property_value on function context
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.1');
+?>
+--FILE--
+<?php
+include dirname(__FILE__) . '/bug01048.inc';
+
+xdebug_debug_zval('$GLOBALS[\'cache\']');
+xdebug_debug_zval('$GLOBALS[\'cache\']');
+?>
+--EXPECTF--
+11$GLOBALS['cache']: (%s, is_ref=0)='cache'
+$GLOBALS['cache']: (%s, is_ref=0)='cache'
diff --git a/xdebug-3.4.5/tests/base/bug01048.inc b/xdebug-3.4.5/tests/base/bug01048.inc
new file mode 100644
index 0000000..9996a60
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug01048.inc
@@ -0,0 +1,12 @@
+<?php
+
+function foo() {
+    $GLOBALS['cache'] = "cache";
+    xdebug_break(); // 1
+    echo 1;
+}
+
+foo();
+xdebug_break(); // 2
+echo 1;
+?>
diff --git a/xdebug-3.4.5/tests/base/bug01088.phpt b/xdebug-3.4.5/tests/base/bug01088.phpt
new file mode 100644
index 0000000..51679ed
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug01088.phpt
@@ -0,0 +1,82 @@
+--TEST--
+Test for bug #1088: Xdebug won't show dead and not executed lines at the 2nd time (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+class TestMe
+{
+    public function test_deadcode()
+    {
+        $a = 1;
+        return;
+        $a = 'this line wont be executed';
+    }
+}
+
+xdebug_start_code_coverage (XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+$testObj = new TestMe();
+$testObj->test_deadcode();
+$c = xdebug_get_code_coverage();
+ksort($c);
+var_dump($c);
+xdebug_stop_code_coverage();
+
+xdebug_start_code_coverage (XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+$testObj = new TestMe();
+$testObj->test_deadcode();
+$testObj->test_deadcode();
+$testObj->test_deadcode();
+$c = xdebug_get_code_coverage();
+ksort($c);
+var_dump($c);
+xdebug_stop_code_coverage();
+?>
+--EXPECTF--
+array(1) {
+  ["%sbug01088.php"]=>
+  array(7) {
+    [6]=>
+    int(1)
+    [7]=>
+    int(1)
+    [8]=>
+    int(-2)
+    [9]=>
+    int(-2)
+    [13]=>
+    int(1)
+    [14]=>
+    int(1)
+    [15]=>
+    int(1)
+  }
+}
+array(1) {
+  ["%sbug01088.php"]=>
+  array(9) {
+    [6]=>
+    int(1)
+    [7]=>
+    int(1)
+    [8]=>
+    int(-2)
+    [9]=>
+    int(-2)
+    [21]=>
+    int(1)
+    [22]=>
+    int(1)
+    [23]=>
+    int(1)
+    [24]=>
+    int(1)
+    [25]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/base/bug01133.phpt b/xdebug-3.4.5/tests/base/bug01133.phpt
new file mode 100644
index 0000000..b6f9c21
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug01133.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Test for bug #1133: PDO exception code value type is changed
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext pdo_sqlite');
+?>
+--FILE--
+<?php
+
+try {
+    $pdo = new PDO("sqlite::memory:");
+    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+    $pdo->query("INSERT INTO fake_table VALUES ('bogus')");
+} catch (PDOException $e) {
+    var_dump($e->getCode());
+    var_dump($e->getMessage());
+}
+?>
+--EXPECT--
+string(5) "HY000"
+string(59) "SQLSTATE[HY000]: General error: 1 no such table: fake_table"
diff --git a/xdebug-3.4.5/tests/base/bug01148.phpt b/xdebug-3.4.5/tests/base/bug01148.phpt
new file mode 100644
index 0000000..628a2ab
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug01148.phpt
@@ -0,0 +1,10 @@
+--TEST--
+Test for bug #1148: Can't disable max_nesting_function
+--INI--
+xdebug.max_nesting_level=-1
+--FILE--
+<?php
+echo strlen("42234");
+?>
+--EXPECT--
+5
diff --git a/xdebug-3.4.5/tests/base/bug01266.phpt b/xdebug-3.4.5/tests/base/bug01266.phpt
new file mode 100644
index 0000000..195efc3
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug01266.phpt
@@ -0,0 +1,19 @@
+--TEST--
+Test for bug #1266: xdebug_dump_superglobals() always dumps empty $_SESSION stack on PHP 7
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext session');
+?>
+--INI--
+xdebug.dump.SESSION=*
+--FILE--
+<?php
+session_start();
+$_SESSION['foo'] = 'bar';
+
+xdebug_dump_superglobals();
+?>
+--EXPECT--
+Dump $_SESSION
+   $_SESSION['foo'] = 'bar'
diff --git a/xdebug-3.4.5/tests/base/bug01272-002.phpt b/xdebug-3.4.5/tests/base/bug01272-002.phpt
new file mode 100644
index 0000000..eca9351
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug01272-002.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Test for bug #1272: property_get doesn't return attributes for SimpleXMLElement
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext simplexml');
+?>
+--FILE--
+<?php
+include dirname(__FILE__) . '/bug01272.inc';
+
+xdebug_debug_zval('e');
+xdebug_debug_zval('e->@attributes');
+xdebug_debug_zval('e->@attributes["att1"]');
+xdebug_debug_zval('e->b[0]->@attributes');
+xdebug_debug_zval('e->b[1]->@attributes["attb"]');
+?>
+--EXPECTF--
+attb-1
+attb-2
+e: (refcount=1, is_ref=0)=class SimpleXMLElement { public $@attributes = (refcount=1, is_ref=0)=array ('att1' => (refcount=1, is_ref=0)='att-a'); public $b = (refcount=1, is_ref=0)=array (0 => (refcount=1, is_ref=0)=class SimpleXMLElement { ... }, 1 => (refcount=1, is_ref=0)=class SimpleXMLElement { ... }) }
+e->@attributes: (refcount=%d, is_ref=0)=array ('att1' => (refcount=1, is_ref=0)='att-a')
+e->@attributes["att1"]: (refcount=%d, is_ref=0)='att-a'
+e->b[0]->@attributes: (refcount=%d, is_ref=0)=array ('attb' => (refcount=1, is_ref=0)='attb-1')
+e->b[1]->@attributes["attb"]: (refcount=%d, is_ref=0)='attb-2'
diff --git a/xdebug-3.4.5/tests/base/bug01272.inc b/xdebug-3.4.5/tests/base/bug01272.inc
new file mode 100644
index 0000000..6820c73
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug01272.inc
@@ -0,0 +1,10 @@
+<?php
+
+$xml = "<a att1='att-a'><b attb='attb-1'/><b attb='attb-2'/></a>";
+
+$e = new SimpleXmlElement($xml);
+
+foreach($e->b as $b) { // breakpoint here
+    echo $b['attb'].PHP_EOL;
+}
+?>
diff --git a/xdebug-3.4.5/tests/base/bug01515-001.phpt b/xdebug-3.4.5/tests/base/bug01515-001.phpt
new file mode 100644
index 0000000..d100dd5
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug01515-001.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Test for bug #1515: Object property names with a NULL char are cut off at NULL char (var_dump)
+--INI--
+html_errors=0
+xdebug.mode=develop
+xdebug.cli_color=0
+--FILE--
+<?php
+include dirname(__FILE__) . '/bug01515.inc';
+
+ini_set('html_errors', 1);
+var_dump($obj);
+
+ini_set('html_errors', 0);
+var_dump($obj);
+
+ini_set('xdebug.cli_color', 2);
+var_dump($obj);
+?>
+--EXPECTF--
+We're here
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01515-001.php:5:</small>
+<b>object</b>(<i>stdClass</i>)[<i>1</i>]
+  <i>public</i> 'with_ _null_char' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>42</font>
+</pre>%sbug01515-001.php:8:
+class stdClass#1 (1) {
+  public $with_ _null_char =>
+  int(42)
+}
+[1m%sbug01515-001.php[22m:[1m11[22m:
+[1mclass[22m [31mstdClass[0m#1 ([32m1[0m) {
+  [32m[1mpublic[22m[0m $with_ _null_char [0m=>[0m
+  [1mint[22m([32m42[0m)
+}
diff --git a/xdebug-3.4.5/tests/base/bug01515.inc b/xdebug-3.4.5/tests/base/bug01515.inc
new file mode 100644
index 0000000..a5ff0dc
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug01515.inc
@@ -0,0 +1,7 @@
+<?php
+$obj = new stdClass;
+$name = "with_\0_null_char";
+$obj->$name = 42;
+
+echo "We're here\n";
+?>
diff --git a/xdebug-3.4.5/tests/base/bug01556.phpt b/xdebug-3.4.5/tests/base/bug01556.phpt
new file mode 100644
index 0000000..72001d7
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug01556.phpt
@@ -0,0 +1,16 @@
+--TEST--
+Test for bug #1556: Crash when register_shutdown_function() is called with a function named call_user_func*
+--FILE--
+<?php
+register_shutdown_function('call_user_funca');
+
+function call_user_funca()
+{
+	echo "in call_user_funca\n";
+}
+
+?>
+==DONE==
+--EXPECTF--
+==DONE==
+in call_user_funca
diff --git a/xdebug-3.4.5/tests/base/bug01583.phpt b/xdebug-3.4.5/tests/base/bug01583.phpt
new file mode 100644
index 0000000..119885a
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug01583.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Test for bug #1583: Xdebug crashes when OPcache's compact literals optimisation is on
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext json');
+?>
+--FILE--
+<?php
+class Foo
+{
+    public function __destruct() { $this->shutdown(); }
+    public function shutdown($how=STREAM_SHUT_RDWR) { }
+}
+
+function get_it()
+{
+    return false;
+
+}
+
+$x = new Foo();
+$x->shutdown();
+echo json_encode(['x'=>get_it()]);
+?>
+--EXPECT--
+{"x":false}
diff --git a/xdebug-3.4.5/tests/base/bug01629.phpt b/xdebug-3.4.5/tests/base/bug01629.phpt
new file mode 100644
index 0000000..475ff22
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug01629.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Test for bug #1629: SOAP Client/Server detection code does not handle inherited classes
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext soap');
+?>
+--FILE--
+<?php
+class SoapAgent extends \SoapClient
+{
+    public function __construct(string $wsdl)
+    {
+        try {
+            parent::__construct($wsdl);
+            echo 'Success!' . PHP_EOL;
+        } catch (\Throwable $t) {
+            echo $t->GetMessage(), "\n";
+        }
+    }
+}
+
+$client = new SoapAgent('test');
+?>
+--EXPECT--
+SOAP-ERROR: Parsing WSDL: Couldn't load from 'test' : failed to load external entity "test"
diff --git a/xdebug-3.4.5/tests/base/bug01758.phpt b/xdebug-3.4.5/tests/base/bug01758.phpt
new file mode 100644
index 0000000..d5534e2
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug01758.phpt
@@ -0,0 +1,18 @@
+--TEST--
+Test for bug #1758: Xdebug changes error_get_last results inside a try catch
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+register_shutdown_function(function () {
+    var_dump(error_get_last());
+});
+
+try {
+    new DateTime('Incorrect value');
+} catch (Exception $e) {
+}
+?>
+--EXPECTF--
+%sbug01758.php:%d:
+NULL
diff --git a/xdebug-3.4.5/tests/base/bug01790.phpt b/xdebug-3.4.5/tests/base/bug01790.phpt
new file mode 100644
index 0000000..e4e2bd6
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug01790.phpt
@@ -0,0 +1,47 @@
+--TEST--
+Test for bug #1790: Segfault in var_dump() or while debugging with protobuf extension
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext protobuf');
+?>
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+ini_set('html_errors', 0);
+ini_set('xdebug.cli_color', 0);
+var_dump(new \Google\Protobuf\Timestamp());
+
+echo "\n--\n\n";
+
+ini_set('html_errors', 1);
+ini_set('xdebug.cli_color', 0);
+var_dump(new \Google\Protobuf\Timestamp());
+
+echo "\n\n--\n\n";
+
+ini_set('html_errors', 0);
+ini_set('xdebug.cli_color', 1);
+var_dump(new \Google\Protobuf\Timestamp());
+?>
+--EXPECTF--
+%sbug01790.php:%d:
+class Google\Protobuf\Timestamp#%d (0) {
+  ...
+}
+
+--
+
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01790.php:%d:</small>
+<b>object</b>(<i>Google\Protobuf\Timestamp</i>)[<i>%d</i>]
+  ...
+</pre>
+
+--
+
+%sbug01790.php:%d:
+class Google\Protobuf\Timestamp#%d (0) {
+  ...
+}%A
diff --git a/xdebug-3.4.5/tests/base/bug01907.phpt b/xdebug-3.4.5/tests/base/bug01907.phpt
new file mode 100644
index 0000000..e11a2ed
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug01907.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test for bug #1907: Empty exception message when setting the $message property to a stringable object
+--FILE--
+<?php
+  
+class LazyException extends Exception
+{
+    public function __construct()
+    {
+        parent::__construct();
+
+        $this->message = new class() {
+            public function __toString()
+            {
+                return 'World';
+            }
+        };
+    }
+}
+
+$e = new LazyException();
+
+try {
+    throw $e;
+} catch (\Exception $e) {
+    echo 'Hello ';
+    echo $e->getMessage();
+    echo "\n";
+}
+?>
+--EXPECT--
+Hello World
diff --git a/xdebug-3.4.5/tests/base/bug02020.phpt b/xdebug-3.4.5/tests/base/bug02020.phpt
new file mode 100644
index 0000000..2acc49d
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug02020.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Test for bug #2020: segfault if xdebug.dump.GET=* and integer key without value in URL
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!win');
+?>
+--INI--
+xdebug.dump.GET=*
+xdebug.mode=develop
+--GET--
+1
+--FILE--
+<?php
+throw new Exception("OOPS");
+?>
+--EXPECTF--
+Fatal error: Uncaught Exception: OOPS in %sbug02020.php on line 2
+
+Exception: OOPS in %sbug02020.php on line 2
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug02020.php:0
+
+Dump $_GET
+   $_GET[1] = ''
diff --git a/xdebug-3.4.5/tests/base/bug02034.phpt b/xdebug-3.4.5/tests/base/bug02034.phpt
new file mode 100644
index 0000000..dd2ee46
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug02034.phpt
@@ -0,0 +1,11 @@
+--TEST--
+Test for bug #2034: Segmentation fault when 'set_time_limit' function is disabled
+--INI--
+disable_functions=set_time_limit
+xdebug.mode=debug,develop
+--FILE--
+<?php
+echo "Hello\n";
+?>
+--EXPECT--
+Hello
diff --git a/xdebug-3.4.5/tests/base/bug02036-php83.phpt b/xdebug-3.4.5/tests/base/bug02036-php83.phpt
new file mode 100644
index 0000000..c1b5677
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug02036-php83.phpt
@@ -0,0 +1,39 @@
+--TEST--
+Test for bug #2036: Segfault on fiber switch in finally block in garbage collected fiber (>= PHP 8.1, < PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1, < 8.4');
+?>
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+
+$fiberA = new Fiber(function () {
+    Fiber::suspend();
+});
+
+$fiberB = new Fiber(function () use ($fiberA) {
+    try {
+        Fiber::suspend();
+    } finally {
+        $fiberA->start();
+    }
+});
+
+$fiberB->start();
+
+echo "==DONE==\n";
+?>
+--EXPECTF--
+==DONE==
+
+Fatal error: Uncaught FiberError: Cannot switch fibers in current execution context in %sbug02036-php83.php on line 11
+
+FiberError: Cannot switch fibers in current execution context in %sbug02036-php83.php on line 11
+
+Call Stack:
+%w%f %w%d   1. {fiber:%s}() %sbug02036-php83.php:15
+%w%f %w%d   2. {closure:%sbug02036-php83.php:7-13}() %sbug02036-php83.php:15
+%w%f %w%d   3. Fiber->start() %sbug02036-php83.php:11
diff --git a/xdebug-3.4.5/tests/base/bug02036-php84.phpt b/xdebug-3.4.5/tests/base/bug02036-php84.phpt
new file mode 100644
index 0000000..0bb426e
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug02036-php84.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test for bug #2036: Segfault on fiber switch in finally block in garbage collected fiber (>= PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2; ext posix; ext pcntl');
+?>
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+
+pcntl_signal(SIGTERM, function () {
+    $f = new Fiber(function () {});
+    $f->start();
+});
+
+posix_kill(posix_getpid(), SIGTERM);
+
+pcntl_signal_dispatch();
+
+echo "==DONE==\n";
+?>
+--EXPECTF--
+Fatal error: Uncaught FiberError: Cannot switch fibers in current execution context in %sbug02036-php84.php on line 5
+
+FiberError: Cannot switch fibers in current execution context in %sbug02036-php84.php on line 5
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug02036-php84.php:0
+%w%f %w%d   2. pcntl_signal_dispatch() %sbug02036-php84.php:10
+%w%f %w%d   3. {closure:%sbug02036-php84.php:3-6}(%S) %sbug02036-php84.php:10
+%w%f %w%d   4. Fiber->start() %sbug02036-php84.php:5
diff --git a/xdebug-3.4.5/tests/base/bug02100.phpt b/xdebug-3.4.5/tests/base/bug02100.phpt
new file mode 100644
index 0000000..c4f4cf0
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug02100.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Test for bug #2100: Exceptions in __debugInfo() can cause issues
+--FILE--
+<?php
+class test
+{
+	public function throw(test $object)
+	{
+		throw new Exception('X');
+	}
+
+	public function __debugInfo()
+	{
+		throw new Exception('Y');
+		return [];
+	}
+}
+
+try {
+	$t1 = new test;
+	$t1->throw(new test);
+} catch (Exception $e) {
+	echo 'All is well';
+}
+?>
+--EXPECT--
+All is well
diff --git a/xdebug-3.4.5/tests/base/bug02295.phpt b/xdebug-3.4.5/tests/base/bug02295.phpt
new file mode 100644
index 0000000..0ce12b9
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug02295.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Test for bug #2295: var_dump(SensitiveParameterValue) segfaults
+--INI--
+xdebug.mode=develop
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2');
+?>
+--FILE--
+<?php
+
+function sp(#[SensitiveParameter] string $str): void
+{
+	var_dump($str);
+}
+
+function spv(SensitiveParameterValue $spv): void
+{
+	var_dump($spv);
+}
+
+ini_set('html_errors', 0);
+sp('a'); // ok
+spv(new SensitiveParameterValue('p'));
+
+ini_set('xdebug.cli_color', 2);
+sp('a'); // ok
+spv(new SensitiveParameterValue('p'));
+
+ini_set('html_errors', 1);
+sp('a'); // ok
+spv(new SensitiveParameterValue('p'));
+?>
+--EXPECTF--
+%sbug02295.php:5:
+string(1) "a"
+%sbug02295.php:10:
+class SensitiveParameterValue#%d (0) {
+}
+[1m%sbug02295.php[22m:[1m5[22m:
+[1mstring[22m([32m1[0m) "[31ma[0m"
+[1m%sbug02295.php[22m:[1m10[22m:
+[1mclass[22m [31mSensitiveParameterValue[0m#1 ([32m0[0m) {
+}
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug02295.php:5:</small><small>string</small> <font color='#cc0000'>'a'</font> <i>(length=1)</i>
+</pre><pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug02295.php:10:</small>
+<b>object</b>(<i>SensitiveParameterValue</i>)[<i>1</i>]
+</pre>
diff --git a/xdebug-3.4.5/tests/base/bug02307-001.phpt b/xdebug-3.4.5/tests/base/bug02307-001.phpt
new file mode 100644
index 0000000..9ed97f1
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug02307-001.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Test for bug #2307: Segmentation fault due to a superglobal being a reference [1]
+--INI--
+xdebug.mode=develop,trace
+--FILE--
+<?php
+echo "bla";
+$fasel = &$_GET;
+register_shutdown_function(function () { echo "shutdown"; });
+?>
+--EXPECT--
+blashutdown
diff --git a/xdebug-3.4.5/tests/base/bug02307-002.phpt b/xdebug-3.4.5/tests/base/bug02307-002.phpt
new file mode 100644
index 0000000..42afddf
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug02307-002.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Test for bug #2307: Segmentation fault due to a superglobal being a reference [2]
+--INI--
+xdebug.mode=develop,trace
+--FILE--
+<?php
+echo "bla";
+$fasel = &$_GET;
+
+set_exception_handler(static function () {
+echo '1';
+});
+
+require_once '_non_existing_file';
+?>
+--EXPECTF--
+bla
+Warning: require_once(_non_existing_file): Failed to open stream: No such file or directory in %sbug02307-002.php on line %d
+%A
+1
diff --git a/xdebug-3.4.5/tests/base/bug02307-003.inc b/xdebug-3.4.5/tests/base/bug02307-003.inc
new file mode 100644
index 0000000..4b5f499
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug02307-003.inc
@@ -0,0 +1,2 @@
+<?php
+echo "a"b"; # PHP-Syntax-Error
diff --git a/xdebug-3.4.5/tests/base/bug02307-003.phpt b/xdebug-3.4.5/tests/base/bug02307-003.phpt
new file mode 100644
index 0000000..125094c
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug02307-003.phpt
@@ -0,0 +1,15 @@
+--TEST--
+Test for bug #2307: Segmentation fault due to a superglobal being a reference [3]
+--INI--
+xdebug.mode=develop,trace
+--FILE--
+<?php
+$get = &$_GET;
+function bla(Throwable $exception) {
+echo "fasel";
+}
+set_exception_handler("bla");
+include __DIR__ . '/bug02307-003.inc';
+?>
+--EXPECT--
+fasel
diff --git a/xdebug-3.4.5/tests/base/bug02319.phpt b/xdebug-3.4.5/tests/base/bug02319.phpt
new file mode 100644
index 0000000..fb0728d
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug02319.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Test for bug #2319: Emojis are not handled correctly in xdebug's var_dumps
+--INI--
+xdebug.mode=develop
+html_errors=1
+--FILE--
+<?php
+$str = 'hello 👍';
+var_dump($str);
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug02319.php:3:</small><small>string</small> <font color='#cc0000'>'hello 👍'</font> <i>(length=10)</i>
+</pre>
diff --git a/xdebug-3.4.5/tests/base/bug02321-001.phpt b/xdebug-3.4.5/tests/base/bug02321-001.phpt
new file mode 100644
index 0000000..02e9783
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug02321-001.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Test for bug #2321: Seg fault when null is assigned to $_POST
+--INI--
+xdebug.mode=develop,trace
+--FILE--
+<?php
+echo "bla";
+$_POST = NULL;
+
+set_exception_handler(static function () {
+echo '1';
+});
+
+require_once '_non_existing_file';
+?>
+--EXPECTF--
+bla
+Warning: require_once(_non_existing_file): Failed to open stream: No such file or directory in %sbug02321-001.php on line %d
+%A
+1
diff --git a/xdebug-3.4.5/tests/base/bug02321-002.phpt b/xdebug-3.4.5/tests/base/bug02321-002.phpt
new file mode 100644
index 0000000..81921fd
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug02321-002.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Test for bug #2321: Seg fault when null is assigned to $_GET
+--INI--
+xdebug.mode=develop,trace
+--FILE--
+<?php
+echo "bla";
+$_GET = NULL;
+
+set_exception_handler(static function () {
+echo '1';
+});
+
+require_once '_non_existing_file';
+?>
+--EXPECTF--
+bla
+Warning: require_once(_non_existing_file): Failed to open stream: No such file or directory in %sbug02321-002.php on line %d
+%A
+1
diff --git a/xdebug-3.4.5/tests/base/bug02321-003.phpt b/xdebug-3.4.5/tests/base/bug02321-003.phpt
new file mode 100644
index 0000000..a64f02b
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug02321-003.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Test for bug #2321: Seg fault when null is assigned to $_COOKIE
+--INI--
+xdebug.mode=develop,trace
+--FILE--
+<?php
+echo "bla";
+$_COOKIE = NULL;
+
+set_exception_handler(static function () {
+echo '1';
+});
+
+require_once '_non_existing_file';
+?>
+--EXPECTF--
+bla
+Warning: require_once(_non_existing_file): Failed to open stream: No such file or directory in %sbug02321-003.php on line %d
+%A
+1
diff --git a/xdebug-3.4.5/tests/base/bug02321-004.phpt b/xdebug-3.4.5/tests/base/bug02321-004.phpt
new file mode 100644
index 0000000..feec16d
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/bug02321-004.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Test for bug #2321: Seg fault when null is assigned to $_ENV
+--INI--
+xdebug.mode=develop,trace
+--FILE--
+<?php
+echo "bla";
+$_ENV = NULL;
+
+set_exception_handler(static function () {
+echo '1';
+});
+
+require_once '_non_existing_file';
+?>
+--EXPECTF--
+bla
+Warning: require_once(_non_existing_file): Failed to open stream: No such file or directory in %sbug02321-004.php on line %d
+%A
+1
diff --git a/xdebug-3.4.5/tests/base/deprecated-setting-001.phpt b/xdebug-3.4.5/tests/base/deprecated-setting-001.phpt
new file mode 100644
index 0000000..fb3f011
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/deprecated-setting-001.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Test for changed setting with E_DEPRECATED
+--INI--
+xdebug.remote_mode=req
+error_reporting=E_DEPRECATED
+--FILE--
+<?php
+echo "Hello!\n";
+?>
+--EXPECTF--
+Xdebug: [Config] The setting 'xdebug.remote_mode' has been renamed, see the upgrading guide at %s/upgrade_guide#changed-xdebug.remote_mode (See: %s/errors#CFG-C-CHANGED)
+Hello!
diff --git a/xdebug-3.4.5/tests/base/deprecated-setting-002.phpt b/xdebug-3.4.5/tests/base/deprecated-setting-002.phpt
new file mode 100644
index 0000000..8cd64ca
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/deprecated-setting-002.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Test for changed/removed setting without E_DEPRECATED
+--INI--
+xdebug.remote_mode=req
+xdebug.remote_handler=dbgp
+error_reporting=E_ALL & ~E_DEPRECATED
+--FILE--
+<?php
+echo "Hello!\n";
+?>
+--EXPECT--
+Hello!
diff --git a/xdebug-3.4.5/tests/base/deprecated-setting-003.phpt b/xdebug-3.4.5/tests/base/deprecated-setting-003.phpt
new file mode 100644
index 0000000..a7241fa
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/deprecated-setting-003.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Test for removed setting with E_DEPRECATED
+--INI--
+xdebug.show_mem_delta=1
+error_reporting=E_DEPRECATED
+--FILE--
+<?php
+echo "Hello!\n";
+?>
+--EXPECTF--
+Xdebug: [Config] The setting 'xdebug.show_mem_delta' has been removed, see the upgrading guide at %s/upgrade_guide#changed-xdebug.show_mem_delta (See: %s/errors#CFG-C-REMOVED)
+Hello!
diff --git a/xdebug-3.4.5/tests/base/filter-errors.phpt b/xdebug-3.4.5/tests/base/filter-errors.phpt
new file mode 100644
index 0000000..4ef3004
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/filter-errors.phpt
@@ -0,0 +1,23 @@
+--TEST--
+xdebug_set_filter() wrong arguments
+--INI--
+html_errors=0
+display_errors=1
+xdebug.mode=coverage
+--FILE--
+<?php
+xdebug_set_filter(42, XDEBUG_PATH_EXCLUDE, [ "xdebug" ] );
+
+xdebug_set_filter(XDEBUG_FILTER_CODE_COVERAGE, 42, [ "xdebug" ] );
+
+xdebug_set_filter(XDEBUG_FILTER_CODE_COVERAGE, XDEBUG_NAMESPACE_EXCLUDE, [ "xdebug" ] );
+xdebug_set_filter(XDEBUG_FILTER_CODE_COVERAGE, XDEBUG_NAMESPACE_INCLUDE, [ "xdebug" ] );
+?>
+--EXPECTF--
+Warning: Filter group needs to be one of XDEBUG_FILTER_CODE_COVERAGE, XDEBUG_FILTER_STACK, or XDEBUG_FILTER_TRACING in %sfilter-errors.php on line 2
+
+Warning: Filter type needs to be one of XDEBUG_PATH_INCLUDE, XDEBUG_PATH_EXCLUDE, XDEBUG_NAMESPACE_INCLUDE, XDEBUG_NAMESPACE_EXCLUDE, or XDEBUG_FILTER_NONE in %sfilter-errors.php on line 4
+
+Warning: The code coverage filter (XDEBUG_FILTER_CODE_COVERAGE) only supports the XDEBUG_PATH_INCLUDE, XDEBUG_PATH_EXCLUDE, and XDEBUG_FILTER_NONE filter types in %sfilter-errors.php on line 6
+
+Warning: The code coverage filter (XDEBUG_FILTER_CODE_COVERAGE) only supports the XDEBUG_PATH_INCLUDE, XDEBUG_PATH_EXCLUDE, and XDEBUG_FILTER_NONE filter types in %sfilter-errors.php on line 7
diff --git a/xdebug-3.4.5/tests/base/internal-function-calls.phpt b/xdebug-3.4.5/tests/base/internal-function-calls.phpt
new file mode 100644
index 0000000..34de762
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/internal-function-calls.phpt
@@ -0,0 +1,15 @@
+--TEST--
+Test for lots of calls to internal functions
+--INI--
+xdebug.mode=develop
+xdebug.auto_profile=0
+--FILE--
+<?php
+	for($i=0; $i<256; $i++) {
+		 echo bin2hex(chr($i));
+	}
+	echo "\nAlive\n";
+?>
+--EXPECT--
+000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
+Alive
diff --git a/xdebug-3.4.5/tests/base/peak_memory_usage.phpt b/xdebug-3.4.5/tests/base/peak_memory_usage.phpt
new file mode 100644
index 0000000..300ebfb
--- /dev/null
+++ b/xdebug-3.4.5/tests/base/peak_memory_usage.phpt
@@ -0,0 +1,44 @@
+--TEST--
+Test for xdebug_peak_memory_usage
+--INI--
+xdebug.mode=develop
+xdebug.auto_profile=0
+--FILE--
+<?php
+	$a = xdebug_memory_usage();
+
+	$param[] = array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, 2)))))))))))); 
+	$param[] = array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, 2)))))))))))); 
+	$param[] = array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, 2)))))))))))); 
+	$param[] = array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, 2)))))))))))); 
+	$param[] = array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, 2)))))))))))); 
+	$param[] = array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, 2)))))))))))); 
+	$param[] = array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, 2)))))))))))); 
+	$param[] = array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, 2)))))))))))); 
+	$param[] = array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, array (1, 2))))))))))));
+
+	$b = xdebug_memory_usage();
+	$c = xdebug_peak_memory_usage();
+
+	unset($param);
+
+	$e = xdebug_peak_memory_usage();
+	$d = xdebug_memory_usage();
+
+	var_dump($a, $b, $c, $d, $e);
+	echo ($b > $c) ? "Current is HIGHER than peak\n" : "Current is lower than peak\n";
+	echo ($d > $e) ? "Current is HIGHER than peak\n" : "Current is lower than peak\n";
+?>
+--EXPECTF--
+%speak_memory_usage.php:22:
+int(%d)
+%speak_memory_usage.php:22:
+int(%d)
+%speak_memory_usage.php:22:
+int(%d)
+%speak_memory_usage.php:22:
+int(%d)
+%speak_memory_usage.php:22:
+int(%d)
+Current is lower than peak
+Current is lower than peak
diff --git a/xdebug-3.4.5/tests/coverage/670-ConsistentHashing.inc b/xdebug-3.4.5/tests/coverage/670-ConsistentHashing.inc
new file mode 100644
index 0000000..93769fe
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/670-ConsistentHashing.inc
@@ -0,0 +1,220 @@
+<?php
+
+/**
+ * @author Kijin Sung <kijinbear@gmail.com>
+ * @package Rediska
+ * @subpackage Key distributor
+ * @link http://github.com/kijin/distrib
+ * @version 0.1.1
+ * @link http://rediska.geometria-lab.net
+ * @license http://www.opensource.org/licenses/bsd-license.php
+ */
+class Rediska_KeyDistributor_ConsistentHashing
+{
+    protected $_backends = array();
+    protected $_backendsCount = 0;
+
+    protected $_hashring = array();
+    protected $_hashringCount = 0;
+
+    protected $_replicas = 256;
+    protected $_slicesCount = 0;
+    protected $_slicesHalf = 0;
+    protected $_slicesDiv = 0;
+
+    protected $_cache = array();
+    protected $_cacheCount = 0;
+    protected $_cacheMax = 256;
+
+    protected $_hashringIsInitialized = false;
+
+    /**
+     * (non-PHPdoc)
+     * @see Rediska_KeyDistributor_Interface#addConnection
+     */
+    public function addConnection($connectionString, $weight = Rediska_Connection::DEFAULT_WEIGHT)
+    {
+        if (isset($this->_backends[$connectionString])) {
+            throw new Rediska_KeyDistributor_Exception("Connection '$connectionString' already exists.");
+        }
+
+        $this->_backends[$connectionString] = $weight;
+
+        $this->_backendsCount++;
+
+        $this->_hashringIsInitialized = false;
+
+        return $this;
+    }
+
+    /**
+     * (non-PHPdoc)
+     * @see Rediska_KeyDistributor_Interface#removeConnection
+     */
+    public function removeConnection($connectionString)
+    {
+        if (!isset($this->_backends[$connectionString])) {
+            throw new Rediska_KeyDistributor_Exception("Connection '$connectionString' not exist.");
+        }
+
+        unset($this->_backends[$connectionString]);
+
+        $this->_backendsCount--;
+        
+        $this->_hashringIsInitialized = false;
+
+        return $this;
+    }
+    
+    /**
+     * (non-PHPdoc)
+     * @see Rediska_KeyDistributor_Interface#getConnectionByKeyName
+     */
+    public function getConnectionByKeyName($name)
+    {
+        $connections = $this->getConnectionsByKeyName($name, 1);
+        if (empty($connections)) {
+            throw new Rediska_KeyDistributor_Exception('No connections exist');
+        }
+        return $connections[0];
+    }
+
+    /**
+     * Get a list of connections by key name
+     *
+     * @param string $name Key name
+     * @param int $requestedCount The length of the list to return
+     * @return array List of connections
+     */
+    public function getConnectionsByKeyName($name, $count)
+    {
+        // If we have only one backend, return it.
+        if ($this->_backendsCount == 1) {
+            return array_keys($this->_backends);
+        }
+
+        if (!$this->_hashringIsInitialized) {
+            $this->_initializeHashring();
+            $this->_hashringIsInitialized = true;
+        }
+
+        // If the key has already been mapped, return the cached entry.
+        if ($this->_cacheMax > 0 && isset($this->_cache[$name])) {
+            return $this->_cache[$name];
+        }
+
+        // If $count is greater than or equal to the number of available backends, return all.
+        if ($count >= $this->_backendsCount) return array_keys($this->_backends);
+
+        // Initialize the return array.
+        $return = array();
+
+        $crc32 = crc32($name);
+
+        // Select the slice to begin with.
+        $slice = floor($crc32 / $this->_slicesDiv) + $this->_slicesHalf;
+
+        // This counter prevents going through more than 1 loop.
+        $looped = false;
+
+        while (true) {
+            // Go through the hashring, one slice at a time.
+            foreach ($this->_hashring[$slice] as $position => $backend) {
+                // If we have a usable backend, add to the return array.
+                if ($position >= $crc32) {
+                    // If $count = 1, no more checks are necessary.
+                    if ($count === 1) {
+                        $return = array($backend);
+                        break 2;
+                    } elseif (!in_array($backend, $return)) {
+                        $return[] = $backend;
+                        if (count($return) >= $count) break 2;
+                    }
+
+                    $return = array($backend);
+                    break 1;
+                }
+            }
+
+            // Continue to the next slice.
+            $slice++;
+
+            // If at the end of the hashring.
+            if ($slice >= $this->_slicesCount) {
+                // If already looped once, something is wrong.
+                if ($looped) {
+                    break 2;
+                }
+
+                // Otherwise, loop back to the beginning.       
+                $crc32 = -2147483648;
+                $slice = 0;
+                $looped = true;
+            }
+        }
+
+        // Cache the result for quick retrieval in the future.
+        if ($this->_cacheMax > 0) {
+            // Add to internal cache.
+            $this->_cache[$name] = $return;
+            $this->_cacheCount++;
+
+            // If the cache is getting too big, clear it.
+            if ($this->_cacheCount > $this->_cacheMax) {
+                $this->_cleanCache();
+            }
+        }
+
+        // Return the result.
+
+        return $return;
+    }
+
+    protected function _initializeHashring()
+    {
+        if ($this->_backendsCount < 2) {
+            $this->_hashring = array();
+            $this->_hashringCount = 0;
+
+            $this->_slicesCount = 0;
+            $this->_slicesHalf = 0;
+            $this->_slicesDiv = 0;
+        } else {
+            $this->_slicesCount = ($this->_replicas * $this->_backendsCount) / 8;
+            $this->_slicesHalf = $this->_slicesCount / 2;
+            $this->_slicesDiv = (2147483648 / $this->_slicesHalf);
+
+            // Initialize the hashring.
+            $this->_hashring = array_fill(0, $this->_slicesCount, array());
+
+            // Calculate the average weight.
+            $avg = round(array_sum($this->_backends) / $this->_backendsCount, 2);
+
+            // Interate over the backends.
+            foreach ($this->_backends as $backend => $weight) {
+                // Adjust the weight.
+                $weight = round(($weight / $avg) * $this->_replicas);
+    
+                // Create as many replicas as $weight.
+                for ($i = 0; $i < $weight; $i++) {
+                    $position = crc32($backend . ':' . $i);
+                    $slice = floor($position / $this->_slicesDiv) + $this->_slicesHalf;
+                    $this->_hashring[$slice][$position] = $backend;
+                }
+            }
+
+            // Sort each slice of the hashring.
+            for ($i = 0; $i < $this->_slicesCount; $i++) {
+                ksort($this->_hashring[$i], SORT_NUMERIC);
+            }
+        }
+
+        $this->_cleanCache();
+    }
+
+    protected function _cleanCache()
+    {
+        $this->_cache = array();
+        $this->_cacheCount = 0;
+    }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00212-001.inc b/xdebug-3.4.5/tests/coverage/bug00212-001.inc
new file mode 100644
index 0000000..f6cbf12
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00212-001.inc
@@ -0,0 +1,11 @@
+<?php
+
+
+
+$action = '';
+
+switch($action)
+{
+    default:
+}
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug00212-001.phpt b/xdebug-3.4.5/tests/coverage/bug00212-001.phpt
new file mode 100644
index 0000000..f3e9a3e
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00212-001.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Test for bug #212: coverage coverage inaccurate (1)
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+	xdebug_start_code_coverage( XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE );
+	$file = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'bug00212-001.inc';
+	include $file;
+	$cc = xdebug_get_code_coverage();
+	xdebug_stop_code_coverage();
+	var_dump($cc[$file]);
+?>
+--EXPECT--
+array(3) {
+  [5]=>
+  int(1)
+  [7]=>
+  int(1)
+  [12]=>
+  int(1)
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00212-002.inc b/xdebug-3.4.5/tests/coverage/bug00212-002.inc
new file mode 100644
index 0000000..c37c728
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00212-002.inc
@@ -0,0 +1,10 @@
+<?php
+
+
+
+try
+{
+    throw new Exception();
+}
+catch(Exception $e) {}
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug00212-002.phpt b/xdebug-3.4.5/tests/coverage/bug00212-002.phpt
new file mode 100644
index 0000000..bf4aba1
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00212-002.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Test for bug #212: coverage coverage inaccurate (2)
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+	xdebug_start_code_coverage( XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE );
+	$file = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'bug00212-002.inc';
+	include $file;
+	$cc = xdebug_get_code_coverage();
+	xdebug_stop_code_coverage();
+	var_dump($cc[$file]);
+?>
+--EXPECT--
+array(3) {
+  [7]=>
+  int(1)
+  [9]=>
+  int(1)
+  [11]=>
+  int(1)
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00212-003.inc b/xdebug-3.4.5/tests/coverage/bug00212-003.inc
new file mode 100644
index 0000000..5000bcd
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00212-003.inc
@@ -0,0 +1,11 @@
+<?php
+
+
+
+class foo
+{
+    const MESSAGE = "Hello World\n";
+}
+
+echo foo::MESSAGE;
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug00212-003.phpt b/xdebug-3.4.5/tests/coverage/bug00212-003.phpt
new file mode 100644
index 0000000..971fad4
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00212-003.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Test for bug #212: coverage coverage inaccurate (3)
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+	xdebug_start_code_coverage( XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE );
+	$file = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'bug00212-003.inc';
+	include $file;
+	$cc = xdebug_get_code_coverage();
+	xdebug_stop_code_coverage();
+	var_dump($cc[$file]);
+?>
+--EXPECT--
+Hello World
+array(2) {
+  [10]=>
+  int(1)
+  [12]=>
+  int(1)
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00213-opcache.phpt b/xdebug-3.4.5/tests/coverage/bug00213-opcache.phpt
new file mode 100644
index 0000000..347fd93
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00213-opcache.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Test for bug #213: Dead code analysis doesn't take catches for throws into account (opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+	xdebug_start_code_coverage( XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE );
+	$file = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'bug00213.inc';
+	include $file;
+	$cc = xdebug_get_code_coverage();
+	xdebug_stop_code_coverage();
+	var_dump($cc[$file]);
+?>
+--EXPECT--
+48
+array(4) {
+  [5]=>
+  int(1)
+  [8]=>
+  int(1)
+  [12]=>
+  int(1)
+  [14]=>
+  int(1)
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00213.inc b/xdebug-3.4.5/tests/coverage/bug00213.inc
new file mode 100644
index 0000000..4991bad
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00213.inc
@@ -0,0 +1,13 @@
+<?php
+
+try
+{
+    throw new Exception();
+	echo strlen( "Revenge is a dish best served cold.\n" );
+}
+catch(Exception $e)
+{
+}
+
+echo strlen( "The fire is always hotter on someone elses face." ), "\n";
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug00213.phpt b/xdebug-3.4.5/tests/coverage/bug00213.phpt
new file mode 100644
index 0000000..4d09f05
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00213.phpt
@@ -0,0 +1,37 @@
+--TEST--
+Test for bug #213: Dead code analysis doesn't take catches for throws into account (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+	xdebug_start_code_coverage( XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE );
+	$file = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'bug00213.inc';
+	include $file;
+	$cc = xdebug_get_code_coverage();
+	xdebug_stop_code_coverage();
+	var_dump($cc[$file]);
+?>
+--EXPECT--
+48
+array(5) {
+  [5]=>
+  int(1)
+  [6]=>
+  int(-2)
+  [8]=>
+  int(1)
+  [12]=>
+  int(1)
+  [14]=>
+  int(1)
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00313.inc b/xdebug-3.4.5/tests/coverage/bug00313.inc
new file mode 100644
index 0000000..acb6c35
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00313.inc
@@ -0,0 +1,2 @@
+<?php
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug00313.phpt b/xdebug-3.4.5/tests/coverage/bug00313.phpt
new file mode 100644
index 0000000..8ee740c
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00313.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Test for bug #313: Segmentation Fault in code coverage analysis on empty PHP files
+--INI--
+xdebug.mode=coverage
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+// Run me from the PHP CLI
+xdebug_start_code_coverage(XDEBUG_CC_DEAD_CODE | XDEBUG_CC_UNUSED);
+// MUST be both code coverage options to cause problems
+include(dirname(__FILE__).'/bug00313.inc'); // File with problem in it.
+xdebug_stop_code_coverage();
+echo "ALIVE\n";
+?>
+--EXPECTF--
+ALIVE
diff --git a/xdebug-3.4.5/tests/coverage/bug00318.inc b/xdebug-3.4.5/tests/coverage/bug00318.inc
new file mode 100644
index 0000000..c923f9f
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00318.inc
@@ -0,0 +1,4 @@
+<?php
+//FILE: faulty.php
+if(true){break;} // 'Continue' also causes problems
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug00318.phpt b/xdebug-3.4.5/tests/coverage/bug00318.phpt
new file mode 100644
index 0000000..0b899c5
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00318.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Test for bug #318: Segmentation Fault in code coverage analysis
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+// Run me from the PHP CLI
+xdebug_start_code_coverage(XDEBUG_CC_DEAD_CODE | XDEBUG_CC_UNUSED);
+// MUST be both code coverage options to cause problems
+include(dirname(__FILE__).'/bug00318.inc'); // File with problem in it.
+xdebug_stop_code_coverage();
+?>
+--EXPECTF--
+Fatal error: %sbreak%s in %sbug00318.inc on line 3
diff --git a/xdebug-3.4.5/tests/coverage/bug00334-noopcache.phpt b/xdebug-3.4.5/tests/coverage/bug00334-noopcache.phpt
new file mode 100644
index 0000000..d89c529
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00334-noopcache.phpt
@@ -0,0 +1,41 @@
+--TEST--
+Test for bug #334: Code Coverage Regressions (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+// Run me from the PHP CLI
+xdebug_start_code_coverage(XDEBUG_CC_DEAD_CODE | XDEBUG_CC_UNUSED);
+// MUST be both code coverage options to cause problems
+include(dirname(__FILE__).'/bug00334.inc'); // File with problem in it.
+$c = xdebug_get_code_coverage();
+ksort($c);
+var_dump($c);
+xdebug_stop_code_coverage();
+?>
+--EXPECTF--
+array(2) {
+  ["%sbug00334-noopcache.php"]=>
+  array(2) {
+    [5]=>
+    int(1)
+    [6]=>
+    int(1)
+  }
+  ["%sbug00334.inc"]=>
+  array(3) {
+    [5]=>
+    int(1)
+    [7]=>
+    int(-1)
+    [9]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00334-opcache.phpt b/xdebug-3.4.5/tests/coverage/bug00334-opcache.phpt
new file mode 100644
index 0000000..84debdd
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00334-opcache.phpt
@@ -0,0 +1,39 @@
+--TEST--
+Test for bug #334: Code Coverage Regressions (opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+// Run me from the PHP CLI
+xdebug_start_code_coverage(XDEBUG_CC_DEAD_CODE | XDEBUG_CC_UNUSED);
+// MUST be both code coverage options to cause problems
+include(dirname(__FILE__).'/bug00334.inc'); // File with problem in it.
+$c = xdebug_get_code_coverage();
+ksort($c);
+var_dump($c);
+xdebug_stop_code_coverage();
+?>
+--EXPECTF--
+array(2) {
+  ["%sbug00334-opcache.php"]=>
+  array(2) {
+    [5]=>
+    int(1)
+    [6]=>
+    int(1)
+  }
+  ["%sbug00334.inc"]=>
+  array(2) {
+    [5]=>
+    int(1)
+    [9]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00334.inc b/xdebug-3.4.5/tests/coverage/bug00334.inc
new file mode 100644
index 0000000..693d296
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00334.inc
@@ -0,0 +1,8 @@
+<?php
+//FILE: faulty.php
+do
+{
+	if(true){break;} // 'Continue' also causes problems
+	}
+while(0);
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug00422.inc b/xdebug-3.4.5/tests/coverage/bug00422.inc
new file mode 100644
index 0000000..9d640b3
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00422.inc
@@ -0,0 +1,10 @@
+<?php
+class DB
+{
+    function f()
+    {
+        if (true) {}
+        $obj =& new a;
+    }
+}
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug00422.phpt b/xdebug-3.4.5/tests/coverage/bug00422.phpt
new file mode 100644
index 0000000..e8719ef
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00422.phpt
@@ -0,0 +1,19 @@
+--TEST--
+Test for bug #422: Segfaults when using code coverage with a parse error in the script
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+function hdl(){}
+set_error_handler('hdl');
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+try {
+	require_once 'bug00422.inc';
+} catch (ParseError $err) {
+	echo $err->getMessage(), "\n";
+}
+echo "END";
+?>
+--EXPECTF--
+syntax error, unexpected%S
+END
diff --git a/xdebug-3.4.5/tests/coverage/bug00470.inc b/xdebug-3.4.5/tests/coverage/bug00470.inc
new file mode 100644
index 0000000..0a90f13
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00470.inc
@@ -0,0 +1,13 @@
+<?php
+class Ticket842
+{
+    public function __construct()
+    {
+        try {
+            //
+        } catch (Exception $e) {
+            error_log($e->getMessage());
+        }
+    }
+}
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug00470.phpt b/xdebug-3.4.5/tests/coverage/bug00470.phpt
new file mode 100644
index 0000000..cbb2dd8
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00470.phpt
@@ -0,0 +1,57 @@
+--TEST--
+Test for bug #470: catch blocks marked as dead code unless executed
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+    xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+    include 'bug00470.inc';
+    $cc = xdebug_get_code_coverage();
+	ksort($cc);
+    var_dump(array_slice($cc, 0, 1));
+
+    new Ticket842;
+    $cc = xdebug_get_code_coverage();
+	ksort($cc);
+    var_dump(array_slice($cc, 0, 1));
+
+    xdebug_stop_code_coverage(false);
+?>
+--EXPECTF--
+array(1) {
+  ["%sbug00470.inc"]=>
+  array(5) {
+    [6]=>
+    int(-1)
+    [8]=>
+    int(-1)
+    [9]=>
+    int(-1)
+    [11]=>
+    int(-1)
+    [14]=>
+    int(1)
+  }
+}
+array(1) {
+  ["%sbug00470.inc"]=>
+  array(5) {
+    [6]=>
+    int(1)
+    [8]=>
+    int(-1)
+    [9]=>
+    int(-1)
+    [11]=>
+    int(1)
+    [14]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00472.inc b/xdebug-3.4.5/tests/coverage/bug00472.inc
new file mode 100644
index 0000000..52e7b28
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00472.inc
@@ -0,0 +1,121 @@
+<?php
+/*
+ * @author       Elizabeth Smith <auroraeosrose@php.net>
+ * @copyright    Elizabeth Smith (c) 2009
+ */
+namespace Baalat;
+abstract class pObject {
+    public function emit($name) {
+        if (is_null($this->state)) {
+            $this->state = new \SplObjectStorage();
+        }
+
+        $signal = self::getSignal($name);
+        if (is_null($signal)) {
+            throw new \InvalidArgumentException('Signal ' . $name . ' is not a registered signal of  ' . get_class($this));
+        }
+
+        if (isset($this->state[$signal]) && $this->state[$signal] === self::EMISSION_RUN) {
+            $this->state[$signal] = self::EMISSION_RESTART;
+            return;
+        }
+
+        if (isset(self::$blockedSignals[$signal->class])&& isset(self::$blockedSignals[$signal->class][$name])
+            && self::$blockedSignals[$signal->class][$name] > 0) {
+            $this->state[$signal] = self::EMISSION_STOP;
+            return;
+        }
+
+        if (isset($this->blocked[$name]) && $this->blocked[$name] > 0) {
+            $this->state[$signal] = self::EMISSION_STOP;
+            return;
+        }
+
+        $args = func_get_args();
+        array_shift($args);
+
+        emit_restart:
+            $this->state[$signal] = self::EMISSION_RUN;
+
+            if ($signal->handler && $signal->run === Signal::RUN_FIRST) {
+                $run = call_user_func_array(array($this, $signal->handler), $args);
+                if ($this->state[$signal] === self::EMISSION_STOP) {
+                    goto emit_cleanup;
+                }
+                if ($this->state[$signal] === self::EMISSION_RESTART) {
+                    goto emit_restart;
+                }
+            }
+
+            if (isset(self::$hooks[$signal->class]) && isset(self::$hooks[$signal->class][$name])) {
+                foreach(self::$hooks[$signal->class][$name] as $handler) {
+                    $run = call_user_func_array($handler['handler'], $args + $handler['args']);
+
+                    if ((!$signal->accumulator && $run === true) ||
+                        ($signal->accumulator && call_user_func(array($this, $signal->accumulator), $run) === true)) {
+                        goto emit_cleanup;
+                    } else if ($this->state[$signal] === self::EMISSION_STOP) {
+                        goto emit_cleanup;
+                    } else if ($this->state[$signal] === self::EMISSION_RESTART) {
+                        goto emit_restart;
+                    }
+                }
+            }
+
+            if (isset($this->handlers[$name])) {
+                foreach($this->handlers[$name] as $handler) {
+                    if (!$handler['runlast'] && $handler['blocked'] < 1) {
+                        $run = call_user_func_array($handler['handler'], $args + $handler['args']);
+
+                        if ((!$signal->accumulator && $run === true) ||
+                            ($signal->accumulator && call_user_func(array($this, $signal->accumulator), $run) === true)) {
+                            goto emit_cleanup;
+                        } else if ($this->state[$signal] === self::EMISSION_STOP) {
+                            goto emit_cleanup;
+                        } else if ($this->state[$signal] === self::EMISSION_RESTART) {
+                            goto emit_restart;
+                        }
+                    }
+                }
+            }
+
+            if ($signal->handler && $signal->run === Signal::RUN_LAST) {
+                $run = call_user_func_array(array($this, $signal->handler), $args);
+                if ($this->state[$signal] === self::EMISSION_STOP) {
+                    goto emit_cleanup;
+                }
+                if ($this->state[$signal] === self::EMISSION_RESTART) {
+                    goto emit_restart;
+                }
+ 
+            }
+
+            if (isset($this->handlers[$name])) {
+                foreach($this->handlers[$name] as $handler) {
+                    if ($handler['runlast'] && $handler['blocked'] < 1) {
+                        $run = call_user_func_array($handler['handler'], $args + $handler['args']);
+
+                        if ((!$signal->accumulator && $run === true) ||
+                            ($signal->accumulator && call_user_func(array($this, $signal->accumulator), $run) === true)) {
+                            goto emit_cleanup;
+                        } else if ($this->state[$signal] === self::EMISSION_STOP) {
+                            goto emit_cleanup;
+                        } else if ($this->state[$signal] === self::EMISSION_RESTART) {
+                            goto emit_restart;
+                        }
+                    }
+                }
+            }
+
+        emit_cleanup:
+
+            if ($signal->handler && $signal->run === Signal::RUN_CLEANUP) {
+                $run = call_user_func_array(array($this, $signal->handler), $args);
+            }
+            if ($this->state[$signal] === self::EMISSION_RESTART) {
+                goto emit_restart;
+            }
+            $this->state[$signal] = self::EMISSION_STOP;
+            return;
+    }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00472.phpt b/xdebug-3.4.5/tests/coverage/bug00472.phpt
new file mode 100644
index 0000000..3565158
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00472.phpt
@@ -0,0 +1,172 @@
+--TEST--
+Test for bug #472: Dead Code Analysis for code coverage messed up after goto (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+    xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+	include 'bug00472.inc';
+    $cc = xdebug_get_code_coverage();
+	ksort($cc);
+	var_dump(array_slice($cc, 0, 1));
+
+    xdebug_stop_code_coverage(false);
+?>
+--EXPECTF--
+array(1) {
+  ["%sbug00472.inc"]=>
+  array(70) {
+    [9]=>
+    int(-1)
+    [10]=>
+    int(-1)
+    [13]=>
+    int(-1)
+    [14]=>
+    int(-1)
+    [15]=>
+    int(-1)
+    [18]=>
+    int(-1)
+    [19]=>
+    int(-1)
+    [20]=>
+    int(-1)
+    [23]=>
+    int(-1)
+    [24]=>
+    int(-1)
+    [25]=>
+    int(-1)
+    [26]=>
+    int(-1)
+    [29]=>
+    int(-1)
+    [30]=>
+    int(-1)
+    [31]=>
+    int(-1)
+    [34]=>
+    int(-1)
+    [35]=>
+    int(-1)
+    [38]=>
+    int(-1)
+    [40]=>
+    int(-1)
+    [41]=>
+    int(-1)
+    [42]=>
+    int(-1)
+    [43]=>
+    int(-1)
+    [45]=>
+    int(-1)
+    [46]=>
+    int(-1)
+    [50]=>
+    int(-1)
+    [51]=>
+    int(-1)
+    [52]=>
+    int(-1)
+    [54]=>
+    int(-1)
+    [55]=>
+    int(-1)
+    [56]=>
+    int(-1)
+    [57]=>
+    int(-1)
+    [58]=>
+    int(-1)
+    [59]=>
+    int(-1)
+    [60]=>
+    int(-1)
+    [65]=>
+    int(-1)
+    [66]=>
+    int(-1)
+    [67]=>
+    int(-1)
+    [68]=>
+    int(-1)
+    [70]=>
+    int(-1)
+    [71]=>
+    int(-1)
+    [72]=>
+    int(-1)
+    [73]=>
+    int(-1)
+    [74]=>
+    int(-1)
+    [75]=>
+    int(-1)
+    [76]=>
+    int(-1)
+    [82]=>
+    int(-1)
+    [83]=>
+    int(-1)
+    [84]=>
+    int(-1)
+    [85]=>
+    int(-1)
+    [87]=>
+    int(-1)
+    [88]=>
+    int(-1)
+    [93]=>
+    int(-1)
+    [94]=>
+    int(-1)
+    [95]=>
+    int(-1)
+    [96]=>
+    int(-1)
+    [98]=>
+    int(-1)
+    [99]=>
+    int(-1)
+    [100]=>
+    int(-1)
+    [101]=>
+    int(-1)
+    [102]=>
+    int(-1)
+    [103]=>
+    int(-1)
+    [104]=>
+    int(-1)
+    [112]=>
+    int(-1)
+    [113]=>
+    int(-1)
+    [115]=>
+    int(-1)
+    [116]=>
+    int(-1)
+    [118]=>
+    int(-1)
+    [119]=>
+    int(-1)
+    [120]=>
+    int(-2)
+    [122]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00515.inc b/xdebug-3.4.5/tests/coverage/bug00515.inc
new file mode 100644
index 0000000..dc15341
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00515.inc
@@ -0,0 +1,21 @@
+<?php
+declare(ticks=1);
+class UncoveredLine
+{
+    private $_foo;
+
+    function __construct($foo)
+    {
+        if ($foo === 'bar') {
+            $this->_foo = $foo;
+        } else {
+            $this->_foo = null;
+        }
+    }
+
+    function getFoo()
+    {
+     return $this->_foo;
+    }
+}
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug00515.phpt b/xdebug-3.4.5/tests/coverage/bug00515.phpt
new file mode 100644
index 0000000..40e46ce
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00515.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #515: Dead Code Analysis for code coverage messed up with ticks (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+	xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+	include 'bug00515.inc';
+	$cc = xdebug_get_code_coverage();
+	ksort($cc);
+	var_dump(array_slice($cc, 0, 1));
+
+	xdebug_stop_code_coverage(false);
+?>
+--EXPECTF--
+array(1) {
+  ["%sbug00515.inc"]=>
+  array(9) {
+    [2]=>
+    int(1)
+    [%r(3|5)%r]=>
+    int(1)
+    [9]=>
+    int(-1)
+    [10]=>
+    int(-1)
+    [12]=>
+    int(-1)
+    [14]=>
+    int(-1)
+    [18]=>
+    int(-1)
+    [19]=>
+    int(-2)
+    [22]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00535.phpt b/xdebug-3.4.5/tests/coverage/bug00535.phpt
new file mode 100644
index 0000000..14c226c
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00535.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Test for bug #535: Code coverage and return before function|class ending
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+xdebug_start_code_coverage();
+
+class test
+{
+    function a() {
+        return true;
+    }
+}
+
+$a = new test();
+$a->a();
+
+var_dump(xdebug_get_code_coverage());
+?>
+--EXPECTF--
+array(1) {
+  ["%sbug00535.php"]=>
+  array(4) {
+    [7]=>
+    int(1)
+    [11]=>
+    int(1)
+    [12]=>
+    int(1)
+    [14]=>
+    int(1)
+  }
+}
+
diff --git a/xdebug-3.4.5/tests/coverage/bug00562.phpt b/xdebug-3.4.5/tests/coverage/bug00562.phpt
new file mode 100644
index 0000000..6d6cbd2
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00562.phpt
@@ -0,0 +1,37 @@
+--TEST--
+Test for bug #562: Incorrect coverage information for closure function headers
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+
+xdebug_start_code_coverage();
+$mapped = array_map(
+    // This line is flagged as executable, but not covered in PHPUnit code coverage reports
+    function ( $value )
+    {
+        return $value;
+    },
+    array( 23, 42 )
+);
+
+var_dump( xdebug_get_code_coverage() );
+--EXPECTF--
+array(1) {
+  ["%sbug00562.php"]=>
+  array(6) {
+    [4]=>
+    int(1)
+    [6]=>
+    int(1)
+    [8]=>
+    int(1)
+    [9]=>
+    int(1)
+    [10]=>
+    int(1)
+    [13]=>
+    int(1)
+  }
+}
+
diff --git a/xdebug-3.4.5/tests/coverage/bug00651-001.phpt b/xdebug-3.4.5/tests/coverage/bug00651-001.phpt
new file mode 100644
index 0000000..8956448
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00651-001.phpt
@@ -0,0 +1,58 @@
+--TEST--
+Test for bug #651: Incorrect code coverage after ! empty() in conditional
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED);
+
+function repeat($x)
+{
+    if ( ! empty($x)
+        AND $x !== 1
+        AND $x !== 2
+        AND $x !== 3)
+    {
+        $y = 'covered';
+    }
+}
+
+repeat(0);
+repeat(1);
+repeat(2);
+repeat(3);
+repeat(4);
+
+var_dump(xdebug_get_code_coverage());
+?>
+--EXPECTF--
+array(1) {
+  ["%sbug00651-001.php"]=>
+  array(12) {
+    [7]=>
+    int(1)
+    [8]=>
+    int(1)
+    [9]=>
+    int(1)
+    [10]=>
+    int(1)
+    [12]=>
+    int(1)
+    [14]=>
+    int(1)
+    [16]=>
+    int(1)
+    [17]=>
+    int(1)
+    [18]=>
+    int(1)
+    [19]=>
+    int(1)
+    [20]=>
+    int(1)
+    [22]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00651-002.phpt b/xdebug-3.4.5/tests/coverage/bug00651-002.phpt
new file mode 100644
index 0000000..060e751
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00651-002.phpt
@@ -0,0 +1,58 @@
+--TEST--
+Test for bug #651: Incorrect code coverage after empty() in conditional
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED);
+
+function repeat($x)
+{
+    if ( empty($x)
+        AND $x !== 1
+        AND $x !== 2
+        AND $x !== 3)
+    {
+        $y = 'covered';
+    }
+}
+
+repeat(0);
+repeat(1);
+repeat(2);
+repeat(3);
+repeat(4);
+
+var_dump(xdebug_get_code_coverage());
+?>
+--EXPECTF--
+array(1) {
+  ["%sbug00651-002.php"]=>
+  array(12) {
+    [7]=>
+    int(1)
+    [8]=>
+    int(1)
+    [9]=>
+    int(1)
+    [10]=>
+    int(1)
+    [12]=>
+    int(1)
+    [14]=>
+    int(1)
+    [16]=>
+    int(1)
+    [17]=>
+    int(1)
+    [18]=>
+    int(1)
+    [19]=>
+    int(1)
+    [20]=>
+    int(1)
+    [22]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00651-003.phpt b/xdebug-3.4.5/tests/coverage/bug00651-003.phpt
new file mode 100644
index 0000000..0508dd7
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00651-003.phpt
@@ -0,0 +1,58 @@
+--TEST--
+Test for bug #651: Incorrect code coverage after isset() in conditional
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED);
+
+function repeat($x)
+{
+    if ( isset($x)
+        AND $x !== 1
+        AND $x !== 2
+        AND $x !== 3)
+    {
+        $y = 'covered';
+    }
+}
+
+repeat(0);
+repeat(1);
+repeat(2);
+repeat(3);
+repeat(4);
+
+var_dump(xdebug_get_code_coverage());
+?>
+--EXPECTF--
+array(1) {
+  ["%sbug00651-003.php"]=>
+  array(12) {
+    [7]=>
+    int(1)
+    [8]=>
+    int(1)
+    [9]=>
+    int(1)
+    [10]=>
+    int(1)
+    [12]=>
+    int(1)
+    [14]=>
+    int(1)
+    [16]=>
+    int(1)
+    [17]=>
+    int(1)
+    [18]=>
+    int(1)
+    [19]=>
+    int(1)
+    [20]=>
+    int(1)
+    [22]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00670.phpt b/xdebug-3.4.5/tests/coverage/bug00670.phpt
new file mode 100644
index 0000000..fa4a245
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00670.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Test for bug #670: Xdebug crashes with broken "break x" code
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+xdebug_start_code_coverage( XDEBUG_CC_DEAD_CODE | XDEBUG_CC_UNUSED );
+include '670-ConsistentHashing.inc';
+echo "OK\n";
+?>
+--EXPECTF--
+Fatal error: Cannot 'break' 2 levels in %s670-ConsistentHashing.inc on line 146
diff --git a/xdebug-3.4.5/tests/coverage/bug00697-php83.phpt b/xdebug-3.4.5/tests/coverage/bug00697-php83.phpt
new file mode 100644
index 0000000..b790dd5
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00697-php83.phpt
@@ -0,0 +1,42 @@
+--TEST--
+Test for bug #697: Incorrect code coverage of function arguments when using XDEBUG_CC_UNUSED (PHP < 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.4');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+include 'bug00697.inc';
+$cc = xdebug_get_code_coverage();
+ksort($cc);
+var_dump(array_slice($cc, 1, 1));
+
+xdebug_stop_code_coverage(false);
+?>
+--EXPECTF--
+array(1) {
+  ["%sbug00697.inc"]=>
+  array(5) {
+    [4]=>
+    int(1)
+    [5]=>
+    int(1)
+    [7]=>
+    int(1)
+    [9]=>
+    int(1)
+    [10]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00697-php84-noopcache.phpt b/xdebug-3.4.5/tests/coverage/bug00697-php84-noopcache.phpt
new file mode 100644
index 0000000..bf1a362
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00697-php84-noopcache.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #697: Incorrect code coverage of function arguments when using XDEBUG_CC_UNUSED (PHP >= 8.4, !opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4; !opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+include 'bug00697.inc';
+$cc = xdebug_get_code_coverage();
+ksort($cc);
+var_dump(array_slice($cc, 1, 1));
+
+xdebug_stop_code_coverage(false);
+?>
+--EXPECTF--
+array(1) {
+  ["%sbug00697.inc"]=>
+  array(4) {
+    [4]=>
+    int(1)
+    [7]=>
+    int(1)
+    [9]=>
+    int(1)
+    [10]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00697-php84-opcache.phpt b/xdebug-3.4.5/tests/coverage/bug00697-php84-opcache.phpt
new file mode 100644
index 0000000..c9a6501
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00697-php84-opcache.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #697: Incorrect code coverage of function arguments when using XDEBUG_CC_UNUSED (PHP >= 8.4, opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4; opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+include 'bug00697.inc';
+$cc = xdebug_get_code_coverage();
+ksort($cc);
+var_dump(array_slice($cc, 1, 1));
+
+xdebug_stop_code_coverage(false);
+?>
+--EXPECTF--
+array(1) {
+  ["%sbug00697.inc"]=>
+  array(4) {
+    [4]=>
+    int(1)
+    [7]=>
+    int(1)
+    [9]=>
+    int(1)
+    [10]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00697.inc b/xdebug-3.4.5/tests/coverage/bug00697.inc
new file mode 100644
index 0000000..a64cc2d
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00697.inc
@@ -0,0 +1,9 @@
+<?php
+function test()
+{
+        substr('', 2,
+                0 + 3 + 0
+        );
+}
+
+test();
diff --git a/xdebug-3.4.5/tests/coverage/bug00703.inc b/xdebug-3.4.5/tests/coverage/bug00703.inc
new file mode 100644
index 0000000..dad8913
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00703.inc
@@ -0,0 +1,14 @@
+<?php
+
+$a = 'foo';
+
+$b = <<<EOF
+the line after this is marked as not executed {$a}
+
+EOF;
+
+$c = <<<EOF
+the line after {$a} is marked as executed
+
+EOF;
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug00703.phpt b/xdebug-3.4.5/tests/coverage/bug00703.phpt
new file mode 100644
index 0000000..7d780bf
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00703.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #703: Line in heredoc marked as not executed
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+$file = 'bug00703.inc';
+$pathname = stream_resolve_include_path( $file );
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+require $pathname;
+
+$cc = xdebug_get_code_coverage();
+xdebug_stop_code_coverage(false);
+
+var_dump( $cc[$pathname] );
+
+?>
+--EXPECTF--
+array(6) {
+  [3]=>
+  int(1)
+  [5]=>
+  int(1)
+  [6]=>
+  int(1)
+  [10]=>
+  int(1)
+  [11]=>
+  int(1)
+  [15]=>
+  int(1)
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00757-001.phpt b/xdebug-3.4.5/tests/coverage/bug00757-001.phpt
new file mode 100644
index 0000000..dce194d
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00757-001.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #757: XDEBUG_CC_UNUSED does not work with code outside a function.
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED);
+
+$x = 1;
+if ($x) {
+	$y = 2;
+} else {
+	$y = 3;
+}
+echo $y, "\n";
+
+$cc = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+var_dump($cc[__FILE__]);
+?>
+--EXPECT--
+2
+array(5) {
+  [4]=>
+  int(1)
+  [5]=>
+  int(1)
+  [6]=>
+  int(1)
+  [10]=>
+  int(1)
+  [12]=>
+  int(1)
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00757-002-noopcache.phpt b/xdebug-3.4.5/tests/coverage/bug00757-002-noopcache.phpt
new file mode 100644
index 0000000..061bcd6
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00757-002-noopcache.phpt
@@ -0,0 +1,56 @@
+--TEST--
+Test for bug #757: XDEBUG_CC_UNUSED does not work with code outside a function (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED);
+
+function f()
+{
+	$x = 1;
+	if ($x) {
+		$y = 2;
+	} else {
+		$y = 3;
+	}
+	echo $y, "\n";
+}
+
+f();
+
+$cc = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+var_dump($cc[__FILE__]);
+?>
+--EXPECT--
+2
+array(8) {
+  [6]=>
+  int(1)
+  [7]=>
+  int(1)
+  [8]=>
+  int(1)
+  [10]=>
+  int(-1)
+  [12]=>
+  int(1)
+  [13]=>
+  int(1)
+  [15]=>
+  int(1)
+  [17]=>
+  int(1)
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00757-002-opcache.phpt b/xdebug-3.4.5/tests/coverage/bug00757-002-opcache.phpt
new file mode 100644
index 0000000..d9e84a8
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00757-002-opcache.phpt
@@ -0,0 +1,54 @@
+--TEST--
+Test for bug #757: XDEBUG_CC_UNUSED does not work with code outside a function (opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED);
+
+function f()
+{
+	$x = 1;
+	if ($x) {
+		$y = 2;
+	} else {
+		$y = 3;
+	}
+	echo $y, "\n";
+}
+
+f();
+
+$cc = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+var_dump($cc[__FILE__]);
+?>
+--EXPECT--
+2
+array(7) {
+  [6]=>
+  int(1)
+  [7]=>
+  int(1)
+  [8]=>
+  int(1)
+  [12]=>
+  int(1)
+  [13]=>
+  int(1)
+  [15]=>
+  int(1)
+  [17]=>
+  int(1)
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00766.inc b/xdebug-3.4.5/tests/coverage/bug00766.inc
new file mode 100644
index 0000000..8202ada
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00766.inc
@@ -0,0 +1,10 @@
+<?php
+class Foo {
+    static $domains = array('a' => 'b');
+
+    static public function &getDomain($domain) {
+       return self::$domains[$domain];
+    }
+}
+
+Foo::getDomain('a');
diff --git a/xdebug-3.4.5/tests/coverage/bug00766.phpt b/xdebug-3.4.5/tests/coverage/bug00766.phpt
new file mode 100644
index 0000000..c80f797
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00766.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #766: Xdebug doesn't understand ZEND_RETURN_BY_REF (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+	xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+	include 'bug00766.inc';
+	$cc = xdebug_get_code_coverage();
+	ksort($cc);
+	var_dump(array_slice($cc, 0, 1));
+
+	xdebug_stop_code_coverage(false);
+?>
+--EXPECTF--
+array(1) {
+  ["%sbug00766.inc"]=>
+  array(4) {
+    [6]=>
+    int(1)
+    [7]=>
+    int(-2)
+    [10]=>
+    int(1)
+    [11]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00879.inc b/xdebug-3.4.5/tests/coverage/bug00879.inc
new file mode 100644
index 0000000..0dfc5f6
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00879.inc
@@ -0,0 +1,7 @@
+<?php
+
+trait T {}
+
+class WithTrait {
+    use T;
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug00879.phpt b/xdebug-3.4.5/tests/coverage/bug00879.phpt
new file mode 100644
index 0000000..95624ce
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug00879.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #879: Closing brace in trait-using class definitions is counted towards code coverage
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED);
+
+$file = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'bug00879.inc';
+include $file;
+
+new WithTrait;
+
+$cc = xdebug_get_code_coverage();
+ksort($cc);
+var_dump($cc);
+?>
+--EXPECTF--
+array(2) {
+  ["%sbug00879.inc"]=>
+  array(2) {
+    [5]=>
+    int(1)
+    [8]=>
+    int(1)
+  }
+  ["%sbug00879.php"]=>
+  array(4) {
+    [5]=>
+    int(1)
+    [6]=>
+    int(1)
+    [8]=>
+    int(1)
+    [10]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug01034-001-noopcache-php828.phpt b/xdebug-3.4.5/tests/coverage/bug01034-001-noopcache-php828.phpt
new file mode 100644
index 0000000..93199fd
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01034-001-noopcache-php828.phpt
@@ -0,0 +1,59 @@
+--TEST--
+Test for bug #1034: path coverage [1] (!opcache, <= PHP 8.2.8)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP <= 8.2.8; !opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+include 'bug01034-001.inc';
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+dump_branch_coverage($c);
+?>
+--EXPECTF--
+0123
+!42
+caught
+ifelse
+- branches
+  - 00; OP: 00-03; line: 10-12 HIT; out1: 04  X ; out2: 07 HIT
+  - 04; OP: 04-06; line: 13-13  X ; out1: 11  X
+  - 07; OP: 07-10; line: 15-16 HIT; out1: EX  X
+  - 11; OP: 11-14; line: 18-19  X ; out1: EX  X
+- paths
+  - 0 4 11:  X
+  - 0 7: HIT
+
+loopy
+- branches
+  - 00; OP: 00-03; line: 02-04 HIT; out1: 07 HIT
+  - 04; OP: 04-06; line: 05-04 HIT; out1: 07 HIT
+  - 07; OP: 07-09; line: 04-04 HIT; out1: 10 HIT; out2: 04 HIT
+  - 10; OP: 10-13; line: 07-08 HIT; out1: EX  X
+- paths
+  - 0 7 10: HIT
+  - 0 7 4 7 10: HIT
+
+trycatch
+- branches
+  - 00; OP: 00-05; line: 23-24 HIT; out1: EX  X
+  - 09; OP: 09-09; line: 26-26 HIT; out1: 10 HIT; out2: EX  X
+  - 10; OP: 10-13; line: 27-29 HIT; out1: EX  X
+- paths
+  - 0: HIT
+  - 9 10: HIT
+
+{main}
+- branches
+  - 00; OP: 00-15; line: 31-36 HIT; out1: EX  X
+- paths
+  - 0: HIT
diff --git a/xdebug-3.4.5/tests/coverage/bug01034-001-noopcache-php829.phpt b/xdebug-3.4.5/tests/coverage/bug01034-001-noopcache-php829.phpt
new file mode 100644
index 0000000..3c0cfb2
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01034-001-noopcache-php829.phpt
@@ -0,0 +1,59 @@
+--TEST--
+Test for bug #1034: path coverage [1] (!opcache, > PHP 8.2.8)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP > 8.2.8; !opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+include 'bug01034-001.inc';
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+dump_branch_coverage($c);
+?>
+--EXPECTF--
+0123
+!42
+caught
+ifelse
+- branches
+  - 00; OP: 00-03; line: 10-12 HIT; out1: 04  X ; out2: 07 HIT
+  - 04; OP: 04-06; line: 13-12  X ; out1: 11  X
+  - 07; OP: 07-10; line: 15-16 HIT; out1: EX  X
+  - 11; OP: 11-14; line: 18-19  X ; out1: EX  X
+- paths
+  - 0 4 11:  X
+  - 0 7: HIT
+
+loopy
+- branches
+  - 00; OP: 00-03; line: 02-04 HIT; out1: 07 HIT
+  - 04; OP: 04-06; line: 05-04 HIT; out1: 07 HIT
+  - 07; OP: 07-09; line: 04-04 HIT; out1: 10 HIT; out2: 04 HIT
+  - 10; OP: 10-13; line: 07-08 HIT; out1: EX  X
+- paths
+  - 0 7 10: HIT
+  - 0 7 4 7 10: HIT
+
+trycatch
+- branches
+  - 00; OP: 00-05; line: 23-24 HIT; out1: EX  X
+  - 09; OP: 09-09; line: 26-26 HIT; out1: 10 HIT; out2: EX  X
+  - 10; OP: 10-13; line: 27-29 HIT; out1: EX  X
+- paths
+  - 0: HIT
+  - 9 10: HIT
+
+{main}
+- branches
+  - 00; OP: 00-15; line: 31-36 HIT; out1: EX  X
+- paths
+  - 0: HIT
diff --git a/xdebug-3.4.5/tests/coverage/bug01034-001-opcache-php828.phpt b/xdebug-3.4.5/tests/coverage/bug01034-001-opcache-php828.phpt
new file mode 100644
index 0000000..fca214b
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01034-001-opcache-php828.phpt
@@ -0,0 +1,59 @@
+--TEST--
+Test for bug #1034: path coverage [1] (opcache, <= PHP 8.2.8)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP <= 8.2.8; opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+include 'bug01034-001.inc';
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+dump_branch_coverage($c);
+?>
+--EXPECTF--
+0123
+!42
+caught
+ifelse
+- branches
+  - 00; OP: 00-03; line: 10-12 HIT; out1: 04  X ; out2: 07 HIT
+  - 04; OP: 04-06; line: 13-13  X ; out1: 11  X
+  - 07; OP: 07-10; line: 15-16 HIT; out1: EX  X
+  - 11; OP: 11-14; line: 18-19  X ; out1: EX  X
+- paths
+  - 0 4 11:  X
+  - 0 7: HIT
+
+loopy
+- branches
+  - 00; OP: 00-03; line: 02-04 HIT; out1: 07 HIT
+  - 04; OP: 04-06; line: 05-04 HIT; out1: 07 HIT
+  - 07; OP: 07-09; line: 04-04 HIT; out1: 10 HIT; out2: 04 HIT
+  - 10; OP: 10-13; line: 07-08 HIT; out1: EX  X
+- paths
+  - 0 7 10: HIT
+  - 0 7 4 7 10: HIT
+
+trycatch
+- branches
+  - 00; OP: 00-04; line: 24-24 HIT; out1: EX  X
+  - 05; OP: 05-05; line: 26-26 HIT; out1: 06 HIT; out2: EX  X
+  - 06; OP: 06-09; line: 27-29 HIT; out1: EX  X
+- paths
+  - 0: HIT
+  - 5 6: HIT
+
+{main}
+- branches
+  - 00; OP: 00-15; line: 31-36 HIT; out1: EX  X
+- paths
+  - 0: HIT
diff --git a/xdebug-3.4.5/tests/coverage/bug01034-001-opcache-php829.phpt b/xdebug-3.4.5/tests/coverage/bug01034-001-opcache-php829.phpt
new file mode 100644
index 0000000..9a96089
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01034-001-opcache-php829.phpt
@@ -0,0 +1,59 @@
+--TEST--
+Test for bug #1034: path coverage [1] (opcache, > PHP 8.2.8)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP > 8.2.8; opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+include 'bug01034-001.inc';
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+dump_branch_coverage($c);
+?>
+--EXPECTF--
+0123
+!42
+caught
+ifelse
+- branches
+  - 00; OP: 00-03; line: 10-12 HIT; out1: 04  X ; out2: 07 HIT
+  - 04; OP: 04-06; line: 13-12  X ; out1: 11  X
+  - 07; OP: 07-10; line: 15-16 HIT; out1: EX  X
+  - 11; OP: 11-14; line: 18-19  X ; out1: EX  X
+- paths
+  - 0 4 11:  X
+  - 0 7: HIT
+
+loopy
+- branches
+  - 00; OP: 00-03; line: 02-04 HIT; out1: 07 HIT
+  - 04; OP: 04-06; line: 05-04 HIT; out1: 07 HIT
+  - 07; OP: 07-09; line: 04-04 HIT; out1: 10 HIT; out2: 04 HIT
+  - 10; OP: 10-13; line: 07-08 HIT; out1: EX  X
+- paths
+  - 0 7 10: HIT
+  - 0 7 4 7 10: HIT
+
+trycatch
+- branches
+  - 00; OP: 00-04; line: 24-24 HIT; out1: EX  X
+  - 05; OP: 05-05; line: 26-26 HIT; out1: 06 HIT; out2: EX  X
+  - 06; OP: 06-09; line: 27-29 HIT; out1: EX  X
+- paths
+  - 0: HIT
+  - 5 6: HIT
+
+{main}
+- branches
+  - 00; OP: 00-15; line: 31-36 HIT; out1: EX  X
+- paths
+  - 0: HIT
diff --git a/xdebug-3.4.5/tests/coverage/bug01034-001.inc b/xdebug-3.4.5/tests/coverage/bug01034-001.inc
new file mode 100644
index 0000000..66342c4
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01034-001.inc
@@ -0,0 +1,35 @@
+<?php
+function loopy($i)
+{
+	for ($j = 0; $j < $i; $j++) {
+		echo $j;
+	}
+	echo "\n";
+}
+
+function ifelse($i)
+{
+	if ($i == 42) {
+		echo "42\n";
+	} else {
+		echo "!42\n";
+		return;
+	}
+	echo "EOF\n";
+}
+
+function trycatch()
+{
+	try {
+		throw new Exception("test");
+		echo "Not thrown\n";
+	} catch (Exception $e) {
+		echo "caught\n";
+	}
+}
+
+loopy(0);
+loopy(4);
+ifelse(44);
+trycatch();
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01034-002-noopcache.phpt b/xdebug-3.4.5/tests/coverage/bug01034-002-noopcache.phpt
new file mode 100644
index 0000000..5a8e6af
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01034-002-noopcache.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test for bug #1034: path coverage [2] (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+include 'bug01034-002.inc';
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+dump_branch_coverage($c);
+?>
+--EXPECTF--
+01234
+{main}
+- branches
+  - 00; OP: 00-02; line: 02-02 HIT; out1: 06 HIT
+  - 03; OP: 03-05; line: 03-02 HIT; out1: 06 HIT
+  - 06; OP: 06-08; line: 02-02 HIT; out1: 09 HIT; out2: 03 HIT
+  - 09; OP: 09-11; line: 05-07 HIT; out1: EX  X
+- paths
+  - 0 6 9:  X
+  - 0 6 3 6 9: HIT
diff --git a/xdebug-3.4.5/tests/coverage/bug01034-002.inc b/xdebug-3.4.5/tests/coverage/bug01034-002.inc
new file mode 100644
index 0000000..781be79
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01034-002.inc
@@ -0,0 +1,6 @@
+<?php
+for ($j = 0; $j < 5; $j++) {
+	echo $j;
+}
+echo "\n";
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01034-003-noopcache.phpt b/xdebug-3.4.5/tests/coverage/bug01034-003-noopcache.phpt
new file mode 100644
index 0000000..6067690
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01034-003-noopcache.phpt
@@ -0,0 +1,65 @@
+--TEST--
+Test for bug #1034: path coverage [3] (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+include 'bug01034-003.inc';
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+dump_branch_coverage($c);
+?>
+--EXPECTF--
+Let's do some stuff!
+caught
+And do some more
+Let's do some stuff!
+caught
+And do some more
+Let's do some stuff!
+CAUGHT IN MAIN
+trycatch
+- branches
+  - 00; OP: 00-13; line: 06-13 HIT; out1: 14 HIT; out2: 19 HIT
+  - 14; OP: 14-15; line: 14-14 HIT; out1: 16 HIT; out2: 24 HIT
+  - 16; OP: 16-17; line: 15-15 HIT; out1: 18  X ; out2: 29 HIT
+  - 18; OP: 18-18; line: 15-15  X ; out1: 34  X
+  - 19; OP: 19-23; line: 13-13 HIT; out1: EX  X
+  - 24; OP: 24-28; line: 14-14 HIT; out1: EX  X
+  - 29; OP: 29-33; line: 15-15 HIT; out1: EX  X
+  - 34; OP: 34-36; line: 17-17  X ; out1: 48  X
+  - 37; OP: 37-37; line: 18-18 HIT; out1: 38 HIT; out2: 41 HIT
+  - 38; OP: 38-40; line: 19-19 HIT; out1: 48 HIT
+  - 41; OP: 41-41; line: 20-20 HIT; out1: 42  X ; out2: 45 HIT
+  - 42; OP: 42-44; line: 21-21  X ; out1: 48  X
+  - 45; OP: 45-45; line: 22-22 HIT; out1: 46 HIT; out2: EX  X
+  - 46; OP: 46-47; line: 23-26 HIT; out1: 48 HIT
+  - 48; OP: 48-51; line: 26-27 HIT; out1: EX  X
+- paths
+  - 0 14 16 18 34 48:  X
+  - 0 14 16 29: HIT
+  - 0 14 24: HIT
+  - 0 19: HIT
+  - 37 38 48: HIT
+  - 37 41 42 48:  X
+  - 37 41 45 46 48: HIT
+
+{main}
+- branches
+  - 00; OP: 00-13; line: 29-32 HIT; out1: 17  X
+  - 14; OP: 14-14; line: 33-33 HIT; out1: 15 HIT; out2: EX  X
+  - 15; OP: 15-16; line: 34-37 HIT; out1: 17 HIT
+  - 17; OP: 17-17; line: 37-37 HIT; out1: EX  X
+- paths
+  - 0 17:  X
+  - 14 15 17: HIT
diff --git a/xdebug-3.4.5/tests/coverage/bug01034-003.inc b/xdebug-3.4.5/tests/coverage/bug01034-003.inc
new file mode 100644
index 0000000..18a7aa3
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01034-003.inc
@@ -0,0 +1,36 @@
+<?php
+class ExceptionFoo extends Exception {}
+class ExceptionBar extends Exception {}
+class ExceptionBaz extends Exception {}
+
+function trycatch($action)
+{
+	echo "Let's do some stuff!\n";
+	$f = 5 * pow(3, 7);
+
+	try {
+		switch ($action) {
+			case 1: throw new ExceptionFoo("test");
+			case 2: throw new ExceptionBaz("test");
+			case 3: throw new Exception("test");
+		}
+		echo "Not thrown\n";
+	} catch (ExceptionFoo $e) {
+		echo "caught\n";
+	} catch (ExceptionBar $e) {
+		echo "caught\n";
+	} catch (ExceptionBaz $e) {
+		echo "caught\n";
+	}
+
+	echo "And do some more\n";
+}
+
+trycatch(1);
+trycatch(2);
+try {
+	trycatch(3);
+} catch ( Exception $e ) {
+	echo "CAUGHT IN MAIN\n";
+}
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01034-004-noopcache.phpt b/xdebug-3.4.5/tests/coverage/bug01034-004-noopcache.phpt
new file mode 100644
index 0000000..aebf740
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01034-004-noopcache.phpt
@@ -0,0 +1,52 @@
+--TEST--
+Test for bug #1034: path coverage [4] (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+include 'bug01034-004.inc';
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+dump_branch_coverage($c);
+?>
+--EXPECTF--
+0
+A HIT
+B HIT
+ifthenelse
+- branches
+  - 00; OP: 00-03; line: 12-14 HIT; out1: 04 HIT; out2: 06 HIT
+  - 04; OP: 04-05; line: 15-17 HIT; out1: 06 HIT
+  - 06; OP: 06-07; line: 17-17 HIT; out1: 08 HIT; out2: 10 HIT
+  - 08; OP: 08-09; line: 18-20 HIT; out1: 10 HIT
+  - 10; OP: 10-11; line: 20-20 HIT; out1: EX  X
+- paths
+  - 0 4 6 8 10:  X
+  - 0 4 6 10: HIT
+  - 0 6 8 10: HIT
+  - 0 6 10:  X
+
+loopy
+- branches
+  - 00; OP: 00-01; line: 02-06 HIT; out1: 02 HIT
+  - 02; OP: 02-05; line: 06-08 HIT; out1: 06 HIT; out2: 02  X
+  - 06; OP: 06-09; line: 09-10 HIT; out1: EX  X
+- paths
+  - 0 2 6: HIT
+  - 0 2 2 6:  X
+
+{main}
+- branches
+  - 00; OP: 00-14; line: 22-26 HIT; out1: EX  X
+- paths
+  - 0: HIT
diff --git a/xdebug-3.4.5/tests/coverage/bug01034-004.inc b/xdebug-3.4.5/tests/coverage/bug01034-004.inc
new file mode 100644
index 0000000..38d70ac
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01034-004.inc
@@ -0,0 +1,25 @@
+<?php
+function loopy($i)
+{
+	do
+	{
+		echo $i;
+
+	} while( $i-- );
+	echo "\n";
+}
+
+function ifthenelse( $a, $b )
+{
+	if ($a) {
+		echo "A HIT\n";
+	}
+	if ($b) {
+		echo "B HIT\n";
+	}
+}
+
+loopy(0);
+ifthenelse( true, false );
+ifthenelse( false, true );
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01034-005-noopcache.phpt b/xdebug-3.4.5/tests/coverage/bug01034-005-noopcache.phpt
new file mode 100644
index 0000000..2f7a19f
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01034-005-noopcache.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Test for bug #1034: path coverage [5] (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+try {
+	include 'bug01034-005.inc';
+} catch (Exception $e) {
+	/* eat */
+}
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+dump_branch_coverage($c);
+?>
+--EXPECTF--
+caught
+trycatch
+- branches
+  - 00; OP: 00-05; line: 04-05 HIT; out1: EX  X
+  - 09; OP: 09-09; line: 07-07 HIT; out1: 10  X ; out2: 13 HIT
+  - 10; OP: 10-12; line: 08-08  X ; out1: 24  X
+  - 13; OP: 13-13; line: 09-09 HIT; out1: 14  X ; out2: 17 HIT
+  - 14; OP: 14-16; line: 10-10  X ; out1: 24  X
+  - 17; OP: 17-17; line: 11-11 HIT; out1: 18 HIT; out2: 21  X
+  - 18; OP: 18-20; line: 12-12 HIT; out1: 24 HIT
+  - 21; OP: 21-21; line: 13-13  X ; out1: 22  X ; out2: EX  X
+  - 22; OP: 22-23; line: 14-16  X ; out1: 24  X
+  - 24; OP: 24-25; line: 16-16 HIT; out1: EX  X
+- paths
+  - 0: HIT
+  - 9 10 24:  X
+  - 9 13 14 24:  X
+  - 9 13 17 18 24: HIT
+  - 9 13 17 21 22 24:  X
+
+{main}
+- branches
+  - 00; OP: 00-03; line: 17-19 HIT; out1: EX  X
+- paths
+  - 0: HIT
diff --git a/xdebug-3.4.5/tests/coverage/bug01034-005-opcache.phpt b/xdebug-3.4.5/tests/coverage/bug01034-005-opcache.phpt
new file mode 100644
index 0000000..3ced129
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01034-005-opcache.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Test for bug #1034: path coverage [5] (opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+try {
+	include 'bug01034-005.inc';
+} catch (Exception $e) {
+	/* eat */
+}
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+dump_branch_coverage($c);
+?>
+--EXPECTF--
+caught
+trycatch
+- branches
+  - 00; OP: 00-04; line: 05-05 HIT; out1: EX  X
+  - 05; OP: 05-05; line: 07-07 HIT; out1: 06  X ; out2: 09 HIT
+  - 06; OP: 06-08; line: 08-08  X ; out1: 20  X
+  - 09; OP: 09-09; line: 09-09 HIT; out1: 10  X ; out2: 13 HIT
+  - 10; OP: 10-12; line: 10-10  X ; out1: 20  X
+  - 13; OP: 13-13; line: 11-11 HIT; out1: 14 HIT; out2: 17  X
+  - 14; OP: 14-16; line: 12-12 HIT; out1: 20 HIT
+  - 17; OP: 17-17; line: 13-13  X ; out1: 18  X ; out2: EX  X
+  - 18; OP: 18-19; line: 14-16  X ; out1: 20  X
+  - 20; OP: 20-21; line: 16-16 HIT; out1: EX  X
+- paths
+  - 0: HIT
+  - 5 6 20:  X
+  - 5 9 10 20:  X
+  - 5 9 13 14 20: HIT
+  - 5 9 13 17 18 20:  X
+
+{main}
+- branches
+  - 00; OP: 00-03; line: 17-19 HIT; out1: EX  X
+- paths
+  - 0: HIT
diff --git a/xdebug-3.4.5/tests/coverage/bug01034-005.inc b/xdebug-3.4.5/tests/coverage/bug01034-005.inc
new file mode 100644
index 0000000..2686a20
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01034-005.inc
@@ -0,0 +1,18 @@
+<?php
+function trycatch()
+{
+	try {
+		throw new Exception("test");
+		echo "Not thrown\n";
+	} catch (Exception1 $e) {
+		echo "caught\n";
+	} catch (Exception2 $e) {
+		echo "caught\n";
+	} catch (Exception $e) {
+		echo "caught\n";
+	} catch (Exception4 $e) {
+		echo "caught\n";
+	}
+}
+trycatch();
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01094-001.phpt b/xdebug-3.4.5/tests/coverage/bug01094-001.phpt
new file mode 100644
index 0000000..cc50e46
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01094-001.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Test for bug #1094: Segmentation fault when attempting to use branch/path coverage
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+
+function thisWillSegfault()
+{
+    xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+}
+
+function foobarbaz($number)
+{
+    if ($number <= 0) {
+        return 'baz';
+    }
+
+    if (rand(0, $number) < ($number / 2)) {
+        return 'foo';
+    } else {
+        return 'bar';
+    }
+}
+
+echo "Trying from within a function...";
+
+thisWillSegfault();
+foobarbaz(1);
+xdebug_stop_code_coverage();
+
+echo "...done!\n";
+?>
+--EXPECT--
+Trying from within a function......done!
diff --git a/xdebug-3.4.5/tests/coverage/bug01094-002.phpt b/xdebug-3.4.5/tests/coverage/bug01094-002.phpt
new file mode 100644
index 0000000..bc7a3be
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01094-002.phpt
@@ -0,0 +1,39 @@
+--TEST--
+Test for bug #1094: Segmentation fault when attempting to use branch/path coverage
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+foobarbaz(1);
+xdebug_stop_code_coverage();
+
+function thisWillSegfault()
+{
+    xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+}
+
+function foobarbaz($number)
+{
+    if ($number <= 0) {
+        return 'baz';
+    }
+
+    if (rand(0, $number) < ($number / 2)) {
+        return 'foo';
+    } else {
+        return 'bar';
+    }
+}
+
+echo "Trying from within a function...";
+
+thisWillSegfault();
+foobarbaz(1);
+xdebug_stop_code_coverage();
+
+echo "...done!\n";
+?>
+--EXPECT--
+Trying from within a function......done!
diff --git a/xdebug-3.4.5/tests/coverage/bug01180.phpt b/xdebug-3.4.5/tests/coverage/bug01180.phpt
new file mode 100644
index 0000000..024f0fb
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01180.phpt
@@ -0,0 +1,58 @@
+--TEST--
+Test for bug #1180: Code coverage crashes with non-standard start/stops
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+class TestHelper
+{
+    protected static $coverageStopped = false;
+
+    public static function stopCodeCoverage()
+    {
+        if (self::$coverageStopped === false) {
+            self::$coverageStopped = xdebug_stop_code_coverage(false);
+        }
+    }
+
+    public static function resumeCodeCoverage()
+    {
+        xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+        self::$coverageStopped = false;
+    }
+
+    public static function stopAndResumeCoverage()
+    {
+        self::stopCodeCoverage();
+        self::resumeCodeCoverage();
+    }
+}
+
+function testWorksWithoutIntermediaryMethod()
+{
+	\TestHelper::stopCodeCoverage();
+	\TestHelper::stopCodeCoverage();
+	\TestHelper::resumeCodeCoverage();
+	\TestHelper::resumeCodeCoverage();
+}
+
+function testIntermediaryMethodExplodesIfWeDoChangeStaticProperty()
+{
+	\TestHelper::stopCodeCoverage();
+	\TestHelper::stopAndResumeCoverage();
+}
+
+testWorksWithoutIntermediaryMethod();
+testIntermediaryMethodExplodesIfWeDoChangeStaticProperty();
+
+echo "no crash\n";
+?>
+--EXPECT--
+no crash
diff --git a/xdebug-3.4.5/tests/coverage/bug01192.phpt b/xdebug-3.4.5/tests/coverage/bug01192.phpt
new file mode 100644
index 0000000..be4c15d
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01192.phpt
@@ -0,0 +1,71 @@
+--TEST--
+Test for bug #1192: Dead code analysis does not work for generators with 'return;'
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+function gen(&$output, $branch = false)
+{
+	yield;
+
+	if($branch) {
+		$output = 'branched';
+		return;
+	} // This line is never covered.
+	$output = 'did not branch';
+
+}
+
+function testGen()
+{
+	$output = '';
+	$gen = gen($output, true);
+
+	while($gen->valid()) {
+		$gen->next();
+	}
+}
+
+xdebug_start_code_coverage (XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+testGen();
+
+$c = xdebug_get_code_coverage();
+ksort($c);
+var_dump($c);
+xdebug_stop_code_coverage();
+?>
+--EXPECTF--
+array(1) {
+  ["%sbug01192.php"]=>
+  array(14) {
+    [2]=>
+    int(1)
+    [4]=>
+    int(1)
+    [6]=>
+    int(1)
+    [7]=>
+    int(1)
+    [8]=>
+    int(1)
+    [10]=>
+    int(-1)
+    [12]=>
+    int(-1)
+    [16]=>
+    int(1)
+    [17]=>
+    int(1)
+    [19]=>
+    int(1)
+    [20]=>
+    int(1)
+    [22]=>
+    int(1)
+    [26]=>
+    int(1)
+    [28]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug01195.inc b/xdebug-3.4.5/tests/coverage/bug01195.inc
new file mode 100644
index 0000000..691de5c
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01195.inc
@@ -0,0 +1,12 @@
+<?php
+function fe( $a )
+{
+	foreach($a as $dummy)
+	{
+		echo "foo\n";
+	}
+	echo "the end\n";
+}
+
+fe( [ 1, 3, 4 ] );
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01195.phpt b/xdebug-3.4.5/tests/coverage/bug01195.phpt
new file mode 100644
index 0000000..67e0034
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01195.phpt
@@ -0,0 +1,42 @@
+--TEST--
+Test for bug #1195: Segfault with code coverage and foreach (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+include 'bug01195.inc';
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+dump_branch_coverage($c);
+?>
+--EXPECTF--
+foo
+foo
+foo
+the end
+fe
+- branches
+  - 00; OP: 00-02; line: 02-04 HIT; out1: 03 HIT; out2: 07  X
+  - 03; OP: 03-03; line: 04-04 HIT; out1: 04 HIT; out2: 07 HIT
+  - 04; OP: 04-06; line: 06-04 HIT; out1: 03 HIT
+  - 07; OP: 07-11; line: 04-09 HIT; out1: EX  X
+- paths
+  - 0 3 4 3 7: HIT
+  - 0 3 7:  X
+  - 0 7:  X
+
+{main}
+- branches
+  - 00; OP: 00-04; line: 11-13 HIT; out1: EX  X
+- paths
+  - 0: HIT
diff --git a/xdebug-3.4.5/tests/coverage/bug01200.inc b/xdebug-3.4.5/tests/coverage/bug01200.inc
new file mode 100644
index 0000000..2ffd704
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01200.inc
@@ -0,0 +1,16 @@
+<?php
+class builder
+{
+	public function add($a, $b, $c)
+	{
+	}
+}
+
+$b = new builder;
+
+$b->add(
+	'build_age',
+	'choice',
+	array( [] )
+);
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01200.phpt b/xdebug-3.4.5/tests/coverage/bug01200.phpt
new file mode 100644
index 0000000..f65bdc0
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01200.phpt
@@ -0,0 +1,36 @@
+--TEST--
+Test for bug #1200: Coverage of sending arguments to a method
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+include 'bug01200.inc';
+
+$cc = xdebug_get_code_coverage();
+ksort($cc);
+var_dump(array_slice($cc, 0, 1));
+
+xdebug_stop_code_coverage(false);
+?>
+--EXPECTF--
+array(1) {
+  ["%sbug01200.inc"]=>
+  array(7) {
+    [6]=>
+    int(1)
+    [9]=>
+    int(1)
+    [11]=>
+    int(1)
+    [12]=>
+    int(1)
+    [13]=>
+    int(1)
+    [14]=>
+    int(1)
+    [17]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug01210-noopcache.phpt b/xdebug-3.4.5/tests/coverage/bug01210-noopcache.phpt
new file mode 100644
index 0000000..7d246fc
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01210-noopcache.phpt
@@ -0,0 +1,58 @@
+--TEST--
+Test for bug #1210: Coverage of sending arguments to a method (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+include 'bug01210.inc';
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+dump_branch_coverage($c);
+?>
+--EXPECT--
+foo->getLoader
+- branches
+  - 00; OP: 00-04; line: 06-07  X ; out1: 05  X ; out2: 13  X
+  - 05; OP: 05-05; line: 07-07  X ; out1: 06  X ; out2: 13  X
+  - 06; OP: 06-12; line: 07-07  X ; out1: 05  X
+  - 13; OP: 13-18; line: 07-12  X ; out1: 19  X ; out2: 27  X
+  - 19; OP: 19-19; line: 12-12  X ; out1: 20  X ; out2: 27  X
+  - 20; OP: 20-26; line: 12-12  X ; out1: 19  X
+  - 27; OP: 27-32; line: 12-17  X ; out1: 33  X ; out2: 37  X
+  - 33; OP: 33-36; line: 18-21  X ; out1: 37  X
+  - 37; OP: 37-44; line: 21-24  X
+- paths
+  - 0 5 6 5 13 19 20 19 27 33 37:  X
+  - 0 5 6 5 13 19 20 19 27 37:  X
+  - 0 5 6 5 13 19 27 33 37:  X
+  - 0 5 6 5 13 19 27 37:  X
+  - 0 5 6 5 13 27 33 37:  X
+  - 0 5 6 5 13 27 37:  X
+  - 0 5 13 19 20 19 27 33 37:  X
+  - 0 5 13 19 20 19 27 37:  X
+  - 0 5 13 19 27 33 37:  X
+  - 0 5 13 19 27 37:  X
+  - 0 5 13 27 33 37:  X
+  - 0 5 13 27 37:  X
+  - 0 13 19 20 19 27 33 37:  X
+  - 0 13 19 20 19 27 37:  X
+  - 0 13 19 27 33 37:  X
+  - 0 13 19 27 37:  X
+  - 0 13 27 33 37:  X
+  - 0 13 27 37:  X
+
+{main}
+- branches
+  - 00; OP: 00-00; line: 27-27 HIT; out1: EX  X
+- paths
+  - 0: HIT
diff --git a/xdebug-3.4.5/tests/coverage/bug01210-opcache.phpt b/xdebug-3.4.5/tests/coverage/bug01210-opcache.phpt
new file mode 100644
index 0000000..9ab5a0c
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01210-opcache.phpt
@@ -0,0 +1,58 @@
+--TEST--
+Test for bug #1210: Coverage of sending arguments to a method (opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+include 'bug01210.inc';
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+dump_branch_coverage($c);
+?>
+--EXPECT--
+foo->getLoader
+- branches
+  - 00; OP: 00-04; line: 06-07  X ; out1: 05  X ; out2: 13  X
+  - 05; OP: 05-05; line: 07-07  X ; out1: 06  X ; out2: 13  X
+  - 06; OP: 06-12; line: 07-07  X ; out1: 05  X
+  - 13; OP: 13-18; line: 07-12  X ; out1: 19  X ; out2: 27  X
+  - 19; OP: 19-19; line: 12-12  X ; out1: 20  X ; out2: 27  X
+  - 20; OP: 20-26; line: 12-12  X ; out1: 19  X
+  - 27; OP: 27-32; line: 12-17  X ; out1: 33  X ; out2: 37  X
+  - 33; OP: 33-36; line: 18-21  X ; out1: 37  X
+  - 37; OP: 37-42; line: 21-23  X ; out1: EX  X
+- paths
+  - 0 5 6 5 13 19 20 19 27 33 37:  X
+  - 0 5 6 5 13 19 20 19 27 37:  X
+  - 0 5 6 5 13 19 27 33 37:  X
+  - 0 5 6 5 13 19 27 37:  X
+  - 0 5 6 5 13 27 33 37:  X
+  - 0 5 6 5 13 27 37:  X
+  - 0 5 13 19 20 19 27 33 37:  X
+  - 0 5 13 19 20 19 27 37:  X
+  - 0 5 13 19 27 33 37:  X
+  - 0 5 13 19 27 37:  X
+  - 0 5 13 27 33 37:  X
+  - 0 5 13 27 37:  X
+  - 0 13 19 20 19 27 33 37:  X
+  - 0 13 19 20 19 27 37:  X
+  - 0 13 19 27 33 37:  X
+  - 0 13 19 27 37:  X
+  - 0 13 27 33 37:  X
+  - 0 13 27 37:  X
+
+{main}
+- branches
+  - 00; OP: 00-00; line: 27-27 HIT; out1: EX  X
+- paths
+  - 0: HIT
diff --git a/xdebug-3.4.5/tests/coverage/bug01210.inc b/xdebug-3.4.5/tests/coverage/bug01210.inc
new file mode 100644
index 0000000..676dfba
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01210.inc
@@ -0,0 +1,26 @@
+<?php
+class foo
+{
+	function getLoader()
+	{
+		$map = require __DIR__ . '/autoload_namespaces.php';
+		foreach ($map as $namespace => $path) {
+			$loader->set($namespace, $path);
+		}
+
+		$map = require __DIR__ . '/autoload_psr4.php';
+		foreach ($map as $namespace => $path) {
+			$loader->setPsr4($namespace, $path);
+		}
+
+		$classMap = require __DIR__ . '/autoload_classmap.php';
+		if ($classMap) {
+			$loader->addClassMap($classMap);
+		}
+
+		$loader->register(true);
+
+		return $loader;
+	}
+
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug01241-001.phpt b/xdebug-3.4.5/tests/coverage/bug01241-001.phpt
new file mode 100644
index 0000000..b761c57
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01241-001.phpt
@@ -0,0 +1,53 @@
+--TEST--
+Test for bug #1241: Xdebug doesn't handle FAST_RET and FAST_CALL opcodes for branch/dead code analysis
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+include 'bug01241.inc';
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+ksort($c);
+var_dump($c);
+?>
+--EXPECTF--
+try
+finally
+end
+array(2) {
+  ["%sbug01241-001.php"]=>
+  array(2) {
+    [4]=>
+    int(1)
+    [6]=>
+    int(1)
+  }
+  ["%sbug01241.inc"]=>
+  array(11) {
+    [5]=>
+    int(1)
+    [6]=>
+    int(-1)
+    [7]=>
+    int(-1)
+    [8]=>
+    int(-1)
+    [9]=>
+    int(-1)
+    [10]=>
+    int(1)
+    [11]=>
+    int(1)
+    [13]=>
+    int(1)
+    [14]=>
+    int(1)
+    [16]=>
+    int(1)
+    [18]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug01241-002.inc b/xdebug-3.4.5/tests/coverage/bug01241-002.inc
new file mode 100644
index 0000000..0be0e32
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01241-002.inc
@@ -0,0 +1,16 @@
+<?php
+class Unzip
+{
+    public function extractFile()
+    {
+        try {
+            echo "before true\n";
+            return true;
+            echo "after true\n";
+        } finally {
+            echo "Do somthing\n";
+        }
+        echo "More stuff\n";
+    }
+}
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01241-002.phpt b/xdebug-3.4.5/tests/coverage/bug01241-002.phpt
new file mode 100644
index 0000000..43f41e0
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01241-002.phpt
@@ -0,0 +1,58 @@
+--TEST--
+Test for bug #1241: Xdebug doesn't handle FAST_RET and FAST_CALL opcodes for branch/dead code analysis (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+include 'bug01241-002.inc';
+
+$u = new Unzip;
+$u->extractFile();
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+ksort($c);
+var_dump($c);
+?>
+--EXPECTF--
+before true
+Do somthing
+array(2) {
+  ["%sbug01241-002.inc"]=>
+  array(8) {
+    [7]=>
+    int(1)
+    [8]=>
+    int(1)
+    [9]=>
+    int(-2)
+    [10]=>
+    int(-2)
+    [11]=>
+    int(1)
+    [13]=>
+    int(-2)
+    [14]=>
+    int(-2)
+    [17]=>
+    int(1)
+  }
+  ["%sbug01241-002.php"]=>
+  array(4) {
+    [4]=>
+    int(1)
+    [6]=>
+    int(1)
+    [7]=>
+    int(1)
+    [9]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug01241.inc b/xdebug-3.4.5/tests/coverage/bug01241.inc
new file mode 100644
index 0000000..16dbf25
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01241.inc
@@ -0,0 +1,17 @@
+<?php
+function extractFile()
+{
+	try {
+		echo "try\n";
+	} catch (Catch1 $e) {
+		echo "catch1\n";
+	} catch (Catch2 $e) {
+		echo "catch2\n";
+	} finally {
+		echo "finally\n";
+	}
+	echo "end\n";
+}
+
+extractFile();
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01258.phpt b/xdebug-3.4.5/tests/coverage/bug01258.phpt
new file mode 100644
index 0000000..eed8149
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01258.phpt
@@ -0,0 +1,66 @@
+--TEST--
+Test for bug #1258: ensure case statements are covered
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+$foo = ['bar', 'baz', 'qux', 'quux'];
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+foreach ($foo as $k => $v) {
+    switch ($v) {
+        case 'bar':
+            echo "bar\n";
+            break;
+        case 'baz':
+            echo "baz\n";
+            break;
+        case 'qux':
+            echo "qux\n";
+            break;
+        default:
+            echo "default\n";
+            break;
+    }
+}
+$cc = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+var_dump($cc);
+?>
+--EXPECTF--
+bar
+baz
+qux
+default
+array(1) {
+  ["%sbug01258.php"]=>
+  array(14) {
+    [4]=>
+    int(1)
+    [5]=>
+    int(1)
+    [6]=>
+    int(1)
+    [7]=>
+    int(1)
+    [8]=>
+    int(1)
+    [9]=>
+    int(1)
+    [10]=>
+    int(1)
+    [11]=>
+    int(1)
+    [12]=>
+    int(1)
+    [13]=>
+    int(1)
+    [14]=>
+    int(1)
+    [16]=>
+    int(1)
+    [17]=>
+    int(1)
+    [20]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug01263.inc b/xdebug-3.4.5/tests/coverage/bug01263.inc
new file mode 100644
index 0000000..bc0f080
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01263.inc
@@ -0,0 +1,21 @@
+<?php
+/*
+ * This file is part of the PHP_CodeCoverage package.
+ *
+ * (c) Sebastian Bergmann <sebastian@phpunit.de>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class PHP_CodeCoverage
+{
+    private function addUncoveredFilesFromWhitelist()
+    {
+        foreach ($uncoveredFiles as $uncoveredFile) {
+            for ($i = 1; $i <= $lines; $i++) {
+                $data[$uncoveredFile][$i] = PHP_CodeCoverage_Driver::LINE_NOT_EXECUTED;
+            }
+        }
+    }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug01263.phpt b/xdebug-3.4.5/tests/coverage/bug01263.phpt
new file mode 100644
index 0000000..46cbb40
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01263.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Test for bug #1263: Coverage of sending arguments to a method (opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('opcache');
+?>
+--INI--
+xdebug.mode=coverage
+opcache.enable_cli=1
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+include 'bug01263.inc';
+
+xdebug_stop_code_coverage(false);
+
+?>
+==DONE==
+--EXPECT--
+==DONE==
diff --git a/xdebug-3.4.5/tests/coverage/bug01270-noopcache.phpt b/xdebug-3.4.5/tests/coverage/bug01270-noopcache.phpt
new file mode 100644
index 0000000..64047e8
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01270-noopcache.phpt
@@ -0,0 +1,64 @@
+--TEST--
+Test for bug #1270: String parsing marked not covered (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+xdebug_start_code_coverage( XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE );
+
+include dirname( __FILE__ ) . '/bug01270.inc';
+
+try { func1(); } catch (Exception $e) { }
+try { func2(); } catch (Exception $e) { }
+try { func3(); } catch (Exception $e) { }
+
+$cc = xdebug_get_code_coverage();
+
+ksort( $cc );
+var_dump( array_slice( $cc, 1, 1 ) );
+?>
+--EXPECTF--
+array(1) {
+  ["%sbug01270.inc"]=>
+  array(17) {
+    [4]=>
+    int(1)
+    [5]=>
+    int(1)
+    [6]=>
+    int(1)
+    [7]=>
+    int(1)
+    [9]=>
+    int(-2)
+    [13]=>
+    int(1)
+    [14]=>
+    int(1)
+    [15]=>
+    int(1)
+    [16]=>
+    int(1)
+    [18]=>
+    int(-2)
+    [22]=>
+    int(1)
+    [23]=>
+    int(1)
+    [25]=>
+    int(1)
+    [27]=>
+    int(1)
+    [31]=>
+    int(-2)
+    [33]=>
+    int(1)
+    [35]=>
+    int(-2)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug01270-opcache.phpt b/xdebug-3.4.5/tests/coverage/bug01270-opcache.phpt
new file mode 100644
index 0000000..5dce48d
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01270-opcache.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #1270: String parsing marked not covered (opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+xdebug_start_code_coverage( XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE );
+
+include dirname( __FILE__ ) . '/bug01270.inc';
+
+try { func1(); } catch (Exception $e) { }
+try { func2(); } catch (Exception $e) { }
+try { func3(); } catch (Exception $e) { }
+
+$cc = xdebug_get_code_coverage();
+
+ksort( $cc );
+var_dump( array_slice( $cc, 1, 1 ) );
+?>
+--EXPECTF--
+array(1) {
+  ["%sbug01270.inc"]=>
+  array(10) {
+    [4]=>
+    int(1)
+    [5]=>
+    int(1)
+    [7]=>
+    int(1)
+    [13]=>
+    int(1)
+    [14]=>
+    int(1)
+    [16]=>
+    int(1)
+    [22]=>
+    int(1)
+    [23]=>
+    int(1)
+    [27]=>
+    int(1)
+    [33]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug01270.inc b/xdebug-3.4.5/tests/coverage/bug01270.inc
new file mode 100644
index 0000000..131a10a
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01270.inc
@@ -0,0 +1,34 @@
+<?php
+function func1()
+{
+	$clazz = 'foo';
+	throw new \Exception(
+		"The specified platform for '{$clazz}'" .
+		" must be a fetchable service or fully qualified class"
+	);
+}
+
+function func2()
+{
+	$clazz = 'foo';
+	throw new \Exception(
+		'The specified platform for \'' . $clazz .
+		'\' must be a fetchable service or fully qualified class'
+	);
+}
+
+function func3()
+{
+	$clazz = 'foo';
+	throw new \Exception(
+<<<ENDDOC
+		The specified platform for '{$clazz}'
+		 must be a fetchable service or fully qualified class
+		The specified platform for '{$clazz}'
+		 must be a fetchable service or fully qualified class
+ENDDOC
+	);
+}
+
+return 'foo';
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01278.inc b/xdebug-3.4.5/tests/coverage/bug01278.inc
new file mode 100644
index 0000000..af98d64
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01278.inc
@@ -0,0 +1,8 @@
+<?php
+function getCurrentDomain(){
+    static $domain;
+    if (!isset($domain)) {
+        $domain = implode('.', array_slice(explode('.', $_SERVER['SERVER_NAME']), -2));}
+    
+    return $domain;}
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01278.phpt b/xdebug-3.4.5/tests/coverage/bug01278.phpt
new file mode 100644
index 0000000..29a8c2a
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01278.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Test for bug #1278: Xdebug with PHP 7 does not handle prefill-from-oparray for XDEBUG_CC_UNUSED
+--INI--
+xdebug.mode=coverage
+xdebug.auto_profile=0
+--FILE--
+<?php
+$file = 'bug01278.inc';
+$pathname = stream_resolve_include_path($file);
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+require $pathname;
+$coverage = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+print_r($coverage[$pathname]);
+?>
+--EXPECTF--
+Array
+(
+    [3] => -1
+    [4] => -1
+    [5] => -1
+    [7] => -1
+    [9] => 1
+)
diff --git a/xdebug-3.4.5/tests/coverage/bug01357.phpt b/xdebug-3.4.5/tests/coverage/bug01357.phpt
new file mode 100644
index 0000000..85c8643
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01357.phpt
@@ -0,0 +1,67 @@
+--TEST--
+Test for bug #1357: Function signature using variadics is reported as being not executed
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+class A {
+    public function test(...$a) {
+        print_r($a);
+    }
+
+    public function works($a) {
+        echo $a;
+    }
+}
+
+function works(...$a) {
+    print_r($a);
+}
+
+(new A)->test('hi');
+
+(new A)->works('hi');
+
+works('hi');
+
+xdebug_stop_code_coverage(false);
+
+var_dump(xdebug_get_code_coverage());
+?>
+--EXPECTF--
+Array
+(
+    [0] => hi
+)
+hiArray
+(
+    [0] => hi
+)
+array(1) {
+  ["%sbug01357.php"]=>
+  array(10) {
+    [7]=>
+    int(1)
+    [8]=>
+    int(1)
+    [11]=>
+    int(1)
+    [12]=>
+    int(1)
+    [16]=>
+    int(1)
+    [17]=>
+    int(1)
+    [19]=>
+    int(1)
+    [21]=>
+    int(1)
+    [23]=>
+    int(1)
+    [25]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug01381.inc b/xdebug-3.4.5/tests/coverage/bug01381.inc
new file mode 100644
index 0000000..f178204
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01381.inc
@@ -0,0 +1,22 @@
+<?php
+class test
+{
+    function testFunc()
+    {
+        $coveredLines = [0 => []];
+        $currentFile = 0;
+        $reader = new reader();
+
+        $coveredLines
+            [$currentFile]
+            [$reader->getAttribute('num')]
+            = (int) $reader->getAttribute("count");
+    }
+}
+class reader
+{
+    public function getAttribute()
+    {
+        return 0;
+    }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug01381.phpt b/xdebug-3.4.5/tests/coverage/bug01381.phpt
new file mode 100644
index 0000000..23de45a
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01381.phpt
@@ -0,0 +1,53 @@
+--TEST--
+Test for bug #1381: FETCH_DIM_W is not overloaded (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+include 'bug01381.inc';
+
+$test = new test();
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+$test->testFunc();
+
+$cc = xdebug_get_code_coverage();
+ksort($cc);
+var_dump(array_slice($cc, 0, 1));
+
+xdebug_stop_code_coverage(false);
+?>
+--EXPECTF--
+array(1) {
+  ["%sbug01381.inc"]=>
+  array(9) {
+    [6]=>
+    int(1)
+    [7]=>
+    int(1)
+    [8]=>
+    int(1)
+    [11]=>
+    int(1)
+    [12]=>
+    int(1)
+    [13]=>
+    int(1)
+    [14]=>
+    int(1)
+    [20]=>
+    int(1)
+    [21]=>
+    int(-2)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug01386-class1.inc b/xdebug-3.4.5/tests/coverage/bug01386-class1.inc
new file mode 100644
index 0000000..dc5c2a6
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01386-class1.inc
@@ -0,0 +1,12 @@
+<?php
+// TestClass.php
+class TestClass extends TestClass2 {
+
+    public function test()
+    {
+        $a = 5*5;
+        $b = $a*2;
+        return $b;
+    }
+}
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01386-class2.inc b/xdebug-3.4.5/tests/coverage/bug01386-class2.inc
new file mode 100644
index 0000000..c98de0e
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01386-class2.inc
@@ -0,0 +1,12 @@
+<?php
+// TestClass2.php
+class TestClass2 {
+
+    public function test()
+    {
+        $a = 5*5;
+        $b = $a*2;
+        return $b;
+    }
+}
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01386-noopcache.phpt b/xdebug-3.4.5/tests/coverage/bug01386-noopcache.phpt
new file mode 100644
index 0000000..399a409
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01386-noopcache.phpt
@@ -0,0 +1,60 @@
+--TEST--
+Test for bug #1386: Executable code not shown as executed/executable (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+include 'bug01386-class2.inc';
+include 'bug01386-class1.inc';
+
+$Test1 = new TestClass();
+
+$cc = xdebug_get_code_coverage();
+ksort($cc);
+var_dump(array_slice($cc, 0, 2));
+
+xdebug_stop_code_coverage(false);
+?>
+--EXPECTF--
+array(2) {
+  ["%sbug01386-class1.inc"]=>
+  array(5) {
+    [7]=>
+    int(-1)
+    [8]=>
+    int(-1)
+    [9]=>
+    int(-1)
+    [10]=>
+    int(-2)
+    [13]=>
+    int(1)
+  }
+  ["%sbug01386-class2.inc"]=>
+  array(5) {
+    [7]=>
+    int(-1)
+    [8]=>
+    int(-1)
+    [9]=>
+    int(-1)
+    [10]=>
+    int(-2)
+    [13]=>
+    int(1)
+  }
+}
+
diff --git a/xdebug-3.4.5/tests/coverage/bug01386-opcache.phpt b/xdebug-3.4.5/tests/coverage/bug01386-opcache.phpt
new file mode 100644
index 0000000..1e737de
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01386-opcache.phpt
@@ -0,0 +1,58 @@
+--TEST--
+Test for bug #1386: Executable code not shown as executed/executable (opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+include 'bug01386-class2.inc';
+include 'bug01386-class1.inc';
+
+$Test1 = new TestClass();
+
+$cc = xdebug_get_code_coverage();
+ksort($cc);
+var_dump(array_slice($cc, 0, 2));
+
+xdebug_stop_code_coverage(false);
+?>
+--EXPECTF--
+array(2) {
+  ["%sbug01386-class1.inc"]=>
+  array(5) {
+    [3]=>
+    int(1)
+    [7]=>
+    int(-1)
+    [8]=>
+    int(-1)
+    [9]=>
+    int(-1)
+    [13]=>
+    int(1)
+  }
+  ["%sbug01386-class2.inc"]=>
+  array(4) {
+    [7]=>
+    int(-1)
+    [8]=>
+    int(-1)
+    [9]=>
+    int(-1)
+    [13]=>
+    int(1)
+  }
+}
+
diff --git a/xdebug-3.4.5/tests/coverage/bug01394.phpt b/xdebug-3.4.5/tests/coverage/bug01394.phpt
new file mode 100644
index 0000000..80faf22
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01394.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test for bug #1394: Code coverage does not cover instanceof (in elseif)
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+
+xdebug_start_code_coverage();
+
+function whatAmI($var) {
+    if (is_string($var)) {
+        return 'string';
+    } elseif ($var instanceof \stdClass) {
+        return '\stdClass';
+    } elseif (is_scalar($var)) {
+        return 'scalar';
+    }
+    return 'dunno!';
+}
+
+whatAmI(new \stdClass);
+whatAmI(123);
+whatAmI('string');
+whatAmI(new DateTime());
+
+$cc = xdebug_get_code_coverage()[__FILE__];
+
+echo "line  8 is hit: ", $cc[8] == 1 ? 'yes' : 'no', "\n";
+echo "line 10 is hit: ", $cc[8] == 1 ? 'yes' : 'no', "\n";
+?>
+--EXPECT--
+line  8 is hit: yes
+line 10 is hit: yes
diff --git a/xdebug-3.4.5/tests/coverage/bug01403.inc b/xdebug-3.4.5/tests/coverage/bug01403.inc
new file mode 100644
index 0000000..3609a41
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01403.inc
@@ -0,0 +1,17 @@
+<?php
+class Foo {
+	function reduce( $callable )
+	{
+		$callable();
+	}
+}
+$someObject = new Foo; $outerItem = $anotherOuterItem = 42;
+// Because it is "line based" and not statement base coverage
+// the variables for "use" are shown as not covered.
+$someObject->reduce(function () use (
+    $outerItem,
+    $anotherOuterItem
+) {
+   return false;
+});
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01403.phpt b/xdebug-3.4.5/tests/coverage/bug01403.phpt
new file mode 100644
index 0000000..f7947f7
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01403.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Test for bug #1403: Code coverage does not cover BIND_STATIC/BIND_LEXICAL
+--INI--
+xdebug.mode=coverage
+xdebug.auto_profile=0
+--FILE--
+<?php
+$file = 'bug01403.inc';
+$pathname = stream_resolve_include_path($file);
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+require $pathname;
+$coverage = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+print_r($coverage[$pathname]);
+?>
+--EXPECTF--
+Array
+(
+    [5] => 1
+    [6] => 1
+    [8] => 1
+    [11] => 1
+    [12] => 1
+    [13] => 1
+    [15] => 1
+    [16] => 1
+    [18] => 1
+)
diff --git a/xdebug-3.4.5/tests/coverage/bug01420-noopcache.phpt b/xdebug-3.4.5/tests/coverage/bug01420-noopcache.phpt
new file mode 100644
index 0000000..913c7fa
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01420-noopcache.phpt
@@ -0,0 +1,44 @@
+--TEST--
+Test for bug #1420: handle path/branch converage for switch with jump table (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+include 'bug01420.inc';
+
+xdebug_stop_code_coverage(false);
+$cc = xdebug_get_code_coverage();
+dump_branch_coverage($cc);
+?>
+--EXPECTF--
+baz
+{main}
+- branches
+  - 00; OP: 00-03; line: 02-03 HIT; out1: 11  X ; out2: 15  X ; out3: 19  X ; out4: 23  X ; out5: 04 HIT
+  - 04; OP: 04-05; line: 04-04 HIT; out1: 06 HIT; out2: 11  X
+  - 06; OP: 06-07; line: 07-07 HIT; out1: 08  X ; out2: 15 HIT
+  - 08; OP: 08-09; line: 10-10  X ; out1: 10  X ; out2: 19  X
+  - 10; OP: 10-10; line: 10-10  X ; out1: 23  X
+  - 11; OP: 11-14; line: 05-06  X ; out1: 27  X
+  - 15; OP: 15-18; line: 08-09 HIT; out1: 27 HIT
+  - 19; OP: 19-22; line: 11-12  X ; out1: 27  X
+  - 23; OP: 23-26; line: 14-15  X ; out1: 27  X
+  - 27; OP: 27-27; line: 18-18 HIT; out1: EX  X
+- paths
+  - 0 11 27:  X
+  - 0 15 27:  X
+  - 0 19 27:  X
+  - 0 23 27:  X
+  - 0 4 6 8 10 23 27:  X
+  - 0 4 6 8 19 27:  X
+  - 0 4 6 15 27: HIT
+  - 0 4 11 27:  X
diff --git a/xdebug-3.4.5/tests/coverage/bug01420.inc b/xdebug-3.4.5/tests/coverage/bug01420.inc
new file mode 100644
index 0000000..b27cd82
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01420.inc
@@ -0,0 +1,17 @@
+<?php
+$v = 'baz';
+switch ($v) {
+	case 'bar':
+		echo "bar\n";
+		break;
+	case 'baz':
+		echo "baz\n";
+		break;
+	case 'qux':
+		echo "qux\n";
+		break;
+	default:
+		echo "default\n";
+		break;
+}
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01429.phpt b/xdebug-3.4.5/tests/coverage/bug01429.phpt
new file mode 100644
index 0000000..c2dbc0b
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01429.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Test for bug #1429: Code coverage does not cover null coalesce
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+xdebug_start_code_coverage();
+
+$c = [
+	$a ?? null,
+	$b ?? null
+];
+
+$cc = xdebug_get_code_coverage()[__FILE__];
+
+echo "line  5 is hit: ", $cc[5] == 1 ? 'yes' : 'no', "\n";
+echo "line  6 is hit: ", $cc[6] == 1 ? 'yes' : 'no', "\n";
+?>
+--EXPECT--
+line  5 is hit: yes
+line  6 is hit: yes
diff --git a/xdebug-3.4.5/tests/coverage/bug01439.phpt b/xdebug-3.4.5/tests/coverage/bug01439.phpt
new file mode 100644
index 0000000..8bdbb37
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01439.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Test for bug #1439: Code coverage does not cover is_object (in elseif)
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+
+xdebug_start_code_coverage();
+
+$value = new stdClass;
+
+if (!$value) {
+	echo "no!\n";
+} elseif (is_object($value)) {
+	echo "Is object!\n";
+}
+
+$cc = xdebug_get_code_coverage()[__FILE__];
+
+echo "line  9 is hit: ", $cc[9] == 1 ? 'yes' : 'no', "\n";
+?>
+--EXPECT--
+Is object!
+line  9 is hit: yes
diff --git a/xdebug-3.4.5/tests/coverage/bug01446.inc b/xdebug-3.4.5/tests/coverage/bug01446.inc
new file mode 100644
index 0000000..3eebced
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01446.inc
@@ -0,0 +1,22 @@
+<?php
+class Test
+{
+	private $test;
+
+	public function __construct()
+	{
+		$this->test = (object) [ 'bar' => 42 ];
+	}
+
+	public function doSomething()
+	{
+		if (isset($this->test->foo)) {
+			return 'foo';
+		} elseif (isset($this->test->bar)) {
+			return 'bar';
+		}
+
+		return '';
+	}
+}
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01446.phpt b/xdebug-3.4.5/tests/coverage/bug01446.phpt
new file mode 100644
index 0000000..1ea9c86
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01446.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #1446: Code Coverage misses elseif if it uses an isset with a property
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+xdebug_start_code_coverage( XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE );
+
+include dirname( __FILE__ ) . '/bug01446.inc';
+
+$o = new Test;
+$o->doSomething();
+
+$cc = xdebug_get_code_coverage();
+
+ksort( $cc );
+var_dump( array_slice( $cc, 0, 1 ) );
+?>
+--EXPECTF--
+array(1) {
+  ["%sbug01446.inc"]=>
+  array(%r(8|9|10)%r) {%A
+    [8]=>
+    int(1)
+    [9]=>
+    int(1)
+    [13]=>
+    int(1)
+    [14]=>
+    int(-1)
+    [15]=>
+    int(1)
+    [16]=>
+    int(1)
+    [19]=>
+    %a
+    [23]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug01486-001-noopcache.phpt b/xdebug-3.4.5/tests/coverage/bug01486-001-noopcache.phpt
new file mode 100644
index 0000000..1e3333a
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01486-001-noopcache.phpt
@@ -0,0 +1,198 @@
+--TEST--
+Test for bug #1486: Crash on ZEND_SWITCH_LONG / ZEND_SWITCH_STRING (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+$foo = [38, 1, 17, 23];
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK );
+include dirname( __FILE__ ) . '/bug01486-001.inc';
+$cc = xdebug_get_code_coverage();
+dump_branch_coverage($cc);
+xdebug_stop_code_coverage();
+?>
+--EXPECTF--
+foo 38
+foo 1
+foo 17
+foo 23
+{main}
+- branches
+  - 00; OP: 00-01; line: 02-02 HIT; out1: 02 HIT; out2: 368  X
+  - 02; OP: 02-02; line: 02-02 HIT; out1: 03 HIT; out2: 368 HIT
+  - 03; OP: 03-05; line: 02-03 HIT; out1: 87  X ; out2: 94  X ; out3: 101  X ; out4: 108  X ; out5: 115  X ; out6: 122  X ; out7: 129  X ; out8: 136  X ; out9: 143  X ; out10: 150  X ; out11: 157  X ; out12: 164  X ; out13: 171  X ; out14: 178  X ; out15: 185  X ; out16: 192  X ; out17: 199  X ; out18: 206  X ; out19: 213  X ; out20: 220  X ; out21: 227  X ; out22: 234  X ; out23: 241  X ; out24: 248  X ; out25: 255  X ; out26: 262  X ; out27: 269  X ; out28: 276  X ; out29: 283  X ; out30: 290  X ; out31: 297  X ; out32: 304  X ; out33: 311  X ; out34: 318  X ; out35: 325  X ; out36: 332  X ; out37: 339  X ; out38: 346  X ; out39: 353  X ; out40: 360  X ; out41: 367  X ; out42: 06 HIT
+  - 06; OP: 06-07; line: 04-04 HIT; out1: 08 HIT; out2: 87 HIT
+  - 08; OP: 08-09; line: 05-05 HIT; out1: 10 HIT; out2: 94  X
+  - 10; OP: 10-11; line: 06-06 HIT; out1: 12 HIT; out2: 101  X
+  - 12; OP: 12-13; line: 07-07 HIT; out1: 14 HIT; out2: 108  X
+  - 14; OP: 14-15; line: 08-08 HIT; out1: 16 HIT; out2: 115  X
+  - 16; OP: 16-17; line: 09-09 HIT; out1: 18 HIT; out2: 122  X
+  - 18; OP: 18-19; line: 10-10 HIT; out1: 20 HIT; out2: 129  X
+  - 20; OP: 20-21; line: 11-11 HIT; out1: 22 HIT; out2: 136  X
+  - 22; OP: 22-23; line: 12-12 HIT; out1: 24 HIT; out2: 143  X
+  - 24; OP: 24-25; line: 13-13 HIT; out1: 26 HIT; out2: 150  X
+  - 26; OP: 26-27; line: 14-14 HIT; out1: 28 HIT; out2: 157  X
+  - 28; OP: 28-29; line: 15-15 HIT; out1: 30 HIT; out2: 164  X
+  - 30; OP: 30-31; line: 16-16 HIT; out1: 32 HIT; out2: 171  X
+  - 32; OP: 32-33; line: 17-17 HIT; out1: 34 HIT; out2: 178  X
+  - 34; OP: 34-35; line: 18-18 HIT; out1: 36 HIT; out2: 185  X
+  - 36; OP: 36-37; line: 19-19 HIT; out1: 38 HIT; out2: 192  X
+  - 38; OP: 38-39; line: 20-20 HIT; out1: 40 HIT; out2: 199 HIT
+  - 40; OP: 40-41; line: 21-21 HIT; out1: 42 HIT; out2: 206  X
+  - 42; OP: 42-43; line: 22-22 HIT; out1: 44 HIT; out2: 213  X
+  - 44; OP: 44-45; line: 23-23 HIT; out1: 46 HIT; out2: 220  X
+  - 46; OP: 46-47; line: 24-24 HIT; out1: 48 HIT; out2: 227  X
+  - 48; OP: 48-49; line: 25-25 HIT; out1: 50 HIT; out2: 234  X
+  - 50; OP: 50-51; line: 26-26 HIT; out1: 52 HIT; out2: 241 HIT
+  - 52; OP: 52-53; line: 27-27 HIT; out1: 54 HIT; out2: 248  X
+  - 54; OP: 54-55; line: 28-28 HIT; out1: 56 HIT; out2: 255  X
+  - 56; OP: 56-57; line: 29-29 HIT; out1: 58 HIT; out2: 262  X
+  - 58; OP: 58-59; line: 30-30 HIT; out1: 60 HIT; out2: 269  X
+  - 60; OP: 60-61; line: 31-31 HIT; out1: 62 HIT; out2: 276  X
+  - 62; OP: 62-63; line: 32-32 HIT; out1: 64 HIT; out2: 283  X
+  - 64; OP: 64-65; line: 33-33 HIT; out1: 66 HIT; out2: 290  X
+  - 66; OP: 66-67; line: 34-34 HIT; out1: 68 HIT; out2: 297  X
+  - 68; OP: 68-69; line: 35-35 HIT; out1: 70 HIT; out2: 304  X
+  - 70; OP: 70-71; line: 36-36 HIT; out1: 72 HIT; out2: 311  X
+  - 72; OP: 72-73; line: 37-37 HIT; out1: 74 HIT; out2: 318  X
+  - 74; OP: 74-75; line: 38-38 HIT; out1: 76 HIT; out2: 325  X
+  - 76; OP: 76-77; line: 39-39 HIT; out1: 78 HIT; out2: 332  X
+  - 78; OP: 78-79; line: 40-40 HIT; out1: 80 HIT; out2: 339  X
+  - 80; OP: 80-81; line: 41-41 HIT; out1: 82  X ; out2: 346 HIT
+  - 82; OP: 82-83; line: 42-42  X ; out1: 84  X ; out2: 353  X
+  - 84; OP: 84-85; line: 43-43  X ; out1: 86  X ; out2: 360  X
+  - 86; OP: 86-86; line: 43-43  X ; out1: 367  X
+  - 87; OP: 87-93; line: 04-04 HIT; out1: 367 HIT
+  - 94; OP: 94-100; line: 05-05  X ; out1: 367  X
+  - 101; OP: 101-107; line: 06-06  X ; out1: 367  X
+  - 108; OP: 108-114; line: 07-07  X ; out1: 367  X
+  - 115; OP: 115-121; line: 08-08  X ; out1: 367  X
+  - 122; OP: 122-128; line: 09-09  X ; out1: 367  X
+  - 129; OP: 129-135; line: 10-10  X ; out1: 367  X
+  - 136; OP: 136-142; line: 11-11  X ; out1: 367  X
+  - 143; OP: 143-149; line: 12-12  X ; out1: 367  X
+  - 150; OP: 150-156; line: 13-13  X ; out1: 367  X
+  - 157; OP: 157-163; line: 14-14  X ; out1: 367  X
+  - 164; OP: 164-170; line: 15-15  X ; out1: 367  X
+  - 171; OP: 171-177; line: 16-16  X ; out1: 367  X
+  - 178; OP: 178-184; line: 17-17  X ; out1: 367  X
+  - 185; OP: 185-191; line: 18-18  X ; out1: 367  X
+  - 192; OP: 192-198; line: 19-19  X ; out1: 367  X
+  - 199; OP: 199-205; line: 20-20 HIT; out1: 367 HIT
+  - 206; OP: 206-212; line: 21-21  X ; out1: 367  X
+  - 213; OP: 213-219; line: 22-22  X ; out1: 367  X
+  - 220; OP: 220-226; line: 23-23  X ; out1: 367  X
+  - 227; OP: 227-233; line: 24-24  X ; out1: 367  X
+  - 234; OP: 234-240; line: 25-25  X ; out1: 367  X
+  - 241; OP: 241-247; line: 26-26 HIT; out1: 367 HIT
+  - 248; OP: 248-254; line: 27-27  X ; out1: 367  X
+  - 255; OP: 255-261; line: 28-28  X ; out1: 367  X
+  - 262; OP: 262-268; line: 29-29  X ; out1: 367  X
+  - 269; OP: 269-275; line: 30-30  X ; out1: 367  X
+  - 276; OP: 276-282; line: 31-31  X ; out1: 367  X
+  - 283; OP: 283-289; line: 32-32  X ; out1: 367  X
+  - 290; OP: 290-296; line: 33-33  X ; out1: 367  X
+  - 297; OP: 297-303; line: 34-34  X ; out1: 367  X
+  - 304; OP: 304-310; line: 35-35  X ; out1: 367  X
+  - 311; OP: 311-317; line: 36-36  X ; out1: 367  X
+  - 318; OP: 318-324; line: 37-37  X ; out1: 367  X
+  - 325; OP: 325-331; line: 38-38  X ; out1: 367  X
+  - 332; OP: 332-338; line: 39-39  X ; out1: 367  X
+  - 339; OP: 339-345; line: 40-40  X ; out1: 367  X
+  - 346; OP: 346-352; line: 41-41 HIT; out1: 367 HIT
+  - 353; OP: 353-359; line: 42-42  X ; out1: 367  X
+  - 360; OP: 360-366; line: 43-43  X ; out1: 367  X
+  - 367; OP: 367-367; line: 02-02 HIT; out1: 02 HIT
+  - 368; OP: 368-369; line: 02-46 HIT; out1: EX  X
+- paths
+  - 0 2 3 87 367 2 368:  X
+  - 0 2 3 94 367 2 368:  X
+  - 0 2 3 101 367 2 368:  X
+  - 0 2 3 108 367 2 368:  X
+  - 0 2 3 115 367 2 368:  X
+  - 0 2 3 122 367 2 368:  X
+  - 0 2 3 129 367 2 368:  X
+  - 0 2 3 136 367 2 368:  X
+  - 0 2 3 143 367 2 368:  X
+  - 0 2 3 150 367 2 368:  X
+  - 0 2 3 157 367 2 368:  X
+  - 0 2 3 164 367 2 368:  X
+  - 0 2 3 171 367 2 368:  X
+  - 0 2 3 178 367 2 368:  X
+  - 0 2 3 185 367 2 368:  X
+  - 0 2 3 192 367 2 368:  X
+  - 0 2 3 199 367 2 368:  X
+  - 0 2 3 206 367 2 368:  X
+  - 0 2 3 213 367 2 368:  X
+  - 0 2 3 220 367 2 368:  X
+  - 0 2 3 227 367 2 368:  X
+  - 0 2 3 234 367 2 368:  X
+  - 0 2 3 241 367 2 368:  X
+  - 0 2 3 248 367 2 368:  X
+  - 0 2 3 255 367 2 368:  X
+  - 0 2 3 262 367 2 368:  X
+  - 0 2 3 269 367 2 368:  X
+  - 0 2 3 276 367 2 368:  X
+  - 0 2 3 283 367 2 368:  X
+  - 0 2 3 290 367 2 368:  X
+  - 0 2 3 297 367 2 368:  X
+  - 0 2 3 304 367 2 368:  X
+  - 0 2 3 311 367 2 368:  X
+  - 0 2 3 318 367 2 368:  X
+  - 0 2 3 325 367 2 368:  X
+  - 0 2 3 332 367 2 368:  X
+  - 0 2 3 339 367 2 368:  X
+  - 0 2 3 346 367 2 368:  X
+  - 0 2 3 353 367 2 368:  X
+  - 0 2 3 360 367 2 368:  X
+  - 0 2 3 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 360 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 353 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 346 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 339 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 332 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 325 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 318 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 311 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 304 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 297 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 290 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 283 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 276 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 269 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 262 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 255 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 248 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 241 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 234 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 227 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 220 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 213 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 206 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 199 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 192 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 185 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 178 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 171 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 164 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 157 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 150 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 143 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 136 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 129 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 122 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 115 367 2 368:  X
+  - 0 2 3 6 8 10 12 108 367 2 368:  X
+  - 0 2 3 6 8 10 101 367 2 368:  X
+  - 0 2 3 6 8 94 367 2 368:  X
+  - 0 2 3 6 87 367 2 368:  X
+  - 0 2 368:  X
+  - 0 368:  X
diff --git a/xdebug-3.4.5/tests/coverage/bug01486-001-php81-opcache.phpt b/xdebug-3.4.5/tests/coverage/bug01486-001-php81-opcache.phpt
new file mode 100644
index 0000000..c8483d1
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01486-001-php81-opcache.phpt
@@ -0,0 +1,197 @@
+--TEST--
+Test for bug #1486: Crash on ZEND_SWITCH_LONG / ZEND_SWITCH_STRING (< PHP 8.2, opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.2; opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+$foo = [38, 1, 17, 23];
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK );
+include dirname( __FILE__ ) . '/bug01486-001.inc';
+$cc = xdebug_get_code_coverage();
+dump_branch_coverage($cc);
+xdebug_stop_code_coverage();
+?>
+--EXPECTF--
+foo 38
+foo 1
+foo 17
+foo 23
+{main}
+- branches
+  - 00; OP: 00-01; line: 02-02 HIT; out1: 02 HIT; out2: 367  X
+  - 02; OP: 02-02; line: 02-02 HIT; out1: 03 HIT; out2: 367 HIT
+  - 03; OP: 03-05; line: 02-03 HIT; out1: 86  X ; out2: 93  X ; out3: 100  X ; out4: 107  X ; out5: 114  X ; out6: 121  X ; out7: 128  X ; out8: 135  X ; out9: 142  X ; out10: 149  X ; out11: 156  X ; out12: 163  X ; out13: 170  X ; out14: 177  X ; out15: 184  X ; out16: 191  X ; out17: 198  X ; out18: 205  X ; out19: 212  X ; out20: 219  X ; out21: 226  X ; out22: 233  X ; out23: 240  X ; out24: 247  X ; out25: 254  X ; out26: 261  X ; out27: 268  X ; out28: 275  X ; out29: 282  X ; out30: 289  X ; out31: 296  X ; out32: 303  X ; out33: 310  X ; out34: 317  X ; out35: 324  X ; out36: 331  X ; out37: 338  X ; out38: 345  X ; out39: 352  X ; out40: 359  X ; out41: 366  X ; out42: 06 HIT
+  - 06; OP: 06-07; line: 04-04 HIT; out1: 08 HIT; out2: 86 HIT
+  - 08; OP: 08-09; line: 05-05 HIT; out1: 10 HIT; out2: 93  X
+  - 10; OP: 10-11; line: 06-06 HIT; out1: 12 HIT; out2: 100  X
+  - 12; OP: 12-13; line: 07-07 HIT; out1: 14 HIT; out2: 107  X
+  - 14; OP: 14-15; line: 08-08 HIT; out1: 16 HIT; out2: 114  X
+  - 16; OP: 16-17; line: 09-09 HIT; out1: 18 HIT; out2: 121  X
+  - 18; OP: 18-19; line: 10-10 HIT; out1: 20 HIT; out2: 128  X
+  - 20; OP: 20-21; line: 11-11 HIT; out1: 22 HIT; out2: 135  X
+  - 22; OP: 22-23; line: 12-12 HIT; out1: 24 HIT; out2: 142  X
+  - 24; OP: 24-25; line: 13-13 HIT; out1: 26 HIT; out2: 149  X
+  - 26; OP: 26-27; line: 14-14 HIT; out1: 28 HIT; out2: 156  X
+  - 28; OP: 28-29; line: 15-15 HIT; out1: 30 HIT; out2: 163  X
+  - 30; OP: 30-31; line: 16-16 HIT; out1: 32 HIT; out2: 170  X
+  - 32; OP: 32-33; line: 17-17 HIT; out1: 34 HIT; out2: 177  X
+  - 34; OP: 34-35; line: 18-18 HIT; out1: 36 HIT; out2: 184  X
+  - 36; OP: 36-37; line: 19-19 HIT; out1: 38 HIT; out2: 191  X
+  - 38; OP: 38-39; line: 20-20 HIT; out1: 40 HIT; out2: 198 HIT
+  - 40; OP: 40-41; line: 21-21 HIT; out1: 42 HIT; out2: 205  X
+  - 42; OP: 42-43; line: 22-22 HIT; out1: 44 HIT; out2: 212  X
+  - 44; OP: 44-45; line: 23-23 HIT; out1: 46 HIT; out2: 219  X
+  - 46; OP: 46-47; line: 24-24 HIT; out1: 48 HIT; out2: 226  X
+  - 48; OP: 48-49; line: 25-25 HIT; out1: 50 HIT; out2: 233  X
+  - 50; OP: 50-51; line: 26-26 HIT; out1: 52 HIT; out2: 240 HIT
+  - 52; OP: 52-53; line: 27-27 HIT; out1: 54 HIT; out2: 247  X
+  - 54; OP: 54-55; line: 28-28 HIT; out1: 56 HIT; out2: 254  X
+  - 56; OP: 56-57; line: 29-29 HIT; out1: 58 HIT; out2: 261  X
+  - 58; OP: 58-59; line: 30-30 HIT; out1: 60 HIT; out2: 268  X
+  - 60; OP: 60-61; line: 31-31 HIT; out1: 62 HIT; out2: 275  X
+  - 62; OP: 62-63; line: 32-32 HIT; out1: 64 HIT; out2: 282  X
+  - 64; OP: 64-65; line: 33-33 HIT; out1: 66 HIT; out2: 289  X
+  - 66; OP: 66-67; line: 34-34 HIT; out1: 68 HIT; out2: 296  X
+  - 68; OP: 68-69; line: 35-35 HIT; out1: 70 HIT; out2: 303  X
+  - 70; OP: 70-71; line: 36-36 HIT; out1: 72 HIT; out2: 310  X
+  - 72; OP: 72-73; line: 37-37 HIT; out1: 74 HIT; out2: 317  X
+  - 74; OP: 74-75; line: 38-38 HIT; out1: 76 HIT; out2: 324  X
+  - 76; OP: 76-77; line: 39-39 HIT; out1: 78 HIT; out2: 331  X
+  - 78; OP: 78-79; line: 40-40 HIT; out1: 80 HIT; out2: 338  X
+  - 80; OP: 80-81; line: 41-41 HIT; out1: 82  X ; out2: 345 HIT
+  - 82; OP: 82-83; line: 42-42  X ; out1: 84  X ; out2: 352  X
+  - 84; OP: 84-85; line: 43-43  X ; out1: 02  X ; out2: 359  X
+  - 86; OP: 86-92; line: 04-04 HIT; out1: 02 HIT
+  - 93; OP: 93-99; line: 05-05  X ; out1: 02  X
+  - 100; OP: 100-106; line: 06-06  X ; out1: 02  X
+  - 107; OP: 107-113; line: 07-07  X ; out1: 02  X
+  - 114; OP: 114-120; line: 08-08  X ; out1: 02  X
+  - 121; OP: 121-127; line: 09-09  X ; out1: 02  X
+  - 128; OP: 128-134; line: 10-10  X ; out1: 02  X
+  - 135; OP: 135-141; line: 11-11  X ; out1: 02  X
+  - 142; OP: 142-148; line: 12-12  X ; out1: 02  X
+  - 149; OP: 149-155; line: 13-13  X ; out1: 02  X
+  - 156; OP: 156-162; line: 14-14  X ; out1: 02  X
+  - 163; OP: 163-169; line: 15-15  X ; out1: 02  X
+  - 170; OP: 170-176; line: 16-16  X ; out1: 02  X
+  - 177; OP: 177-183; line: 17-17  X ; out1: 02  X
+  - 184; OP: 184-190; line: 18-18  X ; out1: 02  X
+  - 191; OP: 191-197; line: 19-19  X ; out1: 02  X
+  - 198; OP: 198-204; line: 20-20 HIT; out1: 02 HIT
+  - 205; OP: 205-211; line: 21-21  X ; out1: 02  X
+  - 212; OP: 212-218; line: 22-22  X ; out1: 02  X
+  - 219; OP: 219-225; line: 23-23  X ; out1: 02  X
+  - 226; OP: 226-232; line: 24-24  X ; out1: 02  X
+  - 233; OP: 233-239; line: 25-25  X ; out1: 02  X
+  - 240; OP: 240-246; line: 26-26 HIT; out1: 02 HIT
+  - 247; OP: 247-253; line: 27-27  X ; out1: 02  X
+  - 254; OP: 254-260; line: 28-28  X ; out1: 02  X
+  - 261; OP: 261-267; line: 29-29  X ; out1: 02  X
+  - 268; OP: 268-274; line: 30-30  X ; out1: 02  X
+  - 275; OP: 275-281; line: 31-31  X ; out1: 02  X
+  - 282; OP: 282-288; line: 32-32  X ; out1: 02  X
+  - 289; OP: 289-295; line: 33-33  X ; out1: 02  X
+  - 296; OP: 296-302; line: 34-34  X ; out1: 02  X
+  - 303; OP: 303-309; line: 35-35  X ; out1: 02  X
+  - 310; OP: 310-316; line: 36-36  X ; out1: 02  X
+  - 317; OP: 317-323; line: 37-37  X ; out1: 02  X
+  - 324; OP: 324-330; line: 38-38  X ; out1: 02  X
+  - 331; OP: 331-337; line: 39-39  X ; out1: 02  X
+  - 338; OP: 338-344; line: 40-40  X ; out1: 02  X
+  - 345; OP: 345-351; line: 41-41 HIT; out1: 02 HIT
+  - 352; OP: 352-358; line: 42-42  X ; out1: 02  X
+  - 359; OP: 359-365; line: 43-43  X ; out1: 02  X
+  - 366; OP: 366-366; line: 02-02  X ; out1: 02  X
+  - 367; OP: 367-368; line: 02-46 HIT; out1: EX  X
+- paths
+  - 0 2 3 86 2 367:  X
+  - 0 2 3 93 2 367:  X
+  - 0 2 3 100 2 367:  X
+  - 0 2 3 107 2 367:  X
+  - 0 2 3 114 2 367:  X
+  - 0 2 3 121 2 367:  X
+  - 0 2 3 128 2 367:  X
+  - 0 2 3 135 2 367:  X
+  - 0 2 3 142 2 367:  X
+  - 0 2 3 149 2 367:  X
+  - 0 2 3 156 2 367:  X
+  - 0 2 3 163 2 367:  X
+  - 0 2 3 170 2 367:  X
+  - 0 2 3 177 2 367:  X
+  - 0 2 3 184 2 367:  X
+  - 0 2 3 191 2 367:  X
+  - 0 2 3 198 2 367:  X
+  - 0 2 3 205 2 367:  X
+  - 0 2 3 212 2 367:  X
+  - 0 2 3 219 2 367:  X
+  - 0 2 3 226 2 367:  X
+  - 0 2 3 233 2 367:  X
+  - 0 2 3 240 2 367:  X
+  - 0 2 3 247 2 367:  X
+  - 0 2 3 254 2 367:  X
+  - 0 2 3 261 2 367:  X
+  - 0 2 3 268 2 367:  X
+  - 0 2 3 275 2 367:  X
+  - 0 2 3 282 2 367:  X
+  - 0 2 3 289 2 367:  X
+  - 0 2 3 296 2 367:  X
+  - 0 2 3 303 2 367:  X
+  - 0 2 3 310 2 367:  X
+  - 0 2 3 317 2 367:  X
+  - 0 2 3 324 2 367:  X
+  - 0 2 3 331 2 367:  X
+  - 0 2 3 338 2 367:  X
+  - 0 2 3 345 2 367:  X
+  - 0 2 3 352 2 367:  X
+  - 0 2 3 359 2 367:  X
+  - 0 2 3 366 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 359 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 352 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 345 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 338 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 331 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 324 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 317 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 310 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 303 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 296 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 289 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 282 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 275 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 268 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 261 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 254 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 247 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 240 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 233 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 226 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 219 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 212 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 205 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 198 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 191 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 184 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 177 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 170 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 163 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 156 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 149 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 142 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 135 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 18 128 2 367:  X
+  - 0 2 3 6 8 10 12 14 16 121 2 367:  X
+  - 0 2 3 6 8 10 12 14 114 2 367:  X
+  - 0 2 3 6 8 10 12 107 2 367:  X
+  - 0 2 3 6 8 10 100 2 367:  X
+  - 0 2 3 6 8 93 2 367:  X
+  - 0 2 3 6 86 2 367:  X
+  - 0 2 367:  X
+  - 0 367:  X
diff --git a/xdebug-3.4.5/tests/coverage/bug01486-001-php82-opcache.phpt b/xdebug-3.4.5/tests/coverage/bug01486-001-php82-opcache.phpt
new file mode 100644
index 0000000..3996e45
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01486-001-php82-opcache.phpt
@@ -0,0 +1,198 @@
+--TEST--
+Test for bug #1486: Crash on ZEND_SWITCH_LONG / ZEND_SWITCH_STRING (>= PHP 8.2, opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2; opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+$foo = [38, 1, 17, 23];
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK );
+include dirname( __FILE__ ) . '/bug01486-001.inc';
+$cc = xdebug_get_code_coverage();
+dump_branch_coverage($cc);
+xdebug_stop_code_coverage();
+?>
+--EXPECTF--
+foo 38
+foo 1
+foo 17
+foo 23
+{main}
+- branches
+  - 00; OP: 00-01; line: 02-02 HIT; out1: 02 HIT; out2: 368  X
+  - 02; OP: 02-02; line: 02-02 HIT; out1: 03 HIT; out2: 368 HIT
+  - 03; OP: 03-05; line: 02-03 HIT; out1: 87  X ; out2: 94  X ; out3: 101  X ; out4: 108  X ; out5: 115  X ; out6: 122  X ; out7: 129  X ; out8: 136  X ; out9: 143  X ; out10: 150  X ; out11: 157  X ; out12: 164  X ; out13: 171  X ; out14: 178  X ; out15: 185  X ; out16: 192  X ; out17: 199  X ; out18: 206  X ; out19: 213  X ; out20: 220  X ; out21: 227  X ; out22: 234  X ; out23: 241  X ; out24: 248  X ; out25: 255  X ; out26: 262  X ; out27: 269  X ; out28: 276  X ; out29: 283  X ; out30: 290  X ; out31: 297  X ; out32: 304  X ; out33: 311  X ; out34: 318  X ; out35: 325  X ; out36: 332  X ; out37: 339  X ; out38: 346  X ; out39: 353  X ; out40: 360  X ; out41: 367  X ; out42: 06 HIT
+  - 06; OP: 06-07; line: 04-04 HIT; out1: 08 HIT; out2: 87 HIT
+  - 08; OP: 08-09; line: 05-05 HIT; out1: 10 HIT; out2: 94  X
+  - 10; OP: 10-11; line: 06-06 HIT; out1: 12 HIT; out2: 101  X
+  - 12; OP: 12-13; line: 07-07 HIT; out1: 14 HIT; out2: 108  X
+  - 14; OP: 14-15; line: 08-08 HIT; out1: 16 HIT; out2: 115  X
+  - 16; OP: 16-17; line: 09-09 HIT; out1: 18 HIT; out2: 122  X
+  - 18; OP: 18-19; line: 10-10 HIT; out1: 20 HIT; out2: 129  X
+  - 20; OP: 20-21; line: 11-11 HIT; out1: 22 HIT; out2: 136  X
+  - 22; OP: 22-23; line: 12-12 HIT; out1: 24 HIT; out2: 143  X
+  - 24; OP: 24-25; line: 13-13 HIT; out1: 26 HIT; out2: 150  X
+  - 26; OP: 26-27; line: 14-14 HIT; out1: 28 HIT; out2: 157  X
+  - 28; OP: 28-29; line: 15-15 HIT; out1: 30 HIT; out2: 164  X
+  - 30; OP: 30-31; line: 16-16 HIT; out1: 32 HIT; out2: 171  X
+  - 32; OP: 32-33; line: 17-17 HIT; out1: 34 HIT; out2: 178  X
+  - 34; OP: 34-35; line: 18-18 HIT; out1: 36 HIT; out2: 185  X
+  - 36; OP: 36-37; line: 19-19 HIT; out1: 38 HIT; out2: 192  X
+  - 38; OP: 38-39; line: 20-20 HIT; out1: 40 HIT; out2: 199 HIT
+  - 40; OP: 40-41; line: 21-21 HIT; out1: 42 HIT; out2: 206  X
+  - 42; OP: 42-43; line: 22-22 HIT; out1: 44 HIT; out2: 213  X
+  - 44; OP: 44-45; line: 23-23 HIT; out1: 46 HIT; out2: 220  X
+  - 46; OP: 46-47; line: 24-24 HIT; out1: 48 HIT; out2: 227  X
+  - 48; OP: 48-49; line: 25-25 HIT; out1: 50 HIT; out2: 234  X
+  - 50; OP: 50-51; line: 26-26 HIT; out1: 52 HIT; out2: 241 HIT
+  - 52; OP: 52-53; line: 27-27 HIT; out1: 54 HIT; out2: 248  X
+  - 54; OP: 54-55; line: 28-28 HIT; out1: 56 HIT; out2: 255  X
+  - 56; OP: 56-57; line: 29-29 HIT; out1: 58 HIT; out2: 262  X
+  - 58; OP: 58-59; line: 30-30 HIT; out1: 60 HIT; out2: 269  X
+  - 60; OP: 60-61; line: 31-31 HIT; out1: 62 HIT; out2: 276  X
+  - 62; OP: 62-63; line: 32-32 HIT; out1: 64 HIT; out2: 283  X
+  - 64; OP: 64-65; line: 33-33 HIT; out1: 66 HIT; out2: 290  X
+  - 66; OP: 66-67; line: 34-34 HIT; out1: 68 HIT; out2: 297  X
+  - 68; OP: 68-69; line: 35-35 HIT; out1: 70 HIT; out2: 304  X
+  - 70; OP: 70-71; line: 36-36 HIT; out1: 72 HIT; out2: 311  X
+  - 72; OP: 72-73; line: 37-37 HIT; out1: 74 HIT; out2: 318  X
+  - 74; OP: 74-75; line: 38-38 HIT; out1: 76 HIT; out2: 325  X
+  - 76; OP: 76-77; line: 39-39 HIT; out1: 78 HIT; out2: 332  X
+  - 78; OP: 78-79; line: 40-40 HIT; out1: 80 HIT; out2: 339  X
+  - 80; OP: 80-81; line: 41-41 HIT; out1: 82  X ; out2: 346 HIT
+  - 82; OP: 82-83; line: 42-42  X ; out1: 84  X ; out2: 353  X
+  - 84; OP: 84-85; line: 43-43  X ; out1: 86  X ; out2: 360  X
+  - 86; OP: 86-86; line: 43-43  X ; out1: 02  X
+  - 87; OP: 87-93; line: 04-04 HIT; out1: 02 HIT
+  - 94; OP: 94-100; line: 05-05  X ; out1: 02  X
+  - 101; OP: 101-107; line: 06-06  X ; out1: 02  X
+  - 108; OP: 108-114; line: 07-07  X ; out1: 02  X
+  - 115; OP: 115-121; line: 08-08  X ; out1: 02  X
+  - 122; OP: 122-128; line: 09-09  X ; out1: 02  X
+  - 129; OP: 129-135; line: 10-10  X ; out1: 02  X
+  - 136; OP: 136-142; line: 11-11  X ; out1: 02  X
+  - 143; OP: 143-149; line: 12-12  X ; out1: 02  X
+  - 150; OP: 150-156; line: 13-13  X ; out1: 02  X
+  - 157; OP: 157-163; line: 14-14  X ; out1: 02  X
+  - 164; OP: 164-170; line: 15-15  X ; out1: 02  X
+  - 171; OP: 171-177; line: 16-16  X ; out1: 02  X
+  - 178; OP: 178-184; line: 17-17  X ; out1: 02  X
+  - 185; OP: 185-191; line: 18-18  X ; out1: 02  X
+  - 192; OP: 192-198; line: 19-19  X ; out1: 02  X
+  - 199; OP: 199-205; line: 20-20 HIT; out1: 02 HIT
+  - 206; OP: 206-212; line: 21-21  X ; out1: 02  X
+  - 213; OP: 213-219; line: 22-22  X ; out1: 02  X
+  - 220; OP: 220-226; line: 23-23  X ; out1: 02  X
+  - 227; OP: 227-233; line: 24-24  X ; out1: 02  X
+  - 234; OP: 234-240; line: 25-25  X ; out1: 02  X
+  - 241; OP: 241-247; line: 26-26 HIT; out1: 02 HIT
+  - 248; OP: 248-254; line: 27-27  X ; out1: 02  X
+  - 255; OP: 255-261; line: 28-28  X ; out1: 02  X
+  - 262; OP: 262-268; line: 29-29  X ; out1: 02  X
+  - 269; OP: 269-275; line: 30-30  X ; out1: 02  X
+  - 276; OP: 276-282; line: 31-31  X ; out1: 02  X
+  - 283; OP: 283-289; line: 32-32  X ; out1: 02  X
+  - 290; OP: 290-296; line: 33-33  X ; out1: 02  X
+  - 297; OP: 297-303; line: 34-34  X ; out1: 02  X
+  - 304; OP: 304-310; line: 35-35  X ; out1: 02  X
+  - 311; OP: 311-317; line: 36-36  X ; out1: 02  X
+  - 318; OP: 318-324; line: 37-37  X ; out1: 02  X
+  - 325; OP: 325-331; line: 38-38  X ; out1: 02  X
+  - 332; OP: 332-338; line: 39-39  X ; out1: 02  X
+  - 339; OP: 339-345; line: 40-40  X ; out1: 02  X
+  - 346; OP: 346-352; line: 41-41 HIT; out1: 02 HIT
+  - 353; OP: 353-359; line: 42-42  X ; out1: 02  X
+  - 360; OP: 360-366; line: 43-43  X ; out1: 02  X
+  - 367; OP: 367-367; line: 02-02  X ; out1: 02  X
+  - 368; OP: 368-369; line: 02-46 HIT; out1: EX  X
+- paths
+  - 0 2 3 87 2 368:  X
+  - 0 2 3 94 2 368:  X
+  - 0 2 3 101 2 368:  X
+  - 0 2 3 108 2 368:  X
+  - 0 2 3 115 2 368:  X
+  - 0 2 3 122 2 368:  X
+  - 0 2 3 129 2 368:  X
+  - 0 2 3 136 2 368:  X
+  - 0 2 3 143 2 368:  X
+  - 0 2 3 150 2 368:  X
+  - 0 2 3 157 2 368:  X
+  - 0 2 3 164 2 368:  X
+  - 0 2 3 171 2 368:  X
+  - 0 2 3 178 2 368:  X
+  - 0 2 3 185 2 368:  X
+  - 0 2 3 192 2 368:  X
+  - 0 2 3 199 2 368:  X
+  - 0 2 3 206 2 368:  X
+  - 0 2 3 213 2 368:  X
+  - 0 2 3 220 2 368:  X
+  - 0 2 3 227 2 368:  X
+  - 0 2 3 234 2 368:  X
+  - 0 2 3 241 2 368:  X
+  - 0 2 3 248 2 368:  X
+  - 0 2 3 255 2 368:  X
+  - 0 2 3 262 2 368:  X
+  - 0 2 3 269 2 368:  X
+  - 0 2 3 276 2 368:  X
+  - 0 2 3 283 2 368:  X
+  - 0 2 3 290 2 368:  X
+  - 0 2 3 297 2 368:  X
+  - 0 2 3 304 2 368:  X
+  - 0 2 3 311 2 368:  X
+  - 0 2 3 318 2 368:  X
+  - 0 2 3 325 2 368:  X
+  - 0 2 3 332 2 368:  X
+  - 0 2 3 339 2 368:  X
+  - 0 2 3 346 2 368:  X
+  - 0 2 3 353 2 368:  X
+  - 0 2 3 360 2 368:  X
+  - 0 2 3 367 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 360 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 353 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 346 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 339 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 332 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 325 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 318 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 311 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 304 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 297 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 290 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 283 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 276 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 269 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 262 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 255 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 248 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 241 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 234 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 227 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 220 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 213 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 206 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 199 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 192 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 185 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 32 178 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30 171 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 164 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 26 157 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 24 150 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 22 143 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 20 136 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 18 129 2 368:  X
+  - 0 2 3 6 8 10 12 14 16 122 2 368:  X
+  - 0 2 3 6 8 10 12 14 115 2 368:  X
+  - 0 2 3 6 8 10 12 108 2 368:  X
+  - 0 2 3 6 8 10 101 2 368:  X
+  - 0 2 3 6 8 94 2 368:  X
+  - 0 2 3 6 87 2 368:  X
+  - 0 2 368:  X
+  - 0 368:  X
diff --git a/xdebug-3.4.5/tests/coverage/bug01486-001.inc b/xdebug-3.4.5/tests/coverage/bug01486-001.inc
new file mode 100644
index 0000000..343e80a
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01486-001.inc
@@ -0,0 +1,45 @@
+<?php
+foreach ($foo as $k => $v) {
+    switch ($v) {
+		case 1: echo "foo {$v}\n"; break;
+		case 2: echo "foo {$v}\n"; break;
+		case 3: echo "foo {$v}\n"; break;
+		case 4: echo "foo {$v}\n"; break;
+		case 5: echo "foo {$v}\n"; break;
+		case 6: echo "foo {$v}\n"; break;
+		case 7: echo "foo {$v}\n"; break;
+		case 8: echo "foo {$v}\n"; break;
+		case 9: echo "foo {$v}\n"; break;
+		case 10: echo "foo {$v}\n"; break;
+		case 11: echo "foo {$v}\n"; break;
+		case 12: echo "foo {$v}\n"; break;
+		case 13: echo "foo {$v}\n"; break;
+		case 14: echo "foo {$v}\n"; break;
+		case 15: echo "foo {$v}\n"; break;
+		case 16: echo "foo {$v}\n"; break;
+		case 17: echo "foo {$v}\n"; break;
+		case 18: echo "foo {$v}\n"; break;
+		case 19: echo "foo {$v}\n"; break;
+		case 20: echo "foo {$v}\n"; break;
+		case 21: echo "foo {$v}\n"; break;
+		case 22: echo "foo {$v}\n"; break;
+		case 23: echo "foo {$v}\n"; break;
+		case 24: echo "foo {$v}\n"; break;
+		case 25: echo "foo {$v}\n"; break;
+		case 26: echo "foo {$v}\n"; break;
+		case 27: echo "foo {$v}\n"; break;
+		case 28: echo "foo {$v}\n"; break;
+		case 29: echo "foo {$v}\n"; break;
+		case 30: echo "foo {$v}\n"; break;
+		case 31: echo "foo {$v}\n"; break;
+		case 32: echo "foo {$v}\n"; break;
+		case 33: echo "foo {$v}\n"; break;
+		case 34: echo "foo {$v}\n"; break;
+		case 35: echo "foo {$v}\n"; break;
+		case 36: echo "foo {$v}\n"; break;
+		case 37: echo "foo {$v}\n"; break;
+		case 38: echo "foo {$v}\n"; break;
+		case 39: echo "foo {$v}\n"; break;
+		case 40: echo "foo {$v}\n"; break;
+    }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug01486-002-noopcache.phpt b/xdebug-3.4.5/tests/coverage/bug01486-002-noopcache.phpt
new file mode 100644
index 0000000..986c0ef
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01486-002-noopcache.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #1486: Crash on ZEND_SWITCH_LONG / ZEND_SWITCH_STRING (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+$foo = [3, 1];
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK );
+include dirname( __FILE__ ) . '/bug01486-002.inc';
+$cc = xdebug_get_code_coverage();
+dump_branch_coverage($cc);
+xdebug_stop_code_coverage();
+?>
+--EXPECTF--
+foo 3
+{main}
+- branches
+  - 00; OP: 00-03; line: 02-03 HIT; out1: 15  X ; out2: 22  X ; out3: 29  X ; out4: 36  X ; out5: 43  X ; out6: 50  X ; out7: 04 HIT
+  - 04; OP: 04-05; line: 04-04 HIT; out1: 06 HIT; out2: 15  X
+  - 06; OP: 06-07; line: 05-05 HIT; out1: 08 HIT; out2: 22  X
+  - 08; OP: 08-09; line: 06-06 HIT; out1: 10  X ; out2: 29 HIT
+  - 10; OP: 10-11; line: 07-07  X ; out1: 12  X ; out2: 36  X
+  - 12; OP: 12-13; line: 08-08  X ; out1: 14  X ; out2: 43  X
+  - 14; OP: 14-14; line: 08-08  X ; out1: 50  X
+  - 15; OP: 15-21; line: 04-04  X ; out1: 50  X
+  - 22; OP: 22-28; line: 05-05  X ; out1: 50  X
+  - 29; OP: 29-35; line: 06-06 HIT; out1: 50 HIT
+  - 36; OP: 36-42; line: 07-07  X ; out1: 50  X
+  - 43; OP: 43-49; line: 08-08  X ; out1: 50  X
+  - 50; OP: 50-50; line: 10-10 HIT; out1: EX  X
+- paths
+  - 0 15 50:  X
+  - 0 22 50:  X
+  - 0 29 50:  X
+  - 0 36 50:  X
+  - 0 43 50:  X
+  - 0 50:  X
+  - 0 4 6 8 10 12 14 50:  X
+  - 0 4 6 8 10 12 43 50:  X
+  - 0 4 6 8 10 36 50:  X
+  - 0 4 6 8 29 50: HIT
+  - 0 4 6 22 50:  X
+  - 0 4 15 50:  X
diff --git a/xdebug-3.4.5/tests/coverage/bug01486-002.inc b/xdebug-3.4.5/tests/coverage/bug01486-002.inc
new file mode 100644
index 0000000..3f6df0b
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01486-002.inc
@@ -0,0 +1,9 @@
+<?php
+$v = 3;
+switch ($v) {
+	case 1: echo "foo {$v}\n"; break;
+	case 2: echo "foo {$v}\n"; break;
+	case 3: echo "foo {$v}\n"; break;
+	case 4: echo "foo {$v}\n"; break;
+	case 5: echo "foo {$v}\n"; break;
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug01502.inc b/xdebug-3.4.5/tests/coverage/bug01502.inc
new file mode 100644
index 0000000..b687c2d
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01502.inc
@@ -0,0 +1,22 @@
+<?php
+
+
+
+class Foo
+{
+    public function sort($array)
+    {
+        usort(
+            $array,
+            function ($x, $y) { return 1; }
+        );
+
+        \usort(
+            $array,
+            function ($x, $y) { return 1; }
+        );
+
+        return $array;
+    }
+}
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01502.phpt b/xdebug-3.4.5/tests/coverage/bug01502.phpt
new file mode 100644
index 0000000..c51983a
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01502.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test for bug #1502: SEND_REF lines are not marked as covered
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+include 'bug01502.inc';
+
+$f = new Foo;
+
+$f->sort( [ 5, 2, 5 ] );
+
+$cc = xdebug_get_code_coverage();
+ksort($cc);
+$result = current(array_slice($cc, 0, 1));
+
+echo "Line 10 covered: ", $result[10] == 1 ? "yes" : "no", "\n";
+echo "Line 15 covered: ", $result[15] == 1 ? "yes" : "no", "\n";
+
+xdebug_stop_code_coverage(false);
+?>
+--EXPECTF--
+Line 10 covered: yes
+Line 15 covered: yes
diff --git a/xdebug-3.4.5/tests/coverage/bug01509-noopcache.phpt b/xdebug-3.4.5/tests/coverage/bug01509-noopcache.phpt
new file mode 100644
index 0000000..ff4993b
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01509-noopcache.phpt
@@ -0,0 +1,38 @@
+--TEST--
+Test for bug #1509: Code coverage missing for case inside switch (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.auto_profile=0
+--FILE--
+<?php
+$file = 'bug01509.inc';
+$pathname = stream_resolve_include_path($file);
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+require $pathname;
+$coverage = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+print_r($coverage[$pathname]);
+?>
+--EXPECTF--
+Array
+(
+    [6] => 1
+    [7] => 1
+    [8] => 1
+    [9] => -2
+    [10] => 1
+    [11] => 1
+    [12] => -2
+    [14] => 1
+    [15] => -2
+    [17] => -2
+    [20] => 1
+    [21] => 1
+    [22] => 1
+    [25] => 1
+)
diff --git a/xdebug-3.4.5/tests/coverage/bug01509-opcache.phpt b/xdebug-3.4.5/tests/coverage/bug01509-opcache.phpt
new file mode 100644
index 0000000..66a0e0b
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01509-opcache.phpt
@@ -0,0 +1,34 @@
+--TEST--
+Test for bug #1509: Code coverage missing for case inside switch (opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.auto_profile=0
+--FILE--
+<?php
+$file = 'bug01509.inc';
+$pathname = stream_resolve_include_path($file);
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+require $pathname;
+$coverage = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+print_r($coverage[$pathname]);
+?>
+--EXPECTF--
+Array
+(
+    [6] => 1
+    [7] => 1
+    [8] => 1
+    [10] => 1
+    [11] => 1
+    [14] => 1
+    [20] => 1
+    [21] => 1
+    [22] => 1
+    [25] => 1
+)
diff --git a/xdebug-3.4.5/tests/coverage/bug01509.inc b/xdebug-3.4.5/tests/coverage/bug01509.inc
new file mode 100644
index 0000000..1d9a57a
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01509.inc
@@ -0,0 +1,24 @@
+<?php
+class TestClass
+{
+    public static function someMethod($case)
+    {
+        switch ($case) {
+            case 'foo':
+                return 1;
+                break;
+            case 'bar':
+                return 2;
+                break;
+            default:
+                return 3;
+                break;
+        }
+    }
+}
+
+TestClass::someMethod('foo');
+TestClass::someMethod('bar');
+TestClass::someMethod('1');
+
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01530-noopcache.phpt b/xdebug-3.4.5/tests/coverage/bug01530-noopcache.phpt
new file mode 100644
index 0000000..71371d7
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01530-noopcache.phpt
@@ -0,0 +1,29 @@
+--TEST--
+Test for bug #1530: Code coverage incorrect for last code line in a loop (>= PHP 7.3.1, !opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 7.3.1; !opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.auto_profile=0
+--FILE--
+<?php
+$file = 'bug01530.inc';
+$pathname = stream_resolve_include_path($file);
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+require $pathname;
+$coverage = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+print_r($coverage[$pathname]);
+?>
+--EXPECTF--
+Array
+(
+    [2] => 1
+    [3] => 1
+    [4] => -1
+    [5] => -1
+    [9] => 1
+)
diff --git a/xdebug-3.4.5/tests/coverage/bug01530-opcache.phpt b/xdebug-3.4.5/tests/coverage/bug01530-opcache.phpt
new file mode 100644
index 0000000..c43316d
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01530-opcache.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Test for bug #1530: Code coverage incorrect for last code line in a loop (>= PHP 7.3.1, opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 7.3.1; opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.auto_profile=0
+--FILE--
+<?php
+$file = 'bug01530.inc';
+$pathname = stream_resolve_include_path($file);
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+require $pathname;
+$coverage = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+print_r($coverage[$pathname]);
+?>
+--EXPECTF--
+Array
+(
+    [2] => 1
+    [3] => 1
+    [9] => 1
+)
diff --git a/xdebug-3.4.5/tests/coverage/bug01530.inc b/xdebug-3.4.5/tests/coverage/bug01530.inc
new file mode 100644
index 0000000..6ee9b36
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01530.inc
@@ -0,0 +1,8 @@
+<?php
+foreach (['a'] as $item) {
+    if (false) {
+        echo "Test\n";
+        echo "Test\n";
+    }
+}
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01571-php82.phpt b/xdebug-3.4.5/tests/coverage/bug01571-php82.phpt
new file mode 100644
index 0000000..5772029
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01571-php82.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test for bug #1571: Code Coverage doesn't show file/line for closures in namespaces (< PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.4');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.auto_profile=0
+--FILE--
+<?php
+namespace Testing;
+
+$pathname = stream_resolve_include_path(__FILE__);
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+$cb = function($a) {
+	usleep(500);
+	return $a * 3;
+};
+$cb(4);
+
+$coverage = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+print_r(array_keys($coverage[$pathname]['functions']));
+?>
+--EXPECTF--
+Array
+(
+    [0] => Testing\{closure:%sbug01571-php82.php:7-10}
+)
diff --git a/xdebug-3.4.5/tests/coverage/bug01571-php84.phpt b/xdebug-3.4.5/tests/coverage/bug01571-php84.phpt
new file mode 100644
index 0000000..cd2fb1e
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01571-php84.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test for bug #1571: Code Coverage doesn't show file/line for closures in namespaces (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.auto_profile=0
+--FILE--
+<?php
+namespace Testing;
+
+$pathname = stream_resolve_include_path(__FILE__);
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+$cb = function($a) {
+	usleep(500);
+	return $a * 3;
+};
+$cb(4);
+
+$coverage = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+print_r(array_keys($coverage[$pathname]['functions']));
+?>
+--EXPECTF--
+Array
+(
+    [0] => {closure:%sbug01571-php84.php:7-10}
+)
diff --git a/xdebug-3.4.5/tests/coverage/bug01679.inc b/xdebug-3.4.5/tests/coverage/bug01679.inc
new file mode 100644
index 0000000..0357ef4
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01679.inc
@@ -0,0 +1,16 @@
+<?php
+class pow {}
+
+class Test
+{
+	static $foo = 42;
+
+	public function doSomething()
+	{
+		new pow(
+			static::$foo,
+			3
+		);
+	}
+}
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01679.phpt b/xdebug-3.4.5/tests/coverage/bug01679.phpt
new file mode 100644
index 0000000..f5c736b
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01679.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Test for bug #1679: Code Coverage misses static property as function argument
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+require __DIR__ . '/../utils.inc';
+
+xdebug_start_code_coverage( XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE );
+
+include dirname( __FILE__ ) . '/bug01679.inc';
+
+$o = new Test;
+$o->doSomething();
+
+$cc = xdebug_get_code_coverage();
+
+ksort( $cc );
+$fileInfo = array_values( array_slice( $cc, 0, 1 ) )[0];
+
+mustBeExecuted( $fileInfo, [ 10, 11, 12, 14, 17 ] );
+?>
+--EXPECTF--
+line #10 is present and covered
+line #11 is present and covered
+line #12 is present and covered
+line #14 is present and covered
+line #17 is present and covered
diff --git a/xdebug-3.4.5/tests/coverage/bug01691.inc b/xdebug-3.4.5/tests/coverage/bug01691.inc
new file mode 100644
index 0000000..8add269
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01691.inc
@@ -0,0 +1,26 @@
+<?php
+class Assert
+{
+	static function lazy()
+	{
+		return new self;
+	}
+
+	function __call($name, $args)
+	{
+		echo rtrim( $name . ': ' . join( ', ', $args ) ), "\n";
+		return $this;
+	}
+}
+
+class Sample
+{
+    public function __construct(string $latitude, string $longitude)
+    {
+        Assert::lazy()
+            ->that($latitude, 'latitude')->range(-90, 90)
+            ->that($longitude, 'longitude')->range(-140, 140)
+            ->verifyNow();
+    }
+}
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01691.phpt b/xdebug-3.4.5/tests/coverage/bug01691.phpt
new file mode 100644
index 0000000..8075eac
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01691.phpt
@@ -0,0 +1,36 @@
+--TEST--
+Test for bug #1691: Code Coverage misses fluent interface function call
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+require __DIR__ . '/../utils.inc';
+
+xdebug_start_code_coverage( XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE );
+
+include dirname( __FILE__ ) . '/bug01691.inc';
+
+new Sample(-0.123, 52.5);
+
+$cc = xdebug_get_code_coverage();
+
+ksort( $cc );
+$fileInfo = array_values( array_slice( $cc, 0, 1 ) )[0];
+
+mustBeExecuted( $fileInfo, [ 20, 21, 22, 23, 24 ] );
+?>
+--EXPECTF--
+that: -0.123, latitude
+range: -90, 90
+that: 52.5, longitude
+range: -140, 140
+verifyNow:
+line #20 is present and covered
+line #21 is present and covered
+line #22 is present and covered
+line #23 is present and covered
+line #24 is present and covered
diff --git a/xdebug-3.4.5/tests/coverage/bug01713.inc b/xdebug-3.4.5/tests/coverage/bug01713.inc
new file mode 100644
index 0000000..beab6b7
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01713.inc
@@ -0,0 +1,21 @@
+<?php
+class MyClass
+{
+	function hasFoo()
+	{
+		return true;
+	}
+}
+
+function foo(MyClass $class)
+{
+	return ( $class->hasFoo() &&
+		preg_match(
+			'((?:^|\s)' . preg_quote( get_class( $class ) ) . '(?:\s|$))',
+			get_class( $class )
+		)
+	);
+}
+
+foo(new MyClass);
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01713.phpt b/xdebug-3.4.5/tests/coverage/bug01713.phpt
new file mode 100644
index 0000000..738d02a
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01713.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Test for bug #1713: INIT_FCALL is not overloaded in code coverage
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+require __DIR__ . '/../utils.inc';
+
+xdebug_start_code_coverage( XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE );
+
+include dirname( __FILE__ ) . '/bug01713.inc';
+
+$cc = xdebug_get_code_coverage();
+
+ksort( $cc );
+$fileInfo = array_values( array_slice( $cc, 0, 1 ) )[0];
+
+mustBeExecuted( $fileInfo, range( 12, 14 ) );
+?>
+--EXPECTF--
+line #12 is present and covered
+line #13 is present and covered
+line #14 is present and covered
diff --git a/xdebug-3.4.5/tests/coverage/bug01728.inc b/xdebug-3.4.5/tests/coverage/bug01728.inc
new file mode 100644
index 0000000..bf76008
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01728.inc
@@ -0,0 +1,21 @@
+<?php
+class bar
+{
+	public static function fc($a)
+	{
+		return self::nested(
+			self::nested( //this line is marked as uncovered
+				$a
+			)
+		);
+	}
+
+	private static function nested($a)
+	{
+		return $a;
+	}
+
+}
+
+echo bar::fc("test"), "\n";
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01728.phpt b/xdebug-3.4.5/tests/coverage/bug01728.phpt
new file mode 100644
index 0000000..8809454
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01728.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Test for bug #1728: INIT_STATIC_METHOD_FCALL is not overloaded in code coverage
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+require __DIR__ . '/../utils.inc';
+
+xdebug_start_code_coverage( XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE );
+
+include dirname( __FILE__ ) . '/bug01728.inc';
+
+$cc = xdebug_get_code_coverage();
+
+ksort( $cc );
+$fileInfo = array_values( array_slice( $cc, 0, 1 ) )[0];
+mustBeExecuted( $fileInfo, range( 6, 7 ) );
+?>
+--EXPECTF--
+test
+line #6 is present and covered
+line #7 is present and covered
diff --git a/xdebug-3.4.5/tests/coverage/bug01733.inc b/xdebug-3.4.5/tests/coverage/bug01733.inc
new file mode 100644
index 0000000..7f5428a
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01733.inc
@@ -0,0 +1,17 @@
+<?php
+namespace FancyNamespace;
+
+class ConfigProvider
+{
+    public function test()
+    {
+        return array_merge(
+            require(__DIR__ . '/bug01733a.inc'),
+            require(__DIR__ . '/bug01733a.inc')
+        );
+    }
+}
+
+$c = new ConfigProvider;
+var_dump( $c->test() );
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01733.phpt b/xdebug-3.4.5/tests/coverage/bug01733.phpt
new file mode 100644
index 0000000..f1f12a6
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01733.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Test for bug #1733: SEND_VAR_NO_REF_EX opcode, used for require() in namespace, is not overloaded
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+require __DIR__ . '/../utils.inc';
+
+xdebug_start_code_coverage( XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE );
+
+include dirname( __FILE__ ) . '/bug01733.inc';
+
+$cc = xdebug_get_code_coverage();
+
+ksort( $cc );
+$fileInfo = array_values( array_slice( $cc, 0, 1 ) )[0];
+mustBeExecuted( $fileInfo, range( 8, 10 ) );
+?>
+--EXPECTF--
+array(2) {
+  [0]=>
+  string(%d) "%s"
+  [1]=>
+  string(%d) "%s"
+}
+line #8 is present and covered
+line #9 is present and covered
+line #10 is present and covered
diff --git a/xdebug-3.4.5/tests/coverage/bug01733a.inc b/xdebug-3.4.5/tests/coverage/bug01733a.inc
new file mode 100644
index 0000000..0da97ff
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01733a.inc
@@ -0,0 +1,3 @@
+<?php
+return [ rand() => __FILE__ ];
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01779.inc b/xdebug-3.4.5/tests/coverage/bug01779.inc
new file mode 100644
index 0000000..074d2d1
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01779.inc
@@ -0,0 +1,21 @@
+<?php
+namespace MyDebug;
+
+class DebugClass
+{
+    public static function createNestedThreeTimes(string $string)
+    {
+        return new self(
+            strtolower(
+                sprintf(
+                    "%s",
+                    $string
+                )
+            )
+        );
+    }
+
+}
+
+DebugClass::createNestedThreeTimes("testing");
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01779.phpt b/xdebug-3.4.5/tests/coverage/bug01779.phpt
new file mode 100644
index 0000000..a70de3e
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01779.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Test for bug #1779: INIT_NS_FCALL_BY_NAME opcode, used for built-in functions in namespace, is not overloaded
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+require __DIR__ . '/../utils.inc';
+
+xdebug_start_code_coverage( XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE );
+
+include dirname( __FILE__ ) . '/bug01779.inc';
+
+$cc = xdebug_get_code_coverage();
+
+ksort( $cc );
+$fileInfo = array_values( array_slice( $cc, 0, 1 ) )[0];
+mustBeExecuted( $fileInfo, range( 8, 11 ) );
+?>
+--EXPECTF--
+line #8 is present and covered
+line #9 is present and covered
+line #10 is present and covered
+line #11 is present and covered
diff --git a/xdebug-3.4.5/tests/coverage/bug01787.inc b/xdebug-3.4.5/tests/coverage/bug01787.inc
new file mode 100644
index 0000000..abfe12d
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01787.inc
@@ -0,0 +1,3 @@
+<?php
+$foo = 'bar';
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01787.phpt b/xdebug-3.4.5/tests/coverage/bug01787.phpt
new file mode 100644
index 0000000..ec85e7c
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01787.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Test for bug #1787: Branch coverage data does not always follow the lines/functions format
+--INI--
+xdebug.mode=coverage
+xdebug.start_with_request=trigger
+--FILE--
+<?php
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+require dirname(__FILE__) . '/bug01787.inc';
+
+$coverage = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+
+ksort( $coverage );
+
+foreach ( $coverage as $file => $info ) {
+	echo $file, isset( $info['functions'] ) ? ' has ' : ' does not have ', "'functions' array\n";
+	echo $file, isset( $info['lines'] ) ? ' has ' : ' does not have ', "'lines' array\n";
+}
+?>
+--EXPECTF--
+%sbug01787.inc has 'functions' array
+%sbug01787.inc has 'lines' array
+%sbug01787.php has 'functions' array
+%sbug01787.php has 'lines' array
diff --git a/xdebug-3.4.5/tests/coverage/bug01788.phpt b/xdebug-3.4.5/tests/coverage/bug01788.phpt
new file mode 100644
index 0000000..b5e9061
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01788.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test for bug #1788: Branch coverage data does not always follow the lines/functions format
+--INI--
+xdebug.mode=coverage
+xdebug.start_with_request=trigger
+--FILE--
+<?php
+require dirname(__FILE__) . '/bug01788a.inc';
+require dirname(__FILE__) . '/bug01788b.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+$bar = 'bar';
+
+$class = new Baz();
+$class->bar();
+
+$coverage = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+
+ksort( $coverage );
+
+foreach ( $coverage as $file => $info ) {
+	echo $file, isset( $info['functions'] ) ? ' has ' : ' does not have ', "'functions' array\n";
+	echo $file, isset( $info['lines'] ) ? ' has ' : ' does not have ', "'lines' array\n";
+}
+?>
+--EXPECTF--
+%sbug01788.php has 'functions' array
+%sbug01788.php has 'lines' array
+%sbug01788b.inc has 'functions' array
+%sbug01788b.inc has 'lines' array
diff --git a/xdebug-3.4.5/tests/coverage/bug01788a.inc b/xdebug-3.4.5/tests/coverage/bug01788a.inc
new file mode 100644
index 0000000..abfe12d
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01788a.inc
@@ -0,0 +1,3 @@
+<?php
+$foo = 'bar';
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01788b.inc b/xdebug-3.4.5/tests/coverage/bug01788b.inc
new file mode 100644
index 0000000..576975e
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01788b.inc
@@ -0,0 +1,9 @@
+<?php
+class Baz
+{
+	public function bar()
+	{
+		$foo = 'baz';
+	}
+}
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01841-001.inc b/xdebug-3.4.5/tests/coverage/bug01841-001.inc
new file mode 100644
index 0000000..2a003fd
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01841-001.inc
@@ -0,0 +1,15 @@
+<?php
+function a()
+{
+	$maybe = 3;
+
+	$a = match($maybe) {
+		1 => "one",
+		2 => "twee",
+		default => "three",
+	};
+
+	return $a;
+}
+
+$result = a();
diff --git a/xdebug-3.4.5/tests/coverage/bug01841-001.phpt b/xdebug-3.4.5/tests/coverage/bug01841-001.phpt
new file mode 100644
index 0000000..2e00e38
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01841-001.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test for bug #1841: 'match' keyword [1] (default)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.0');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.start_with_request=trigger
+opcache.optimization_level=0
+--FILE--
+<?php
+require __DIR__ . '/../utils.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+require dirname(__FILE__) . '/bug01841-001.inc';
+
+$cc = xdebug_get_code_coverage();
+
+ksort( $cc );
+$fileInfo = array_values( array_slice( $cc, 0, 1 ) )[0];
+mustBeExecuted( $fileInfo, [ 12, 4, 6, 9 ] );
+mustNotBeExecuted( $fileInfo, [ 7, 8 ] );
+?>
+--EXPECTF--
+line #12 is present and covered
+line #4 is present and covered
+line #6 is present and covered
+line #9 is present and covered
+line #7 is present and not covered
+line #8 is present and not covered
diff --git a/xdebug-3.4.5/tests/coverage/bug01841-002.inc b/xdebug-3.4.5/tests/coverage/bug01841-002.inc
new file mode 100644
index 0000000..0c051f1
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01841-002.inc
@@ -0,0 +1,15 @@
+<?php
+function a()
+{
+	$maybe = 1;
+
+	$a = match($maybe) {
+		1 => "one",
+		2 => "twee",
+		default => "three",
+	};
+
+	return $a;
+}
+
+$result = a();
diff --git a/xdebug-3.4.5/tests/coverage/bug01841-002.phpt b/xdebug-3.4.5/tests/coverage/bug01841-002.phpt
new file mode 100644
index 0000000..9149df5
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01841-002.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test for bug #1841: 'match' keyword [2]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.0');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.start_with_request=trigger
+opcache.optimization_level=0
+--FILE--
+<?php
+require __DIR__ . '/../utils.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+require dirname(__FILE__) . '/bug01841-002.inc';
+
+$cc = xdebug_get_code_coverage();
+
+ksort( $cc );
+$fileInfo = array_values( array_slice( $cc, 0, 1 ) )[0];
+mustBeExecuted( $fileInfo, [ 12, 4, 6, 7 ] );
+mustNotBeExecuted( $fileInfo, [ 8, 9 ] );
+?>
+--EXPECTF--
+line #12 is present and covered
+line #4 is present and covered
+line #6 is present and covered
+line #7 is present and covered
+line #8 is present and not covered
+line #9 is present and not covered
diff --git a/xdebug-3.4.5/tests/coverage/bug01841-003.inc b/xdebug-3.4.5/tests/coverage/bug01841-003.inc
new file mode 100644
index 0000000..e98681a
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01841-003.inc
@@ -0,0 +1,17 @@
+<?php
+function a()
+{
+	$maybe = 3;
+
+	$a = match($maybe) {
+		1 => "one",
+		2 => "twee",
+
+	};
+
+	return $a;
+}
+
+try {
+	$result = a();
+} catch (Error) {}
diff --git a/xdebug-3.4.5/tests/coverage/bug01841-003.phpt b/xdebug-3.4.5/tests/coverage/bug01841-003.phpt
new file mode 100644
index 0000000..90197c6
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01841-003.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test for bug #1841: 'match' keyword, no default [3]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.0');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.start_with_request=trigger
+opcache.optimization_level=0
+--FILE--
+<?php
+require __DIR__ . '/../utils.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+require dirname(__FILE__) . '/bug01841-003.inc';
+
+$cc = xdebug_get_code_coverage();
+
+ksort( $cc );
+$fileInfo = array_values( array_slice( $cc, 0, 1 ) )[0];
+mustBeExecuted( $fileInfo, [ 4, 6 ] );
+mustNotBeExecuted( $fileInfo, [ 7, 8, 12 ] );
+?>
+--EXPECTF--
+line #4 is present and covered
+line #6 is present and covered
+line #7 is present and not covered
+line #8 is present and not covered
+line #12 is present and not covered
diff --git a/xdebug-3.4.5/tests/coverage/bug01841-004.inc b/xdebug-3.4.5/tests/coverage/bug01841-004.inc
new file mode 100644
index 0000000..a9015f8
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01841-004.inc
@@ -0,0 +1,14 @@
+<?php
+function a()
+{
+	$maybe = 3;
+
+	$a = match(true) {
+		$maybe >= 3 => "one",
+		$maybe < 3 => "twee",
+	};
+
+	return $a;
+}
+
+$result = a();
diff --git a/xdebug-3.4.5/tests/coverage/bug01841-004.phpt b/xdebug-3.4.5/tests/coverage/bug01841-004.phpt
new file mode 100644
index 0000000..4a88518
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01841-004.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test for bug #1841: 'match' keyword, expression case [4]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.0');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.start_with_request=trigger
+opcache.optimization_level=0
+--FILE--
+<?php
+require __DIR__ . '/../utils.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+require dirname(__FILE__) . '/bug01841-004.inc';
+
+$cc = xdebug_get_code_coverage();
+
+ksort( $cc );
+$fileInfo = array_values( array_slice( $cc, 0, 1 ) )[0];
+mustBeExecuted( $fileInfo, [ 4, 6, 7, 11, 14 ] );
+mustNotBeExecuted( $fileInfo, [ 8 ] );
+?>
+--EXPECTF--
+line #4 is present and covered
+line #6 is present and covered
+line #7 is present and covered
+line #11 is present and covered
+line #14 is present and covered
+line #8 is present and not covered
diff --git a/xdebug-3.4.5/tests/coverage/bug01841-005.inc b/xdebug-3.4.5/tests/coverage/bug01841-005.inc
new file mode 100644
index 0000000..e4e614a
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01841-005.inc
@@ -0,0 +1,15 @@
+<?php
+function a()
+{
+	$maybe = 2;
+
+	$a = match($maybe + 1) {
+		true => "pi",
+		3 => "three",
+		default => "def",
+	};
+
+	return $a;
+}
+
+$result = a();
diff --git a/xdebug-3.4.5/tests/coverage/bug01841-005.phpt b/xdebug-3.4.5/tests/coverage/bug01841-005.phpt
new file mode 100644
index 0000000..623dddf
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01841-005.phpt
@@ -0,0 +1,44 @@
+--TEST--
+Test for bug #1841: 'match' keyword, with tmp var [5]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.0');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.start_with_request=trigger
+opcache.optimization_level=0
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+require dirname(__FILE__) . '/bug01841-005.inc';
+
+$cc = xdebug_get_code_coverage();
+
+dump_branch_coverage($cc);
+xdebug_stop_code_coverage();
+?>
+--EXPECTF--
+a
+- branches
+  - 00; OP: 00-05; line: 04-06 HIT; out1: 06 HIT; out2: 09  X
+  - 06; OP: 06-07; line: 08-08 HIT; out1: 08  X ; out2: 11 HIT
+  - 08; OP: 08-08; line: 08-08  X ; out1: 13  X
+  - 09; OP: 09-10; line: 07-07  X ; out1: 15  X
+  - 11; OP: 11-12; line: 08-08 HIT; out1: 15 HIT
+  - 13; OP: 13-14; line: 09-09  X ; out1: 15  X
+  - 15; OP: 15-20; line: 09-13 HIT
+- paths
+  - 0 6 8 13 15:  X
+  - 0 6 11 15: HIT
+  - 0 9 15:  X
+
+{main}
+- branches
+  - 00; OP: 00-04; line: 15-16 HIT; out1: EX  X
+- paths
+  - 0: HIT
diff --git a/xdebug-3.4.5/tests/coverage/bug01851.inc b/xdebug-3.4.5/tests/coverage/bug01851.inc
new file mode 100644
index 0000000..b7ac7be
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01851.inc
@@ -0,0 +1,28 @@
+<?php
+class NPSRepository
+{
+    /** @var PDO */
+    private $pdo;
+
+    public function __construct(PDO $pdo)
+    {
+        $this->pdo = $pdo;
+        $this->pdo->exec('CREATE TABLE np_score(user_id INTEGER NOT NULL, score INTEGER NOT NULL);');
+    }
+
+    public function importUserRecords(array $records): void
+    {
+        $statement = $this->pdo->prepare('INSERT INTO np_score(user_id, score) VALUES (:userId, :score)');
+        foreach ($records as $userId => $score) {
+            $statement->bindValue('userId', $userId, PDO::PARAM_INT);
+            $statement->bindValue('score', $score, PDO::PARAM_INT);
+            $statement->execute();
+        }
+    }
+}
+
+$pdo = new PDO('sqlite::memory:', null, null, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
+$repository = new NPSRepository($pdo);
+
+$repository->importUserRecords([1,1]);
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01851.phpt b/xdebug-3.4.5/tests/coverage/bug01851.phpt
new file mode 100644
index 0000000..000463d
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01851.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Test for bug #1851: Paths are not counted as coveraged with loops calling function
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext pdo_sqlite');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.start_with_request=trigger
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+require dirname(__FILE__) . '/bug01851.inc';
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+dump_branch_coverage($c);
+
+?>
+--EXPECTF--
+%a
+- paths
+  - 0 %d %d %d %d: HIT
+  - 0 %d %d:  X
+  - 0 %d:  X
+%a
diff --git a/xdebug-3.4.5/tests/coverage/bug01903-001.phpt b/xdebug-3.4.5/tests/coverage/bug01903-001.phpt
new file mode 100644
index 0000000..03ea38d
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01903-001.phpt
@@ -0,0 +1,10 @@
+--TEST--
+Test for bug #1903: XDEBUG_CC_DEAD_CODE and XDEBUG_CC_UNUSED are only defined with mode=coverage
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+echo XDEBUG_CC_DEAD_CODE, ' ', XDEBUG_CC_UNUSED, ' ', XDEBUG_CC_BRANCH_CHECK, "\n";
+?>
+--EXPECT--
+2 1 4
diff --git a/xdebug-3.4.5/tests/coverage/bug01903-002.phpt b/xdebug-3.4.5/tests/coverage/bug01903-002.phpt
new file mode 100644
index 0000000..d262931
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01903-002.phpt
@@ -0,0 +1,16 @@
+--TEST--
+Test for bug #1903: XDEBUG_CC_DEAD_CODE and XDEBUG_CC_UNUSED should be defined with mode=off
+--INI--
+xdebug.mode=off
+--FILE--
+<?php
+var_dump(
+	defined( 'XDEBUG_CC_DEAD_CODE' ),
+	defined( 'XDEBUG_CC_UNUSED' ),
+	defined( 'XDEBUG_CC_BRANCH_CHECK' )
+);
+?>
+--EXPECT--
+bool(true)
+bool(true)
+bool(true)
diff --git a/xdebug-3.4.5/tests/coverage/bug01910.inc b/xdebug-3.4.5/tests/coverage/bug01910.inc
new file mode 100644
index 0000000..0c35352
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01910.inc
@@ -0,0 +1,15 @@
+<?php
+class Security
+{
+}
+
+class Foo
+{
+	public function __construct(
+		private int      $ft,
+		private Security $security,
+	) {}
+}
+
+$i = new Foo(42, new Security());
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01910.phpt b/xdebug-3.4.5/tests/coverage/bug01910.phpt
new file mode 100644
index 0000000..c37b675
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01910.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Test for bug #1910: Code coverage misses constructor property promotion code
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.0');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+require __DIR__ . '/../utils.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+require dirname(__FILE__) . '/bug01910.inc';
+
+$coverage = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+
+ksort( $coverage );
+$fileInfo = array_values( array_slice( $coverage, 0, 1 ) )[0];
+
+mustBeExecuted( $fileInfo, [ 8, 11, 14, 16 ] );
+?>
+--EXPECTF--
+line #8 is present and covered
+line #11 is present and covered
+line #14 is present and covered
+line #16 is present and covered
diff --git a/xdebug-3.4.5/tests/coverage/bug01922.inc b/xdebug-3.4.5/tests/coverage/bug01922.inc
new file mode 100644
index 0000000..f02a60d
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01922.inc
@@ -0,0 +1,32 @@
+<?php
+class ExampleTest
+{
+    public function arrayBuild()
+    {
+        $arr = [];
+        // Append to array.
+        $arr[] = [
+            'num' => 0,
+        ];
+        for ($i = 1; $i < 3; $i++) {
+            $arr[] = [
+                'num' => $i,
+            ];
+        }
+        // Explicit index.
+        list($a, $c, $e) = ['b', 'd', 'f'];
+        $arr['string-index'] = [
+            'num' => 42,
+            'sub' => [
+                'a' => $a,
+                'c' => $c,
+                'e' => $e,
+            ],
+        ];
+        // Multi-line assignment
+        $arr['multiline-scalar-1']
+            = $arr['multiline-scalar-2']
+            = 'scalar';
+        return $arr;
+    }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug01922.phpt b/xdebug-3.4.5/tests/coverage/bug01922.phpt
new file mode 100644
index 0000000..d0e0c52
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01922.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test for bug #1922: Code coverage misses array assignment lines
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.0');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+require __DIR__ . '/../utils.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+require dirname(__FILE__) . '/bug01922.inc';
+
+$a = new ExampleTest;
+$a->arrayBuild();
+
+$coverage = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+
+ksort( $coverage );
+$fileInfo = array_values( array_slice( $coverage, 0, 1 ) )[0];
+
+mustBeExecuted( $fileInfo, [ 12, 18, 27 ] );
+?>
+--EXPECTF--
+line #12 is present and covered
+line #18 is present and covered
+line #27 is present and covered
diff --git a/xdebug-3.4.5/tests/coverage/bug01932.inc b/xdebug-3.4.5/tests/coverage/bug01932.inc
new file mode 100644
index 0000000..61a2100
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01932.inc
@@ -0,0 +1,30 @@
+<?php
+
+namespace Service;
+
+class Example
+{
+    public function executeAction(): bool
+    {
+        $path = $this->getBasicPath()
+            . '/'
+            . $this->getFileName();
+
+        return $this->runAction($path);
+    }
+
+    private function getBasicPath(): string
+    {
+        return '/var/www';
+    }
+
+    private function getFileName(): string
+    {
+        return 'file.csv';
+    }
+
+    private function runAction(string $path): bool
+    {
+        return true;
+    }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug01932.phpt b/xdebug-3.4.5/tests/coverage/bug01932.phpt
new file mode 100644
index 0000000..1d6cffd
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01932.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Test for bug #1932: Code coverage misses array assignment lines
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+require __DIR__ . '/../utils.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+require dirname(__FILE__) . '/bug01932.inc';
+
+$a = new \Service\Example;
+$a->executeAction();
+
+$coverage = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+
+ksort( $coverage );
+$fileInfo = array_values( array_slice( $coverage, 0, 1 ) )[0];
+
+mustBeExecuted( $fileInfo, [ 9, 10, 11 ] );
+?>
+--EXPECTF--
+line #9 is present and covered
+line #10 is present and covered
+line #11 is present and covered
diff --git a/xdebug-3.4.5/tests/coverage/bug01938-Bar.inc b/xdebug-3.4.5/tests/coverage/bug01938-Bar.inc
new file mode 100644
index 0000000..aa4a160
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01938-Bar.inc
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace App;
+
+class Bar
+{
+    use FooTrait;
+
+    public function useTrait(): bool
+    {
+        return $this->returnsTrue();
+    }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug01938-FooTrait.inc b/xdebug-3.4.5/tests/coverage/bug01938-FooTrait.inc
new file mode 100644
index 0000000..ace07c2
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01938-FooTrait.inc
@@ -0,0 +1,13 @@
+<?php
+
+declare(strict_types=1);
+
+namespace App;
+
+trait FooTrait
+{
+    public function returnsTrue(): bool
+    {
+        return true;
+    }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug01938.phpt b/xdebug-3.4.5/tests/coverage/bug01938.phpt
new file mode 100644
index 0000000..3121384
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01938.phpt
@@ -0,0 +1,49 @@
+--TEST--
+Test for bug #1938: Branches in traits aren’t marked as executed (>= PHP 7.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 7.4');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK );
+
+require dirname( __FILE__ ) . '/bug01938-FooTrait.inc';
+require dirname( __FILE__ ) . '/bug01938-Bar.inc';
+
+$c = new \App\Bar;
+$c->useTrait();
+
+$cc = xdebug_get_code_coverage();
+dump_branch_coverage($cc);
+xdebug_stop_code_coverage();
+?>
+--EXPECTF--
+App\Bar->useTrait
+- branches
+  - 00; OP: 00-%d; line: %d-%d HIT%S
+- paths
+  - 0: HIT
+
+{main}
+- branches
+  - 00; OP: 00-%d; line: %d-16 HIT; out1: EX  X
+- paths
+  - 0: HIT
+
+App\FooTrait->returnsTrue{trait-method:%sbug01938-FooTrait.inc:9-12}
+- branches
+  - 00; OP: 00-%d; line: %d-%d HIT%S
+- paths
+  - 0: HIT
+
+{main}
+- branches
+  - 00; OP: 00-%d; line: %d-14 HIT; out1: EX  X
+- paths
+  - 0: HIT
diff --git a/xdebug-3.4.5/tests/coverage/bug01992-filter.inc b/xdebug-3.4.5/tests/coverage/bug01992-filter.inc
new file mode 100644
index 0000000..9d1bd16
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01992-filter.inc
@@ -0,0 +1,3 @@
+<?php
+xdebug_set_filter(XDEBUG_FILTER_CODE_COVERAGE, XDEBUG_PATH_INCLUDE, ['src/']);
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug01992.phpt b/xdebug-3.4.5/tests/coverage/bug01992.phpt
new file mode 100644
index 0000000..c37ccd8
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug01992.phpt
@@ -0,0 +1,15 @@
+--TEST--
+Test for bug #1992: Code Coverage with filter can crash on xdebug_stop_code_coverage()
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+?>
+--INI--
+xdebug.mode=coverage
+auto_prepend_file=tests/coverage/bug01992-filter.inc
+--FILE--
+<?php
+xdebug_start_code_coverage();
+xdebug_stop_code_coverage(true);
+?>
+--EXPECTF--
diff --git a/xdebug-3.4.5/tests/coverage/bug02009.phpt b/xdebug-3.4.5/tests/coverage/bug02009.phpt
new file mode 100644
index 0000000..ff3dacb
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug02009.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Test for bug #2009: xdebug_stop_code_coverage's argument has type mismatch
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+declare(strict_types=1);
+xdebug_start_code_coverage();
+xdebug_stop_code_coverage(true);
+echo "---DONE---\n";
+?>
+--EXPECTF--
+---DONE---
diff --git a/xdebug-3.4.5/tests/coverage/bug02075.inc b/xdebug-3.4.5/tests/coverage/bug02075.inc
new file mode 100644
index 0000000..c8719d6
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug02075.inc
@@ -0,0 +1,22 @@
+<?php
+class Issue2075
+{
+	static private $groupNamespace = "GROUP SPACE";
+	static public $currentUse = false;
+	static public $recordPart = false;
+
+    private static function recordTokenClass()
+    {
+        self::$currentUse = array(       // this line is not marked as covered... the other 4 lines are
+            'class' => self::$groupNamespace,
+            'alias' => '',
+        );
+        self::$recordPart = 'class';
+    }
+
+	public static function showMe()
+	{
+		self::recordTokenClass();
+	}
+}
+?>
diff --git a/xdebug-3.4.5/tests/coverage/bug02075.phpt b/xdebug-3.4.5/tests/coverage/bug02075.phpt
new file mode 100644
index 0000000..dddadfa
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug02075.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Test for bug #2075: Code coverage misses static array assignment lines
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+require __DIR__ . '/../utils.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+require dirname(__FILE__) . '/bug02075.inc';
+
+Issue2075::showMe();
+
+$coverage = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+
+ksort( $coverage );
+$fileInfo = array_values( array_slice( $coverage, 0, 1 ) )[0];
+
+mustBeExecuted( $fileInfo, [ 10, 11, 12, 14 ] );
+?>
+--EXPECTF--
+line #10 is present and covered
+line #11 is present and covered
+line #12 is present and covered
+line #14 is present and covered
diff --git a/xdebug-3.4.5/tests/coverage/bug02085.inc b/xdebug-3.4.5/tests/coverage/bug02085.inc
new file mode 100644
index 0000000..0c60d28
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug02085.inc
@@ -0,0 +1,16 @@
+<?php
+
+// To get this test to fail before the fix, this file must be
+// encoded using the Source Guardian encoder and source guardian
+// loaders must be installed. https://www.sourceguardian.com/loaders.html
+//
+// That extension somehow sets the zend_op_array->filename member for encoded files to NULL
+// So, when xdebug filtering is enabled, the xdebug_filter_match_path_include function
+// will try to see if the zend_op_array->filename matches a filter
+// But since zend_op_array->filename is NULL, we get a segmentation fault
+//
+// This fix will guard against the possibility of other extensions that may set
+// the zend_op_array->filename to NULL since it is absolutely possible that
+// the zend_op_array->filename could be NULL when checking against filter paths
+
+echo "I'm encoded";
diff --git a/xdebug-3.4.5/tests/coverage/bug02085.phpt b/xdebug-3.4.5/tests/coverage/bug02085.phpt
new file mode 100644
index 0000000..a39c7e4
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug02085.phpt
@@ -0,0 +1,18 @@
+--TEST--
+Test for bug #2085: Crash when used with source guardian encoded files
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+xdebug_set_filter(
+	XDEBUG_FILTER_CODE_COVERAGE,
+	XDEBUG_PATH_INCLUDE,
+	["src/"]
+);
+xdebug_start_code_coverage();
+require_once __DIR__ . "/bug02085.inc";
+xdebug_stop_code_coverage();
+
+?>
+--EXPECTF--
+%AI'm encoded
diff --git a/xdebug-3.4.5/tests/coverage/bug02179-noopcache-php828.phpt b/xdebug-3.4.5/tests/coverage/bug02179-noopcache-php828.phpt
new file mode 100644
index 0000000..c282857
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug02179-noopcache-php828.phpt
@@ -0,0 +1,37 @@
+--TEST--
+Test for bug #2179: Coverage mistakes with if/else without curly braces (!opcache, <= PHP 8.2.8) 
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP <= 8.2.8; !opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+require __DIR__ . '/../utils.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+require dirname(__FILE__) . '/bug02179.inc';
+
+getByFilename();
+getByFilename2();
+
+$coverage = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+
+ksort( $coverage );
+$fileInfo = array_values( array_slice( $coverage, 1, 1 ) )[0];
+
+mustBeExecuted( $fileInfo, [ 5, 7, 12, 16, 20, 22, 24, 28 ] );
+?>
+--EXPECTF--
+line #5 is present and covered
+line #7 is present and covered
+line #12 is present and covered
+line #16 is present and covered
+line #20 is present and covered
+line #22 is present and covered
+line #24 is present and covered
+line #28 is present and covered
diff --git a/xdebug-3.4.5/tests/coverage/bug02179-noopcache-php829.phpt b/xdebug-3.4.5/tests/coverage/bug02179-noopcache-php829.phpt
new file mode 100644
index 0000000..dc92004
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug02179-noopcache-php829.phpt
@@ -0,0 +1,38 @@
+--TEST--
+Test for bug #2179: Coverage mistakes with if/else without curly braces (!opcache, > PHP 8.2.8)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP > 8.2.8; !opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+require __DIR__ . '/../utils.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+require dirname(__FILE__) . '/bug02179.inc';
+
+getByFilename();
+getByFilename2();
+
+$coverage = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+
+ksort( $coverage );
+$fileInfo = array_values( array_slice( $coverage, 1, 1 ) )[0];
+
+mustBeExecuted( $fileInfo, [ 5, 7, 16, 20, 22, 28 ] );
+mustNotBeExecuted( $fileInfo, [ 12, 24 ] );
+?>
+--EXPECTF--
+line #5 is present and covered
+line #7 is present and covered
+line #16 is present and covered
+line #20 is present and covered
+line #22 is present and covered
+line #28 is present and covered
+line #12 is present and not covered
+line #24 is present and not covered
diff --git a/xdebug-3.4.5/tests/coverage/bug02179-opcache.phpt b/xdebug-3.4.5/tests/coverage/bug02179-opcache.phpt
new file mode 100644
index 0000000..556d940
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug02179-opcache.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Test for bug #2179: Coverage mistakes with if/else without curly braces (opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('opcache');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+require __DIR__ . '/../utils.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+require dirname(__FILE__) . '/bug02179.inc';
+
+getByFilename();
+getByFilename2();
+
+$coverage = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+
+ksort( $coverage );
+$fileInfo = array_values( array_slice( $coverage, 1, 1 ) )[0];
+
+mustBeExecuted( $fileInfo, [ 5, 7, 16, 20, 22, 28 ] );
+?>
+--EXPECTF--
+line #5 is present and covered
+line #7 is present and covered
+line #16 is present and covered
+line #20 is present and covered
+line #22 is present and covered
+line #28 is present and covered
diff --git a/xdebug-3.4.5/tests/coverage/bug02179.inc b/xdebug-3.4.5/tests/coverage/bug02179.inc
new file mode 100644
index 0000000..1315243
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug02179.inc
@@ -0,0 +1,28 @@
+<?php
+
+function getByFilename()
+{
+    if (true) {
+        if (
+            false
+        ) {
+            $this_file_format = $file_format; // will be shown as not covered
+            exit;   // will be shown as not covered
+            die;    // will be shown as not covered
+            throw new Exception(); // will be shown as covered because it's the last line in the block
+        }
+    } else {    // the else is crucial even when it's not actually called. and when it's empty. When removed, the coverage bug stops happening.
+    }
+}
+
+function getByFilename2()
+{
+    if (true) {
+        if (
+            false
+        ) {
+            $this_file_format = $file_format; // will be shown as covered because it's the last (=only) line in the block
+        }
+    } else {    // the else is crucial even when it's not actually called. and when it's empty. When removed, the coverage bug stops happening.
+    }
+}
diff --git a/xdebug-3.4.5/tests/coverage/bug02332.inc b/xdebug-3.4.5/tests/coverage/bug02332.inc
new file mode 100644
index 0000000..ef1e405
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug02332.inc
@@ -0,0 +1,9 @@
+<?php
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED);
+
+$fiber = new \Fiber(function () {
+    $fiber = new \Fiber(function () { });
+    var_dump($fiber->start() === null);
+});
+var_dump($fiber->start() === null);
diff --git a/xdebug-3.4.5/tests/coverage/bug02332.phpt b/xdebug-3.4.5/tests/coverage/bug02332.phpt
new file mode 100644
index 0000000..3017e35
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/bug02332.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test for bug #2332: Crash with coverage and nested fibers
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+require __DIR__ . '/../utils.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+require dirname(__FILE__) . '/bug02332.inc';
+
+$coverage = xdebug_get_code_coverage();
+xdebug_stop_code_coverage();
+
+ksort( $coverage );
+$fileInfo = array_values( array_slice( $coverage, 0, 1 ) )[0];
+
+mustBeExecuted( $fileInfo, [ 5, 6, 7, 8, 9 ] );
+?>
+--EXPECTF--
+bool(true)
+bool(true)
+line #5 is present and covered
+line #6 is present and covered
+line #7 is present and covered
+line #8 is present and covered
+line #9 is present and covered
diff --git a/xdebug-3.4.5/tests/coverage/coverage-filter-path-exclude-001.phpt b/xdebug-3.4.5/tests/coverage/coverage-filter-path-exclude-001.phpt
new file mode 100644
index 0000000..90cf452
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/coverage-filter-path-exclude-001.phpt
@@ -0,0 +1,62 @@
+--TEST--
+Filtered code coverage: path exclude [1]
+--INI--
+xdebug.mode=coverage
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+$cwd = __DIR__; $s = DIRECTORY_SEPARATOR; $includeDir = realpath( $cwd . '/..' );
+xdebug_set_filter(XDEBUG_FILTER_CODE_COVERAGE, XDEBUG_PATH_EXCLUDE, [ "{$includeDir}{$s}filter{$s}xdebug" ] );
+
+$tf = xdebug_start_code_coverage( XDEBUG_CC_DEAD_CODE | XDEBUG_CC_UNUSED );
+
+include "{$includeDir}/filter/foobar/foobar.php";
+include "{$includeDir}/filter/xdebug/xdebug.php";
+
+Foobar::foo("hi");
+XDEBUG::foo("hi");
+Xdebug::foo("hi");
+
+$result = xdebug_get_code_coverage();
+ksort( $result );
+
+var_dump( $result );
+?>
+--EXPECTF--
+ello!
+ello!
+ello!
+array(2) {
+  ["%scoverage-filter-path-exclude-001.php"]=>
+  array(7) {
+    [5]=>
+    int(1)
+    [7]=>
+    int(1)
+    [8]=>
+    int(1)
+    [10]=>
+    int(1)
+    [11]=>
+    int(1)
+    [12]=>
+    int(1)
+    [14]=>
+    int(1)
+  }
+  ["%sfilter%efoobar%efoobar.php"]=>
+  array(%d) {%A
+    [6]=>
+    int(1)
+    [7]=>
+    int(1)
+    [11]=>
+    int(-1)
+    [12]=>
+    int(-1)
+    [14]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/coverage-filter-path-include-001.phpt b/xdebug-3.4.5/tests/coverage/coverage-filter-path-include-001.phpt
new file mode 100644
index 0000000..a778c4e
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/coverage-filter-path-include-001.phpt
@@ -0,0 +1,62 @@
+--TEST--
+Filtered code coverage: path include [1]
+--INI--
+xdebug.mode=coverage
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+$cwd = __DIR__; $s = DIRECTORY_SEPARATOR; $includeDir = realpath( $cwd . '/..' );
+xdebug_set_filter(XDEBUG_FILTER_CODE_COVERAGE, XDEBUG_PATH_INCLUDE, [ "{$includeDir}{$s}filter{$s}xdebug" ] );
+
+$tf = xdebug_start_code_coverage( XDEBUG_CC_DEAD_CODE | XDEBUG_CC_UNUSED );
+
+include "{$includeDir}/filter/foobar/foobar.php";
+include "{$includeDir}/filter/xdebug/xdebug.php";
+
+Foobar::foo("hi");
+XDEBUG::foo("hi");
+Xdebug::foo("hi");
+
+$result = xdebug_get_code_coverage();
+ksort( $result );
+
+var_dump( $result );
+?>
+--EXPECTF--
+ello!
+ello!
+ello!
+array(2) {
+  ["%scoverage-filter-path-include-001.php"]=>
+  array(7) {
+    [5]=>
+    int(1)
+    [7]=>
+    int(1)
+    [8]=>
+    int(1)
+    [10]=>
+    int(1)
+    [11]=>
+    int(1)
+    [12]=>
+    int(1)
+    [14]=>
+    int(1)
+  }
+  ["%sfilter%exdebug%exdebug.php"]=>
+  array(%d) {%A
+    [6]=>
+    int(1)
+    [7]=>
+    int(1)
+    [11]=>
+    int(-1)
+    [12]=>
+    int(-1)
+    [14]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/coverage.inc b/xdebug-3.4.5/tests/coverage/coverage.inc
new file mode 100644
index 0000000..cd89366
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/coverage.inc
@@ -0,0 +1,24 @@
+<?php
+	function test_parse_time($f)
+	{
+		if (preg_match("/[0-9]{12}/", $f)) {
+			$type = "YYYYMMDDHHii";
+		}
+		else if (preg_match("/[0-9]{8}\ [0-9]{4}/", $f)) {
+			$type = "YYYYMMDD HHii";
+		}
+		else if (preg_match("/[0-9]{4}-[0-9]{2}-[0-9]{2}/", $f)) {
+			$type = "YYYY-MM-DD";
+		}
+		else {
+			$type = "*unknown*";
+		}
+
+		echo "This is a $type format.\n";
+	}
+
+	$formats = array('2004-08-17 21:20', '20040817 2120');
+	foreach ($formats as $format) {
+		test_parse_time($format);
+	}
+?>
diff --git a/xdebug-3.4.5/tests/coverage/coverage.phpt b/xdebug-3.4.5/tests/coverage/coverage.phpt
new file mode 100644
index 0000000..ce6181a
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/coverage.phpt
@@ -0,0 +1,46 @@
+--TEST--
+Test with Code Coverage
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+	xdebug_start_code_coverage();
+	$file = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'coverage.inc';
+	include $file;
+	$cc = xdebug_get_code_coverage();
+	xdebug_stop_code_coverage();
+	var_dump($cc[$file]);
+?>
+--EXPECTF--
+This is a YYYY-MM-DD format.
+This is a YYYYMMDD HHii format.
+array(11) {
+  [4]=>
+  int(1)
+  [7]=>
+  int(1)
+  [8]=>
+  int(1)
+  [10]=>
+  int(1)
+  [11]=>
+  int(1)
+  [17]=>
+  int(1)
+  [18]=>
+  int(1)
+  [20]=>
+  int(1)
+  [21]=>
+  int(1)
+  [22]=>
+  int(1)
+  [25]=>
+  int(1)
+}
diff --git a/xdebug-3.4.5/tests/coverage/coverage2.phpt b/xdebug-3.4.5/tests/coverage/coverage2.phpt
new file mode 100644
index 0000000..5f9cb40
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/coverage2.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test with Code Coverage with path and branch checking
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+	xdebug_start_code_coverage(XDEBUG_CC_UNUSED);
+	$file = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'coverage.inc';
+	include $file;
+	$cc = xdebug_get_code_coverage();
+	xdebug_stop_code_coverage();
+	var_dump($cc[$file]);
+?>
+--EXPECTF--
+This is a YYYY-MM-DD format.
+This is a YYYYMMDD HHii format.
+array(%d) {
+  [4]=>
+  int(1)
+  [5]=>
+  int(-1)
+  [7]=>
+  int(1)
+  [8]=>
+  int(1)
+  [10]=>
+  int(1)
+  [11]=>
+  int(1)
+  [14]=>
+  int(-1)
+  [17]=>
+  int(1)
+  [18]=>
+  int(1)
+  [20]=>
+  int(1)
+  [21]=>
+  int(1)
+  [22]=>
+  int(1)
+  [25]=>
+  int(1)
+}
diff --git a/xdebug-3.4.5/tests/coverage/coverage3.phpt b/xdebug-3.4.5/tests/coverage/coverage3.phpt
new file mode 100644
index 0000000..e74604d
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/coverage3.phpt
@@ -0,0 +1,52 @@
+--TEST--
+Test with Code Coverage with unused lines
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+    function a($b)
+    {
+        if ($b == 0)
+        {
+            return true;
+        }
+        else
+        if ($b == 1)
+        {
+            return false;
+        }
+    };
+
+    xdebug_start_code_coverage(true);
+
+    a(1);
+
+    xdebug_stop_code_coverage(false);
+    var_dump(xdebug_get_code_coverage());
+?>
+--EXPECTF--
+array(1) {
+  ["%scoverage3.php"]=>
+  array(7) {
+    [4]=>
+    int(1)
+    [6]=>
+    int(-1)
+    [9]=>
+    int(1)
+    [11]=>
+    int(1)
+    [13]=>
+    int(-1)
+    [17]=>
+    int(1)
+    [19]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/coverage4.inc b/xdebug-3.4.5/tests/coverage/coverage4.inc
new file mode 100644
index 0000000..9a25100
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/coverage4.inc
@@ -0,0 +1,25 @@
+<?php
+interface ezcFeedParser                                                         
+{                                                                               
+    /**                                                                         
+     * Returns true if the parser can parse the provided XML document object,   
+     * false otherwise.                                                         
+     *                                                                          
+     * @param DOMDocument $xml The XML document object to check for parseability
+     * @return bool                                                             
+     */                                                                         
+    public static function canParse( DOMDocument $xml );                        
+                                                                                
+    /**                                                                         
+     * Parses the provided XML document object and returns an ezcFeed object    
+     * from it.                                                                 
+     *                                                                          
+     * @throws ezcFeedParseErrorException                                       
+     *         If an error was encountered during parsing.                      
+     *                                                                          
+     * @param DOMDocument $xml The XML document object to parse                 
+     * @return ezcFeed                                                          
+     */                                                                         
+    public function parse( DOMDocument $xml );                                  
+}                                                                               
+?>     
diff --git a/xdebug-3.4.5/tests/coverage/coverage4.phpt b/xdebug-3.4.5/tests/coverage/coverage4.phpt
new file mode 100644
index 0000000..60e9456
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/coverage4.phpt
@@ -0,0 +1,38 @@
+--TEST--
+Test with Code Coverage with abstract methods
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+    xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+
+	include 'coverage4.inc';
+
+    xdebug_stop_code_coverage(false);
+    $c = xdebug_get_code_coverage();
+	ksort($c);
+	var_dump($c);
+?>
+--EXPECTF--
+array(2) {
+  ["%scoverage4.inc"]=>
+  array(2) {
+    [25]=>
+    int(1)
+    [26]=>
+    int(1)
+  }
+  ["%scoverage4.php"]=>
+  array(2) {
+    [4]=>
+    int(1)
+    [6]=>
+    int(1)
+  }
+}
diff --git a/xdebug-3.4.5/tests/coverage/coverage5-php828.phpt b/xdebug-3.4.5/tests/coverage/coverage5-php828.phpt
new file mode 100644
index 0000000..c787c47
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/coverage5-php828.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Test with Code Coverage with path and branch checking (!opcache, <= PHP 8.2.8)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP <= 8.2.8; !opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+include 'coverage5.inc';
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+dump_branch_coverage($c);
+?>
+--EXPECTF--
+A NOT B
+{main}
+- branches
+  - 00; OP: 00-05; line: 02-05 HIT; out1: 06 HIT; out2: 08  X
+  - 06; OP: 06-07; line: 05-05 HIT; out1: 08 HIT
+  - 08; OP: 08-08; line: 05-05 HIT; out1: 09 HIT; out2: 12  X
+  - 09; OP: 09-11; line: 06-06 HIT; out1: 19 HIT
+  - 12; OP: 12-14; line: 07-07  X ; out1: 15  X ; out2: 16  X
+  - 15; OP: 15-15; line: 07-07  X ; out1: 16  X
+  - 16; OP: 16-16; line: 07-07  X ; out1: 17  X ; out2: 19  X
+  - 17; OP: 17-18; line: 08-11  X ; out1: 19  X
+  - 19; OP: 19-19; line: 11-11 HIT; out1: EX  X
+- paths
+  - 0 6 8 9 19: HIT
+  - 0 6 8 12 15 16 17 19:  X
+  - 0 6 8 12 15 16 19:  X
+  - 0 6 8 12 16 17 19:  X
+  - 0 6 8 12 16 19:  X
+  - 0 8 9 19:  X
+  - 0 8 12 15 16 17 19:  X
+  - 0 8 12 15 16 19:  X
+  - 0 8 12 16 17 19:  X
+  - 0 8 12 16 19:  X
diff --git a/xdebug-3.4.5/tests/coverage/coverage5-php829.phpt b/xdebug-3.4.5/tests/coverage/coverage5-php829.phpt
new file mode 100644
index 0000000..ca889f0
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/coverage5-php829.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Test with Code Coverage with path and branch checking (!opcache, > PHP 8.2.8)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP > 8.2.8; !opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+include 'coverage5.inc';
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+dump_branch_coverage($c);
+?>
+--EXPECTF--
+A NOT B
+{main}
+- branches
+  - 00; OP: 00-05; line: 02-05 HIT; out1: 06 HIT; out2: 08  X
+  - 06; OP: 06-07; line: 05-05 HIT; out1: 08 HIT
+  - 08; OP: 08-08; line: 05-05 HIT; out1: 09 HIT; out2: 12  X
+  - 09; OP: 09-11; line: 06-05 HIT; out1: 19 HIT
+  - 12; OP: 12-14; line: 07-07  X ; out1: 15  X ; out2: 16  X
+  - 15; OP: 15-15; line: 07-07  X ; out1: 16  X
+  - 16; OP: 16-16; line: 07-07  X ; out1: 17  X ; out2: 19  X
+  - 17; OP: 17-18; line: 08-11  X ; out1: 19  X
+  - 19; OP: 19-19; line: 11-11 HIT; out1: EX  X
+- paths
+  - 0 6 8 9 19: HIT
+  - 0 6 8 12 15 16 17 19:  X
+  - 0 6 8 12 15 16 19:  X
+  - 0 6 8 12 16 17 19:  X
+  - 0 6 8 12 16 19:  X
+  - 0 8 9 19:  X
+  - 0 8 12 15 16 17 19:  X
+  - 0 8 12 15 16 19:  X
+  - 0 8 12 16 17 19:  X
+  - 0 8 12 16 19:  X
diff --git a/xdebug-3.4.5/tests/coverage/coverage5.inc b/xdebug-3.4.5/tests/coverage/coverage5.inc
new file mode 100644
index 0000000..7bf20bf
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/coverage5.inc
@@ -0,0 +1,10 @@
+<?php
+$a = true;
+$b = false;
+
+if ($a && !$b) {
+	echo "A NOT B\n";
+} else if (!$a && $b) {
+	echo "B NOT A\n";
+}
+?>
diff --git a/xdebug-3.4.5/tests/coverage/coverage6.inc b/xdebug-3.4.5/tests/coverage/coverage6.inc
new file mode 100644
index 0000000..e4b4898
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/coverage6.inc
@@ -0,0 +1,25 @@
+<?php
+function ok($a, $b)
+{
+	if ($a && !$b) {
+		echo "A NOT B\n";
+	}
+	if (!$a && $b) {
+		echo "B NOT A\n";
+	}
+}
+
+function loop_test($a)
+{
+	do {
+		echo $a, "\n";
+	} while( --$a );
+}
+
+ok(true, false);
+ok(true, true);
+ok(false, false);
+ok(false, true);
+loop_test(1);
+loop_test(2);
+?>
diff --git a/xdebug-3.4.5/tests/coverage/coverage6.phpt b/xdebug-3.4.5/tests/coverage/coverage6.phpt
new file mode 100644
index 0000000..b6974cc
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/coverage6.phpt
@@ -0,0 +1,76 @@
+--TEST--
+Test with Code Coverage with path and branch checking (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+include 'coverage6.inc';
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+dump_branch_coverage($c);
+?>
+--EXPECT--
+A NOT B
+B NOT A
+1
+2
+1
+loop_test
+- branches
+  - 00; OP: 00-01; line: 12-15 HIT; out1: 02 HIT
+  - 02; OP: 02-07; line: 15-16 HIT; out1: 08 HIT; out2: 02 HIT
+  - 08; OP: 08-09; line: 17-17 HIT; out1: EX  X
+- paths
+  - 0 2 8: HIT
+  - 0 2 2 8: HIT
+
+ok
+- branches
+  - 00; OP: 00-03; line: 02-04 HIT; out1: 04 HIT; out2: 06 HIT
+  - 04; OP: 04-05; line: 04-04 HIT; out1: 06 HIT
+  - 06; OP: 06-06; line: 04-04 HIT; out1: 07 HIT; out2: 09 HIT
+  - 07; OP: 07-08; line: 05-07 HIT; out1: 09 HIT
+  - 09; OP: 09-11; line: 07-07 HIT; out1: 12 HIT; out2: 13 HIT
+  - 12; OP: 12-12; line: 07-07 HIT; out1: 13 HIT
+  - 13; OP: 13-13; line: 07-07 HIT; out1: 14 HIT; out2: 16 HIT
+  - 14; OP: 14-15; line: 08-10 HIT; out1: 16 HIT
+  - 16; OP: 16-17; line: 10-10 HIT; out1: EX  X
+- paths
+  - 0 4 6 7 9 12 13 14 16:  X
+  - 0 4 6 7 9 12 13 16:  X
+  - 0 4 6 7 9 13 14 16:  X
+  - 0 4 6 7 9 13 16: HIT
+  - 0 4 6 9 12 13 14 16:  X
+  - 0 4 6 9 12 13 16:  X
+  - 0 4 6 9 13 14 16:  X
+  - 0 4 6 9 13 16: HIT
+  - 0 6 7 9 12 13 14 16:  X
+  - 0 6 7 9 12 13 16:  X
+  - 0 6 7 9 13 14 16:  X
+  - 0 6 7 9 13 16:  X
+  - 0 6 9 12 13 14 16: HIT
+  - 0 6 9 12 13 16: HIT
+  - 0 6 9 13 14 16:  X
+  - 0 6 9 13 16:  X
+
+{main}
+- branches
+  - 00; OP: 00-28; line: 19-26 HIT; out1: EX  X
+- paths
+  - 0: HIT
diff --git a/xdebug-3.4.5/tests/coverage/coverage7-noopcache-php828.phpt b/xdebug-3.4.5/tests/coverage/coverage7-noopcache-php828.phpt
new file mode 100644
index 0000000..5e1c5d4
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/coverage7-noopcache-php828.phpt
@@ -0,0 +1,80 @@
+--TEST--
+Test with Code Coverage with path and branch checking (!opcache, <= PHP 8.2.8)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP <= 8.2.8; !opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+include 'coverage7.inc';
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+dump_branch_coverage($c);
+?>
+--EXPECTF--
+A NOT B
+2
+1
+foo->loop_test
+- branches
+  - 00; OP: 00-01; line: 12-15 HIT; out1: 02 HIT
+  - 02; OP: 02-07; line: 15-16 HIT; out1: 08 HIT; out2: 02 HIT
+  - 08; OP: 08-09; line: 17-17 HIT; out1: EX  X
+- paths
+  - 0 2 8:  X
+  - 0 2 2 8: HIT
+
+foo->ok
+- branches
+  - 00; OP: 00-03; line: 03-05 HIT; out1: 04 HIT; out2: 06  X
+  - 04; OP: 04-05; line: 05-05 HIT; out1: 06 HIT
+  - 06; OP: 06-06; line: 05-05 HIT; out1: 07 HIT; out2: 10  X
+  - 07; OP: 07-09; line: 06-06 HIT; out1: 17 HIT
+  - 10; OP: 10-12; line: 07-07  X ; out1: 13  X ; out2: 14  X
+  - 13; OP: 13-13; line: 07-07  X ; out1: 14  X
+  - 14; OP: 14-14; line: 07-07  X ; out1: 15  X ; out2: 17  X
+  - 15; OP: 15-16; line: 08-10  X ; out1: 17  X
+  - 17; OP: 17-18; line: 10-10 HIT; out1: EX  X
+- paths
+  - 0 4 6 7 17: HIT
+  - 0 4 6 10 13 14 15 17:  X
+  - 0 4 6 10 13 14 17:  X
+  - 0 4 6 10 14 15 17:  X
+  - 0 4 6 10 14 17:  X
+  - 0 6 7 17:  X
+  - 0 6 10 13 14 15 17:  X
+  - 0 6 10 13 14 17:  X
+  - 0 6 10 14 15 17:  X
+  - 0 6 10 14 17:  X
+
+foo->test_closure
+- branches
+  - 00; OP: 00-10; line: 21-26 HIT; out1: EX  X
+- paths
+  - 0: HIT
+
+{closure:%scoverage7.inc:21-23}
+- branches
+  - 00; OP: 00-06; line: 21-23 HIT
+- paths
+  - 0: HIT
+
+{main}
+- branches
+  - 00; OP: 00-16; line: 29-35 HIT; out1: EX  X
+- paths
+  - 0: HIT
diff --git a/xdebug-3.4.5/tests/coverage/coverage7-noopcache-php829.phpt b/xdebug-3.4.5/tests/coverage/coverage7-noopcache-php829.phpt
new file mode 100644
index 0000000..7832513
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/coverage7-noopcache-php829.phpt
@@ -0,0 +1,80 @@
+--TEST--
+Test with Code Coverage with path and branch checking (!opcache, > PHP 8.2.8)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP > 8.2.8; !opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+include 'coverage7.inc';
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+dump_branch_coverage($c);
+?>
+--EXPECTF--
+A NOT B
+2
+1
+foo->loop_test
+- branches
+  - 00; OP: 00-01; line: 12-15 HIT; out1: 02 HIT
+  - 02; OP: 02-07; line: 15-16 HIT; out1: 08 HIT; out2: 02 HIT
+  - 08; OP: 08-09; line: 17-17 HIT; out1: EX  X
+- paths
+  - 0 2 8:  X
+  - 0 2 2 8: HIT
+
+foo->ok
+- branches
+  - 00; OP: 00-03; line: 03-05 HIT; out1: 04 HIT; out2: 06  X
+  - 04; OP: 04-05; line: 05-05 HIT; out1: 06 HIT
+  - 06; OP: 06-06; line: 05-05 HIT; out1: 07 HIT; out2: 10  X
+  - 07; OP: 07-09; line: 06-05 HIT; out1: 17 HIT
+  - 10; OP: 10-12; line: 07-07  X ; out1: 13  X ; out2: 14  X
+  - 13; OP: 13-13; line: 07-07  X ; out1: 14  X
+  - 14; OP: 14-14; line: 07-07  X ; out1: 15  X ; out2: 17  X
+  - 15; OP: 15-16; line: 08-10  X ; out1: 17  X
+  - 17; OP: 17-18; line: 10-10 HIT; out1: EX  X
+- paths
+  - 0 4 6 7 17: HIT
+  - 0 4 6 10 13 14 15 17:  X
+  - 0 4 6 10 13 14 17:  X
+  - 0 4 6 10 14 15 17:  X
+  - 0 4 6 10 14 17:  X
+  - 0 6 7 17:  X
+  - 0 6 10 13 14 15 17:  X
+  - 0 6 10 13 14 17:  X
+  - 0 6 10 14 15 17:  X
+  - 0 6 10 14 17:  X
+
+foo->test_closure
+- branches
+  - 00; OP: 00-10; line: 21-26 HIT; out1: EX  X
+- paths
+  - 0: HIT
+
+{closure:%scoverage7.inc:21-23}
+- branches
+  - 00; OP: 00-06; line: 21-23 HIT
+- paths
+  - 0: HIT
+
+{main}
+- branches
+  - 00; OP: 00-16; line: 29-35 HIT; out1: EX  X
+- paths
+  - 0: HIT
diff --git a/xdebug-3.4.5/tests/coverage/coverage7.inc b/xdebug-3.4.5/tests/coverage/coverage7.inc
new file mode 100644
index 0000000..ae40039
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/coverage7.inc
@@ -0,0 +1,34 @@
+<?php
+class foo {
+	static function ok($a, $b)
+	{
+		if ($a && !$b) {
+			echo "A NOT B\n";
+		} else if (!$a && $b) {
+			echo "B NOT A\n";
+		}
+	}
+
+	function loop_test($a)
+	{
+		do {
+			echo $a, "\n";
+		} while( --$a );
+	}
+
+	function test_closure()
+	{
+		$c = function($a, $b) {
+			return $a * $b;
+		};
+
+		$r = $c(1, 2);
+	}
+}
+
+foo::ok(true, false);
+
+$f = new foo;
+$f->loop_test(2);
+$f->test_closure();
+?>
diff --git a/xdebug-3.4.5/tests/coverage/coverage_exit.inc b/xdebug-3.4.5/tests/coverage/coverage_exit.inc
new file mode 100644
index 0000000..3b0d5f3
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/coverage_exit.inc
@@ -0,0 +1,12 @@
+<?php
+function exit_test()
+{
+	if (random_int(0, 1) > 2) {
+		exit;
+
+		echo "foo";
+	}
+}
+
+exit_test();
+?>
diff --git a/xdebug-3.4.5/tests/coverage/coverage_exit.phpt b/xdebug-3.4.5/tests/coverage/coverage_exit.phpt
new file mode 100644
index 0000000..3968986
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/coverage_exit.phpt
@@ -0,0 +1,42 @@
+--TEST--
+Test for coverage with exit() (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4; !opcache');
+?>
+--INI--
+xdebug.mode=coverage
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK);
+
+include 'coverage_exit.inc';
+
+xdebug_stop_code_coverage(false);
+$c = xdebug_get_code_coverage();
+dump_branch_coverage($c);
+?>
+--EXPECT--
+exit_test
+- branches
+  - 00; OP: 00-06; line: 04-04 HIT; out1: 07  X ; out2: 12 HIT
+  - 07; OP: 07-08; line: 05-05  X ; out1: EX  X
+  - 12; OP: 12-13; line: 09-09 HIT; out1: EX  X
+- paths
+  - 0 7:  X
+  - 0 12: HIT
+
+{main}
+- branches
+  - 00; OP: 00-03; line: 11-13 HIT; out1: EX  X
+- paths
+  - 0: HIT
diff --git a/xdebug-3.4.5/tests/coverage/dump-branch-coverage.inc b/xdebug-3.4.5/tests/coverage/dump-branch-coverage.inc
new file mode 100644
index 0000000..61c354d
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/dump-branch-coverage.inc
@@ -0,0 +1,74 @@
+<?php
+require_once __DIR__ . '/../../contrib/branch-coverage-to-dot.php';
+require_once __DIR__ . '/../utils.inc';
+
+function dump_branch_coverage($info)
+{
+	file_put_contents( getTmpDir() . "xdebug-paths.dot", branch_coverage_to_dot( $info ) );
+	ksort($info);
+
+	foreach ( $info as $fname => $file )
+	{
+		if ( preg_match( '/dump-branch-coverage.inc$/', $fname ) )
+		{
+			continue;
+		}
+		if ( preg_match( '/utils.inc$/', $fname ) )
+		{
+			continue;
+		}
+
+		if ( !isset( $file['functions'] ) )
+		{
+			continue;
+		}
+
+		ksort( $file['functions'] );
+		foreach ( $file['functions'] as $fname => $function )
+		{
+
+			if ( $fname == 'branch_coverage_to_dot' )
+			{
+				continue;
+			}
+
+			echo $fname, "\n", "- branches\n";
+			foreach ( $function['branches'] as $bnr => $branch )
+			{
+				$str = '';
+
+				$str .= sprintf( "  - %02d; OP: %02d-%02d; line: %02d-%02d %3s",
+					$bnr,
+					$branch['op_start'], $branch['op_end'],
+					$branch['line_start'], $branch['line_end'],
+					$branch['hit'] ? "HIT" : " X "
+				);
+				foreach ( $branch['out'] as $key => $out )
+				{
+					if ( $out == 2147483645 )
+					{
+						$str .= sprintf("; out%d: EX %3s", $key + 1,
+							$branch['out_hit'][$key] ? "HIT" : " X "
+						);
+					}
+					else
+					{
+						$str .= sprintf("; out%d: %02d %3s", $key + 1,
+							$branch['out'][$key],
+							$branch['out_hit'][$key] ? "HIT" : " X "
+						);
+					}
+				}
+				echo rtrim( $str ). "\n";
+			}
+
+			echo "- paths\n";
+			foreach( $function['paths'] as $path )
+			{
+				echo '  - ', join( " ", $path['path'] ), ': ';
+				echo $path['hit'] ? "HIT\n" : " X\n";
+			}
+			echo "\n";
+		}
+	}
+}
diff --git a/xdebug-3.4.5/tests/coverage/jmp_frameless.inc b/xdebug-3.4.5/tests/coverage/jmp_frameless.inc
new file mode 100644
index 0000000..3609a6b
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/jmp_frameless.inc
@@ -0,0 +1,6 @@
+<?php
+namespace Foo {
+
+echo substr("Derick Cool?\n", 7);
+
+}
diff --git a/xdebug-3.4.5/tests/coverage/jmp_frameless.phpt b/xdebug-3.4.5/tests/coverage/jmp_frameless.phpt
new file mode 100644
index 0000000..14e93cc
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/jmp_frameless.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test for JMP_FRAMELESS (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4');
+?>
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+include 'dump-branch-coverage.inc';
+
+xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE | XDEBUG_CC_BRANCH_CHECK );
+
+require dirname(__FILE__) . '/jmp_frameless.inc';
+
+$cc = xdebug_get_code_coverage();
+dump_branch_coverage($cc);
+xdebug_stop_code_coverage();
+?>
+--EXPECTF--
+Cool?
+{main}
+- branches
+  - 00; OP: 00-%d; line: %d-04 HIT; out1: %d  X ; out2: %d HIT
+  - %d; OP: %d-%d; line: 04-04  X ; out1: %d  X
+  - %d; OP: %d-%d; line: 04-04 HIT; out1: %d HIT
+  - %d; OP: %d-%d; line: 04-07 HIT; out1: EX  X
+- paths
+  - 0 %d %d:  X
+  - 0 %d %d: HIT
diff --git a/xdebug-3.4.5/tests/coverage/xdebug_code_coverage_started.phpt b/xdebug-3.4.5/tests/coverage/xdebug_code_coverage_started.phpt
new file mode 100644
index 0000000..25e2d08
--- /dev/null
+++ b/xdebug-3.4.5/tests/coverage/xdebug_code_coverage_started.phpt
@@ -0,0 +1,22 @@
+--TEST--
+xdebug_code_coverage_started()
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+var_dump(xdebug_code_coverage_started());
+
+xdebug_start_code_coverage();
+var_dump(xdebug_code_coverage_started());
+
+xdebug_get_code_coverage();
+var_dump(xdebug_code_coverage_started());
+
+xdebug_stop_code_coverage();
+var_dump(xdebug_code_coverage_started());
+?>
+--EXPECTF--
+bool(false)
+bool(true)
+bool(true)
+bool(false)
diff --git a/xdebug-3.4.5/tests/debugger/break-echo.inc b/xdebug-3.4.5/tests/debugger/break-echo.inc
new file mode 100644
index 0000000..8964b30
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/break-echo.inc
@@ -0,0 +1,6 @@
+<?php
+$e = xdebug_get_headers();
+xdebug_break();
+$e = xdebug_get_headers();
+echo "Hi!\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/break-with-error.inc b/xdebug-3.4.5/tests/debugger/break-with-error.inc
new file mode 100644
index 0000000..d6008c2
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/break-with-error.inc
@@ -0,0 +1,6 @@
+<?php
+$e = xdebug_get_headers();
+@trigger_error('foo');
+$e = xdebug_get_headers();
+echo "Not triggered!\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00168.phpt b/xdebug-3.4.5/tests/debugger/bug00168.phpt
new file mode 100644
index 0000000..65e0e28
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00168.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Test for bug #168: Memory error with DBGp eval when the result is an array
+--SKIPIF--
+<?php print "skip Can only be tested through DBGp"; ?>
+--FILE--
+<?php
+$z = array("x", array("y1", "y2", "y3"), "z");
+$x = "hello world.";
+$y = "howdy world.";
+print_r($z);
+?>
+--EXPECT--
diff --git a/xdebug-3.4.5/tests/debugger/bug00209.inc b/xdebug-3.4.5/tests/debugger/bug00209.inc
new file mode 100644
index 0000000..f5db6b1
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00209.inc
@@ -0,0 +1,8 @@
+<?php
+function myFunction()
+{
+	$counter = 1 + 2;
+}
+
+register_shutdown_function('myFunction');
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00209.phpt b/xdebug-3.4.5/tests/debugger/bug00209.phpt
new file mode 100644
index 0000000..47e9ba8
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00209.phpt
@@ -0,0 +1,10 @@
+--TEST--
+Test for bug #209: Additional remote debugging session started when triggering shutdown function
+--SKIPIF--
+<?php print "skip Can only be tested through DBGp"; ?>
+--FILE--
+<?php
+include("bug00209.inc");
+echo "test";
+?>
+--EXPECT--
diff --git a/xdebug-3.4.5/tests/debugger/bug00421-001.phpt b/xdebug-3.4.5/tests/debugger/bug00421-001.phpt
new file mode 100644
index 0000000..59e2d03
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00421-001.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test for bug #421: xdebug sends back invalid characters in xml sometimes
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; class SimpleXMLIterator');
+?>
+--INI--
+xdebug.mode=debug
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$filename = realpath( dirname(__FILE__) . '/bug00421.inc' );
+
+$commands = array(
+	'feature_set -n max_depth -v 2',
+	"breakpoint_set -t line -f file://{$filename} -n 25",
+	'run',
+	'context_get -c 0',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00421.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n max_depth -v 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="max_depth" success="1"></response>
+
+-> breakpoint_set -i 2 -t line -f file://bug00421.inc -n 25
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00421.inc" lineno="25"></xdebug:message></response>
+
+-> context_get -i 4 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="$currentPageXML" fullname="$currentPageXML" type="object" classname="SimpleXMLIterator" children="1" numchildren="2" page="0" pagesize="32"><property name="@attributes" fullname="$currentPageXML-&gt;@attributes" facet="public" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="name" fullname="$currentPageXML-&gt;@attributes[&quot;name&quot;]" type="string" size="8" encoding="base64"><![CDATA[cHJvamVjdHM=]]></property></property><property name="page" fullname="$currentPageXML-&gt;page" facet="public" type="array" children="1" numchildren="2" page="0" pagesize="32"><property name="0" fullname="$currentPageXML-&gt;page[0]" type="object" classname="SimpleXMLIterator" children="1" numchildren="1"></property><property name="1" fullname="$currentPageXML-&gt;page[1]" type="object" classname="SimpleXMLIterator" children="1" numchildren="1"></property></property></property><property name="$iterator" fullname="$iterator" type="object" classname="SimpleXMLIterator" children="1" numchildren="1" page="0" pagesize="32"><property name="page" fullname="$iterator-&gt;page" facet="public" type="object" classname="SimpleXMLIterator" children="1" numchildren="2" page="0" pagesize="32"><property name="@attributes" fullname="$iterator-&gt;page-&gt;@attributes" facet="public" type="array" children="1" numchildren="1"></property><property name="page" fullname="$iterator-&gt;page-&gt;page" facet="public" type="array" children="1" numchildren="2"></property></property></property><property name="$name" fullname="$name" type="uninitialized"></property><property name="$pageXML" fullname="$pageXML" type="object" classname="SimpleXMLIterator" children="1" numchildren="2" page="0" pagesize="32"><property name="@attributes" fullname="$pageXML-&gt;@attributes" facet="public" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="name" fullname="$pageXML-&gt;@attributes[&quot;name&quot;]" type="string" size="8" encoding="base64"><![CDATA[cHJvamVjdHM=]]></property></property><property name="page" fullname="$pageXML-&gt;page" facet="public" type="array" children="1" numchildren="2" page="0" pagesize="32"><property name="0" fullname="$pageXML-&gt;page[0]" type="object" classname="SimpleXMLIterator" children="1" numchildren="1"></property><property name="1" fullname="$pageXML-&gt;page[1]" type="object" classname="SimpleXMLIterator" children="1" numchildren="1"></property></property></property><property name="$projectsIterator" fullname="$projectsIterator" type="array" children="1" numchildren="3" page="0" pagesize="32"><property name="0" fullname="$projectsIterator[0]" type="object" classname="SimpleXMLIterator" children="1" numchildren="2" page="0" pagesize="32"><property name="@attributes" fullname="$projectsIterator[0]-&gt;@attributes" facet="public" type="array" children="1" numchildren="1"></property><property name="page" fullname="$projectsIterator[0]-&gt;page" facet="public" type="array" children="1" numchildren="2"></property></property><property name="1" fullname="$projectsIterator[1]" type="object" classname="SimpleXMLIterator" children="1" numchildren="1" page="0" pagesize="32"><property name="@attributes" fullname="$projectsIterator[1]-&gt;@attributes" facet="public" type="array" children="1" numchildren="1"></property></property><property name="2" fullname="$projectsIterator[2]" type="object" classname="SimpleXMLIterator" children="1" numchildren="1" page="0" pagesize="32"><property name="@attributes" fullname="$projectsIterator[2]-&gt;@attributes" facet="public" type="array" children="1" numchildren="1"></property></property></property><property name="$siteXMLString" fullname="$siteXMLString" type="string" size="161" encoding="base64"><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNpdGU+CiAgICA8cGFnZSBuYW1lPSJwcm9qZWN0cyI+CiAgICAgICAgPHBhZ2UgbmFtZT0iUHJvamVjdCAxIiAvPgogICAgICAgIDxwYWdlIG5hbWU9IlByb2plY3QgMiIgLz4KICAgIDwvcGFnZT4KPC9zaXRlPgo=]]></property></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00421-002.phpt b/xdebug-3.4.5/tests/debugger/bug00421-002.phpt
new file mode 100644
index 0000000..240f796
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00421-002.phpt
@@ -0,0 +1,46 @@
+--TEST--
+Test for bug #421: xdebug sends back invalid characters in xml sometimes
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; class SimpleXMLIterator');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$filename = realpath( dirname(__FILE__) . '/bug00421.inc' );
+
+$commands = array(
+	'feature_set -n max_depth -v 0',
+	"breakpoint_set -t line -f file://{$filename} -n 25",
+	'run',
+	'context_get -c 0',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00421.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n max_depth -v 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="max_depth" success="1"></response>
+
+-> breakpoint_set -i 2 -t line -f file://bug00421.inc -n 25
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00421.inc" lineno="25"></xdebug:message></response>
+
+-> context_get -i 4 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="$currentPageXML" fullname="$currentPageXML" type="object" classname="SimpleXMLIterator" children="1" numchildren="2"></property><property name="$iterator" fullname="$iterator" type="object" classname="SimpleXMLIterator" children="1" numchildren="1"></property><property name="$name" fullname="$name" type="uninitialized"></property><property name="$pageXML" fullname="$pageXML" type="object" classname="SimpleXMLIterator" children="1" numchildren="2"></property><property name="$projectsIterator" fullname="$projectsIterator" type="array" children="1" numchildren="3"></property><property name="$siteXMLString" fullname="$siteXMLString" type="string" size="161" encoding="base64"><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNpdGU+CiAgICA8cGFnZSBuYW1lPSJwcm9qZWN0cyI+CiAgICAgICAgPHBhZ2UgbmFtZT0iUHJvamVjdCAxIiAvPgogICAgICAgIDxwYWdlIG5hbWU9IlByb2plY3QgMiIgLz4KICAgIDwvcGFnZT4KPC9zaXRlPgo=]]></property></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00421.inc b/xdebug-3.4.5/tests/debugger/bug00421.inc
new file mode 100644
index 0000000..70db649
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00421.inc
@@ -0,0 +1,32 @@
+<?php
+function iterateXML()
+{
+    $siteXMLString = <<<ENDXML
+<?xml version="1.0" encoding="UTF-8"?>
+<site>
+    <page name="projects">
+        <page name="Project 1" />
+        <page name="Project 2" />
+    </page>
+</site>
+
+ENDXML;
+    $siteXMLString = str_replace( "\r\n", "\n", $siteXMLString );
+    $iterator = new SimpleXMLIterator($siteXMLString);
+    $projectsIterator = $iterator->xpath("//page");
+
+    // Iterate through all 3 occurrences of <page> elements
+    foreach ($projectsIterator as $pageXML)
+    {
+        // Set a breakpoint somewhere inside this loop.
+        // You won't see any variables in the Local Variables panel until the second
+        // time through the loop. After that, they seem to work fine.
+        $currentPageXML= $pageXML;
+        $name = $currentPageXML["name"];
+        echo $name . '
+';
+    }
+}
+
+iterateXML();
+
diff --git a/xdebug-3.4.5/tests/debugger/bug00475.inc b/xdebug-3.4.5/tests/debugger/bug00475.inc
new file mode 100644
index 0000000..8c27af6
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00475.inc
@@ -0,0 +1,4 @@
+<?php
+$a = array( "example\0key" => "Value", "example" => "value\0key" );
+var_dump( $a );
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00475.phpt b/xdebug-3.4.5/tests/debugger/bug00475.phpt
new file mode 100644
index 0000000..5940f91
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00475.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #475: Property names with null chars are not sent fully to the client
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00475.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 3',
+	'run',
+	'property_get -n a',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00475.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00475.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00475.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 4 -n a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$a" fullname="$a" type="array" children="1" numchildren="2" page="0" pagesize="32"><property name="example&#0;key" fullname="$a[&quot;example\0key&quot;]" type="string" size="5" encoding="base64"><![CDATA[VmFsdWU=]]></property><property name="example" fullname="$a[&quot;example&quot;]" type="string" size="9" encoding="base64"><![CDATA[dmFsdWUAa2V5]]></property></property></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00494-php80.phpt b/xdebug-3.4.5/tests/debugger/bug00494-php80.phpt
new file mode 100644
index 0000000..dff7231
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00494-php80.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #494: Private attributes of parent class unavailable when inheriting (< PHP 8.1)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.1; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug00494.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 17",
+	'run',
+	'property_get -n o',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00494.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug00494.inc -n 17
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00494.inc" lineno="17"></xdebug:message></response>
+
+-> property_get -i 3 -n o
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$o" fullname="$o" type="object" classname="def" children="1" numchildren="2" page="0" pagesize="32"><property name="arr" fullname="$o-&gt;arr" facet="private" type="null"></property><property name="*abc*arr" fullname="$o-&gt;*abc*arr" facet="private" type="array" children="1" numchildren="2"></property></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00494-php81.phpt b/xdebug-3.4.5/tests/debugger/bug00494-php81.phpt
new file mode 100644
index 0000000..ff5a9f0
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00494-php81.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #494: Private attributes of parent class unavailable when inheriting (>= PHP 8.1)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug00494.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 17",
+	'run',
+	'property_get -n o',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00494.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug00494.inc -n 17
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00494.inc" lineno="17"></xdebug:message></response>
+
+-> property_get -i 3 -n o
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$o" fullname="$o" type="object" classname="def" children="1" numchildren="2" page="0" pagesize="32"><property name="*abc*arr" fullname="$o-&gt;*abc*arr" facet="private" type="array" children="1" numchildren="2"></property><property name="arr" fullname="$o-&gt;arr" facet="private" type="null"></property></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00494.inc b/xdebug-3.4.5/tests/debugger/bug00494.inc
new file mode 100644
index 0000000..e680135
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00494.inc
@@ -0,0 +1,18 @@
+<?php
+class abc {
+        private $arr;
+        public function __construct(){
+                $this->arr = array(
+                        0 => array("some", "values"),
+                        1 => array("some", "more", "values")
+                );
+        }
+}
+
+class def extends abc {
+        private $arr;
+}
+
+$o = new def;
+echo "o: ";
+var_dump($o);
diff --git a/xdebug-3.4.5/tests/debugger/bug00530.inc b/xdebug-3.4.5/tests/debugger/bug00530.inc
new file mode 100644
index 0000000..e5da549
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00530.inc
@@ -0,0 +1,21 @@
+<?php
+class MyClass {
+	private $a = "b";
+	private $b = null;
+
+	public function __construct() {
+		$this->b = 'b';
+		$c = 'a' . 'b';
+	}
+	// I hoover in nb over this $a
+	public function test($a) {
+		echo "a ist: " . $a;
+	}
+}
+  
+$a = 1;
+$b = 2;
+$c = new MyClass();
+$f = 3;
+$c->test('gogo'); // this call***
+$c->test('gogo');
diff --git a/xdebug-3.4.5/tests/debugger/bug00530.phpt b/xdebug-3.4.5/tests/debugger/bug00530.phpt
new file mode 100644
index 0000000..4b4c18f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00530.phpt
@@ -0,0 +1,55 @@
+--TEST--
+Test for bug #530: Xdebug returns properties out of page if there are less than max_children properties
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug00530.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 12",
+	'run',
+	'property_get -n a',
+	'property_get -n this',
+	'property_get -n this -p 0',
+	'property_get -n this -p 1',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00530.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug00530.inc -n 12
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00530.inc" lineno="12"></xdebug:message></response>
+
+-> property_get -i 3 -n a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$a" fullname="$a" type="string" size="4" encoding="base64"><![CDATA[Z29nbw==]]></property></response>
+
+-> property_get -i 4 -n this
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$this" fullname="$this" type="object" classname="MyClass" children="1" numchildren="2" page="0" pagesize="32"><property name="a" fullname="$this-&gt;a" facet="private" type="string" size="1" encoding="base64"><![CDATA[Yg==]]></property><property name="b" fullname="$this-&gt;b" facet="private" type="string" size="1" encoding="base64"><![CDATA[Yg==]]></property></property></response>
+
+-> property_get -i 5 -n this -p 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$this" fullname="$this" type="object" classname="MyClass" children="1" numchildren="2" page="0" pagesize="32"><property name="a" fullname="$this-&gt;a" facet="private" type="string" size="1" encoding="base64"><![CDATA[Yg==]]></property><property name="b" fullname="$this-&gt;b" facet="private" type="string" size="1" encoding="base64"><![CDATA[Yg==]]></property></property></response>
+
+-> property_get -i 6 -n this -p 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$this" fullname="$this" type="object" classname="MyClass" children="1" numchildren="2" page="1" pagesize="32"></property></response>
+
+-> detach -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="7" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00538.inc b/xdebug-3.4.5/tests/debugger/bug00538.inc
new file mode 100644
index 0000000..c3e835d
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00538.inc
@@ -0,0 +1,14 @@
+<?php
+    function call($param1, $param2, $param3)
+    {
+        echo $param1;
+        echo $param2;
+        echo $param3;
+
+		var_dump(xdebug_get_function_stack());
+    }
+
+    $test=getcwd();
+	$value = 'candena\\a\nb';
+	echo $value, "\n";
+    call($test, $value, 'caneda \\\a \\\\b \\\\\c|');
diff --git a/xdebug-3.4.5/tests/debugger/bug00538.phpt b/xdebug-3.4.5/tests/debugger/bug00538.phpt
new file mode 100644
index 0000000..755e719
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00538.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #538: Error in watches and call stack parameter with string containing '\\'
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug00538.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 8",
+	'run',
+	'property_get -n param2',
+	'property_get -n param3',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00538.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug00538.inc -n 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00538.inc" lineno="8"></xdebug:message></response>
+
+-> property_get -i 3 -n param2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$param2" fullname="$param2" type="string" size="12" encoding="base64"><![CDATA[Y2FuZGVuYVxhXG5i]]></property></response>
+
+-> property_get -i 4 -n param3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$param3" fullname="$param3" type="string" size="20" encoding="base64"><![CDATA[Y2FuZWRhIFxcYSBcXGIgXFxcY3w=]]></property></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00566-002.inc b/xdebug-3.4.5/tests/debugger/bug00566-002.inc
new file mode 100644
index 0000000..a986c6c
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00566-002.inc
@@ -0,0 +1,19 @@
+<?php
+
+function loadMod( $module )
+{
+	strrev( $module );
+	$module .= 's';
+	strrev( $module );
+}
+
+function loadFoo( $test )
+{
+	strrev( $test );
+	$test .= 's';
+	strrev( $test );
+}
+
+loadFoo( 'view' );
+loadMod( 'test' );
+loadMod( 'view' );
diff --git a/xdebug-3.4.5/tests/debugger/bug00566-002.phpt b/xdebug-3.4.5/tests/debugger/bug00566-002.phpt
new file mode 100644
index 0000000..ae26a59
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00566-002.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Test for bug #566: Xdebug crashes when using conditional breakpoints (2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--INI--
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug00566-002.inc' );
+
+$commands = array(
+	"breakpoint_set -n 7 -t conditional -f file://{$filename} -- JG1vZHVsZSA9PSAidmlld3Mi",
+	'run',
+	'context_get',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands, [ 'track_errors' => 'Off' ] );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00566-002.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -n 7 -t conditional -f file://bug00566-002.inc -- JG1vZHVsZSA9PSAidmlld3Mi
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00566-002.inc" lineno="7"></xdebug:message></response>
+
+-> context_get -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="3" context="0"><property name="$module" fullname="$module" type="string" size="5" encoding="base64"><![CDATA[dmlld3M=]]></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00606-002.inc b/xdebug-3.4.5/tests/debugger/bug00606-002.inc
new file mode 100644
index 0000000..426e0b6
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00606-002.inc
@@ -0,0 +1,11 @@
+<?php
+error_reporting(-1);
+function test()
+{
+	echo base64_encode("testing"), "\n";
+	hex2bin('2');
+}
+test();
+echo str_replace("x", "Done", "x with testing"), "\n";
+echo "DONE\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00606-002.phpt b/xdebug-3.4.5/tests/debugger/bug00606-002.phpt
new file mode 100644
index 0000000..3e0dd1c
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00606-002.phpt
@@ -0,0 +1,65 @@
+--TEST--
+Test for bug #606: evaluate a $this->... expression when $this is not accesible crash xdebug
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00606-002.inc';
+
+$commands = array(
+	'breakpoint_set -t exception -x Warning',
+	'breakpoint_list',
+	'run',
+	'stack_get',
+	'eval -- JHRoaXMtPnByb3BlcnR5',
+	'stack_get',
+	'step_into',
+	'stack_get',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00606-002.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t exception -x Warning
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> breakpoint_list -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="2"><breakpoint type="exception" exception="Warning" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00606-002.inc" lineno="6" exception="Warning" code="2"><![CDATA[%s]]></xdebug:message></response>
+
+-> stack_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="4"><stack where="hex2bin" level="0" type="file" filename="file://bug00606-002.inc" lineno="6"></stack><stack where="test" level="1" type="file" filename="file://bug00606-002.inc" lineno="6"></stack><stack where="{main}" level="2" type="file" filename="file://bug00606-002.inc" lineno="8"></stack></response>
+
+-> eval -i 5 -- JHRoaXMtPnByb3BlcnR5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="5" status="break" reason="ok"><error code="206"><message><![CDATA[error evaluating code: %s]]></message></error></response>
+
+-> stack_get -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="6"><stack where="hex2bin" level="0" type="file" filename="file://bug00606-002.inc" lineno="6"></stack><stack where="test" level="1" type="file" filename="file://bug00606-002.inc" lineno="6"></stack><stack where="{main}" level="2" type="file" filename="file://bug00606-002.inc" lineno="8"></stack></response>
+
+-> step_into -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://bug00606-002.inc" lineno="7"></xdebug:message></response>
+
+-> stack_get -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="8"><stack where="test" level="0" type="file" filename="file://bug00606-002.inc" lineno="7"></stack><stack where="{main}" level="1" type="file" filename="file://bug00606-002.inc" lineno="8"></stack></response>
+
+-> detach -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="9" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00606.inc b/xdebug-3.4.5/tests/debugger/bug00606.inc
new file mode 100644
index 0000000..20a761b
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00606.inc
@@ -0,0 +1,6 @@
+<?php
+var_dump( isset($this) );//breakpoint here
+var_dump( isset($this) );
+var_dump( isset($this) );
+echo "DONE\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00606.phpt b/xdebug-3.4.5/tests/debugger/bug00606.phpt
new file mode 100644
index 0000000..d1cb239
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00606.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #606: evaluate a $this->... expression when $this is not accesible crash xdebug
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00606.inc';
+
+$commands = array(
+	'step_into',
+	'eval -- JHRoaXMtPnByb3BlcnR5',
+	'step_into',
+	'stack_get',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00606.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00606.inc" lineno="2"></xdebug:message></response>
+
+-> eval -i 2 -- JHRoaXMtPnByb3BlcnR5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="2" status="break" reason="ok"><error code="206"><message><![CDATA[error evaluating code:%s]]></message></error></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00606.inc" lineno="3"></xdebug:message></response>
+
+-> stack_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="4"><stack where="{main}" level="0" type="file" filename="file://bug00606.inc" lineno="3"></stack></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00614-php80.phpt b/xdebug-3.4.5/tests/debugger/bug00614-php80.phpt
new file mode 100644
index 0000000..de5b402
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00614-php80.phpt
@@ -0,0 +1,60 @@
+--TEST--
+Test for bug #614: local variables loses class members (< PHP 8.1)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.1; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug00614.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 62",
+	'run',
+	'stack_get',
+	'property_get -n $e',
+	'property_get -n $e -p 1',
+	'property_get -n $e->k',
+	'property_get -n $e->*Base*k',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00614.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug00614.inc -n 62
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00614.inc" lineno="62"></xdebug:message></response>
+
+-> stack_get -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="3"><stack where="{main}" level="0" type="file" filename="file://bug00614.inc" lineno="62"></stack></response>
+
+-> property_get -i 4 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$e" fullname="$e" type="object" classname="Extension" children="1" numchildren="33" page="0" pagesize="32"><property name="k" fullname="$e-&gt;k" facet="private" type="int"><![CDATA[77]]></property><property name="m" fullname="$e-&gt;m" facet="private" type="int"><![CDATA[66]]></property><property name="j" fullname="$e-&gt;j" facet="private" type="int"><![CDATA[55]]></property><property name="*Base*a" fullname="$e-&gt;*Base*a" facet="private" type="null"></property><property name="*Base*b" fullname="$e-&gt;*Base*b" facet="private" type="null"></property><property name="*Base*c" fullname="$e-&gt;*Base*c" facet="private" type="null"></property><property name="*Base*d" fullname="$e-&gt;*Base*d" facet="private" type="null"></property><property name="*Base*e" fullname="$e-&gt;*Base*e" facet="private" type="null"></property><property name="*Base*f" fullname="$e-&gt;*Base*f" facet="private" type="null"></property><property name="*Base*g" fullname="$e-&gt;*Base*g" facet="private" type="null"></property><property name="*Base*h" fullname="$e-&gt;*Base*h" facet="private" type="null"></property><property name="*Base*i" fullname="$e-&gt;*Base*i" facet="private" type="int"><![CDATA[99]]></property><property name="*Base*l" fullname="$e-&gt;*Base*l" facet="private" type="null"></property><property name="*Base*n" fullname="$e-&gt;*Base*n" facet="private" type="null"></property><property name="*Base*o" fullname="$e-&gt;*Base*o" facet="private" type="null"></property><property name="*Base*p" fullname="$e-&gt;*Base*p" facet="private" type="null"></property><property name="*Base*q" fullname="$e-&gt;*Base*q" facet="private" type="null"></property><property name="*Base*r" fullname="$e-&gt;*Base*r" facet="private" type="null"></property><property name="*Base*s" fullname="$e-&gt;*Base*s" facet="private" type="null"></property><property name="*Base*t" fullname="$e-&gt;*Base*t" facet="private" type="null"></property><property name="*Base*u" fullname="$e-&gt;*Base*u" facet="private" type="null"></property><property name="*Base*v" fullname="$e-&gt;*Base*v" facet="private" type="null"></property><property name="*Base*w" fullname="$e-&gt;*Base*w" facet="private" type="null"></property><property name="*Base*x" fullname="$e-&gt;*Base*x" facet="private" type="null"></property><property name="*Base*y" fullname="$e-&gt;*Base*y" facet="private" type="null"></property><property name="*Base*z" fullname="$e-&gt;*Base*z" facet="private" type="null"></property><property name="*Base*z1" fullname="$e-&gt;*Base*z1" facet="private" type="null"></property><property name="*Base*z2" fullname="$e-&gt;*Base*z2" facet="private" type="null"></property><property name="*Base*z3" fullname="$e-&gt;*Base*z3" facet="private" type="null"></property><property name="*Base*z4" fullname="$e-&gt;*Base*z4" facet="private" type="null"></property><property name="*Base*j" fullname="$e-&gt;*Base*j" facet="private" type="int"><![CDATA[88]]></property><property name="*Base*k" fullname="$e-&gt;*Base*k" facet="private" type="int"><![CDATA[11]]></property></property></response>
+
+-> property_get -i 5 -n $e -p 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$e" fullname="$e" type="object" classname="Extension" children="1" numchildren="33" page="1" pagesize="32"><property name="*Base*m" fullname="$e-&gt;*Base*m" facet="private" type="null"></property></property></response>
+
+-> property_get -i 6 -n $e->k
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$e-&gt;k" fullname="$e-&gt;k" type="int"><![CDATA[77]]></property></response>
+
+-> property_get -i 7 -n $e->*Base*k
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="$e-&gt;*Base*k" fullname="$e-&gt;*Base*k" type="int"><![CDATA[11]]></property></response>
+
+-> detach -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="8" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00614-php81.phpt b/xdebug-3.4.5/tests/debugger/bug00614-php81.phpt
new file mode 100644
index 0000000..3ed9469
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00614-php81.phpt
@@ -0,0 +1,60 @@
+--TEST--
+Test for bug #614: local variables loses class members (>= PHP 8.1)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug00614.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 62",
+	'run',
+	'stack_get',
+	'property_get -n $e',
+	'property_get -n $e -p 1',
+	'property_get -n $e->k',
+	'property_get -n $e->*Base*k',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00614.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug00614.inc -n 62
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00614.inc" lineno="62"></xdebug:message></response>
+
+-> stack_get -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="3"><stack where="{main}" level="0" type="file" filename="file://bug00614.inc" lineno="62"></stack></response>
+
+-> property_get -i 4 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$e" fullname="$e" type="object" classname="Extension" children="1" numchildren="33" page="0" pagesize="32"><property name="*Base*a" fullname="$e-&gt;*Base*a" facet="private" type="null"></property><property name="*Base*b" fullname="$e-&gt;*Base*b" facet="private" type="null"></property><property name="*Base*c" fullname="$e-&gt;*Base*c" facet="private" type="null"></property><property name="*Base*d" fullname="$e-&gt;*Base*d" facet="private" type="null"></property><property name="*Base*e" fullname="$e-&gt;*Base*e" facet="private" type="null"></property><property name="*Base*f" fullname="$e-&gt;*Base*f" facet="private" type="null"></property><property name="*Base*g" fullname="$e-&gt;*Base*g" facet="private" type="null"></property><property name="*Base*h" fullname="$e-&gt;*Base*h" facet="private" type="null"></property><property name="*Base*i" fullname="$e-&gt;*Base*i" facet="private" type="int"><![CDATA[99]]></property><property name="*Base*j" fullname="$e-&gt;*Base*j" facet="private" type="int"><![CDATA[88]]></property><property name="*Base*k" fullname="$e-&gt;*Base*k" facet="private" type="int"><![CDATA[11]]></property><property name="*Base*l" fullname="$e-&gt;*Base*l" facet="private" type="null"></property><property name="*Base*m" fullname="$e-&gt;*Base*m" facet="private" type="null"></property><property name="*Base*n" fullname="$e-&gt;*Base*n" facet="private" type="null"></property><property name="*Base*o" fullname="$e-&gt;*Base*o" facet="private" type="null"></property><property name="*Base*p" fullname="$e-&gt;*Base*p" facet="private" type="null"></property><property name="*Base*q" fullname="$e-&gt;*Base*q" facet="private" type="null"></property><property name="*Base*r" fullname="$e-&gt;*Base*r" facet="private" type="null"></property><property name="*Base*s" fullname="$e-&gt;*Base*s" facet="private" type="null"></property><property name="*Base*t" fullname="$e-&gt;*Base*t" facet="private" type="null"></property><property name="*Base*u" fullname="$e-&gt;*Base*u" facet="private" type="null"></property><property name="*Base*v" fullname="$e-&gt;*Base*v" facet="private" type="null"></property><property name="*Base*w" fullname="$e-&gt;*Base*w" facet="private" type="null"></property><property name="*Base*x" fullname="$e-&gt;*Base*x" facet="private" type="null"></property><property name="*Base*y" fullname="$e-&gt;*Base*y" facet="private" type="null"></property><property name="*Base*z" fullname="$e-&gt;*Base*z" facet="private" type="null"></property><property name="*Base*z1" fullname="$e-&gt;*Base*z1" facet="private" type="null"></property><property name="*Base*z2" fullname="$e-&gt;*Base*z2" facet="private" type="null"></property><property name="*Base*z3" fullname="$e-&gt;*Base*z3" facet="private" type="null"></property><property name="*Base*z4" fullname="$e-&gt;*Base*z4" facet="private" type="null"></property><property name="k" fullname="$e-&gt;k" facet="private" type="int"><![CDATA[77]]></property><property name="m" fullname="$e-&gt;m" facet="private" type="int"><![CDATA[66]]></property></property></response>
+
+-> property_get -i 5 -n $e -p 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$e" fullname="$e" type="object" classname="Extension" children="1" numchildren="33" page="1" pagesize="32"><property name="j" fullname="$e-&gt;j" facet="private" type="int"><![CDATA[55]]></property></property></response>
+
+-> property_get -i 6 -n $e->k
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$e-&gt;k" fullname="$e-&gt;k" type="int"><![CDATA[77]]></property></response>
+
+-> property_get -i 7 -n $e->*Base*k
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="$e-&gt;*Base*k" fullname="$e-&gt;*Base*k" type="int"><![CDATA[11]]></property></response>
+
+-> detach -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="8" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00614.inc b/xdebug-3.4.5/tests/debugger/bug00614.inc
new file mode 100644
index 0000000..93d8a99
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00614.inc
@@ -0,0 +1,63 @@
+<?php
+class Base
+{
+    private $a;
+    private $b;
+    private $c;
+    private $d;
+    private $e;
+    private $f;
+    private $g;
+    private $h;
+    private $i;
+    private $j;
+    private $k;
+    private $l;
+    private $m;
+    private $n;
+    private $o;
+    private $p;
+    private $q;
+    private $r;
+    private $s;
+    private $t;
+    private $u;
+    private $v;
+    private $w;
+    private $x;
+    private $y;
+    private $z;
+    private $z1; // comment these last few variable out and $z then disappears from member list!
+    private $z2;
+    private $z3;
+    private $z4;
+    
+    public function __construct()
+    {
+        $this->i = 99;
+        $this->j = 88;
+        $this->k = 11;
+    }
+}
+
+class Extension extends Base
+{
+    private $k;
+    private $m;
+    private $j;
+    
+    public function __construct()
+    {
+        $this->k = 77;
+        $this->m = 66;
+        $this->j = 55;
+
+        parent::__construct();
+    }
+}
+
+$b = new Base();
+$e = new Extension();
+
+echo "Hello World\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00619.inc b/xdebug-3.4.5/tests/debugger/bug00619.inc
new file mode 100644
index 0000000..ea6edd9
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00619.inc
@@ -0,0 +1,21 @@
+<?php
+abstract class P {
+
+    private $private_prop = ''; // does NOT show up
+
+    protected $protected_prop = ''; // Shows
+
+    public $public_prop = ''; // Shows
+
+    protected function test() {}
+
+}
+
+class C extends P {
+
+    public function __construct() {} // Set "break point" here
+
+}
+
+$c = new C();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00619.phpt b/xdebug-3.4.5/tests/debugger/bug00619.phpt
new file mode 100644
index 0000000..dc94590
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00619.phpt
@@ -0,0 +1,55 @@
+--TEST--
+Test for bug #619: Xdebug does NOT show "private" properties defined in parent classes
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug00619.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 16",
+	'run',
+	'stack_get',
+	'property_get -n this',
+	'property_get -n $this',
+	'property_get -n $this->*P*private_prop',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00619.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug00619.inc -n 16
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00619.inc" lineno="16"></xdebug:message></response>
+
+-> stack_get -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="3"><stack where="C-&gt;__construct" level="0" type="file" filename="file://bug00619.inc" lineno="16"></stack><stack where="{main}" level="1" type="file" filename="file://bug00619.inc" lineno="20"></stack></response>
+
+-> property_get -i 4 -n this
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$this" fullname="$this" type="object" classname="C" children="1" numchildren="3" page="0" pagesize="32"><property name="*P*private_prop" fullname="$this-&gt;*P*private_prop" facet="private" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="protected_prop" fullname="$this-&gt;protected_prop" facet="protected" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="public_prop" fullname="$this-&gt;public_prop" facet="public" type="string" size="0" encoding="base64"><![CDATA[]]></property></property></response>
+
+-> property_get -i 5 -n $this
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$this" fullname="$this" type="object" classname="C" children="1" numchildren="3" page="0" pagesize="32"><property name="*P*private_prop" fullname="$this-&gt;*P*private_prop" facet="private" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="protected_prop" fullname="$this-&gt;protected_prop" facet="protected" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="public_prop" fullname="$this-&gt;public_prop" facet="public" type="string" size="0" encoding="base64"><![CDATA[]]></property></property></response>
+
+-> property_get -i 6 -n $this->*P*private_prop
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$this-&gt;*P*private_prop" fullname="$this-&gt;*P*private_prop" type="string" size="0" encoding="base64"><![CDATA[]]></property></response>
+
+-> detach -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="7" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00622.inc b/xdebug-3.4.5/tests/debugger/bug00622.inc
new file mode 100644
index 0000000..5ace9cb
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00622.inc
@@ -0,0 +1,12 @@
+<?php
+$text = <<<EOD
+function foo(\$a1, \$b1) {
+  echo("In foo\\nline two of echo\\n");
+  return \$a1 = \$b1;
+}
+EOD;
+$text = str_replace("\r\n", "\n", $text);
+ eval( $text );
+$res = foo(3, 4);
+echo $res, "\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00622.phpt b/xdebug-3.4.5/tests/debugger/bug00622.phpt
new file mode 100644
index 0000000..f25c510
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00622.phpt
@@ -0,0 +1,70 @@
+--TEST--
+Test for bug #622: Working with eval() code is inconvenient and difficult
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00622.inc';
+
+$commands = array(
+	'step_into',
+	'step_into',
+	'step_over',
+	'step_into',
+	'step_into',
+	'source -f dbgp://1',
+	'step_into',
+	'stack_get',
+	'step_into',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00622.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00622.inc" lineno="%d"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00622.inc" lineno="8"></xdebug:message></response>
+
+-> step_over -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00622.inc" lineno="9"></xdebug:message></response>
+
+-> step_into -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug00622.inc" lineno="10"></xdebug:message></response>
+
+-> step_into -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="5" status="break" reason="ok"><xdebug:message filename="dbgp://1" lineno="2"></xdebug:message></response>
+
+-> source -i 6 -f dbgp://1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="source" transaction_id="6" encoding="base64"><![CDATA[ZnVuY3Rpb24gZm9vKCRhMSwgJGIxKSB7CiAgZWNobygiSW4gZm9vXG5saW5lIHR3byBvZiBlY2hvXG4iKTsKICByZXR1cm4gJGExID0gJGIxOwp9]]></response>
+
+-> step_into -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="7" status="break" reason="ok"><xdebug:message filename="dbgp://1" lineno="3"></xdebug:message></response>
+
+-> stack_get -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="8"><stack where="foo" level="0" type="eval" filename="dbgp://1" lineno="3"></stack><stack where="{main}" level="1" type="file" filename="file://bug00622.inc" lineno="10"></stack></response>
+
+-> step_into -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="9" status="break" reason="ok"><xdebug:message filename="file://bug00622.inc" lineno="11"></xdebug:message></response>
+
+-> detach -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="10" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00623.inc b/xdebug-3.4.5/tests/debugger/bug00623.inc
new file mode 100644
index 0000000..37a3a9a
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00623.inc
@@ -0,0 +1,27 @@
+<?php
+
+class testclassDaddy {
+    static private $daddyPriv = array(1, 2, 3, 9);
+}
+
+class testclass extends testclassDaddy {
+    static protected $nameProt;
+    static private $namePriv;
+    static public function show_name() {
+        self::$nameProt = new testclass;
+    }
+    
+    public function show_name_dyn() {
+        //do something with $name
+        self::$namePriv = array( "Sir John\n", self::$namePriv );
+		return self::$namePriv;
+    }
+}
+
+testclass::show_name();
+
+$t = new testclass;
+var_dump($t->show_name_dyn());
+var_dump($t->show_name_dyn());
+
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00623.phpt b/xdebug-3.4.5/tests/debugger/bug00623.phpt
new file mode 100644
index 0000000..046985f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00623.phpt
@@ -0,0 +1,95 @@
+--TEST--
+Test for bug #623: Static properties of a class can be evaluated only with difficulty
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug00623.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 12",
+	"breakpoint_set -t line -f file://{$filename} -n 24",
+	'run',
+	'context_get',
+	'property_get -n ::',
+	'property_get -n ::*testclassDaddy*daddyPriv',
+	'property_get -n ::nameProt::*testclassDaddy*daddyPriv',
+	'property_get -n ::*testclassDaddy*daddyPriv[3]',
+	'run',
+	'context_get',
+	'property_get -n t',
+	'property_get -n $t',
+	'property_get -n $t::',
+	'property_get -n $t::nameProt',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00623.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug00623.inc -n 12
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> breakpoint_set -i 2 -t line -f file://bug00623.inc -n 24
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0002"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00623.inc" lineno="12"></xdebug:message></response>
+
+-> context_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="::" fullname="::" type="object" classname="testclass" children="1" numchildren="3"><property name="::nameProt" fullname="::nameProt" type="object" classname="testclass" children="1" numchildren="3" page="0" pagesize="32" facet="static protected"><property name="nameProt" fullname="::nameProt::nameProt" facet="static protected" type="object" classname="testclass" children="1" numchildren="3"></property><property name="namePriv" fullname="::nameProt::namePriv" facet="static private" type="null"></property><property name="*testclassDaddy*daddyPriv" fullname="::nameProt::*testclassDaddy*daddyPriv" facet="static private" type="array" children="1" numchildren="4"></property></property><property name="::namePriv" fullname="::namePriv" type="null" facet="static private"></property><property name="::*testclassDaddy*daddyPriv" fullname="::*testclassDaddy*daddyPriv" type="array" children="1" numchildren="4" page="0" pagesize="32" facet="static private"><property name="0" fullname="::*testclassDaddy*daddyPriv[0]" type="int"><![CDATA[1]]></property><property name="1" fullname="::*testclassDaddy*daddyPriv[1]" type="int"><![CDATA[2]]></property><property name="2" fullname="::*testclassDaddy*daddyPriv[2]" type="int"><![CDATA[3]]></property><property name="3" fullname="::*testclassDaddy*daddyPriv[3]" type="int"><![CDATA[9]]></property></property></property></response>
+
+-> property_get -i 5 -n ::
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5" status="break" reason="ok"><error code="300"><message><![CDATA[can not get property]]></message></error></response>
+
+-> property_get -i 6 -n ::*testclassDaddy*daddyPriv
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="::*testclassDaddy*daddyPriv" fullname="::*testclassDaddy*daddyPriv" type="array" children="1" numchildren="4" page="0" pagesize="32"><property name="0" fullname="::*testclassDaddy*daddyPriv[0]" type="int"><![CDATA[1]]></property><property name="1" fullname="::*testclassDaddy*daddyPriv[1]" type="int"><![CDATA[2]]></property><property name="2" fullname="::*testclassDaddy*daddyPriv[2]" type="int"><![CDATA[3]]></property><property name="3" fullname="::*testclassDaddy*daddyPriv[3]" type="int"><![CDATA[9]]></property></property></response>
+
+-> property_get -i 7 -n ::nameProt::*testclassDaddy*daddyPriv
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="::nameProt::*testclassDaddy*daddyPriv" fullname="::nameProt::*testclassDaddy*daddyPriv" type="array" children="1" numchildren="4" page="0" pagesize="32"><property name="0" fullname="::nameProt::*testclassDaddy*daddyPriv[0]" type="int"><![CDATA[1]]></property><property name="1" fullname="::nameProt::*testclassDaddy*daddyPriv[1]" type="int"><![CDATA[2]]></property><property name="2" fullname="::nameProt::*testclassDaddy*daddyPriv[2]" type="int"><![CDATA[3]]></property><property name="3" fullname="::nameProt::*testclassDaddy*daddyPriv[3]" type="int"><![CDATA[9]]></property></property></response>
+
+-> property_get -i 8 -n ::*testclassDaddy*daddyPriv[3]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8"><property name="::*testclassDaddy*daddyPriv[3]" fullname="::*testclassDaddy*daddyPriv[3]" type="int"><![CDATA[9]]></property></response>
+
+-> run -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="9" status="break" reason="ok"><xdebug:message filename="file://bug00623.inc" lineno="24"></xdebug:message></response>
+
+-> context_get -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="10" context="0"><property name="$t" fullname="$t" type="object" classname="testclass" children="1" numchildren="3" page="0" pagesize="32"><property name="nameProt" fullname="$t::nameProt" facet="static protected" type="object" classname="testclass" children="1" numchildren="3"></property><property name="namePriv" fullname="$t::namePriv" facet="static private" type="null"></property><property name="*testclassDaddy*daddyPriv" fullname="$t::*testclassDaddy*daddyPriv" facet="static private" type="array" children="1" numchildren="4"></property></property></response>
+
+-> property_get -i 11 -n t
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="11"><property name="$t" fullname="$t" type="object" classname="testclass" children="1" numchildren="3" page="0" pagesize="32"><property name="nameProt" fullname="$t::nameProt" facet="static protected" type="object" classname="testclass" children="1" numchildren="3"></property><property name="namePriv" fullname="$t::namePriv" facet="static private" type="null"></property><property name="*testclassDaddy*daddyPriv" fullname="$t::*testclassDaddy*daddyPriv" facet="static private" type="array" children="1" numchildren="4"></property></property></response>
+
+-> property_get -i 12 -n $t
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="12"><property name="$t" fullname="$t" type="object" classname="testclass" children="1" numchildren="3" page="0" pagesize="32"><property name="nameProt" fullname="$t::nameProt" facet="static protected" type="object" classname="testclass" children="1" numchildren="3"></property><property name="namePriv" fullname="$t::namePriv" facet="static private" type="null"></property><property name="*testclassDaddy*daddyPriv" fullname="$t::*testclassDaddy*daddyPriv" facet="static private" type="array" children="1" numchildren="4"></property></property></response>
+
+-> property_get -i 13 -n $t::
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="13"><property name="$t" fullname="$t" type="object" classname="testclass" children="1" numchildren="3" page="0" pagesize="32"><property name="nameProt" fullname="$t::nameProt" facet="static protected" type="object" classname="testclass" children="1" numchildren="3"></property><property name="namePriv" fullname="$t::namePriv" facet="static private" type="null"></property><property name="*testclassDaddy*daddyPriv" fullname="$t::*testclassDaddy*daddyPriv" facet="static private" type="array" children="1" numchildren="4"></property></property></response>
+
+-> property_get -i 14 -n $t::nameProt
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="14"><property name="$t::nameProt" fullname="$t::nameProt" type="object" classname="testclass" children="1" numchildren="3" page="0" pagesize="32"><property name="nameProt" fullname="$t::nameProt::nameProt" facet="static protected" type="object" classname="testclass" children="1" numchildren="3"></property><property name="namePriv" fullname="$t::nameProt::namePriv" facet="static private" type="null"></property><property name="*testclassDaddy*daddyPriv" fullname="$t::nameProt::*testclassDaddy*daddyPriv" facet="static private" type="array" children="1" numchildren="4"></property></property></response>
+
+-> detach -i 15
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="15" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00627-symlink-target.inc b/xdebug-3.4.5/tests/debugger/bug00627-symlink-target.inc
new file mode 100644
index 0000000..cf9479a
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00627-symlink-target.inc
@@ -0,0 +1,6 @@
+<?php
+function inSymlinkedFile()
+{
+	echo strlen("In the symlinked file\n"), "\n";
+}
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00627-symlink.inc b/xdebug-3.4.5/tests/debugger/bug00627-symlink.inc
new file mode 120000
index 0000000..53bb323
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00627-symlink.inc
@@ -0,0 +1 @@
+bug00627-symlink-target.inc
\ No newline at end of file
diff --git a/xdebug-3.4.5/tests/debugger/bug00627.inc b/xdebug-3.4.5/tests/debugger/bug00627.inc
new file mode 100644
index 0000000..6dd25de
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00627.inc
@@ -0,0 +1,10 @@
+<?php
+require getenv("XDEBUG_TEST_DIR") . '/bug00627-symlink.inc';
+
+function normal()
+{
+	inSymlinkedFile();
+}
+
+normal();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00627.phpt b/xdebug-3.4.5/tests/debugger/bug00627.phpt
new file mode 100644
index 0000000..1d237e9
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00627.phpt
@@ -0,0 +1,47 @@
+--TEST--
+Test for bug #627: breakpoints set in symlinked files don't trigger
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; !win');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$dir = dirname(__FILE__);
+
+$filename = $dir . '/bug00627.inc';
+
+$commands = array(
+	"stdout -c 1",
+	"breakpoint_set -t line -f file://$dir/bug00627-symlink.inc -n 4",
+	"run",
+	'context_get -d 0',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands, [], ['env' => ['XDEBUG_TEST_DIR' => $dir]] );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00627.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> stdout -i 1 -c 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stdout" transaction_id="1" success="1"></response>
+
+-> breakpoint_set -i 2 -t line -f file://bug00627-symlink.inc -n 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00627-symlink-target.inc" lineno="4"></xdebug:message></response>
+
+-> context_get -i 4 -d 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00667.inc b/xdebug-3.4.5/tests/debugger/bug00667.inc
new file mode 100644
index 0000000..7658093
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00667.inc
@@ -0,0 +1,10 @@
+<?php
+class Test {
+  public static $staticMember = 5;
+}
+
+Test::$staticMember = 10;
+
+echo Test::$staticMember;
+
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00667.phpt b/xdebug-3.4.5/tests/debugger/bug00667.phpt
new file mode 100644
index 0000000..822d831
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00667.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Test for bug #667: Class static members are shown in the locals when using context_get
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug00667.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 6",
+	'run',
+	'context_get -d 0 -c 0',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00667.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug00667.inc -n 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00667.inc" lineno="6"></xdebug:message></response>
+
+-> context_get -i 3 -d 0 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="3" context="0"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00678-001.inc b/xdebug-3.4.5/tests/debugger/bug00678-001.inc
new file mode 100644
index 0000000..0dd1e4f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00678-001.inc
@@ -0,0 +1,9 @@
+<?php
+function test() {
+	echo base64_decode("bmV3IE5vbkV4aXN0c0NsYXNz"), "\n";
+}
+
+test();
+echo base64_decode("bmV3IE5vbkV4aXN0c0NsYXNz"), "\n";
+echo "DONE\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00678-001.phpt b/xdebug-3.4.5/tests/debugger/bug00678-001.phpt
new file mode 100644
index 0000000..3a17aae
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00678-001.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #678: Xdebug segfault when IDE send "eval NonExistsClass"
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug00678-001.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 4",
+	'run',
+	'stack_get',
+	'eval -- bmV3IE5vbkV4aXN0c0NsYXNz',
+	'stack_get',
+	'step_into',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00678-001.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug00678-001.inc -n 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00678-001.inc" lineno="4"></xdebug:message></response>
+
+-> stack_get -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="3"><stack where="test" level="0" type="file" filename="file://bug00678-001.inc" lineno="4"></stack><stack where="{main}" level="1" type="file" filename="file://bug00678-001.inc" lineno="6"></stack></response>
+
+-> eval -i 4 -- bmV3IE5vbkV4aXN0c0NsYXNz
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="4" status="break" reason="ok"><error code="206"><message><![CDATA[error evaluating code:%s]]></message></error></response>
+
+-> stack_get -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="5"><stack where="test" level="0" type="file" filename="file://bug00678-001.inc" lineno="4"></stack><stack where="{main}" level="1" type="file" filename="file://bug00678-001.inc" lineno="6"></stack></response>
+
+-> step_into -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://bug00678-001.inc" lineno="7"></xdebug:message></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00678-002.inc b/xdebug-3.4.5/tests/debugger/bug00678-002.inc
new file mode 100644
index 0000000..93a714e
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00678-002.inc
@@ -0,0 +1,10 @@
+<?php
+function test() {
+	echo base64_decode("bmV3IE5vbkV4aXN0c0NsYXNz"), "\n";
+	xdebug_break();
+}
+
+test();
+echo base64_decode("bmV3IE5vbkV4aXN0c0NsYXNz"), "\n";
+echo "DONE\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00678-002.phpt b/xdebug-3.4.5/tests/debugger/bug00678-002.phpt
new file mode 100644
index 0000000..c8d8b4b
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00678-002.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #678: Xdebug segfault when IDE send "eval NonExistsClass"
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00678-002.inc';
+
+$commands = array(
+	'run',
+	'stack_get',
+	'eval -- bmV3IE5vbkV4aXN0c0NsYXNz',
+	'stack_get',
+	'run',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00678-002.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> run -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00678-002.inc" lineno="5"></xdebug:message></response>
+
+-> stack_get -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="2"><stack where="test" level="0" type="file" filename="file://bug00678-002.inc" lineno="5"></stack><stack where="{main}" level="1" type="file" filename="file://bug00678-002.inc" lineno="7"></stack></response>
+
+-> eval -i 3 -- bmV3IE5vbkV4aXN0c0NsYXNz
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="3" status="break" reason="ok"><error code="206"><message><![CDATA[error evaluating code: %s]]></message></error></response>
+
+-> stack_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="4"><stack where="test" level="0" type="file" filename="file://bug00678-002.inc" lineno="5"></stack><stack where="{main}" level="1" type="file" filename="file://bug00678-002.inc" lineno="7"></stack></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00686.inc b/xdebug-3.4.5/tests/debugger/bug00686.inc
new file mode 100644
index 0000000..8b8a6e7
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00686.inc
@@ -0,0 +1,13 @@
+<?php
+$object1 = new stdClass();
+$object1->someProperty = "o1";
+
+$object2 = new stdClass();
+$object2->someProperty = "o2";
+
+$storage = new SplObjectStorage();
+$storage->attach($object1);
+$storage->attach($object2);
+
+var_dump($storage); //breakpoint here
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00686.phpt b/xdebug-3.4.5/tests/debugger/bug00686.phpt
new file mode 100644
index 0000000..0899c55
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00686.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #686: Not possible to inspect SplObjectStorage instances with Xdebug
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00686.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 12',
+	'run',
+	'property_get -n $storage',
+	'property_get -n $storage->storage',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00686.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00686.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 12
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00686.inc" lineno="12"></xdebug:message></response>
+
+-> property_get -i 4 -n $storage
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$storage" fullname="$storage" type="object" classname="SplObjectStorage" children="1" numchildren="1" page="0" pagesize="32"><property name="storage" fullname="$storage-&gt;storage" facet="private" type="array" children="1" numchildren="2"></property></property></response>
+
+-> property_get -i 5 -n $storage->storage
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$storage-&gt;storage" fullname="$storage-&gt;storage" type="array" children="1" numchildren="2" page="0" pagesize="32"><property name="%s" fullname="$storage-&gt;storage[%s]" type="array" children="1" numchildren="2"></property><property name="%s" fullname="$storage-&gt;storage[%s]" type="array" children="1" numchildren="2"></property></property></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00687.inc b/xdebug-3.4.5/tests/debugger/bug00687.inc
new file mode 100644
index 0000000..9c31c0f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00687.inc
@@ -0,0 +1,5 @@
+<?php
+$nameHolder = 'name';
+$$nameHolder = 'value';
+var_dump($$nameHolder)
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00687.phpt b/xdebug-3.4.5/tests/debugger/bug00687.phpt
new file mode 100644
index 0000000..a1e8106
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00687.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #687: Xdebug does not show dynamically defined variable
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00687.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 4',
+	'run',
+	'context_get',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00687.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00687.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00687.inc" lineno="4"></xdebug:message></response>
+
+-> context_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="$name" fullname="$name" type="string" size="5" encoding="base64"><![CDATA[dmFsdWU=]]></property><property name="$nameHolder" fullname="$nameHolder" type="string" size="4" encoding="base64"><![CDATA[bmFtZQ==]]></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00688.inc b/xdebug-3.4.5/tests/debugger/bug00688.inc
new file mode 100644
index 0000000..8a63758
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00688.inc
@@ -0,0 +1,4 @@
+<?php
+function_exists("undefined_function");//breakpoint here, evaluate expression "undefined_function()", then step over
+function_exists("undefined_function");
+function_exists("undefined_function");
diff --git a/xdebug-3.4.5/tests/debugger/bug00688.phpt b/xdebug-3.4.5/tests/debugger/bug00688.phpt
new file mode 100644
index 0000000..c87a510
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00688.phpt
@@ -0,0 +1,55 @@
+--TEST--
+Test for bug #688: Call to not yet defined function aborts the session
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00689.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 3',
+	'run',
+	'eval -- dW5kZWZpbmVkX2Z1bmN0aW9uKCk7',
+	'stack_get',
+	'step_into',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00689.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00689.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00689.inc" lineno="3"></xdebug:message></response>
+
+-> eval -i 4 -- dW5kZWZpbmVkX2Z1bmN0aW9uKCk7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="4" status="break" reason="ok"><error code="206"><message><![CDATA[error evaluating code:%s]]></message></error></response>
+
+-> stack_get -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="5"><stack where="{main}" level="0" type="file" filename="file://bug00689.inc" lineno="3"></stack></response>
+
+-> step_into -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://bug00689.inc" lineno="4"></xdebug:message></response>
+
+-> detach -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="7" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00689.inc b/xdebug-3.4.5/tests/debugger/bug00689.inc
new file mode 100644
index 0000000..784080c
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00689.inc
@@ -0,0 +1,6 @@
+<?php
+echo "";
+echo "";
+echo strlen("foobar\n");
+echo "DONE\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00689.phpt b/xdebug-3.4.5/tests/debugger/bug00689.phpt
new file mode 100644
index 0000000..f10e510
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00689.phpt
@@ -0,0 +1,60 @@
+--TEST--
+Test for bug #689: Access method of not yet defined variable aborts debug session
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00689.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 3',
+	'run',
+	'stack_get',
+	'eval -- JGEtPmZvbygpOw==',
+	'stack_get',
+	'step_into',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00689.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00689.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00689.inc" lineno="3"></xdebug:message></response>
+
+-> stack_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="4"><stack where="{main}" level="0" type="file" filename="file://bug00689.inc" lineno="3"></stack></response>
+
+-> eval -i 5 -- JGEtPmZvbygpOw==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="5" status="break" reason="ok"><error code="206"><message><![CDATA[error evaluating code: %s]]></message></error></response>
+
+-> stack_get -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="6"><stack where="{main}" level="0" type="file" filename="file://bug00689.inc" lineno="3"></stack></response>
+
+-> step_into -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://bug00689.inc" lineno="4"></xdebug:message></response>
+
+-> detach -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="8" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00763.inc b/xdebug-3.4.5/tests/debugger/bug00763.inc
new file mode 100644
index 0000000..d4af6ef
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00763.inc
@@ -0,0 +1,9 @@
+#!/usr/bin/env php
+<?php $line_1 = 1;
+$line_2 = 2;
+$line_3 = 3;
+
+$line_4 = 4;
+
+$line_5 = 5;
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00763.phpt b/xdebug-3.4.5/tests/debugger/bug00763.phpt
new file mode 100644
index 0000000..f90eec6
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00763.phpt
@@ -0,0 +1,75 @@
+--TEST--
+Test for bug #763: Access method of not yet defined variable aborts debug session
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00763.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 3',
+	'run',
+	'stack_get',
+	'step_over',
+	'stack_get',
+	'step_over',
+	'stack_get',
+	'step_over',
+	'xcmd_get_executable_lines -d 0',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00763.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00763.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00763.inc" lineno="3"></xdebug:message></response>
+
+-> stack_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="4"><stack where="{main}" level="0" type="file" filename="file://bug00763.inc" lineno="3"></stack></response>
+
+-> step_over -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug00763.inc" lineno="4"></xdebug:message></response>
+
+-> stack_get -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="6"><stack where="{main}" level="0" type="file" filename="file://bug00763.inc" lineno="4"></stack></response>
+
+-> step_over -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://bug00763.inc" lineno="6"></xdebug:message></response>
+
+-> stack_get -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="8"><stack where="{main}" level="0" type="file" filename="file://bug00763.inc" lineno="6"></stack></response>
+
+-> step_over -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="9" status="break" reason="ok"><xdebug:message filename="file://bug00763.inc" lineno="8"></xdebug:message></response>
+
+-> xcmd_get_executable_lines -i 10 -d 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="xcmd_get_executable_lines" transaction_id="10"><xdebug:lines><xdebug:line lineno="2"></xdebug:line><xdebug:line lineno="3"></xdebug:line><xdebug:line lineno="4"></xdebug:line><xdebug:line lineno="6"></xdebug:line><xdebug:line lineno="8"></xdebug:line></xdebug:lines></response>
+
+-> detach -i 11
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="11" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00774.inc b/xdebug-3.4.5/tests/debugger/bug00774.inc
new file mode 100644
index 0000000..3005987
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00774.inc
@@ -0,0 +1,5 @@
+<?php
+$someVar = 'someVal';
+header('Location: index.php');
+exit(0);
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00774.phpt b/xdebug-3.4.5/tests/debugger/bug00774.phpt
new file mode 100644
index 0000000..eac239f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00774.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #774: Xdebug generates a "bailout without bailout address"
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00774.inc';
+
+$commands = array(
+	'step_into',
+	'eval -- JF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10=',
+	'stack_get',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00774.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00774.inc" lineno="2"></xdebug:message></response>
+
+-> eval -i 2 -- JF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="2"><property type="null"></property></response>
+
+-> stack_get -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="3"><stack where="{main}" level="0" type="file" filename="file://bug00774.inc" lineno="2"></stack></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="stopping" reason="ok"></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00777.inc b/xdebug-3.4.5/tests/debugger/bug00777.inc
new file mode 100644
index 0000000..d85815f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00777.inc
@@ -0,0 +1,8 @@
+<?php
+   if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
+      echo('MySQLi extension for PHP is not installed. ');
+   } else {
+      $connection = mysqli_init();
+      var_dump($connection);
+   }
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00777.phpt b/xdebug-3.4.5/tests/debugger/bug00777.phpt
new file mode 100644
index 0000000..fec2547
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00777.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #777: Connection to reset on stepping over call to mysqli_init
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; ext MySQLi');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00777.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 5',
+	'run',
+	'step_over',
+	'context_get',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00777.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00777.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00777.inc" lineno="5"></xdebug:message></response>
+
+-> step_over -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug00777.inc" lineno="6"></xdebug:message></response>
+
+-> context_get -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="5" context="0"><property name="$connection" fullname="$connection" type="object" classname="mysqli" children="%d" numchildren="%d" page="0" pagesize="32">%s/property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00778.inc b/xdebug-3.4.5/tests/debugger/bug00778.inc
new file mode 100644
index 0000000..fe951db
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00778.inc
@@ -0,0 +1,9 @@
+<?php
+$xml = '<?xml version="1.0" encoding="UTF-8" ?>
+<root>Xdebug rocks
+</root>';
+$xml = str_replace("\r\n", "\n", $xml);
+$temp = simplexml_load_string($xml, "SimpleXMLElement", LIBXML_NOERROR);
+echo "It works?";
+var_dump($temp);
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00778.phpt b/xdebug-3.4.5/tests/debugger/bug00778.phpt
new file mode 100644
index 0000000..b9b35e8
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00778.phpt
@@ -0,0 +1,55 @@
+--TEST--
+Test for bug #778: Xdebug session in Eclipse crash whenever it run into simplexml_load_string call
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; ext SimpleXML');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00778.inc';
+
+$commands = array(
+	'step_into',
+	'step_into',
+	'step_over',
+	'step_into',
+	'stack_get',
+	'context_get',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00778.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00778.inc" lineno="%r(4|2)%r"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00778.inc" lineno="5"></xdebug:message></response>
+
+-> step_over -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00778.inc" lineno="6"></xdebug:message></response>
+
+-> step_into -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug00778.inc" lineno="7"></xdebug:message></response>
+
+-> stack_get -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="5"><stack where="{main}" level="0" type="file" filename="file://bug00778.inc" lineno="7"></stack></response>
+
+-> context_get -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="6" context="0"><property name="$temp" fullname="$temp" type="object" classname="SimpleXMLElement" children="1" numchildren="1" page="0" pagesize="32"><property name="0" fullname="$temp-&gt;0" facet="public" type="string" size="13" encoding="base64"><![CDATA[WGRlYnVnIHJvY2tzCg==]]></property></property><property name="$xml" fullname="$xml" type="string" size="66" encoding="base64"><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cjxyb290PlhkZWJ1ZyByb2Nrcwo8L3Jvb3Q+]]></property></response>
+
+-> detach -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="7" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00790-001.inc b/xdebug-3.4.5/tests/debugger/bug00790-001.inc
new file mode 100644
index 0000000..3074315
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00790-001.inc
@@ -0,0 +1,17 @@
+<?php
+function callback($buffer)
+{
+	  // replace all the apples with oranges
+	  return "[$buffer]\n";
+}
+
+function foo()
+{
+	// empty func
+	echo "again\n";
+}
+xdebug_break();
+trigger_error('test');
+echo "test\n";
+foo();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00790-001.phpt b/xdebug-3.4.5/tests/debugger/bug00790-001.phpt
new file mode 100644
index 0000000..8314ea2
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00790-001.phpt
@@ -0,0 +1,49 @@
+--TEST--
+Test for bug #790: Debugging with > PHP 5.4 and stderr/stdout doesn't work [1]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00790-001.inc';
+
+$commands = array(
+	'stdout -c 1',
+	'run',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands, [ 'error_reporting' => -1, 'display_errors' => 1 ] );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00790-001.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> stdout -i 1 -c 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stdout" transaction_id="1" success="1"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00790-001.inc" lineno="14"></xdebug:message></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<stream xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" type="stdout" encoding="base64"><![CDATA[%s]]></stream>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<stream xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" type="stdout" encoding="base64"><![CDATA[dGVzdAo=]]></stream>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<stream xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" type="stdout" encoding="base64"><![CDATA[YWdhaW4K]]></stream>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="stopping" reason="ok"></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00790-002.inc b/xdebug-3.4.5/tests/debugger/bug00790-002.inc
new file mode 100644
index 0000000..6af7b64
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00790-002.inc
@@ -0,0 +1,18 @@
+<?php
+function callback($buffer)
+{
+      // replace all the apples with oranges
+      return "[$buffer]\n";
+}
+ob_start('callback');
+
+function foo()
+{
+    // empty func
+    echo "again\n";
+}
+xdebug_break();
+trigger_error('test');
+echo "test\n";
+foo();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00790-002.phpt b/xdebug-3.4.5/tests/debugger/bug00790-002.phpt
new file mode 100644
index 0000000..7807360
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00790-002.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Test for bug #790: Debugging with > PHP 5.4 and stderr/stdout doesn't work [2]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00790-002.inc';
+
+$commands = array(
+	'stdout -c 1',
+	'run',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00790-002.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> stdout -i 1 -c 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stdout" transaction_id="1" success="1"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00790-002.inc" lineno="15"></xdebug:message></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<stream xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" type="stdout" encoding="base64"><![CDATA[%s]]></stream>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="stopping" reason="ok"></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00797.inc b/xdebug-3.4.5/tests/debugger/bug00797.inc
new file mode 100644
index 0000000..60b0528
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00797.inc
@@ -0,0 +1,19 @@
+<?php
+$a = new A;
+
+class A {
+
+
+    function __construct() {
+        $this->a = B::foo();
+    }
+}
+
+class B {
+    private $b = 1;
+
+    static public function foo() {
+        return "I'm alive!";
+    }
+}
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00797.phpt b/xdebug-3.4.5/tests/debugger/bug00797.phpt
new file mode 100644
index 0000000..a4e00c6
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00797.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #797: XDebug terminates (or Eclipse loses it?) when viewing variables
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00797.inc';
+
+$commands = array(
+	'step_into',
+	'step_into',
+	'step_into',
+	'context_get -d 0',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00797.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00797.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00797.inc" lineno="8"></xdebug:message></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00797.inc" lineno="16"></xdebug:message></response>
+
+-> context_get -i 4 -d 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="::" fullname="::" type="object" classname="B" children="0" numchildren="0"></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00806.inc b/xdebug-3.4.5/tests/debugger/bug00806.inc
new file mode 100644
index 0000000..5e6ea0d
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00806.inc
@@ -0,0 +1,4 @@
+<?php
+$x = array("a" => array(1, 2), "a b" => array(1, 2));
+var_dump($x); //breakpoint here
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00806.phpt b/xdebug-3.4.5/tests/debugger/bug00806.phpt
new file mode 100644
index 0000000..3a32b25
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00806.phpt
@@ -0,0 +1,55 @@
+--TEST--
+Test for bug #806: 'property_get' doesn't work if array key contains a whitespace
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00806.inc';
+
+$commands = array(
+	'step_into',
+	'step_into',
+	'context_get',
+	"property_get -n \$x['a b'] -d 0 -c 0 -p 0",
+	'property_get -n "$x[\'a b\']" -d 0 -c 0 -p 0',
+	'property_get -n "$x[\"a b\"]" -d 0 -c 0 -p 0',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00806.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00806.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00806.inc" lineno="3"></xdebug:message></response>
+
+-> context_get -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="3" context="0"><property name="$x" fullname="$x" type="array" children="1" numchildren="2" page="0" pagesize="32"><property name="a" fullname="$x[&quot;a&quot;]" type="array" children="1" numchildren="2"></property><property name="a b" fullname="$x[&quot;a b&quot;]" type="array" children="1" numchildren="2"></property></property></response>
+
+-> property_get -i 4 -n $x['a b'] -d 0 -c 0 -p 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><error code="1"><message><![CDATA[parse error in command]]></message></error></response>
+
+-> property_get -i 5 -n "$x['a b']" -d 0 -c 0 -p 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$x[&#39;a b&#39;]" fullname="$x[&#39;a b&#39;]" type="array" children="1" numchildren="2" page="0" pagesize="32"><property name="0" fullname="$x[&#39;a b&#39;][0]" type="int"><![CDATA[1]]></property><property name="1" fullname="$x[&#39;a b&#39;][1]" type="int"><![CDATA[2]]></property></property></response>
+
+-> property_get -i 6 -n "$x[\"a b\"]" -d 0 -c 0 -p 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$x[&quot;a b&quot;]" fullname="$x[&quot;a b&quot;]" type="array" children="1" numchildren="2" page="0" pagesize="32"><property name="0" fullname="$x[&quot;a b&quot;][0]" type="int"><![CDATA[1]]></property><property name="1" fullname="$x[&quot;a b&quot;][1]" type="int"><![CDATA[2]]></property></property></response>
+
+-> detach -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="7" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00814.inc b/xdebug-3.4.5/tests/debugger/bug00814.inc
new file mode 100644
index 0000000..61ace19
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00814.inc
@@ -0,0 +1,2 @@
+<?php
+phpinfo();
diff --git a/xdebug-3.4.5/tests/debugger/bug00814.phpt b/xdebug-3.4.5/tests/debugger/bug00814.phpt
new file mode 100644
index 0000000..39d3457
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00814.phpt
@@ -0,0 +1,65 @@
+--TEST--
+Test for bug #814: Xdebug craches everytime when debugging using Xdebug 2.2.0RC1, Eclipse and Windows
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00814.inc';
+
+$commands = array(
+	'feature_set -n show_hidden -v 1',
+	'feature_set -n max_depth -v 3',
+	'feature_set -n max_children -v 31',
+	'stdout -c 1',
+	'stderr -c 1',
+	'step_into',
+	'stack_get',
+	'context_get -c 1',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00814.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n show_hidden -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="show_hidden" success="1"></response>
+
+-> feature_set -i 2 -n max_depth -v 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_depth" success="1"></response>
+
+-> feature_set -i 3 -n max_children -v 31
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="3" feature="max_children" success="1"></response>
+
+-> stdout -i 4 -c 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stdout" transaction_id="4" success="1"></response>
+
+-> stderr -i 5 -c 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stderr" transaction_id="5" success="0"></response>
+
+-> step_into -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://bug00814.inc" lineno="2"></xdebug:message></response>
+
+-> stack_get -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="7"><stack where="{main}" level="0" type="file" filename="file://bug00814.inc" lineno="2"></stack></response>
+
+-> context_get -i 8 -c 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="8" context="1">%s</response>
+
+-> detach -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="9" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00815.inc b/xdebug-3.4.5/tests/debugger/bug00815.inc
new file mode 100644
index 0000000..2886ea8
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00815.inc
@@ -0,0 +1,4 @@
+<?php
+$a = 1;
+exit;
+
diff --git a/xdebug-3.4.5/tests/debugger/bug00815.phpt b/xdebug-3.4.5/tests/debugger/bug00815.phpt
new file mode 100644
index 0000000..60810fc
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00815.phpt
@@ -0,0 +1,95 @@
+--TEST--
+Test for bug #815: Xdebug crashes when 'exit' operator used in the script
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00815.inc';
+
+$commands = array(
+	'feature_set -n show_hidden -v 1',
+	'feature_set -n max_depth -v 1',
+	'feature_set -n max_children -v 100',
+	'status',
+	'step_into',
+	'eval -- aXNzZXQoJF9TRVJWRVJbJ1BIUF9JREVfQ09ORklHJ10p',
+	'eval -- aXNzZXQoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10p',
+	'eval -- KHN0cmluZykoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10p',
+	'eval -- KHN0cmluZykoJF9TRVJWRVJbJ1NFUlZFUl9QT1JUJ10p',
+	'eval -- KHN0cmluZykoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10p',
+	'breakpoint_set -t line -n 2',
+	'stack_get',
+	'stack_get',
+	'context_names',
+	'run',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00815.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n show_hidden -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="show_hidden" success="1"></response>
+
+-> feature_set -i 2 -n max_depth -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_depth" success="1"></response>
+
+-> feature_set -i 3 -n max_children -v 100
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="3" feature="max_children" success="1"></response>
+
+-> status -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="status" transaction_id="4" status="starting" reason="ok"></response>
+
+-> step_into -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug00815.inc" lineno="2"></xdebug:message></response>
+
+-> eval -i 6 -- aXNzZXQoJF9TRVJWRVJbJ1BIUF9JREVfQ09ORklHJ10p
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="6"><property type="bool"><![CDATA[0]]></property></response>
+
+-> eval -i 7 -- aXNzZXQoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10p
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="7"><property type="bool"><![CDATA[0]]></property></response>
+
+-> eval -i 8 -- KHN0cmluZykoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10p
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="8"><property type="string" size="0" encoding="base64"><![CDATA[]]></property></response>
+
+-> eval -i 9 -- KHN0cmluZykoJF9TRVJWRVJbJ1NFUlZFUl9QT1JUJ10p
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="9"><property type="string" size="0" encoding="base64"><![CDATA[]]></property></response>
+
+-> eval -i 10 -- KHN0cmluZykoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10p
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="10"><property type="string" size="0" encoding="base64"><![CDATA[]]></property></response>
+
+-> breakpoint_set -i 11 -t line -n 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="11" id="{{PID}}0001"></response>
+
+-> stack_get -i 12
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="12"><stack where="{main}" level="0" type="file" filename="file://bug00815.inc" lineno="2"></stack></response>
+
+-> stack_get -i 13
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="13"><stack where="{main}" level="0" type="file" filename="file://bug00815.inc" lineno="2"></stack></response>
+
+-> context_names -i 14
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_names" transaction_id="14"><context name="Locals" id="0"></context><context name="Superglobals" id="1"></context><context name="User defined constants" id="2"></context></response>
+
+-> run -i 15
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="15" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00838.inc b/xdebug-3.4.5/tests/debugger/bug00838.inc
new file mode 100644
index 0000000..4cd523d
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00838.inc
@@ -0,0 +1,19 @@
+<?php
+
+class A
+{
+    protected static $_instance;
+
+    protected $_a1;
+    protected $_a2;
+
+    public function __construct()
+    {
+    }
+}
+
+echo "works not";
+$a = new A();
+
+// Set Breakpoint on sleep and inspect $a
+sleep(1);
diff --git a/xdebug-3.4.5/tests/debugger/bug00838.phpt b/xdebug-3.4.5/tests/debugger/bug00838.phpt
new file mode 100644
index 0000000..c901f08
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00838.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Test for bug #838: Xdebug shows static vars twice
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug00838.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 19",
+	'run',
+	'property_get -n $a',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00838.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug00838.inc -n 19
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00838.inc" lineno="19"></xdebug:message></response>
+
+-> property_get -i 3 -n $a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$a" fullname="$a" type="object" classname="A" children="1" numchildren="3" page="0" pagesize="32"><property name="_instance" fullname="$a::_instance" facet="static protected" type="null"></property><property name="_a1" fullname="$a-&gt;_a1" facet="protected" type="null"></property><property name="_a2" fullname="$a-&gt;_a2" facet="protected" type="null"></property></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00839.inc b/xdebug-3.4.5/tests/debugger/bug00839.inc
new file mode 100644
index 0000000..c00a270
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00839.inc
@@ -0,0 +1,42 @@
+<?php
+
+class A
+{
+    const CONSTANTVAR_ONE = 1;
+    const CONSTANTVAR_TWO = 2;
+    const CONSTANTVAR_THREE = 3;
+
+    static private $_dumpTypeValues = null;
+
+    protected $prop1 = null;
+    protected $prop2 = null;
+
+    public function __construct()
+    {
+    }
+
+    static public function getDumpTypeChoices()
+    {
+        if (self::$_dumpTypeValues == null) {
+            self::$_dumpTypeValues = array();
+            $oClass = new ReflectionClass('A');
+            $classConstants = $oClass->getConstants();
+            $constantPrefix = "CONSTANTVAR_";
+            foreach ($classConstants as $key => $val) {
+                if (substr($key, 0, strlen($constantPrefix)) === $constantPrefix) {
+                    self::$_dumpTypeValues[$val] = strtolower(substr($key, strlen($constantPrefix)));
+                }
+            }
+        }
+
+        return self::$_dumpTypeValues;
+    }
+}
+
+echo "works not";
+$a = new A();
+$a->getDumpTypeChoices();
+
+
+// Set Breakpoint on sleep and inspect $a
+sleep(1);
diff --git a/xdebug-3.4.5/tests/debugger/bug00839.phpt b/xdebug-3.4.5/tests/debugger/bug00839.phpt
new file mode 100644
index 0000000..3af1f6f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00839.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Test for bug #839: xdebug shows wrong data in debug (when using static class vars?)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug00839.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 42",
+	'run',
+	'property_get -n $a',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00839.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug00839.inc -n 42
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00839.inc" lineno="42"></xdebug:message></response>
+
+-> property_get -i 3 -n $a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$a" fullname="$a" type="object" classname="A" children="1" numchildren="3" page="0" pagesize="32"><property name="_dumpTypeValues" fullname="$a::_dumpTypeValues" facet="static private" type="array" children="1" numchildren="3"></property><property name="prop1" fullname="$a-&gt;prop1" facet="protected" type="null"></property><property name="prop2" fullname="$a-&gt;prop2" facet="protected" type="null"></property></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00840.inc b/xdebug-3.4.5/tests/debugger/bug00840.inc
new file mode 100644
index 0000000..b6d06fd
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00840.inc
@@ -0,0 +1,32 @@
+<?php
+
+class A
+{
+    static public $_staticvar;
+
+    protected $var_1;
+    protected $var_2;
+    protected $var_3;
+
+
+    public function __construct()
+    {
+    }
+}
+
+class B
+{
+    function __call($name, $args)
+    {
+        if ($name == 'testMethod') {
+            return new \A();
+        }
+    }
+}
+
+$b = new B();
+$x = $b->testMethod();
+
+// Set Breakpoint here
+sleep(1);
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00840.phpt b/xdebug-3.4.5/tests/debugger/bug00840.phpt
new file mode 100644
index 0000000..c7d5520
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00840.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Test for bug #840: Xdebug crashes when a class is returned by a __call method with a static var and more than 2 props
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug00840.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 31",
+	'run',
+	'context_get -d 0 -c 0',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00840.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug00840.inc -n 31
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00840.inc" lineno="31"></xdebug:message></response>
+
+-> context_get -i 3 -d 0 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="3" context="0"><property name="$b" fullname="$b" type="object" classname="B" children="0" numchildren="0" page="0" pagesize="32"></property><property name="$x" fullname="$x" type="object" classname="A" children="1" numchildren="4" page="0" pagesize="32"><property name="_staticvar" fullname="$x::_staticvar" facet="static public" type="null"></property><property name="var_1" fullname="$x-&gt;var_1" facet="protected" type="null"></property><property name="var_2" fullname="$x-&gt;var_2" facet="protected" type="null"></property><property name="var_3" fullname="$x-&gt;var_3" facet="protected" type="null"></property></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00842-001.phpt b/xdebug-3.4.5/tests/debugger/bug00842-001.phpt
new file mode 100644
index 0000000..a38ad28
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00842-001.phpt
@@ -0,0 +1,91 @@
+--TEST--
+Test for bug #842: Can't debug conditional statements without a block (TS1a)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug00842.inc' );
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	"breakpoint_set -t line -f file://{$filename} -n 14",
+	"breakpoint_set -t line -f file://{$filename} -n 17",
+	'run',
+	'stack_get',
+	'step_into',
+	'step_into',
+	'stack_get',
+	'step_into',
+	'step_into',
+	'stack_get',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00842.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 3 -t line -f file://bug00842.inc -n 14
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug00842.inc" lineno="14" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001" resolved="resolved"></response>
+
+-> breakpoint_set -i 4 -t line -f file://bug00842.inc -n 17
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug00842.inc" lineno="17" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0002"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" id="{{PID}}0002" resolved="resolved"></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug00842.inc" lineno="14"></xdebug:message></response>
+
+-> stack_get -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="6"><stack where="{main}" level="0" type="file" filename="file://bug00842.inc" lineno="14"></stack></response>
+
+-> step_into -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://bug00842.inc" lineno="17"></xdebug:message></response>
+
+-> step_into -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="8" status="break" reason="ok"><xdebug:message filename="file://bug00842.inc" lineno="12"></xdebug:message></response>
+
+-> stack_get -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="9"><stack where="dummy2" level="0" type="file" filename="file://bug00842.inc" lineno="12"></stack><stack where="{main}" level="1" type="file" filename="file://bug00842.inc" lineno="17"></stack></response>
+
+-> step_into -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="10" status="break" reason="ok"><xdebug:message filename="file://bug00842.inc" lineno="13"></xdebug:message></response>
+
+-> step_into -i 11
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="11" status="break" reason="ok"><xdebug:message filename="file://bug00842.inc" lineno="18"></xdebug:message></response>
+
+-> stack_get -i 12
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="12"><stack where="{main}" level="0" type="file" filename="file://bug00842.inc" lineno="18"></stack></response>
+
+-> detach -i 13
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="13" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00842-002.phpt b/xdebug-3.4.5/tests/debugger/bug00842-002.phpt
new file mode 100644
index 0000000..2012544
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00842-002.phpt
@@ -0,0 +1,60 @@
+--TEST--
+Test for bug #842: Can't debug conditional statements without a block (TS1b)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug00842.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 18",
+	'run',
+	'step_into',
+	'step_into',
+	'step_into',
+	'step_into',
+	'step_into',
+	'step_into',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00842.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug00842.inc -n 18
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00842.inc" lineno="18"></xdebug:message></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00842.inc" lineno="3"></xdebug:message></response>
+
+-> step_into -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug00842.inc" lineno="6"></xdebug:message></response>
+
+-> step_into -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug00842.inc" lineno="19"></xdebug:message></response>
+
+-> step_into -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://bug00842.inc" lineno="9"></xdebug:message></response>
+
+-> step_into -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://bug00842.inc" lineno="10"></xdebug:message></response>
+
+-> step_into -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="8" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00842-003.phpt b/xdebug-3.4.5/tests/debugger/bug00842-003.phpt
new file mode 100644
index 0000000..2a7774c
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00842-003.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Test for bug #842: Can't debug conditional statements without a block (TS2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug00842.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 14",
+	'run',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00842.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug00842.inc -n 14
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00842.inc" lineno="14"></xdebug:message></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00842-004.phpt b/xdebug-3.4.5/tests/debugger/bug00842-004.phpt
new file mode 100644
index 0000000..41d45ab
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00842-004.phpt
@@ -0,0 +1,63 @@
+--TEST--
+Test for bug #842: Can't debug conditional statements without a block (TS3)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug00842.inc' );
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	"breakpoint_set -t line -f file://{$filename} -n 18",
+	'run',
+	'step_into',
+	'step_out',
+	'step_into',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00842.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 3 -t line -f file://bug00842.inc -n 18
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug00842.inc" lineno="18" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001" resolved="resolved"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug00842.inc" lineno="18"></xdebug:message></response>
+
+-> step_into -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug00842.inc" lineno="3"></xdebug:message></response>
+
+-> step_out -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_out" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://bug00842.inc" lineno="6"></xdebug:message></response>
+
+-> step_into -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://bug00842.inc" lineno="19"></xdebug:message></response>
+
+-> detach -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="8" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00842.inc b/xdebug-3.4.5/tests/debugger/bug00842.inc
new file mode 100644
index 0000000..b154eab
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00842.inc
@@ -0,0 +1,22 @@
+<?php
+function ret1(){
+	return 1;
+}
+function ret2(){
+	return 2;
+}
+function dummy1(){
+	echo 'dummy1';
+}
+function dummy2(){
+	echo 'dummy2';
+}
+if(false)
+	dummy1();
+else
+	dummy2();
+if(ret1()&&ret2())
+	dummy1();
+else
+	dummy2();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00864.inc b/xdebug-3.4.5/tests/debugger/bug00864.inc
new file mode 100644
index 0000000..adbbe80
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00864.inc
@@ -0,0 +1,14 @@
+<?php
+class A extends ArrayIterator
+{
+    protected $aa;
+    public function __construct()
+    {
+        $this->aa = 302;
+        parent::__construct(array( 2, 3, 4, 5));
+    }
+}
+
+$a = new A();
+var_dump($a); // put breakpoint here
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00864.phpt b/xdebug-3.4.5/tests/debugger/bug00864.phpt
new file mode 100644
index 0000000..57efbbf
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00864.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #864: Not possible to inspect ArrayIterator instances with Xdebug
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug00864.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 13",
+	'run',
+	'property_get -n $a',
+	'property_get -n $a->*ArrayIterator*storage',
+	'property_get -n $a->*ArrayIterator*storage[2]',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00864.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug00864.inc -n 13
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00864.inc" lineno="13"></xdebug:message></response>
+
+-> property_get -i 3 -n $a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$a" fullname="$a" type="object" classname="A" children="1" numchildren="2" page="0" pagesize="32"><property name="aa" fullname="$a-&gt;aa" facet="protected" type="int"><![CDATA[302]]></property><property name="*ArrayIterator*storage" fullname="$a-&gt;*ArrayIterator*storage" facet="private" type="array" children="1" numchildren="4"></property></property></response>
+
+-> property_get -i 4 -n $a->*ArrayIterator*storage
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$a-&gt;*ArrayIterator*storage" fullname="$a-&gt;*ArrayIterator*storage" type="array" children="1" numchildren="4" page="0" pagesize="32"><property name="0" fullname="$a-&gt;*ArrayIterator*storage[0]" type="int"><![CDATA[2]]></property><property name="1" fullname="$a-&gt;*ArrayIterator*storage[1]" type="int"><![CDATA[3]]></property><property name="2" fullname="$a-&gt;*ArrayIterator*storage[2]" type="int"><![CDATA[4]]></property><property name="3" fullname="$a-&gt;*ArrayIterator*storage[3]" type="int"><![CDATA[5]]></property></property></response>
+
+-> property_get -i 5 -n $a->*ArrayIterator*storage[2]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$a-&gt;*ArrayIterator*storage[2]" fullname="$a-&gt;*ArrayIterator*storage[2]" type="int"><![CDATA[4]]></property></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00886.inc b/xdebug-3.4.5/tests/debugger/bug00886.inc
new file mode 100644
index 0000000..71e17e1
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00886.inc
@@ -0,0 +1,5 @@
+<?php
+$DIR = getenv("XDEBUG_TEST_DIR");
+include "phar://$DIR/bug00886.phar/file1.php";
+function1( "Derick" );
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00886.phar b/xdebug-3.4.5/tests/debugger/bug00886.phar
new file mode 100644
index 0000000..e4a325b
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00886.phar
@@ -0,0 +1,307 @@
+<?php
+
+$web = 'index.php';
+
+if (in_array('phar', stream_get_wrappers()) && class_exists('Phar', 0)) {
+Phar::interceptFileFuncs();
+set_include_path('phar://' . __FILE__ . PATH_SEPARATOR . get_include_path());
+Phar::webPhar(null, $web);
+include 'phar://' . __FILE__ . '/' . Extract_Phar::START;
+return;
+}
+
+if (@(isset($_SERVER['REQUEST_URI']) && isset($_SERVER['REQUEST_METHOD']) && ($_SERVER['REQUEST_METHOD'] == 'GET' || $_SERVER['REQUEST_METHOD'] == 'POST'))) {
+Extract_Phar::go(true);
+$mimes = array(
+'phps' => 2,
+'c' => 'text/plain',
+'cc' => 'text/plain',
+'cpp' => 'text/plain',
+'c++' => 'text/plain',
+'dtd' => 'text/plain',
+'h' => 'text/plain',
+'log' => 'text/plain',
+'rng' => 'text/plain',
+'txt' => 'text/plain',
+'xsd' => 'text/plain',
+'php' => 1,
+'inc' => 1,
+'avi' => 'video/avi',
+'bmp' => 'image/bmp',
+'css' => 'text/css',
+'gif' => 'image/gif',
+'htm' => 'text/html',
+'html' => 'text/html',
+'htmls' => 'text/html',
+'ico' => 'image/x-ico',
+'jpe' => 'image/jpeg',
+'jpg' => 'image/jpeg',
+'jpeg' => 'image/jpeg',
+'js' => 'application/x-javascript',
+'midi' => 'audio/midi',
+'mid' => 'audio/midi',
+'mod' => 'audio/mod',
+'mov' => 'movie/quicktime',
+'mp3' => 'audio/mp3',
+'mpg' => 'video/mpeg',
+'mpeg' => 'video/mpeg',
+'pdf' => 'application/pdf',
+'png' => 'image/png',
+'swf' => 'application/shockwave-flash',
+'tif' => 'image/tiff',
+'tiff' => 'image/tiff',
+'wav' => 'audio/wav',
+'xbm' => 'image/xbm',
+'xml' => 'text/xml',
+);
+
+header("Cache-Control: no-cache, must-revalidate");
+header("Pragma: no-cache");
+
+$basename = basename(__FILE__);
+if (!strpos($_SERVER['REQUEST_URI'], $basename)) {
+chdir(Extract_Phar::$temp);
+include $web;
+return;
+}
+$pt = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], $basename) + strlen($basename));
+if (!$pt || $pt == '/') {
+$pt = $web;
+header('HTTP/1.1 301 Moved Permanently');
+header('Location: ' . $_SERVER['REQUEST_URI'] . '/' . $pt);
+exit;
+}
+$a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt);
+if (!$a || strlen(dirname($a)) < strlen(Extract_Phar::$temp)) {
+header('HTTP/1.0 404 Not Found');
+echo "<html>\n <head>\n  <title>File Not Found<title>\n </head>\n <body>\n  <h1>404 - File ", $pt, " Not Found</h1>\n </body>\n</html>";
+exit;
+}
+$b = pathinfo($a);
+if (!isset($b['extension'])) {
+header('Content-Type: text/plain');
+header('Content-Length: ' . filesize($a));
+readfile($a);
+exit;
+}
+if (isset($mimes[$b['extension']])) {
+if ($mimes[$b['extension']] === 1) {
+include $a;
+exit;
+}
+if ($mimes[$b['extension']] === 2) {
+highlight_file($a);
+exit;
+}
+header('Content-Type: ' .$mimes[$b['extension']]);
+header('Content-Length: ' . filesize($a));
+readfile($a);
+exit;
+}
+}
+
+class Extract_Phar
+{
+static $temp;
+static $origdir;
+const GZ = 0x1000;
+const BZ2 = 0x2000;
+const MASK = 0x3000;
+const START = 'index.php';
+const LEN = 6685;
+
+static function go($return = false)
+{
+$fp = fopen(__FILE__, 'rb');
+fseek($fp, self::LEN);
+$L = unpack('V', $a = (binary)fread($fp, 4));
+$m = (binary)'';
+
+do {
+$read = 8192;
+if ($L[1] - strlen($m) < 8192) {
+$read = $L[1] - strlen($m);
+}
+$last = (binary)fread($fp, $read);
+$m .= $last;
+} while (strlen($last) && strlen($m) < $L[1]);
+
+if (strlen($m) < $L[1]) {
+die('ERROR: manifest length read was "' .
+strlen($m) .'" should be "' .
+$L[1] . '"');
+}
+
+$info = self::_unpack($m);
+$f = $info['c'];
+
+if ($f & self::GZ) {
+if (!function_exists('gzinflate')) {
+die('Error: zlib extension is not enabled -' .
+' gzinflate() function needed for zlib-compressed .phars');
+}
+}
+
+if ($f & self::BZ2) {
+if (!function_exists('bzdecompress')) {
+die('Error: bzip2 extension is not enabled -' .
+' bzdecompress() function needed for bz2-compressed .phars');
+}
+}
+
+$temp = self::tmpdir();
+
+if (!$temp || !is_writable($temp)) {
+$sessionpath = session_save_path();
+if (strpos ($sessionpath, ";") !== false)
+$sessionpath = substr ($sessionpath, strpos ($sessionpath, ";")+1);
+if (!file_exists($sessionpath) || !is_dir($sessionpath)) {
+die('Could not locate temporary directory to extract phar');
+}
+$temp = $sessionpath;
+}
+
+$temp .= '/pharextract/'.basename(__FILE__, '.phar');
+self::$temp = $temp;
+self::$origdir = getcwd();
+@mkdir($temp, 0777, true);
+$temp = realpath($temp);
+
+if (!file_exists($temp . DIRECTORY_SEPARATOR . md5_file(__FILE__))) {
+self::_removeTmpFiles($temp, getcwd());
+@mkdir($temp, 0777, true);
+@file_put_contents($temp . '/' . md5_file(__FILE__), '');
+
+foreach ($info['m'] as $path => $file) {
+$a = !file_exists(dirname($temp . '/' . $path));
+@mkdir(dirname($temp . '/' . $path), 0777, true);
+clearstatcache();
+
+if ($path[strlen($path) - 1] == '/') {
+@mkdir($temp . '/' . $path, 0777);
+} else {
+file_put_contents($temp . '/' . $path, self::extractFile($path, $file, $fp));
+@chmod($temp . '/' . $path, 0666);
+}
+}
+}
+
+chdir($temp);
+
+if (!$return) {
+include self::START;
+}
+}
+
+static function tmpdir()
+{
+if (strpos(PHP_OS, 'WIN') !== false) {
+if ($var = getenv('TMP') ? getenv('TMP') : getenv('TEMP')) {
+return $var;
+}
+if (is_dir('/temp') || mkdir('/temp')) {
+return realpath('/temp');
+}
+return false;
+}
+if ($var = getenv('TMPDIR')) {
+return $var;
+}
+return realpath('/tmp');
+}
+
+static function _unpack($m)
+{
+$info = unpack('V', substr($m, 0, 4));
+ $l = unpack('V', substr($m, 10, 4));
+$m = substr($m, 14 + $l[1]);
+$s = unpack('V', substr($m, 0, 4));
+$o = 0;
+$start = 4 + $s[1];
+$ret['c'] = 0;
+
+for ($i = 0; $i < $info[1]; $i++) {
+ $len = unpack('V', substr($m, $start, 4));
+$start += 4;
+ $savepath = substr($m, $start, $len[1]);
+$start += $len[1];
+   $ret['m'][$savepath] = array_values(unpack('Va/Vb/Vc/Vd/Ve/Vf', substr($m, $start, 24)));
+$ret['m'][$savepath][3] = sprintf('%u', $ret['m'][$savepath][3]
+& 0xffffffff);
+$ret['m'][$savepath][7] = $o;
+$o += $ret['m'][$savepath][2];
+$start += 24 + $ret['m'][$savepath][5];
+$ret['c'] |= $ret['m'][$savepath][4] & self::MASK;
+}
+return $ret;
+}
+
+static function extractFile($path, $entry, $fp)
+{
+$data = '';
+$c = $entry[2];
+
+while ($c) {
+if ($c < 8192) {
+$data .= @fread($fp, $c);
+$c = 0;
+} else {
+$c -= 8192;
+$data .= @fread($fp, 8192);
+}
+}
+
+if ($entry[4] & self::GZ) {
+$data = gzinflate($data);
+} elseif ($entry[4] & self::BZ2) {
+$data = bzdecompress($data);
+}
+
+if (strlen($data) != $entry[0]) {
+die("Invalid internal .phar file (size error " . strlen($data) . " != " .
+$stat[7] . ")");
+}
+
+if ($entry[3] != sprintf("%u", crc32((binary)$data) & 0xffffffff)) {
+die("Invalid internal .phar file (checksum error)");
+}
+
+return $data;
+}
+
+static function _removeTmpFiles($temp, $origdir)
+{
+chdir($temp);
+
+foreach (glob('*') as $f) {
+if (file_exists($f)) {
+is_dir($f) ? @rmdir($f) : @unlink($f);
+if (file_exists($f) && is_dir($f)) {
+self::_removeTmpFiles($f, getcwd());
+}
+}
+}
+
+@rmdir($temp);
+clearstatcache();
+chdir($origdir);
+}
+}
+
+Extract_Phar::go();
+__HALT_COMPILER(); ?>i             bug00886.phar    	   file2.phpD   1PD   ]G      	   file1.phpn   1Pn   x0      <?php
+function function2( $foo )
+{
+	echo strrev( $foo ), "\n";
+}
+?>
+<?php
+include 'file2.php';
+
+function function1( $foo )
+{
+	echo strlen( $foo ), "\n";
+	function2( $foo );
+}
+?>
+-WEO)zrkDBz   GBMB
\ No newline at end of file
diff --git a/xdebug-3.4.5/tests/debugger/bug00886.phpt b/xdebug-3.4.5/tests/debugger/bug00886.phpt
new file mode 100644
index 0000000..685d7b0
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00886.phpt
@@ -0,0 +1,73 @@
+--TEST--
+Test for bug #886: Use the same file system protocol for file located inside PHAR in both directions
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext phar; dbgp; slow; !osx');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$dir = dirname(__FILE__);
+$pharFile = str_replace('\\', '/', "phar://{$dir}/bug00886.phar");
+$filename = dirname(__FILE__) . '/bug00886.inc';
+
+$commands = array(
+	'step_into',
+	'step_into',
+	'step_into',
+	'stack_get',
+	"breakpoint_set -t line -f {$pharFile}/file1.php -n 6",
+	'run',
+	"source -f {$pharFile}/file1.php",
+	'step_into',
+	'stack_get',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands, [], ['env' => ['XDEBUG_TEST_DIR' => $dir]] );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00886.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00886.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00886.inc" lineno="3"></xdebug:message></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="phar://%s/tests/debugger/bug00886.phar/file1.php" lineno="2"></xdebug:message></response>
+
+-> stack_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="4"><stack where="include" level="0" type="file" filename="phar://%s/tests/debugger/bug00886.phar/file1.php" lineno="2"></stack><stack where="{main}" level="1" type="file" filename="file://bug00886.inc" lineno="3"></stack></response>
+
+-> breakpoint_set -i 5 -t line -f phar://%s/tests/debugger/bug00886.phar/file1.php -n 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="5" id="{{PID}}0001"></response>
+
+-> run -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="6" status="break" reason="ok"><xdebug:message filename="phar://%s/tests/debugger/bug00886.phar/file1.php" lineno="6"></xdebug:message></response>
+
+-> source -i 7 -f phar://%s/tests/debugger/bug00886.phar/file1.php
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="source" transaction_id="7" encoding="base64"><![CDATA[PD9waHAKaW5jbHVkZSAnZmlsZTIucGhwJzsKCmZ1bmN0aW9uIGZ1bmN0aW9uMSggJGZvbyApCnsKCWVjaG8gc3RybGVuKCAkZm9vICksICJcbiI7CglmdW5jdGlvbjIoICRmb28gKTsKfQo/Pgo=]]></response>
+
+-> step_into -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="8" status="break" reason="ok"><xdebug:message filename="phar://%s/tests/debugger/bug00886.phar/file1.php" lineno="6"></xdebug:message></response>
+
+-> stack_get -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="9"><stack where="function1" level="0" type="file" filename="phar://%s/tests/debugger/bug00886.phar/file1.php" lineno="6"></stack><stack where="{main}" level="1" type="file" filename="file://bug00886.inc" lineno="4"></stack></response>
+
+-> detach -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="10" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00923.inc b/xdebug-3.4.5/tests/debugger/bug00923.inc
new file mode 100644
index 0000000..3d88c2d
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00923.inc
@@ -0,0 +1,13 @@
+<?php
+$connection = new MongoClient();
+$collection = $connection->phpunit->test;
+$collection->drop();
+
+$collection->batchInsert(array(
+    array( 'a' => 'b'),
+    array( 'a' => 'b'),
+));
+
+$cursor = $collection->find();
+$collection->drop();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00923.phpt b/xdebug-3.4.5/tests/debugger/bug00923.phpt
new file mode 100644
index 0000000..33b86c0
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00923.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #923: Debugging PHP with MongoDB using Cursor, causes debug session termination
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; ext mongo');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00923.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 12',
+	'run',
+	'property_get -n $cursor',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file:///%s" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file:///%s" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 12
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file:///%s" lineno="12"></xdebug:message></response>
+
+-> property_get -i 4 -n $cursor
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$cursor" fullname="$cursor" type="object" classname="MongoCursor" children="1" numchildren="2" page="0" pagesize="32"><property name="slaveOkay" %s></property><property name="timeout" %s></property></property></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00932.phpt b/xdebug-3.4.5/tests/debugger/bug00932.phpt
new file mode 100644
index 0000000..0bdef3f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00932.phpt
@@ -0,0 +1,15 @@
+--TEST--
+Test for bug #932: Show an error if Xdebug can't open the remote debug log
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; !win');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.log=/doesnotexist/bug932.log
+--FILE--
+<?php
+?>
+--EXPECTF--
+Xdebug: [Log Files] File '/doesnotexist/bug932.log' could not be opened.
diff --git a/xdebug-3.4.5/tests/debugger/bug00964-001.phpt b/xdebug-3.4.5/tests/debugger/bug00964-001.phpt
new file mode 100644
index 0000000..2f4ed10
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00964-001.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Test for bug #964: IP retrival from X-Forwarded-For complies with RFC 7239 (without comma)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!win; unparallel');
+?>
+--ENV--
+HTTP_X_FORWARDED_FOR=192.168.111.111
+--INI--
+xdebug.mode=debug
+xdebug.start_with_request=yes
+xdebug.log={TMP}/bug964.txt
+xdebug.discover_client_host=1
+xdebug.client_port=9903
+--FILE--
+<?php
+preg_match(
+	"#Client host discovered through HTTP header, connecting to ([^:]+):9903#",
+	file_get_contents( sys_get_temp_dir() . "/bug964.txt" ),
+	$match
+);
+unlink( sys_get_temp_dir() . "/bug964.txt" );
+echo $match[1];
+?>
+--EXPECTF--
+192.168.111.111
diff --git a/xdebug-3.4.5/tests/debugger/bug00964-002.phpt b/xdebug-3.4.5/tests/debugger/bug00964-002.phpt
new file mode 100644
index 0000000..7a16a22
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00964-002.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Test for bug #964: IP retrival from X-Forwarded-For complies with RFC 7239 (with comma)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!win; unparallel');
+?>
+--ENV--
+HTTP_X_FORWARDED_FOR=192.168.111.111, 10.1.2.3, 10.1.2.4
+--INI--
+xdebug.mode=debug
+xdebug.start_with_request=yes
+xdebug.log={TMP}/bug964.txt
+xdebug.discover_client_host=1
+xdebug.client_port=9903
+--FILE--
+<?php
+preg_match(
+	"#Client host discovered through HTTP header, connecting to ([^:]+):9903#",
+	file_get_contents( sys_get_temp_dir() . "/bug964.txt" ),
+	$match
+);
+unlink( sys_get_temp_dir() . "/bug964.txt" );
+echo $match[1];
+?>
+--EXPECTF--
+192.168.111.111
diff --git a/xdebug-3.4.5/tests/debugger/bug00978-001.phpt b/xdebug-3.4.5/tests/debugger/bug00978-001.phpt
new file mode 100644
index 0000000..819d74b
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00978-001.phpt
@@ -0,0 +1,60 @@
+--TEST--
+Test for bug #978: Inspection of array with negative keys fails
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00978.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 8',
+	'run',
+	'property_get -n $a',
+	'property_get -n $a[-1]',
+	'property_get -n $a[-]',
+	'property_get -n $a[1]',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00978.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00978.inc" lineno="%d"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00978.inc" lineno="8"></xdebug:message></response>
+
+-> property_get -i 4 -n $a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$a" fullname="$a" type="array" children="1" numchildren="4" page="0" pagesize="32"><property name="0" fullname="$a[0]" type="string" size="3" encoding="base64"><![CDATA[bnVs]]></property><property name="-1" fullname="$a[-1]" type="string" size="9" encoding="base64"><![CDATA[bWludXMgb25l]]></property><property name="-2" fullname="$a[-2]" type="string" size="7" encoding="base64"><![CDATA[bm90IHR3bw==]]></property><property name="1" fullname="$a[1]" type="string" size="3" encoding="base64"><![CDATA[ZWVu]]></property></property></response>
+
+-> property_get -i 5 -n $a[-1]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$a[-1]" fullname="$a[-1]" type="string" size="9" encoding="base64"><![CDATA[bWludXMgb25l]]></property></response>
+
+-> property_get -i 6 -n $a[-]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6" status="break" reason="ok"><error code="300"><message><![CDATA[can not get property]]></message></error></response>
+
+-> property_get -i 7 -n $a[1]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="$a[1]" fullname="$a[1]" type="string" size="3" encoding="base64"><![CDATA[ZWVu]]></property></response>
+
+-> detach -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="8" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00978.inc b/xdebug-3.4.5/tests/debugger/bug00978.inc
new file mode 100644
index 0000000..2cead5a
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00978.inc
@@ -0,0 +1,9 @@
+<?php
+$a = array(
+	0 => 'nul',
+	-1 => 'minus one',
+	-2 => 'not two',
+	1 => 'een',
+);
+echo count($a), "\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00979.inc b/xdebug-3.4.5/tests/debugger/bug00979.inc
new file mode 100644
index 0000000..9f91ace
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00979.inc
@@ -0,0 +1,4 @@
+<?php
+$a = str_repeat("abcdefghij", 128);
+echo strlen($a), "\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00979.phpt b/xdebug-3.4.5/tests/debugger/bug00979.phpt
new file mode 100644
index 0000000..eeebb63
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00979.phpt
@@ -0,0 +1,75 @@
+--TEST--
+Test for bug #979: property_value -m 0 should mean all bytes, not 0 bytes
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00979.inc';
+
+$commands = array(
+	'step_into',
+	'feature_set -n max_data -v 32',
+	'breakpoint_set -t line -n 3',
+	'run',
+	'property_get -n $a',
+	'property_value -n $a',
+	'property_value -n $a -m 0',
+	'property_value -n $a -m "-1"',
+	'property_value -n $a -m 20',
+	'property_value -n $a',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00979.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00979.inc" lineno="2"></xdebug:message></response>
+
+-> feature_set -i 2 -n max_data -v 32
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_data" success="1"></response>
+
+-> breakpoint_set -i 3 -t line -n 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug00979.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 5 -n $a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$a" fullname="$a" type="string" size="1280" encoding="base64"><![CDATA[YWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWI=]]></property></response>
+
+-> property_value -i 6 -n $a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_value" transaction_id="6" type="string" size="1280" encoding="base64"><![CDATA[YWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWI=]]></response>
+
+-> property_value -i 7 -n $a -m 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_value" transaction_id="7" type="string" size="1280" encoding="base64"><![CDATA[YWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWo=]]></response>
+
+-> property_value -i 8 -n $a -m "-1"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_value" transaction_id="8" status="break" reason="ok"><error code="3"><message><![CDATA[invalid or missing options]]></message></error></response>
+
+-> property_value -i 9 -n $a -m 20
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_value" transaction_id="9" type="string" size="1280" encoding="base64"><![CDATA[YWJjZGVmZ2hpamFiY2RlZmdoaWo=]]></response>
+
+-> property_value -i 10 -n $a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_value" transaction_id="10" type="string" size="1280" encoding="base64"><![CDATA[YWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWI=]]></response>
+
+-> detach -i 11
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="11" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00987-005.inc b/xdebug-3.4.5/tests/debugger/bug00987-005.inc
new file mode 100644
index 0000000..1a334b0
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00987-005.inc
@@ -0,0 +1,17 @@
+<?php
+$a = new StdClass;
+$a->foo = 1;
+$a->bar = 2;
+$a->baz = array( false, 3.14, "foo" );
+class b { static $foo = 73; }; $a->b = new b;
+$o = (object) array(
+	'key' => 'value', 
+	1 => 0, 
+	-4 => "foo", 
+	3.14 => false, 
+	-2 => array( 5, 6, 7, 8 => array( "a", "b", "c" ) ),
+	5 => $a,
+	);
+
+echo gettype($o), "\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00987-005.phpt b/xdebug-3.4.5/tests/debugger/bug00987-005.phpt
new file mode 100644
index 0000000..53d6d31
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00987-005.phpt
@@ -0,0 +1,100 @@
+--TEST--
+Test for bug #987: Hidden property names not shown while debugging
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00987-005.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 16',
+	'run',
+	'property_get -n $o',
+	'property_get -n $o->-4',
+	'property_get -n $o->{"-4"}',
+	'property_get -n $o->3',
+	'property_get -n $o->-2[2]',
+	'property_get -n $o->-2[8]',
+	'property_get -n $o->-2[8]["c"]',
+	'property_get -n $o->5',
+	'property_get -n $o->5->bar',
+	'property_get -n $o->5->baz[2]',
+	'property_get -n $o->5->b',
+	'property_get -n $o->5->b::foo',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00987-005.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00987-005.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 16
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00987-005.inc" lineno="16"></xdebug:message></response>
+
+-> property_get -i 4 -n $o
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$o" fullname="$o" type="object" classname="stdClass" children="1" numchildren="6" page="0" pagesize="32"><property name="key" fullname="$o-&gt;key" facet="public" type="string" size="5" encoding="base64"><![CDATA[dmFsdWU=]]></property><property name="1" fullname="$o-&gt;1" facet="public" type="int"><![CDATA[0]]></property><property name="-4" fullname="$o-&gt;{&quot;-4&quot;}" facet="public" type="string" size="3" encoding="base64"><![CDATA[Zm9v]]></property><property name="3" fullname="$o-&gt;3" facet="public" type="bool"><![CDATA[0]]></property><property name="-2" fullname="$o-&gt;{&quot;-2&quot;}" facet="public" type="array" children="1" numchildren="4"></property><property name="5" fullname="$o-&gt;5" facet="public" type="object" classname="stdClass" children="1" numchildren="4"></property></property></response>
+
+-> property_get -i 5 -n $o->-4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$o-&gt;-4" fullname="$o-&gt;-4" type="string" size="3" encoding="base64"><![CDATA[Zm9v]]></property></response>
+
+-> property_get -i 6 -n $o->{"-4"}
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$o-&gt;{&quot;-4&quot;}" fullname="$o-&gt;{&quot;-4&quot;}" type="string" size="3" encoding="base64"><![CDATA[Zm9v]]></property></response>
+
+-> property_get -i 7 -n $o->3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="$o-&gt;3" fullname="$o-&gt;3" type="bool"><![CDATA[0]]></property></response>
+
+-> property_get -i 8 -n $o->-2[2]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8"><property name="$o-&gt;-2[2]" fullname="$o-&gt;-2[2]" type="int"><![CDATA[7]]></property></response>
+
+-> property_get -i 9 -n $o->-2[8]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="9"><property name="$o-&gt;-2[8]" fullname="$o-&gt;-2[8]" type="array" children="1" numchildren="3" page="0" pagesize="32"><property name="0" fullname="$o-&gt;-2[8][0]" type="string" size="1" encoding="base64"><![CDATA[YQ==]]></property><property name="1" fullname="$o-&gt;-2[8][1]" type="string" size="1" encoding="base64"><![CDATA[Yg==]]></property><property name="2" fullname="$o-&gt;-2[8][2]" type="string" size="1" encoding="base64"><![CDATA[Yw==]]></property></property></response>
+
+-> property_get -i 10 -n $o->-2[8]["c"]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="10" status="break" reason="ok"><error code="300"><message><![CDATA[can not get property]]></message></error></response>
+
+-> property_get -i 11 -n $o->5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="11"><property name="$o-&gt;5" fullname="$o-&gt;5" type="object" classname="stdClass" children="1" numchildren="4" page="0" pagesize="32"><property name="foo" fullname="$o-&gt;5-&gt;foo" facet="public" type="int"><![CDATA[1]]></property><property name="bar" fullname="$o-&gt;5-&gt;bar" facet="public" type="int"><![CDATA[2]]></property><property name="baz" fullname="$o-&gt;5-&gt;baz" facet="public" type="array" children="1" numchildren="3"></property><property name="b" fullname="$o-&gt;5-&gt;b" facet="public" type="object" classname="b" children="1" numchildren="1"></property></property></response>
+
+-> property_get -i 12 -n $o->5->bar
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="12"><property name="$o-&gt;5-&gt;bar" fullname="$o-&gt;5-&gt;bar" type="int"><![CDATA[2]]></property></response>
+
+-> property_get -i 13 -n $o->5->baz[2]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="13"><property name="$o-&gt;5-&gt;baz[2]" fullname="$o-&gt;5-&gt;baz[2]" type="string" size="3" encoding="base64"><![CDATA[Zm9v]]></property></response>
+
+-> property_get -i 14 -n $o->5->b
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="14"><property name="$o-&gt;5-&gt;b" fullname="$o-&gt;5-&gt;b" type="object" classname="b" children="1" numchildren="1" page="0" pagesize="32"><property name="foo" fullname="$o-&gt;5-&gt;b::foo" facet="static public" type="int"><![CDATA[73]]></property></property></response>
+
+-> property_get -i 15 -n $o->5->b::foo
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="15"><property name="$o-&gt;5-&gt;b::foo" fullname="$o-&gt;5-&gt;b::foo" type="int"><![CDATA[73]]></property></response>
+
+-> detach -i 16
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="16" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00990-001.inc b/xdebug-3.4.5/tests/debugger/bug00990-001.inc
new file mode 100644
index 0000000..caee3b7
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00990-001.inc
@@ -0,0 +1,5 @@
+<?php
+$foo = 42;
+echo $bar;
+echo $bar;
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00990-001.phpt b/xdebug-3.4.5/tests/debugger/bug00990-001.phpt
new file mode 100644
index 0000000..ace4bd4
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00990-001.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test for bug #990: DBGP: Add notification for notices, warnings and errors
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00990-001.inc';
+
+$commands = array(
+	'step_into',
+	'step_into',
+	'feature_set -n notify_ok -v 1',
+	'step_into',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00990-001.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00990-001.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00990-001.inc" lineno="3"></xdebug:message></response>
+
+-> feature_set -i 3 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="3" feature="notify_ok" success="1"></response>
+
+-> step_into -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="error"><xdebug:message filename="file://bug00990-001.inc" lineno="3" type="%s"><![CDATA[Undefined variable%sbar]]></xdebug:message></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug00990-001.inc" lineno="4"></xdebug:message></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00990-002.inc b/xdebug-3.4.5/tests/debugger/bug00990-002.inc
new file mode 100644
index 0000000..5d52b9e
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00990-002.inc
@@ -0,0 +1,4 @@
+<?php
+$foo = 42;
+new MyClass;
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00990-002.phpt b/xdebug-3.4.5/tests/debugger/bug00990-002.phpt
new file mode 100644
index 0000000..1ce9d73
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00990-002.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test for bug #990: DBGP: Add notification for notices, warnings and errors
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00990-002.inc';
+
+$commands = array(
+	'step_into',
+	'feature_set -n notify_ok -v 1',
+	'step_into',
+	'step_into',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00990-002.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00990-002.inc" lineno="2"></xdebug:message></response>
+
+-> feature_set -i 2 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="notify_ok" success="1"></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00990-002.inc" lineno="3"></xdebug:message></response>
+
+-> step_into -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="error"><xdebug:message filename="file://bug00990-002.inc" lineno="3" type="Fatal error"><![CDATA[Uncaught Error: Class %cMyClass%c not found]]></xdebug:message></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="4" status="stopping" reason="ok"></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00990-003.inc b/xdebug-3.4.5/tests/debugger/bug00990-003.inc
new file mode 100644
index 0000000..363eabf
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00990-003.inc
@@ -0,0 +1,4 @@
+<?php
+ini_set('html_errors', 1);
+new MyClass;
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00990-003.phpt b/xdebug-3.4.5/tests/debugger/bug00990-003.phpt
new file mode 100644
index 0000000..43278e5
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00990-003.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test for bug #990: DBGP: Add notification for notices, warnings and errors
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00990-003.inc';
+
+$commands = array(
+	'step_into',
+	'feature_set -n notify_ok -v 1',
+	'step_into',
+	'step_into',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00990-003.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00990-003.inc" lineno="2"></xdebug:message></response>
+
+-> feature_set -i 2 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="notify_ok" success="1"></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00990-003.inc" lineno="3"></xdebug:message></response>
+
+-> step_into -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="error"><xdebug:message filename="file://bug00990-003.inc" lineno="3" type="Fatal error"><![CDATA[Uncaught Error: Class %cMyClass%c not found]]></xdebug:message></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="4" status="stopping" reason="ok"></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00996-001.phpt b/xdebug-3.4.5/tests/debugger/bug00996-001.phpt
new file mode 100644
index 0000000..21af1df
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00996-001.phpt
@@ -0,0 +1,76 @@
+--TEST--
+Test for bug #996: Can't evaluate property of class that extends ArrayObject
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$filename = realpath( dirname(__FILE__) . '/bug00996.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 10",
+	"breakpoint_set -t line -f file://{$filename} -n 14",
+	'run',
+	'property_get -n $a',
+	'property_get -n $a->b',
+	'property_get -n $a->b[0]',
+	'property_get -n $a->b["c"]',
+	'property_get -n $a->b[9]',
+	'run',
+	'context_get',
+	'property_get -n $a->*ArrayObject*storage["f"]',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00996.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug00996.inc -n 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> breakpoint_set -i 2 -t line -f file://bug00996.inc -n 14
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0002"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug00996.inc" lineno="10"></xdebug:message></response>
+
+-> property_get -i 4 -n $a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$a" fullname="$a" type="object" classname="Clazz" children="1" numchildren="2" page="0" pagesize="32"><property name="b" fullname="$a-&gt;b" facet="public" type="array" children="1" numchildren="3"></property><property name="*ArrayObject*storage" fullname="$a-&gt;*ArrayObject*storage" facet="private" type="array" children="0" numchildren="0"></property></property></response>
+
+-> property_get -i 5 -n $a->b
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$a-&gt;b" fullname="$a-&gt;b" type="array" children="1" numchildren="3" page="0" pagesize="32"><property name="0" fullname="$a-&gt;b[0]" type="int"><![CDATA[1]]></property><property name="1" fullname="$a-&gt;b[1]" type="int"><![CDATA[2]]></property><property name="c" fullname="$a-&gt;b[&quot;c&quot;]" type="int"><![CDATA[3]]></property></property></response>
+
+-> property_get -i 6 -n $a->b[0]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$a-&gt;b[0]" fullname="$a-&gt;b[0]" type="int"><![CDATA[1]]></property></response>
+
+-> property_get -i 7 -n $a->b["c"]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="$a-&gt;b[&quot;c&quot;]" fullname="$a-&gt;b[&quot;c&quot;]" type="int"><![CDATA[3]]></property></response>
+
+-> property_get -i 8 -n $a->b[9]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8" status="break" reason="ok"><error code="300"><message><![CDATA[can not get property]]></message></error></response>
+
+-> run -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="9" status="break" reason="ok"><xdebug:message filename="file://bug00996.inc" lineno="14"></xdebug:message></response>
+
+-> context_get -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="10" context="0"><property name="$a" fullname="$a" type="object" classname="Clazz" children="1" numchildren="2" page="0" pagesize="32"><property name="b" fullname="$a-&gt;b" facet="public" type="array" children="1" numchildren="3"></property><property name="*ArrayObject*storage" fullname="$a-&gt;*ArrayObject*storage" facet="private" type="array" children="1" numchildren="1"></property></property></response>
+
+-> property_get -i 11 -n $a->*ArrayObject*storage["f"]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="11"><property name="$a-&gt;*ArrayObject*storage[&quot;f&quot;]" fullname="$a-&gt;*ArrayObject*storage[&quot;f&quot;]" type="string" size="7" encoding="base64"><![CDATA[Y29va2llcw==]]></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00996-002.phpt b/xdebug-3.4.5/tests/debugger/bug00996-002.phpt
new file mode 100644
index 0000000..5993ca5
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00996-002.phpt
@@ -0,0 +1,66 @@
+--TEST--
+Test for bug #996: Can't evaluate property of class that extends ArrayObject
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$filename = realpath( dirname(__FILE__) . '/bug00996.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 14",
+	'run',
+	'context_get',
+	'property_get -n $a',
+	'property_get -n $a->*ArrayObject*storage',
+	'property_get -n $a->*ArrayObject*storage["f"]',
+	'property_get -n $a->*ArrayObject*storage->$a',
+	'property_get -n $a->*ArrayObject*storage[44]',
+	'property_get -n $a->*ArrayObject*storage["p"]',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00996.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug00996.inc -n 14
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug00996.inc" lineno="14"></xdebug:message></response>
+
+-> context_get -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="3" context="0"><property name="$a" fullname="$a" type="object" classname="Clazz" children="1" numchildren="2" page="0" pagesize="32"><property name="b" fullname="$a-&gt;b" facet="public" type="array" children="1" numchildren="3"></property><property name="*ArrayObject*storage" fullname="$a-&gt;*ArrayObject*storage" facet="private" type="array" children="1" numchildren="1"></property></property></response>
+
+-> property_get -i 4 -n $a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$a" fullname="$a" type="object" classname="Clazz" children="1" numchildren="2" page="0" pagesize="32"><property name="b" fullname="$a-&gt;b" facet="public" type="array" children="1" numchildren="3"></property><property name="*ArrayObject*storage" fullname="$a-&gt;*ArrayObject*storage" facet="private" type="array" children="1" numchildren="1"></property></property></response>
+
+-> property_get -i 5 -n $a->*ArrayObject*storage
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$a-&gt;*ArrayObject*storage" fullname="$a-&gt;*ArrayObject*storage" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="f" fullname="$a-&gt;*ArrayObject*storage[&quot;f&quot;]" type="string" size="7" encoding="base64"><![CDATA[Y29va2llcw==]]></property></property></response>
+
+-> property_get -i 6 -n $a->*ArrayObject*storage["f"]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$a-&gt;*ArrayObject*storage[&quot;f&quot;]" fullname="$a-&gt;*ArrayObject*storage[&quot;f&quot;]" type="string" size="7" encoding="base64"><![CDATA[Y29va2llcw==]]></property></response>
+
+-> property_get -i 7 -n $a->*ArrayObject*storage->$a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7" status="break" reason="ok"><error code="300"><message><![CDATA[can not get property]]></message></error></response>
+
+-> property_get -i 8 -n $a->*ArrayObject*storage[44]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8" status="break" reason="ok"><error code="300"><message><![CDATA[can not get property]]></message></error></response>
+
+-> property_get -i 9 -n $a->*ArrayObject*storage["p"]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="9" status="break" reason="ok"><error code="300"><message><![CDATA[can not get property]]></message></error></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug00996.inc b/xdebug-3.4.5/tests/debugger/bug00996.inc
new file mode 100644
index 0000000..1e88057
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00996.inc
@@ -0,0 +1,16 @@
+<?php
+
+class Clazz extends ArrayObject{
+
+}
+
+$a = new Clazz();
+$a->b = array(1,2,'c' => 3);
+
+echo $a->b[0];
+
+$a['f'] = 'cookies';
+
+echo $a['f'];
+
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug00998-ipv4.phpt b/xdebug-3.4.5/tests/debugger/bug00998-ipv4.phpt
new file mode 100644
index 0000000..a668699
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00998-ipv4.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Test for bug #998: Test that Xdebug connects back on IPv4
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00998.inc';
+
+dbgpRunFile( $filename, [], [], [ 'ipv' => 4 ] );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00998.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
diff --git a/xdebug-3.4.5/tests/debugger/bug00998-ipv4_localhost.phpt b/xdebug-3.4.5/tests/debugger/bug00998-ipv4_localhost.phpt
new file mode 100644
index 0000000..404a752
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00998-ipv4_localhost.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Test for bug #998: Test that Xdebug connects back on IPv4 with localhost as the remote host
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug00998.inc';
+
+dbgpRunFile( $filename, [], [ 'xdebug.remote_host' => 'localhost' ], [ 'ipv' => 4 ] );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00998.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
diff --git a/xdebug-3.4.5/tests/debugger/bug00998-ipv6.phpt b/xdebug-3.4.5/tests/debugger/bug00998-ipv6.phpt
new file mode 100644
index 0000000..8983881
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00998-ipv6.phpt
@@ -0,0 +1,18 @@
+--TEST--
+Test for bug #998: Test that Xdebug connects back on IPv6
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; !win');
+if (getenv("SKIP_IPV6_TESTS")) { exit("skip Excluding IPv6 tests"); }
+require 'dbgp/dbgpclient.php';
+if (!DebugClientIPv6::isSupported($errno, $errstr)) echo "skip IPv6 support is not configured. Error: $errstr, errno: $errno\n";
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+dbgpRunFile('', [], [], [ 'ipv' => 6 ] );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
diff --git a/xdebug-3.4.5/tests/debugger/bug00998-ipv6_localhost.phpt b/xdebug-3.4.5/tests/debugger/bug00998-ipv6_localhost.phpt
new file mode 100644
index 0000000..39fea13
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug00998-ipv6_localhost.phpt
@@ -0,0 +1,19 @@
+--TEST--
+Test for bug #998: Test that Xdebug connects back on IPv6 with localhost as the remote host
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+if (getenv("SKIP_IPV6_TESTS")) { exit("skip Excluding IPv6 tests"); }
+require 'dbgp/dbgpclient.php';
+if (!DebugClientIPv6::isSupported($errno, $errstr)) echo "skip IPv6 support is not configured. Error: $errstr, errno: $errno\n";
+if (strstr(exec("getent ahostsv6 localhost"), '::1')===false) echo "skip localhost doesn't resolve as IPv6";
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+dbgpRunFile('', [], [ 'xdebug.remote_host' => 'localhost' ], [ 'ipv' => 6 ] );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
diff --git a/xdebug-3.4.5/tests/debugger/bug00998.inc b/xdebug-3.4.5/tests/debugger/bug00998.inc
new file mode 100644
index 0000000..e69de29
diff --git a/xdebug-3.4.5/tests/debugger/bug01007-index.inc b/xdebug-3.4.5/tests/debugger/bug01007-index.inc
new file mode 100644
index 0000000..b29b4f6
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01007-index.inc
@@ -0,0 +1,6 @@
+<?php
+$DIR = getenv("XDEBUG_TEST_DIR");
+include $DIR . '/bug01007-simpleclass.inc';
+
+echo SimpleClass::init();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01007-simpleclass.inc b/xdebug-3.4.5/tests/debugger/bug01007-simpleclass.inc
new file mode 100644
index 0000000..10f3138
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01007-simpleclass.inc
@@ -0,0 +1,17 @@
+<?php
+class SimpleClass
+{
+    const HELLO = "HELLO";
+    public static $hello;
+
+    public static function init(){
+        return self::displayVar();
+    }
+    
+    private static function displayVar() {
+        
+        self::$hello = self::HELLO;
+        return self::$hello;
+    }
+}
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01007.phpt b/xdebug-3.4.5/tests/debugger/bug01007.phpt
new file mode 100644
index 0000000..aad564e
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01007.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test for bug #1007: Static Variables are showing "uninitialized" when stepping through the debug process
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$dir = dirname(__FILE__);
+
+$filename = dirname(__FILE__) . '/bug01007-index.inc';
+
+$commands = array(
+	'breakpoint_set -t call -m SimpleClass::displayVar',
+	'run',
+	'step_into',
+	'context_get',
+	'property_get -n ::hello'
+);
+
+dbgpRunFile( $filename, $commands, [], ['env' => ['XDEBUG_TEST_DIR' => $dir]] );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01007-index.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t call -m SimpleClass::displayVar
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01007-simpleclass.inc" lineno="13"></xdebug:message></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01007-simpleclass.inc" lineno="14"></xdebug:message></response>
+
+-> context_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="::" fullname="::" type="object" classname="SimpleClass" children="1" numchildren="1"><property name="::hello" fullname="::hello" type="string" size="5" facet="static public" encoding="base64"><![CDATA[SEVMTE8=]]></property></property></response>
+
+-> property_get -i 5 -n ::hello
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="::hello" fullname="::hello" type="string" size="5" encoding="base64"><![CDATA[SEVMTE8=]]></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01025.inc b/xdebug-3.4.5/tests/debugger/bug01025.inc
new file mode 100644
index 0000000..2d741bc
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01025.inc
@@ -0,0 +1,3 @@
+<?php
+echo "foo\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01025.phpt b/xdebug-3.4.5/tests/debugger/bug01025.phpt
new file mode 100644
index 0000000..d952624
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01025.phpt
@@ -0,0 +1,64 @@
+--TEST--
+Test for bug #1025: Xdebug does not reject wrong breakpoint types (-t)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$dir = dirname(__FILE__);
+putenv("XDEBUG_TEST_DIR=$dir");
+
+$filename = dirname(__FILE__) . '/bug01025.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t bakerstreet',
+	'breakpoint_set -t line -n 3',
+	'breakpoint_set -t conditional -n 4',
+	'breakpoint_set -t call -m strlen',
+	'breakpoint_set -t return -m strlen',
+	'breakpoint_set -t exception -x Exception',
+	'breakpoint_set -t watch',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01025.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01025.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t bakerstreet
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" status="break" reason="ok"><error code="3"><message><![CDATA[invalid or missing options]]></message></error></response>
+
+-> breakpoint_set -i 3 -t line -n 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001"></response>
+
+-> breakpoint_set -i 4 -t conditional -n 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" id="{{PID}}0002"></response>
+
+-> breakpoint_set -i 5 -t call -m strlen
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="5" id="{{PID}}0003"></response>
+
+-> breakpoint_set -i 6 -t return -m strlen
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="6" id="{{PID}}0004"></response>
+
+-> breakpoint_set -i 7 -t exception -x Exception
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="7" id="{{PID}}0005"></response>
+
+-> breakpoint_set -i 8 -t watch
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="8" status="break" reason="ok"><error code="201"><message><![CDATA[breakpoint type is not supported]]></message></error></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01048-001.phpt b/xdebug-3.4.5/tests/debugger/bug01048-001.phpt
new file mode 100644
index 0000000..e509331
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01048-001.phpt
@@ -0,0 +1,54 @@
+--TEST--
+Test for bug #1048: Can not get $GLOBAL variable by property_value on function context
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; PHP < 8.1');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$dir = dirname(__FILE__);
+putenv("XDEBUG_TEST_DIR=$dir");
+
+$filename = dirname(__FILE__) . '/bug01048.inc';
+
+$commands = array(
+	'run',
+	'property_get -d 0 -c 1 -n $GLOBALS[\'cache\']',
+	'property_value -d 0 -c 1 -n $GLOBALS[\'cache\']',
+	'run',
+	'property_get -d 0 -c 1 -n $GLOBALS[\'cache\']',
+	'property_value -d 0 -c 1 -n $GLOBALS[\'cache\']',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01048.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> run -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01048.inc" lineno="6"></xdebug:message></response>
+
+-> property_get -i 2 -d 0 -c 1 -n $GLOBALS['cache']
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="2"><property name="$GLOBALS[&#39;cache&#39;]" fullname="$GLOBALS[&#39;cache&#39;]" type="string" size="5" encoding="base64"><![CDATA[Y2FjaGU=]]></property></response>
+
+-> property_value -i 3 -d 0 -c 1 -n $GLOBALS['cache']
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_value" transaction_id="3" type="string" size="5" encoding="base64"><![CDATA[Y2FjaGU=]]></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01048.inc" lineno="11"></xdebug:message></response>
+
+-> property_get -i 5 -d 0 -c 1 -n $GLOBALS['cache']
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$GLOBALS[&#39;cache&#39;]" fullname="$GLOBALS[&#39;cache&#39;]" type="string" size="5" encoding="base64"><![CDATA[Y2FjaGU=]]></property></response>
+
+-> property_value -i 6 -d 0 -c 1 -n $GLOBALS['cache']
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_value" transaction_id="6" type="string" size="5" encoding="base64"><![CDATA[Y2FjaGU=]]></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01048.inc b/xdebug-3.4.5/tests/debugger/bug01048.inc
new file mode 100644
index 0000000..9996a60
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01048.inc
@@ -0,0 +1,12 @@
+<?php
+
+function foo() {
+    $GLOBALS['cache'] = "cache";
+    xdebug_break(); // 1
+    echo 1;
+}
+
+foo();
+xdebug_break(); // 2
+echo 1;
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01059.inc b/xdebug-3.4.5/tests/debugger/bug01059.inc
new file mode 100644
index 0000000..8e997db
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01059.inc
@@ -0,0 +1,5 @@
+<?php
+$GLOBALS[0] = "oo";
+$GLOBALS["fdoo"] = "oo";
+echo count($GLOBALS);
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01083.inc b/xdebug-3.4.5/tests/debugger/bug01083.inc
new file mode 100644
index 0000000..980362b
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01083.inc
@@ -0,0 +1,25 @@
+<?php
+
+
+function phpErrorCatcher($no = 0, $str = null, $file = null, $line = 0) {
+    throw new Exception($str);
+}
+
+set_error_handler("phpErrorCatcher", E_ALL);
+
+function my_exception_handler() {
+    xdebug_break();
+}
+
+set_exception_handler("my_exception_handler");
+
+
+
+function causeError() {
+    echo $undefined;
+}
+
+
+
+causeError();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01083.phpt b/xdebug-3.4.5/tests/debugger/bug01083.phpt
new file mode 100644
index 0000000..057434f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01083.phpt
@@ -0,0 +1,41 @@
+--TEST--
+Test for bug #1083: Segfault while retrieving information about uninitiased var.
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$filename = dirname(__FILE__) . '/bug01083.inc';
+
+$commands = array(
+	'breakpoint_set -t exception -x Exception',
+	'run',
+	'context_get -d 1 -c 0',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01083.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t exception -x Exception
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01083.inc" lineno="5" exception="Exception"><![CDATA[Undefined variable%sundefined]]></xdebug:message></response>
+
+-> context_get -i 3 -d 1 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="3" context="0"><property name="$undefined" fullname="$undefined" type="uninitialized"></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01084.inc b/xdebug-3.4.5/tests/debugger/bug01084.inc
new file mode 100644
index 0000000..0ba38c8
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01084.inc
@@ -0,0 +1,32 @@
+<?php
+class FooException extends Exception
+{
+}
+
+class FooBarException extends FooException
+{
+}
+
+class FooBarBazException extends FooBarException
+{
+}
+
+class MoonException extends Exception
+{
+}
+
+echo strlen("Hello there!"), "\n";
+
+/* Set -x FooBarException */
+try {throw new MoonException("this should not break"); } catch (Exception $e) {}
+try {throw new FooException("this should not break"); } catch (Exception $e) {}
+try {throw new FooBarException("this should break", 42); } catch (Exception $e) {}
+
+/* Set -x FooException */
+try {throw new MoonException("this should not break"); } catch (Exception $e) {}
+try {throw new FooException("this should now break"); } catch (Exception $e) {}
+try {throw new FooBarException("this should still break", 43); } catch (Exception $e) {}
+
+/* Set -x * */
+try {throw new MoonException("this should now break"); } catch (Exception $e) {}
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01084.phpt b/xdebug-3.4.5/tests/debugger/bug01084.phpt
new file mode 100644
index 0000000..f5605ef
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01084.phpt
@@ -0,0 +1,55 @@
+--TEST--
+Test for bug #1084: Add support for inheritence in exception breakpoints
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01084.inc';
+
+$commands = array(
+	'breakpoint_set -t exception -x FooBarException',
+	'run',
+	'breakpoint_set -t exception -x FooException',
+	'run',
+	'run',
+	'breakpoint_set -t exception -x *',
+	'run',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01084.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t exception -x FooBarException
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01084.inc" lineno="23" exception="FooBarException" code="42"><![CDATA[this should break]]></xdebug:message></response>
+
+-> breakpoint_set -i 3 -t exception -x FooException
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0002"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01084.inc" lineno="27" exception="FooException"><![CDATA[this should now break]]></xdebug:message></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug01084.inc" lineno="28" exception="FooBarException" code="43"><![CDATA[this should still break]]></xdebug:message></response>
+
+-> breakpoint_set -i 6 -t exception -x *
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="6" id="{{PID}}0003"></response>
+
+-> run -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://bug01084.inc" lineno="31" exception="MoonException"><![CDATA[this should now break]]></xdebug:message></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01101.inc b/xdebug-3.4.5/tests/debugger/bug01101.inc
new file mode 100644
index 0000000..26496d3
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01101.inc
@@ -0,0 +1,8 @@
+<?php
+echo strlen("line2"), "\n";
+echo strlen("line3"), "\n";
+echo strlen("line4"), "\n";
+xdebug_break();
+echo strlen("line5"), "\n";
+echo strlen("line6"), "\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01101.phpt b/xdebug-3.4.5/tests/debugger/bug01101.phpt
new file mode 100644
index 0000000..e8bf203
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01101.phpt
@@ -0,0 +1,36 @@
+--TEST--
+Test for bug #1101: Debugger is not triggered on xdebug_break() in jit mode.
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$filename = dirname(__FILE__) . '/bug01101.inc';
+
+$commands = array(
+	'step_into',
+	'context_get',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands, array( 'xdebug.start_with_request' => 'trigger' ) );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01101.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01101.inc" lineno="6"></xdebug:message></response>
+
+-> context_get -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="2" context="0"></response>
+
+-> detach -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="3" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01104.inc b/xdebug-3.4.5/tests/debugger/bug01104.inc
new file mode 100644
index 0000000..ae90668
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01104.inc
@@ -0,0 +1,9 @@
+<?php
+class DemoClass {
+    protected static $d = array( 42, 'foo' );
+}
+
+$d = new DemoClass;
+
+echo "the end\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01104.phpt b/xdebug-3.4.5/tests/debugger/bug01104.phpt
new file mode 100644
index 0000000..c7de529
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01104.phpt
@@ -0,0 +1,60 @@
+--TEST--
+Test for bug #1104: "Notice: Corrupt member variable name" on 1-character static property
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01104.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 8",
+	'run',
+	'context_get',
+	'property_get -n $d',
+	'feature_set -n max_depth -v 2',
+	'property_get -n $d',
+	'property_get -n $d::d',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01104.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug01104.inc -n 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01104.inc" lineno="8"></xdebug:message></response>
+
+-> context_get -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="3" context="0"><property name="$d" fullname="$d" type="object" classname="DemoClass" children="1" numchildren="1" page="0" pagesize="32"><property name="d" fullname="$d::d" facet="static protected" type="array" children="1" numchildren="2"></property></property></response>
+
+-> property_get -i 4 -n $d
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$d" fullname="$d" type="object" classname="DemoClass" children="1" numchildren="1" page="0" pagesize="32"><property name="d" fullname="$d::d" facet="static protected" type="array" children="1" numchildren="2"></property></property></response>
+
+-> feature_set -i 5 -n max_depth -v 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="5" feature="max_depth" success="1"></response>
+
+-> property_get -i 6 -n $d
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$d" fullname="$d" type="object" classname="DemoClass" children="1" numchildren="1" page="0" pagesize="32"><property name="d" fullname="$d::d" facet="static protected" type="array" children="1" numchildren="2" page="0" pagesize="32"><property name="0" fullname="$d::d[0]" type="int"><![CDATA[42]]></property><property name="1" fullname="$d::d[1]" type="string" size="3" encoding="base64"><![CDATA[Zm9v]]></property></property></property></response>
+
+-> property_get -i 7 -n $d::d
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="$d::d" fullname="$d::d" type="array" children="1" numchildren="2" page="0" pagesize="32"><property name="0" fullname="$d::d[0]" type="int"><![CDATA[42]]></property><property name="1" fullname="$d::d[1]" type="string" size="3" encoding="base64"><![CDATA[Zm9v]]></property></property></response>
+
+-> detach -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="8" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01105-001.inc b/xdebug-3.4.5/tests/debugger/bug01105-001.inc
new file mode 100644
index 0000000..2601266
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01105-001.inc
@@ -0,0 +1,19 @@
+<?php
+function scope0() {
+    $var = 'scope0';
+    $break = null;
+}
+
+function scope1() {
+    $var = 'scope1';
+    scope0();
+}
+
+function scope2() {
+    $var = 'scope2';
+    scope1();
+}
+
+scope2();
+
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01105-001.phpt b/xdebug-3.4.5/tests/debugger/bug01105-001.phpt
new file mode 100644
index 0000000..fd9d02b
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01105-001.phpt
@@ -0,0 +1,65 @@
+--TEST--
+Test for bug #1105: Setting properties without specifying a type only works in topmost frame
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01105-001.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 5",
+	'run',
+	'property_set -n $var -d 0 -- ' . base64_encode('"scope0-modified"'),
+	'property_set -n $var -d 1 -- ' . base64_encode('"scope1-modified"'),
+	'property_set -n $var -d 2 -- ' . base64_encode('"scope2-modified"'),
+	'property_get -n $var -d 0',
+	'property_get -n $var -d 1',
+	'property_get -n $var -d 2',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01105-001.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug01105-001.inc -n 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01105-001.inc" lineno="5"></xdebug:message></response>
+
+-> property_set -i 3 -n $var -d 0 -- InNjb3BlMC1tb2RpZmllZCI=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="3" success="1"></response>
+
+-> property_set -i 4 -n $var -d 1 -- InNjb3BlMS1tb2RpZmllZCI=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="4" success="1"></response>
+
+-> property_set -i 5 -n $var -d 2 -- InNjb3BlMi1tb2RpZmllZCI=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="5" success="1"></response>
+
+-> property_get -i 6 -n $var -d 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$var" fullname="$var" type="string" size="15" encoding="base64"><![CDATA[c2NvcGUwLW1vZGlmaWVk]]></property></response>
+
+-> property_get -i 7 -n $var -d 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="$var" fullname="$var" type="string" size="15" encoding="base64"><![CDATA[c2NvcGUxLW1vZGlmaWVk]]></property></response>
+
+-> property_get -i 8 -n $var -d 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8"><property name="$var" fullname="$var" type="string" size="15" encoding="base64"><![CDATA[c2NvcGUyLW1vZGlmaWVk]]></property></response>
+
+-> detach -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="9" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01105-002.inc b/xdebug-3.4.5/tests/debugger/bug01105-002.inc
new file mode 100644
index 0000000..f0a3403
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01105-002.inc
@@ -0,0 +1,21 @@
+<?php
+class foo {
+	static function scope0() {
+		$var = 'scope0';
+		$break = null;
+	}
+
+	static function scope1() {
+		$var = 'scope1';
+		self::scope0();
+	}
+
+	static function scope2() {
+		$var = 'scope2';
+		self::scope1();
+	}
+}
+
+foo::scope2();
+
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01105-002.phpt b/xdebug-3.4.5/tests/debugger/bug01105-002.phpt
new file mode 100644
index 0000000..310d9ac
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01105-002.phpt
@@ -0,0 +1,65 @@
+--TEST--
+Test for bug #1105: Setting properties without specifying a type only works in topmost frame
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01105-002.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 5",
+	'run',
+	'property_set -n $var -d 0 -- ' . base64_encode('"scope0-modified"'),
+	'property_set -n $var -d 1 -- ' . base64_encode('"scope1-modified"'),
+	'property_set -n $var -d 2 -- ' . base64_encode('"scope2-modified"'),
+	'property_get -n $var -d 0',
+	'property_get -n $var -d 1',
+	'property_get -n $var -d 2',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01105-002.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug01105-002.inc -n 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01105-002.inc" lineno="5"></xdebug:message></response>
+
+-> property_set -i 3 -n $var -d 0 -- InNjb3BlMC1tb2RpZmllZCI=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="3" success="1"></response>
+
+-> property_set -i 4 -n $var -d 1 -- InNjb3BlMS1tb2RpZmllZCI=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="4" success="1"></response>
+
+-> property_set -i 5 -n $var -d 2 -- InNjb3BlMi1tb2RpZmllZCI=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="5" success="1"></response>
+
+-> property_get -i 6 -n $var -d 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$var" fullname="$var" type="string" size="15" encoding="base64"><![CDATA[c2NvcGUwLW1vZGlmaWVk]]></property></response>
+
+-> property_get -i 7 -n $var -d 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="$var" fullname="$var" type="string" size="15" encoding="base64"><![CDATA[c2NvcGUxLW1vZGlmaWVk]]></property></response>
+
+-> property_get -i 8 -n $var -d 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8"><property name="$var" fullname="$var" type="string" size="15" encoding="base64"><![CDATA[c2NvcGUyLW1vZGlmaWVk]]></property></response>
+
+-> detach -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="9" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01105-003.inc b/xdebug-3.4.5/tests/debugger/bug01105-003.inc
new file mode 100644
index 0000000..3833412
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01105-003.inc
@@ -0,0 +1,22 @@
+<?php
+class foo {
+	function scope0() {
+		$var = 'scope0';
+		$break = null;
+	}
+
+	function scope1() {
+		$var = 'scope1';
+		$this->scope0();
+	}
+
+	function scope2() {
+		$var = 'scope2';
+		$this->scope1();
+	}
+}
+
+$f = new foo;
+$f->scope2();
+
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01105-003.phpt b/xdebug-3.4.5/tests/debugger/bug01105-003.phpt
new file mode 100644
index 0000000..81cfa84
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01105-003.phpt
@@ -0,0 +1,65 @@
+--TEST--
+Test for bug #1105: Setting properties without specifying a type only works in topmost frame
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01105-003.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 5",
+	'run',
+	'property_set -n $var -d 0 -- ' . base64_encode('"scope0-modified"'),
+	'property_set -n $var -d 1 -- ' . base64_encode('"scope1-modified"'),
+	'property_set -n $var -d 2 -- ' . base64_encode('"scope2-modified"'),
+	'property_get -n $var -d 0',
+	'property_get -n $var -d 1',
+	'property_get -n $var -d 2',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01105-003.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug01105-003.inc -n 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01105-003.inc" lineno="5"></xdebug:message></response>
+
+-> property_set -i 3 -n $var -d 0 -- InNjb3BlMC1tb2RpZmllZCI=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="3" success="1"></response>
+
+-> property_set -i 4 -n $var -d 1 -- InNjb3BlMS1tb2RpZmllZCI=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="4" success="1"></response>
+
+-> property_set -i 5 -n $var -d 2 -- InNjb3BlMi1tb2RpZmllZCI=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="5" success="1"></response>
+
+-> property_get -i 6 -n $var -d 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$var" fullname="$var" type="string" size="15" encoding="base64"><![CDATA[c2NvcGUwLW1vZGlmaWVk]]></property></response>
+
+-> property_get -i 7 -n $var -d 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="$var" fullname="$var" type="string" size="15" encoding="base64"><![CDATA[c2NvcGUxLW1vZGlmaWVk]]></property></response>
+
+-> property_get -i 8 -n $var -d 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8"><property name="$var" fullname="$var" type="string" size="15" encoding="base64"><![CDATA[c2NvcGUyLW1vZGlmaWVk]]></property></response>
+
+-> detach -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="9" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01111-001.inc b/xdebug-3.4.5/tests/debugger/bug01111-001.inc
new file mode 100644
index 0000000..d4d00ea
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01111-001.inc
@@ -0,0 +1,8 @@
+<?php
+function foo() {
+    throw new Exception();
+}
+
+foo();
+
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01111-001.phpt b/xdebug-3.4.5/tests/debugger/bug01111-001.phpt
new file mode 100644
index 0000000..41cf228
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01111-001.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #1111: eval does not work when debugger is stopped in xdebug_throw_exception_hook
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01111-001.inc';
+
+$commands = array(
+	'breakpoint_set -t exception -x Exception',
+	'run',
+	'eval -- ' . base64_encode('"modified"'),
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01111-001.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t exception -x Exception
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01111-001.inc" lineno="3" exception="Exception"><![CDATA[]]></xdebug:message></response>
+
+-> eval -i 3 -- Im1vZGlmaWVkIg==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="3"><property type="string" size="8" encoding="base64"><![CDATA[bW9kaWZpZWQ=]]></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01111-002.inc b/xdebug-3.4.5/tests/debugger/bug01111-002.inc
new file mode 100644
index 0000000..a394eb6
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01111-002.inc
@@ -0,0 +1,9 @@
+<?php
+function foo() {
+    $test = 'pristine';
+    throw new Exception();
+}
+
+foo();
+
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01111-002.phpt b/xdebug-3.4.5/tests/debugger/bug01111-002.phpt
new file mode 100644
index 0000000..5a508a7
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01111-002.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #1111: eval does not work when debugger is stopped in xdebug_throw_exception_hook
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01111-002.inc';
+
+$commands = array(
+	'breakpoint_set -t exception -x Exception',
+	'run',
+	'property_set -n $test -- ' . base64_encode('"modified"'),
+	'property_get -n $test',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01111-002.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t exception -x Exception
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01111-002.inc" lineno="4" exception="Exception"><![CDATA[]]></xdebug:message></response>
+
+-> property_set -i 3 -n $test -- Im1vZGlmaWVkIg==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="3" success="1"></response>
+
+-> property_get -i 4 -n $test
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$test" fullname="$test" type="string" size="8" encoding="base64"><![CDATA[bW9kaWZpZWQ=]]></property></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01165.inc b/xdebug-3.4.5/tests/debugger/bug01165.inc
new file mode 100644
index 0000000..849f2dc
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01165.inc
@@ -0,0 +1,16 @@
+<?php
+
+function bar()
+{
+    return 42;
+}
+
+function foo($arg)
+{
+    echo $arg;
+}
+
+foo(bar());
+echo 6 * 9;
+
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01165.phpt b/xdebug-3.4.5/tests/debugger/bug01165.phpt
new file mode 100644
index 0000000..74a999c
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01165.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #1165: DBGp: step_out skips subsequent function calls
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01165.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 13",
+	'run',
+	'step_into',
+	'step_out',
+	'step_out',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01165.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug01165.inc -n 13
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01165.inc" lineno="13"></xdebug:message></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01165.inc" lineno="5"></xdebug:message></response>
+
+-> step_out -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_out" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01165.inc" lineno="10"></xdebug:message></response>
+
+-> step_out -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_out" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug01165.inc" lineno="14"></xdebug:message></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01181.inc b/xdebug-3.4.5/tests/debugger/bug01181.inc
new file mode 100644
index 0000000..ac17b17
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01181.inc
@@ -0,0 +1,23 @@
+<?php
+
+class BaseClass {
+    protected $protected = [1, 2, 3];
+    private $private = ['a', 'b', 'c'];
+}
+
+class DerivedClass extends BaseClass {
+    function __get($name)
+    {
+        throw new \Exception('Derived class getter called with: ' . $name);
+    }
+}
+
+try {
+    $test = new DerivedClass();
+    echo "Statement to break on.\n"; // Breakpoint here
+}
+catch (\Exception $e) {
+    echo $e->getMessage();
+}
+echo "Statement after try/catch\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01181.phpt b/xdebug-3.4.5/tests/debugger/bug01181.phpt
new file mode 100644
index 0000000..d48a003
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01181.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #1181: Derived class with __get gets called on fetching base class private property
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01181.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 17",
+	'run',
+	'property_get -n $test->*BaseClass*private',
+	'step_into',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01181.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug01181.inc -n 17
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01181.inc" lineno="17"></xdebug:message></response>
+
+-> property_get -i 3 -n $test->*BaseClass*private
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$test-&gt;*BaseClass*private" fullname="$test-&gt;*BaseClass*private" type="array" children="1" numchildren="3" page="0" pagesize="32"><property name="0" fullname="$test-&gt;*BaseClass*private[0]" type="string" size="1" encoding="base64"><![CDATA[YQ==]]></property><property name="1" fullname="$test-&gt;*BaseClass*private[1]" type="string" size="1" encoding="base64"><![CDATA[Yg==]]></property><property name="2" fullname="$test-&gt;*BaseClass*private[2]" type="string" size="1" encoding="base64"><![CDATA[Yw==]]></property></property></response>
+
+-> step_into -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01181.inc" lineno="22"></xdebug:message></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01202-001.phpt b/xdebug-3.4.5/tests/debugger/bug01202-001.phpt
new file mode 100644
index 0000000..ecc51e1
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01202-001.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #1202: Anonymous classes are not handled properly while remote debugging [1]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01202.inc';
+
+$commands = array(
+	'step_into',
+	'step_into',
+	'context_get',
+	'property_get -n $a',
+	'property_get -n $a->a',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01202.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01202.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01202.inc" lineno="9"></xdebug:message></response>
+
+-> context_get -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="3" context="0"><property name="$a" fullname="$a" type="object" classname="class@anonymous&#0;%s" children="1" numchildren="1" page="0" pagesize="32"><property name="a" fullname="$a-&gt;a" facet="public" type="int"><![CDATA[42]]></property></property></response>
+
+-> property_get -i 4 -n $a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$a" fullname="$a" type="object" classname="class@anonymous&#0;%s" children="1" numchildren="1" page="0" pagesize="32"><property name="a" fullname="$a-&gt;a" facet="public" type="int"><![CDATA[42]]></property></property></response>
+
+-> property_get -i 5 -n $a->a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$a-&gt;a" fullname="$a-&gt;a" type="int"><![CDATA[42]]></property></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01202-002.phpt b/xdebug-3.4.5/tests/debugger/bug01202-002.phpt
new file mode 100644
index 0000000..bd7678e
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01202-002.phpt
@@ -0,0 +1,55 @@
+--TEST--
+Test for bug #1202: Anonymous classes are not handled properly while remote debugging [2]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01202.inc';
+
+$commands = array(
+	'feature_set -n extended_properties -v 1',
+	'step_into',
+	'step_into',
+	'context_get',
+	'property_get -n $a',
+	'property_get -n $a->a',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01202.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n extended_properties -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="extended_properties" success="1"></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01202.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01202.inc" lineno="9"></xdebug:message></response>
+
+-> context_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property type="object" children="1" numchildren="1" page="0" pagesize="32"><name encoding="base64"><![CDATA[JGE=]]></name><fullname encoding="base64"><![CDATA[JGE=]]></fullname><classname encoding="base64"><![CDATA[Y2xhc3NAYW5vbnltb3Vz%s]]></classname><property name="a" fullname="$a-&gt;a" facet="public" type="int"><![CDATA[42]]></property></property></response>
+
+-> property_get -i 5 -n $a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property type="object" children="1" numchildren="1" page="0" pagesize="32"><name encoding="base64"><![CDATA[JGE=]]></name><fullname encoding="base64"><![CDATA[JGE=]]></fullname><classname encoding="base64"><![CDATA[Y2xhc3NAYW5vbnltb3Vz%s]]></classname><property name="a" fullname="$a-&gt;a" facet="public" type="int"><![CDATA[42]]></property></property></response>
+
+-> property_get -i 6 -n $a->a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$a-&gt;a" fullname="$a-&gt;a" type="int"><![CDATA[42]]></property></response>
+
+-> detach -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="7" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01202.inc b/xdebug-3.4.5/tests/debugger/bug01202.inc
new file mode 100644
index 0000000..91324f6
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01202.inc
@@ -0,0 +1,10 @@
+<?php
+$a = new class {
+	public $a = 42;
+	public function hello() {
+		echo 'Hello world';
+	}
+};
+
+$a->hello();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01203-001.phpt b/xdebug-3.4.5/tests/debugger/bug01203-001.phpt
new file mode 100644
index 0000000..c7f3523
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01203-001.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #1203: Accessing static property of a class that has no static properties crashes while remote debugging [1]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01202.inc';
+
+$commands = array(
+	'step_into',
+	'step_into',
+	'context_get',
+	'property_get -n $a',
+	'property_get -n $a::a',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01202.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01202.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01202.inc" lineno="9"></xdebug:message></response>
+
+-> context_get -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="3" context="0"><property name="$a" fullname="$a" type="object" classname="class@anonymous&#0;%s" children="1" numchildren="1" page="0" pagesize="32"><property name="a" fullname="$a-&gt;a" facet="public" type="int"><![CDATA[42]]></property></property></response>
+
+-> property_get -i 4 -n $a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$a" fullname="$a" type="object" classname="class@anonymous&#0;%s" children="1" numchildren="1" page="0" pagesize="32"><property name="a" fullname="$a-&gt;a" facet="public" type="int"><![CDATA[42]]></property></property></response>
+
+-> property_get -i 5 -n $a::a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5" status="break" reason="ok"><error code="300"><message><![CDATA[can not get property]]></message></error></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01203-002.phpt b/xdebug-3.4.5/tests/debugger/bug01203-002.phpt
new file mode 100644
index 0000000..312ab5d
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01203-002.phpt
@@ -0,0 +1,55 @@
+--TEST--
+Test for bug #1203: Accessing static property of a class that has no static properties crashes while remote debugging [2]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01202.inc';
+
+$commands = array(
+	'feature_set -n extended_properties -v 1',
+	'step_into',
+	'step_into',
+	'context_get',
+	'property_get -n $a',
+	'property_get -n $a::a',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01202.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n extended_properties -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="extended_properties" success="1"></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01202.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01202.inc" lineno="9"></xdebug:message></response>
+
+-> context_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property type="object" children="1" numchildren="1" page="0" pagesize="32"><name encoding="base64"><![CDATA[JGE=]]></name><fullname encoding="base64"><![CDATA[JGE=]]></fullname><classname encoding="base64"><![CDATA[Y2xhc3NAYW5vbnltb3Vz%s]]></classname><property name="a" fullname="$a-&gt;a" facet="public" type="int"><![CDATA[42]]></property></property></response>
+
+-> property_get -i 5 -n $a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property type="object" children="1" numchildren="1" page="0" pagesize="32"><name encoding="base64"><![CDATA[JGE=]]></name><fullname encoding="base64"><![CDATA[JGE=]]></fullname><classname encoding="base64"><![CDATA[Y2xhc3NAYW5vbnltb3Vz%s]]></classname><property name="a" fullname="$a-&gt;a" facet="public" type="int"><![CDATA[42]]></property></property></response>
+
+-> property_get -i 6 -n $a::a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6" status="break" reason="ok"><error code="300"><message><![CDATA[can not get property]]></message></error></response>
+
+-> detach -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="7" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01218-002.phpt b/xdebug-3.4.5/tests/debugger/bug01218-002.phpt
new file mode 100644
index 0000000..c1491f4
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01218-002.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test for bug #1218: Xdebug messes with the exception code, by casting it to int (DBGp)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--INI--
+xdebug.show_exception_trace=1
+xdebug.show_local_vars=0
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01218.inc';
+
+$commands = array(
+	'breakpoint_set -t exception -x *',
+	'run',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01218.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t exception -x *
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01218.inc" lineno="15" exception="StringCodeException" code="SomeString"><![CDATA[test]]></xdebug:message></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01218.inc b/xdebug-3.4.5/tests/debugger/bug01218.inc
new file mode 100644
index 0000000..b89c2f8
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01218.inc
@@ -0,0 +1,19 @@
+<?php
+
+class StringCodeException extends Exception
+{
+    public function __construct()
+    {
+        $this->code = 'SomeString';
+		$this->message = 'test';
+    }
+}
+
+$e = new StringCodeException;
+
+try {
+    throw $e;
+} catch (StringCodeException $e) {
+    var_dump($e->getCode());
+}
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01223.inc b/xdebug-3.4.5/tests/debugger/bug01223.inc
new file mode 100644
index 0000000..915b5dc
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01223.inc
@@ -0,0 +1,12 @@
+<?php
+ini_set( 'display_errors', true );
+
+echo "Test for Derick";
+$ver = phpversion();
+
+$a = array();
+$a['x'] = 'y';
+$a['y'] = array( 'a' => 'b' );
+
+return;
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01223.phpt b/xdebug-3.4.5/tests/debugger/bug01223.phpt
new file mode 100644
index 0000000..e5ba9df
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01223.phpt
@@ -0,0 +1,65 @@
+--TEST--
+Test for bug #1223: Xdebug crashes on PHP 7 when doing a DBGp eval command
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01223.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 8',
+	'run',
+	'eval -- JGE=',
+	'step_over',
+	'eval -- JGE=',
+	'step_over',
+	'eval -- JGE=',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01223.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01223.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01223.inc" lineno="8"></xdebug:message></response>
+
+-> eval -i 4 -- JGE=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="4"><property type="array" children="0" numchildren="0" page="0" pagesize="32"></property></response>
+
+-> step_over -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug01223.inc" lineno="9"></xdebug:message></response>
+
+-> eval -i 6 -- JGE=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="6"><property type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="x" type="string" size="1" encoding="base64"><![CDATA[eQ==]]></property></property></response>
+
+-> step_over -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://bug01223.inc" lineno="11"></xdebug:message></response>
+
+-> eval -i 8 -- JGE=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="8"><property type="array" children="1" numchildren="2" page="0" pagesize="32"><property name="x" type="string" size="1" encoding="base64"><![CDATA[eQ==]]></property><property name="y" type="array" children="1" numchildren="1"></property></property></response>
+
+-> detach -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="9" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01272-001.phpt b/xdebug-3.4.5/tests/debugger/bug01272-001.phpt
new file mode 100644
index 0000000..1410578
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01272-001.phpt
@@ -0,0 +1,65 @@
+--TEST--
+Test for bug #1272: property_get doesn't return attributes for SimpleXMLElement
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext simplexml; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01272.inc';
+
+$commands = array(
+	'feature_set -n max_depth -v 3',
+	'step_into',
+	'breakpoint_set -t line -n 7',
+	'run',
+	'property_get -n $e',
+	'property_get -n $e->@attributes',
+	'property_get -n $e->@attributes["att1"]',
+	'property_get -n $e->b[0]->@attributes',
+	'property_get -n $e->b[1]->@attributes["attb"]',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01272.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n max_depth -v 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="max_depth" success="1"></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01272.inc" lineno="3"></xdebug:message></response>
+
+-> breakpoint_set -i 3 -t line -n 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01272.inc" lineno="7"></xdebug:message></response>
+
+-> property_get -i 5 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$e" fullname="$e" type="object" classname="SimpleXMLElement" children="1" numchildren="2" page="0" pagesize="32"><property name="@attributes" fullname="$e-&gt;@attributes" facet="public" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="att1" fullname="$e-&gt;@attributes[&quot;att1&quot;]" type="string" size="5" encoding="base64"><![CDATA[YXR0LWE=]]></property></property><property name="b" fullname="$e-&gt;b" facet="public" type="array" children="1" numchildren="2" page="0" pagesize="32"><property name="0" fullname="$e-&gt;b[0]" type="object" classname="SimpleXMLElement" children="1" numchildren="1" page="0" pagesize="32"><property name="@attributes" fullname="$e-&gt;b[0]-&gt;@attributes" facet="public" type="array" children="1" numchildren="1"></property></property><property name="1" fullname="$e-&gt;b[1]" type="object" classname="SimpleXMLElement" children="1" numchildren="1" page="0" pagesize="32"><property name="@attributes" fullname="$e-&gt;b[1]-&gt;@attributes" facet="public" type="array" children="1" numchildren="1"></property></property></property></property></response>
+
+-> property_get -i 6 -n $e->@attributes
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$e-&gt;@attributes" fullname="$e-&gt;@attributes" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="att1" fullname="$e-&gt;@attributes[&quot;att1&quot;]" type="string" size="5" encoding="base64"><![CDATA[YXR0LWE=]]></property></property></response>
+
+-> property_get -i 7 -n $e->@attributes["att1"]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="$e-&gt;@attributes[&quot;att1&quot;]" fullname="$e-&gt;@attributes[&quot;att1&quot;]" type="string" size="5" encoding="base64"><![CDATA[YXR0LWE=]]></property></response>
+
+-> property_get -i 8 -n $e->b[0]->@attributes
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8"><property name="$e-&gt;b[0]-&gt;@attributes" fullname="$e-&gt;b[0]-&gt;@attributes" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="attb" fullname="$e-&gt;b[0]-&gt;@attributes[&quot;attb&quot;]" type="string" size="6" encoding="base64"><![CDATA[YXR0Yi0x]]></property></property></response>
+
+-> property_get -i 9 -n $e->b[1]->@attributes["attb"]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="9"><property name="$e-&gt;b[1]-&gt;@attributes[&quot;attb&quot;]" fullname="$e-&gt;b[1]-&gt;@attributes[&quot;attb&quot;]" type="string" size="6" encoding="base64"><![CDATA[YXR0Yi0y]]></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01272.inc b/xdebug-3.4.5/tests/debugger/bug01272.inc
new file mode 100644
index 0000000..6820c73
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01272.inc
@@ -0,0 +1,10 @@
+<?php
+
+$xml = "<a att1='att-a'><b attb='attb-1'/><b attb='attb-2'/></a>";
+
+$e = new SimpleXmlElement($xml);
+
+foreach($e->b as $b) { // breakpoint here
+    echo $b['attb'].PHP_EOL;
+}
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01305.inc b/xdebug-3.4.5/tests/debugger/bug01305.inc
new file mode 100644
index 0000000..982c996
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01305.inc
@@ -0,0 +1,13 @@
+<?php
+
+$settings = array();
+
+//This doesn't work
+$settings["One's Stuff"]['id'] = 1000;
+$settings["Two\"s Stuff"]['id'] = 2000;
+$settings["Three\\s Stuff"]['id'] = 3000;
+$settings["Four'sStuff"]['id'] = 4000;
+$settings["Five'sSt\0ff"]['id'] = 5000;
+echo "hello!\n";
+
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01305.phpt b/xdebug-3.4.5/tests/debugger/bug01305.phpt
new file mode 100644
index 0000000..d89c917
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01305.phpt
@@ -0,0 +1,100 @@
+--TEST--
+Test for bug #1305: Problems with array keys with an aposprophe
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01305.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 11',
+	'run',
+	'property_get -d 0 -c 0 -n $settings',
+	'property_get -d 0 -c 0 -n "$settings[\"One\'s Stuff\"]"',
+	'property_get -d 0 -c 0 -n "$settings[\"One\\\'s Stuff\"]"',
+	'property_get -d 0 -c 0 -n "$settings[\"Two\\\\\"s Stuff\"]"',
+	'property_get -d 0 -c 0 -n "$settings[\"Three\\\\\\\\s Stuff\"]"',
+	'property_get -d 0 -c 0 -n $settings["Four\'sStuff"]',
+	'property_get -d 0 -c 0 -n "$settings[\"Four\'sStuff\"]"',
+	'property_get -d 0 -c 0 -n "$settings[\"Five\'sSt\\\0ff\"]"',
+	'feature_set -n extended_properties -v 1',
+	'property_get -d 0 -c 0 -n $settings',
+	'property_get -d 0 -c 0 -n "$settings[\"One\'s Stuff\"]"',
+	'property_get -d 0 -c 0 -n "$settings[\"One\\\'s Stuff\"]"',
+	'property_get -d 0 -c 0 -n "$settings[\"Five\'sSt\\\0ff\"]"',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01305.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01305.inc" lineno="3"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 11
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01305.inc" lineno="11"></xdebug:message></response>
+
+-> property_get -i 4 -d 0 -c 0 -n $settings
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$settings" fullname="$settings" type="array" children="1" numchildren="5" page="0" pagesize="32"><property name="One&#39;s Stuff" fullname="$settings[&quot;One\&#39;s Stuff&quot;]" type="array" children="1" numchildren="1"></property><property name="Two&quot;s Stuff" fullname="$settings[&quot;Two\&quot;s Stuff&quot;]" type="array" children="1" numchildren="1"></property><property name="Three\s Stuff" fullname="$settings[&quot;Three\\s Stuff&quot;]" type="array" children="1" numchildren="1"></property><property name="Four&#39;sStuff" fullname="$settings[&quot;Four\&#39;sStuff&quot;]" type="array" children="1" numchildren="1"></property><property name="Five&#39;sSt&#0;ff" fullname="$settings[&quot;Five\&#39;sSt\0ff&quot;]" type="array" children="1" numchildren="1"></property></property></response>
+
+-> property_get -i 5 -d 0 -c 0 -n "$settings[\"One's Stuff\"]"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$settings[&quot;One&#39;s Stuff&quot;]" fullname="$settings[&quot;One&#39;s Stuff&quot;]" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="id" fullname="$settings[&quot;One&#39;s Stuff&quot;][&quot;id&quot;]" type="int"><![CDATA[1000]]></property></property></response>
+
+-> property_get -i 6 -d 0 -c 0 -n "$settings[\"One\'s Stuff\"]"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$settings[&quot;One&#39;s Stuff&quot;]" fullname="$settings[&quot;One&#39;s Stuff&quot;]" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="id" fullname="$settings[&quot;One&#39;s Stuff&quot;][&quot;id&quot;]" type="int"><![CDATA[1000]]></property></property></response>
+
+-> property_get -i 7 -d 0 -c 0 -n "$settings[\"Two\\\"s Stuff\"]"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="$settings[&quot;Two\&quot;s Stuff&quot;]" fullname="$settings[&quot;Two\&quot;s Stuff&quot;]" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="id" fullname="$settings[&quot;Two\&quot;s Stuff&quot;][&quot;id&quot;]" type="int"><![CDATA[2000]]></property></property></response>
+
+-> property_get -i 8 -d 0 -c 0 -n "$settings[\"Three\\\\s Stuff\"]"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8"><property name="$settings[&quot;Three\\s Stuff&quot;]" fullname="$settings[&quot;Three\\s Stuff&quot;]" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="id" fullname="$settings[&quot;Three\\s Stuff&quot;][&quot;id&quot;]" type="int"><![CDATA[3000]]></property></property></response>
+
+-> property_get -i 9 -d 0 -c 0 -n $settings["Four'sStuff"]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="9"><property name="$settings[&quot;Four&#39;sStuff&quot;]" fullname="$settings[&quot;Four&#39;sStuff&quot;]" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="id" fullname="$settings[&quot;Four&#39;sStuff&quot;][&quot;id&quot;]" type="int"><![CDATA[4000]]></property></property></response>
+
+-> property_get -i 10 -d 0 -c 0 -n "$settings[\"Four'sStuff\"]"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="10"><property name="$settings[&quot;Four&#39;sStuff&quot;]" fullname="$settings[&quot;Four&#39;sStuff&quot;]" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="id" fullname="$settings[&quot;Four&#39;sStuff&quot;][&quot;id&quot;]" type="int"><![CDATA[4000]]></property></property></response>
+
+-> property_get -i 11 -d 0 -c 0 -n "$settings[\"Five'sSt\\0ff\"]"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="11"><property name="$settings[&quot;Five&#39;sSt\0ff&quot;]" fullname="$settings[&quot;Five&#39;sSt\0ff&quot;]" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="id" fullname="$settings[&quot;Five&#39;sSt\0ff&quot;][&quot;id&quot;]" type="int"><![CDATA[5000]]></property></property></response>
+
+-> feature_set -i 12 -n extended_properties -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="12" feature="extended_properties" success="1"></response>
+
+-> property_get -i 13 -d 0 -c 0 -n $settings
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="13"><property name="$settings" fullname="$settings" type="array" children="1" numchildren="5" page="0" pagesize="32"><property name="One&#39;s Stuff" fullname="$settings[&quot;One\&#39;s Stuff&quot;]" type="array" children="1" numchildren="1"></property><property name="Two&quot;s Stuff" fullname="$settings[&quot;Two\&quot;s Stuff&quot;]" type="array" children="1" numchildren="1"></property><property name="Three\s Stuff" fullname="$settings[&quot;Three\\s Stuff&quot;]" type="array" children="1" numchildren="1"></property><property name="Four&#39;sStuff" fullname="$settings[&quot;Four\&#39;sStuff&quot;]" type="array" children="1" numchildren="1"></property><property type="array" children="1" numchildren="1"><name encoding="base64"><![CDATA[Rml2ZSdzU3QAZmY=]]></name><fullname encoding="base64"><![CDATA[JHNldHRpbmdzWyJGaXZlXCdzU3RcMGZmIl0=]]></fullname></property></property></response>
+
+-> property_get -i 14 -d 0 -c 0 -n "$settings[\"One's Stuff\"]"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="14"><property name="$settings[&quot;One&#39;s Stuff&quot;]" fullname="$settings[&quot;One&#39;s Stuff&quot;]" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="id" fullname="$settings[&quot;One&#39;s Stuff&quot;][&quot;id&quot;]" type="int"><![CDATA[1000]]></property></property></response>
+
+-> property_get -i 15 -d 0 -c 0 -n "$settings[\"One\'s Stuff\"]"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="15"><property name="$settings[&quot;One&#39;s Stuff&quot;]" fullname="$settings[&quot;One&#39;s Stuff&quot;]" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="id" fullname="$settings[&quot;One&#39;s Stuff&quot;][&quot;id&quot;]" type="int"><![CDATA[1000]]></property></property></response>
+
+-> property_get -i 16 -d 0 -c 0 -n "$settings[\"Five'sSt\\0ff\"]"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="16"><property name="$settings[&quot;Five&#39;sSt\0ff&quot;]" fullname="$settings[&quot;Five&#39;sSt\0ff&quot;]" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="id" fullname="$settings[&quot;Five&#39;sSt\0ff&quot;][&quot;id&quot;]" type="int"><![CDATA[5000]]></property></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01312.inc b/xdebug-3.4.5/tests/debugger/bug01312.inc
new file mode 100644
index 0000000..c0a7200
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01312.inc
@@ -0,0 +1,27 @@
+<?php
+
+class A
+{
+    private $testA;
+    private $testC;
+    
+    public function __construct()
+    {
+        $this->testA = 'testable';
+		$this->testC = new B;
+    }
+}
+
+class B
+{
+	private $testB;
+}
+
+$foo = 23;
+
+$object = new A();
+$iterator = new RecursiveArrayIterator($object);
+$clone = $iterator->getArrayCopy();
+
+echo $foo;
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01312.phpt b/xdebug-3.4.5/tests/debugger/bug01312.phpt
new file mode 100644
index 0000000..f17c297
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01312.phpt
@@ -0,0 +1,65 @@
+--TEST--
+Test for bug #1312: DBGP: extended_properties for \0 characters in fields
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01312.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 26",
+	'run',
+	'property_get -n $clone',
+	'property_get -n "$clone[\"\\\0A\\\0testA\"]"',
+	'feature_set -n extended_properties -v 1',
+	'property_get -n $clone',
+	'feature_set -n extended_properties -v 0',
+	'property_get -n $clone',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01312.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug01312.inc -n 26
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01312.inc" lineno="26"></xdebug:message></response>
+
+-> property_get -i 3 -n $clone
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$clone" fullname="$clone" type="array" children="1" numchildren="2" page="0" pagesize="32"><property name="&#0;A&#0;testA" fullname="$clone[&quot;\0A\0testA&quot;]" type="string" size="8" encoding="base64"><![CDATA[dGVzdGFibGU=]]></property><property name="&#0;A&#0;testC" fullname="$clone[&quot;\0A\0testC&quot;]" type="object" classname="B" children="1" numchildren="1"></property></property></response>
+
+-> property_get -i 4 -n "$clone[\"\\0A\\0testA\"]"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$clone[&quot;\0A\0testA&quot;]" fullname="$clone[&quot;\0A\0testA&quot;]" type="string" size="8" encoding="base64"><![CDATA[dGVzdGFibGU=]]></property></response>
+
+-> feature_set -i 5 -n extended_properties -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="5" feature="extended_properties" success="1"></response>
+
+-> property_get -i 6 -n $clone
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$clone" fullname="$clone" type="array" children="1" numchildren="2" page="0" pagesize="32"><property type="string" size="8"><name encoding="base64"><![CDATA[AEEAdGVzdEE=]]></name><fullname encoding="base64"><![CDATA[JGNsb25lWyJcMEFcMHRlc3RBIl0=]]></fullname><value encoding="base64"><![CDATA[dGVzdGFibGU=]]></value></property><property type="object" children="1" numchildren="1"><name encoding="base64"><![CDATA[AEEAdGVzdEM=]]></name><fullname encoding="base64"><![CDATA[JGNsb25lWyJcMEFcMHRlc3RDIl0=]]></fullname><classname encoding="base64"><![CDATA[Qg==]]></classname></property></property></response>
+
+-> feature_set -i 7 -n extended_properties -v 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="7" feature="extended_properties" success="1"></response>
+
+-> property_get -i 8 -n $clone
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8"><property name="$clone" fullname="$clone" type="array" children="1" numchildren="2" page="0" pagesize="32"><property name="&#0;A&#0;testA" fullname="$clone[&quot;\0A\0testA&quot;]" type="string" size="8" encoding="base64"><![CDATA[dGVzdGFibGU=]]></property><property name="&#0;A&#0;testC" fullname="$clone[&quot;\0A\0testC&quot;]" type="object" classname="B" children="1" numchildren="1"></property></property></response>
+
+-> detach -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="9" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01335-php80.phpt b/xdebug-3.4.5/tests/debugger/bug01335-php80.phpt
new file mode 100644
index 0000000..d25cc42
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01335-php80.phpt
@@ -0,0 +1,73 @@
+--TEST--
+Test for bug #1335: Debugging with PhpStorm sometimes gives "can not get property" (< PHP 8.1)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.1; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01335.inc' );
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	"breakpoint_set -t line -f file://{$filename} -n 39",
+	'run',
+	'context_get',
+	'property_get -d 0 -c 0 -n $b',
+	'property_get -d 0 -c 0 -n $b->*TestA\\TestB\\TestC\\A*data1',
+	'property_get -d 0 -c 0 -n $b->*TestA\\TestB\\TestC\\A*data1->items',
+	'property_get -d 0 -c 0 -n "$b->*TestA\\\\TestB\\\\TestC\\\\A*data1"',
+	'property_get -d 0 -c 0 -n "$b->*TestA\\\\TestB\\\\TestC\\\\A*data1->items"',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01335.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 3 -t line -f file://bug01335.inc -n 39
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01335.inc" lineno="39" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001" resolved="resolved"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01335.inc" lineno="39"></xdebug:message></response>
+
+-> context_get -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="5" context="0"><property name="$b" fullname="$b" type="object" classname="TestA\TestB\TestC\B" children="1" numchildren="2" page="0" pagesize="32"><property name="data2" fullname="$b-&gt;data2" facet="private" type="object" classname="TestA\TestB\TestC\C" children="1" numchildren="1"></property><property name="*TestA\TestB\TestC\A*data1" fullname="$b-&gt;*TestA\TestB\TestC\A*data1" facet="private" type="object" classname="TestA\TestB\TestC\C" children="1" numchildren="1"></property></property><property name="$x" fullname="$x" type="uninitialized"></property></response>
+
+-> property_get -i 6 -d 0 -c 0 -n $b
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$b" fullname="$b" type="object" classname="TestA\TestB\TestC\B" children="1" numchildren="2" page="0" pagesize="32"><property name="data2" fullname="$b-&gt;data2" facet="private" type="object" classname="TestA\TestB\TestC\C" children="1" numchildren="1"></property><property name="*TestA\TestB\TestC\A*data1" fullname="$b-&gt;*TestA\TestB\TestC\A*data1" facet="private" type="object" classname="TestA\TestB\TestC\C" children="1" numchildren="1"></property></property></response>
+
+-> property_get -i 7 -d 0 -c 0 -n $b->*TestA\TestB\TestC\A*data1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="$b-&gt;*TestA\TestB\TestC\A*data1" fullname="$b-&gt;*TestA\TestB\TestC\A*data1" type="object" classname="TestA\TestB\TestC\C" children="1" numchildren="1" page="0" pagesize="32"><property name="items" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items" facet="private" type="array" children="1" numchildren="4"></property></property></response>
+
+-> property_get -i 8 -d 0 -c 0 -n $b->*TestA\TestB\TestC\A*data1->items
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8"><property name="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items" type="array" children="1" numchildren="4" page="0" pagesize="32"><property name="0" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items[0]" type="int"><![CDATA[1]]></property><property name="1" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items[1]" type="int"><![CDATA[2]]></property><property name="2" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items[2]" type="int"><![CDATA[3]]></property><property name="3" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items[3]" type="int"><![CDATA[4]]></property></property></response>
+
+-> property_get -i 9 -d 0 -c 0 -n "$b->*TestA\\TestB\\TestC\\A*data1"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="9"><property name="$b-&gt;*TestA\TestB\TestC\A*data1" fullname="$b-&gt;*TestA\TestB\TestC\A*data1" type="object" classname="TestA\TestB\TestC\C" children="1" numchildren="1" page="0" pagesize="32"><property name="items" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items" facet="private" type="array" children="1" numchildren="4"></property></property></response>
+
+-> property_get -i 10 -d 0 -c 0 -n "$b->*TestA\\TestB\\TestC\\A*data1->items"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="10"><property name="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items" type="array" children="1" numchildren="4" page="0" pagesize="32"><property name="0" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items[0]" type="int"><![CDATA[1]]></property><property name="1" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items[1]" type="int"><![CDATA[2]]></property><property name="2" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items[2]" type="int"><![CDATA[3]]></property><property name="3" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items[3]" type="int"><![CDATA[4]]></property></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01335-php81.phpt b/xdebug-3.4.5/tests/debugger/bug01335-php81.phpt
new file mode 100644
index 0000000..6dd828a
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01335-php81.phpt
@@ -0,0 +1,73 @@
+--TEST--
+Test for bug #1335: Debugging with PhpStorm sometimes gives "can not get property" (>= PHP 8.1)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01335.inc' );
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	"breakpoint_set -t line -f file://{$filename} -n 39",
+	'run',
+	'context_get',
+	'property_get -d 0 -c 0 -n $b',
+	'property_get -d 0 -c 0 -n $b->*TestA\\TestB\\TestC\\A*data1',
+	'property_get -d 0 -c 0 -n $b->*TestA\\TestB\\TestC\\A*data1->items',
+	'property_get -d 0 -c 0 -n "$b->*TestA\\\\TestB\\\\TestC\\\\A*data1"',
+	'property_get -d 0 -c 0 -n "$b->*TestA\\\\TestB\\\\TestC\\\\A*data1->items"',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01335.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 3 -t line -f file://bug01335.inc -n 39
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01335.inc" lineno="39" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001" resolved="resolved"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01335.inc" lineno="39"></xdebug:message></response>
+
+-> context_get -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="5" context="0"><property name="$b" fullname="$b" type="object" classname="TestA\TestB\TestC\B" children="1" numchildren="2" page="0" pagesize="32"><property name="*TestA\TestB\TestC\A*data1" fullname="$b-&gt;*TestA\TestB\TestC\A*data1" facet="private" type="object" classname="TestA\TestB\TestC\C" children="1" numchildren="1"></property><property name="data2" fullname="$b-&gt;data2" facet="private" type="object" classname="TestA\TestB\TestC\C" children="1" numchildren="1"></property></property><property name="$x" fullname="$x" type="uninitialized"></property></response>
+
+-> property_get -i 6 -d 0 -c 0 -n $b
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$b" fullname="$b" type="object" classname="TestA\TestB\TestC\B" children="1" numchildren="2" page="0" pagesize="32"><property name="*TestA\TestB\TestC\A*data1" fullname="$b-&gt;*TestA\TestB\TestC\A*data1" facet="private" type="object" classname="TestA\TestB\TestC\C" children="1" numchildren="1"></property><property name="data2" fullname="$b-&gt;data2" facet="private" type="object" classname="TestA\TestB\TestC\C" children="1" numchildren="1"></property></property></response>
+
+-> property_get -i 7 -d 0 -c 0 -n $b->*TestA\TestB\TestC\A*data1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="$b-&gt;*TestA\TestB\TestC\A*data1" fullname="$b-&gt;*TestA\TestB\TestC\A*data1" type="object" classname="TestA\TestB\TestC\C" children="1" numchildren="1" page="0" pagesize="32"><property name="items" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items" facet="private" type="array" children="1" numchildren="4"></property></property></response>
+
+-> property_get -i 8 -d 0 -c 0 -n $b->*TestA\TestB\TestC\A*data1->items
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8"><property name="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items" type="array" children="1" numchildren="4" page="0" pagesize="32"><property name="0" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items[0]" type="int"><![CDATA[1]]></property><property name="1" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items[1]" type="int"><![CDATA[2]]></property><property name="2" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items[2]" type="int"><![CDATA[3]]></property><property name="3" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items[3]" type="int"><![CDATA[4]]></property></property></response>
+
+-> property_get -i 9 -d 0 -c 0 -n "$b->*TestA\\TestB\\TestC\\A*data1"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="9"><property name="$b-&gt;*TestA\TestB\TestC\A*data1" fullname="$b-&gt;*TestA\TestB\TestC\A*data1" type="object" classname="TestA\TestB\TestC\C" children="1" numchildren="1" page="0" pagesize="32"><property name="items" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items" facet="private" type="array" children="1" numchildren="4"></property></property></response>
+
+-> property_get -i 10 -d 0 -c 0 -n "$b->*TestA\\TestB\\TestC\\A*data1->items"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="10"><property name="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items" type="array" children="1" numchildren="4" page="0" pagesize="32"><property name="0" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items[0]" type="int"><![CDATA[1]]></property><property name="1" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items[1]" type="int"><![CDATA[2]]></property><property name="2" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items[2]" type="int"><![CDATA[3]]></property><property name="3" fullname="$b-&gt;*TestA\TestB\TestC\A*data1-&gt;items[3]" type="int"><![CDATA[4]]></property></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01335.inc b/xdebug-3.4.5/tests/debugger/bug01335.inc
new file mode 100644
index 0000000..78b3e74
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01335.inc
@@ -0,0 +1,39 @@
+<?php
+
+namespace TestA\TestB\TestC;
+
+class A
+{
+    private $data1;
+
+    public function setData1($data)
+    {
+        $this->data1 = $data;
+    }
+
+}
+
+class B extends A
+{
+    private $data2;
+
+    public function __construct()
+    {
+        $this->setData1(new C());
+        $this->data2 = new C();
+    }
+}
+
+class C
+{
+    private $items;
+
+    public function __construct()
+    {
+        $this->items = [1,2,3,4];
+    }
+}
+
+$b = new B();
+
+$x = 1; // Breakpoint me, and inspect $b->*TestA\TestB\TestC\A*data1->items
diff --git a/xdebug-3.4.5/tests/debugger/bug01385.inc b/xdebug-3.4.5/tests/debugger/bug01385.inc
new file mode 100644
index 0000000..a9647e0
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01385.inc
@@ -0,0 +1,22 @@
+<?php
+$v = "";
+
+class Foo
+{
+    private $a;
+    public function __construct($a) {
+        $this->a = $a;
+    }
+}
+class Bar extends Foo
+{
+    public $a;
+    public function __construct($fooA, $a) {
+        parent::__construct($fooA);
+        $this->a = $a;
+    }
+}
+
+$v = new Foo(new Bar(new Foo(new Foo(2)), 1));
+
+var_dump($v); // breakpoint
diff --git a/xdebug-3.4.5/tests/debugger/bug01385.phpt b/xdebug-3.4.5/tests/debugger/bug01385.phpt
new file mode 100644
index 0000000..5c3a1b0
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01385.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #1385: Can not fetch IS_INDIRECT private properties
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01385.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 22',
+	'run',
+	'property_get -d 0 -c 0 -n $v->a->*Foo*a->a',
+	'property_get -d 0 -c 0 -n $v->a->a'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01385.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01385.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 22
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01385.inc" lineno="22"></xdebug:message></response>
+
+-> property_get -i 4 -d 0 -c 0 -n $v->a->*Foo*a->a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$v-&gt;a-&gt;*Foo*a-&gt;a" fullname="$v-&gt;a-&gt;*Foo*a-&gt;a" type="object" classname="Foo" children="1" numchildren="1" page="0" pagesize="32"><property name="a" fullname="$v-&gt;a-&gt;*Foo*a-&gt;a-&gt;a" facet="private" type="int"><![CDATA[2]]></property></property></response>
+
+-> property_get -i 5 -d 0 -c 0 -n $v->a->a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$v-&gt;a-&gt;a" fullname="$v-&gt;a-&gt;a" type="int"><![CDATA[1]]></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-01.inc b/xdebug-3.4.5/tests/debugger/bug01388-01.inc
new file mode 100644
index 0000000..1a4539b
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-01.inc
@@ -0,0 +1,9 @@
+<?php
+function breakpoint1()
+{
+	echo base64_encode("testing"), "\n";
+	strlen();
+}
+
+breakpoint1();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-01.phpt b/xdebug-3.4.5/tests/debugger/bug01388-01.phpt
new file mode 100644
index 0000000..cae29b8
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-01.phpt
@@ -0,0 +1,60 @@
+--TEST--
+Test for bug #1388: Resolved Breakpoint: attributes shown
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01388-01.inc' );
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_get -n resolved_breakpoints',
+	"breakpoint_set -t line -f file://{$filename} -n 4",
+	'breakpoint_list',
+	'feature_set -n resolved_breakpoints -v 1',
+	'feature_get -n resolved_breakpoints',
+	'breakpoint_list',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-01.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_get -i 2 -n resolved_breakpoints
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_get" transaction_id="2" feature_name="resolved_breakpoints" supported="1"><![CDATA[0]]></response>
+
+-> breakpoint_set -i 3 -t line -f file://bug01388-01.inc -n 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001"></response>
+
+-> breakpoint_list -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="4"><breakpoint type="line" filename="file://bug01388-01.inc" lineno="4" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></response>
+
+-> feature_set -i 5 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="5" feature="resolved_breakpoints" success="1"></response>
+
+-> feature_get -i 6 -n resolved_breakpoints
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_get" transaction_id="6" feature_name="resolved_breakpoints" supported="1"><![CDATA[1]]></response>
+
+-> breakpoint_list -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="7"><breakpoint type="line" resolved="unresolved" filename="file://bug01388-01.inc" lineno="4" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></response>
+
+-> detach -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="8" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-02.inc b/xdebug-3.4.5/tests/debugger/bug01388-02.inc
new file mode 100644
index 0000000..ddd1aa4
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-02.inc
@@ -0,0 +1,11 @@
+<?php
+function breakpoint1()
+{
+	$a = array( // line #1
+		1 => "first", // line #1
+		2 => "second",
+	);
+}
+
+breakpoint1();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-02.phpt b/xdebug-3.4.5/tests/debugger/bug01388-02.phpt
new file mode 100644
index 0000000..4ace67e
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-02.phpt
@@ -0,0 +1,53 @@
+--TEST--
+Test for bug #1388: Resolved Breakpoint: resolved to changed line (normal function)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01388-02.inc';
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	'step_into',
+	'breakpoint_set -t line -n 3',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-02.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01388-02.inc" lineno="%d"></xdebug:message></response>
+
+-> breakpoint_set -i 4 -t line -n 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-02.inc" lineno="4" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" id="{{PID}}0001" resolved="resolved"></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug01388-02.inc" lineno="4"></xdebug:message></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-03.inc b/xdebug-3.4.5/tests/debugger/bug01388-03.inc
new file mode 100644
index 0000000..e21277c
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-03.inc
@@ -0,0 +1,24 @@
+<?php
+class foo {
+	function breakpoint1()
+	{
+		$a = array( // line #1
+			1 => "first", // line #2
+			2 => "second",
+		);
+	}
+
+	static function breakpoint2()
+	{
+		$a = array( // line #1
+			1 => "first", // line #2
+			2 => "second",
+		);
+	}
+}
+
+$f = new foo;
+$f->breakpoint1();
+
+foo::breakpoint2();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-03.phpt b/xdebug-3.4.5/tests/debugger/bug01388-03.phpt
new file mode 100644
index 0000000..c90bce0
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-03.phpt
@@ -0,0 +1,66 @@
+--TEST--
+Test for bug #1388: Resolved Breakpoint: resolved to changed line (method)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01388-03.inc';
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	'step_into',
+	'breakpoint_set -t line -n 4',
+	'breakpoint_set -t line -n 12',
+	'run',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-03.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01388-03.inc" lineno="%d"></xdebug:message></response>
+
+-> breakpoint_set -i 4 -t line -n 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-03.inc" lineno="5" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" id="{{PID}}0001" resolved="resolved"></response>
+
+-> breakpoint_set -i 5 -t line -n 12
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-03.inc" lineno="13" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0002"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="5" id="{{PID}}0002" resolved="resolved"></response>
+
+-> run -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://bug01388-03.inc" lineno="5"></xdebug:message></response>
+
+-> run -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://bug01388-03.inc" lineno="13"></xdebug:message></response>
+
+-> detach -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="8" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-04.inc b/xdebug-3.4.5/tests/debugger/bug01388-04.inc
new file mode 100644
index 0000000..1f5182d
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-04.inc
@@ -0,0 +1,6 @@
+<?php
+$a = array( // line #1
+	1 => "first", // line #1
+	2 => "second",
+);
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-04.phpt b/xdebug-3.4.5/tests/debugger/bug01388-04.phpt
new file mode 100644
index 0000000..287ea26
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-04.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test for bug #1388: Resolved Breakpoint: resolved to changed line (main body)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01388-04.inc' );
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	"breakpoint_set -t line -f file://{$filename} -n 1",
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-04.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 3 -t line -f file://bug01388-04.inc -n 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-04.inc" lineno="2" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001" resolved="resolved"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01388-04.inc" lineno="2"></xdebug:message></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-05.inc b/xdebug-3.4.5/tests/debugger/bug01388-05.inc
new file mode 100644
index 0000000..b0b2171
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-05.inc
@@ -0,0 +1,7 @@
+<?php
+$var1 = 1 // breakpoint
++ 2
++ 3
++ 4;
+echo $var1;
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-05.phpt b/xdebug-3.4.5/tests/debugger/bug01388-05.phpt
new file mode 100644
index 0000000..c000345
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-05.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test for bug #1388: Resolved Breakpoint: resolved to changed line (WI-6916)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01388-05.inc' );
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	"breakpoint_set -t line -f file://{$filename} -n 1",
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-05.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 3 -t line -f file://bug01388-05.inc -n 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-05.inc" lineno="2" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001" resolved="resolved"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01388-05.inc" lineno="2"></xdebug:message></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-06.inc b/xdebug-3.4.5/tests/debugger/bug01388-06.inc
new file mode 100644
index 0000000..b43adb7
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-06.inc
@@ -0,0 +1,5 @@
+<?php
+$var_2_string_3 = <<< "useless_quotes"
+Inside the quotes.
+useless_quotes;
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-06.phpt b/xdebug-3.4.5/tests/debugger/bug01388-06.phpt
new file mode 100644
index 0000000..d45b893
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-06.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test for bug #1388: Resolved Breakpoint: resolved to changed line (WI-2898)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01388-06.inc' );
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	"breakpoint_set -t line -f file://{$filename} -n 3",
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-06.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 3 -t line -f file://bug01388-06.inc -n 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-06.inc" lineno="2" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001" resolved="resolved"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01388-06.inc" lineno="2"></xdebug:message></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-07.inc b/xdebug-3.4.5/tests/debugger/bug01388-07.inc
new file mode 100644
index 0000000..b073f93
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-07.inc
@@ -0,0 +1,6 @@
+<?php echo 'first'
+;
+echo 'second'
+;
+echo 'third';
+echo 'forth' ?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-07.phpt b/xdebug-3.4.5/tests/debugger/bug01388-07.phpt
new file mode 100644
index 0000000..c780c9a
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-07.phpt
@@ -0,0 +1,87 @@
+--TEST--
+Test for bug #1388: Resolved Breakpoint: resolved to changed line (WI-2191)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01388-07.inc' );
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	"breakpoint_set -t line -f file://{$filename} -n 1",
+	"breakpoint_set -t line -f file://{$filename} -n 3",
+	"breakpoint_set -t line -f file://{$filename} -n 5",
+	"breakpoint_set -t line -f file://{$filename} -n 6",
+	'run',
+	'run',
+	'run',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-07.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 3 -t line -f file://bug01388-07.inc -n 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-07.inc" lineno="1" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001" resolved="resolved"></response>
+
+-> breakpoint_set -i 4 -t line -f file://bug01388-07.inc -n 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-07.inc" lineno="3" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0002"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" id="{{PID}}0002" resolved="resolved"></response>
+
+-> breakpoint_set -i 5 -t line -f file://bug01388-07.inc -n 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-07.inc" lineno="5" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0003"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="5" id="{{PID}}0003" resolved="resolved"></response>
+
+-> breakpoint_set -i 6 -t line -f file://bug01388-07.inc -n 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-07.inc" lineno="6" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0004"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="6" id="{{PID}}0004" resolved="resolved"></response>
+
+-> run -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://bug01388-07.inc" lineno="1"></xdebug:message></response>
+
+-> run -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="8" status="break" reason="ok"><xdebug:message filename="file://bug01388-07.inc" lineno="3"></xdebug:message></response>
+
+-> run -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="9" status="break" reason="ok"><xdebug:message filename="file://bug01388-07.inc" lineno="5"></xdebug:message></response>
+
+-> run -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="10" status="break" reason="ok"><xdebug:message filename="file://bug01388-07.inc" lineno="6"></xdebug:message></response>
+
+-> detach -i 11
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="11" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-08.phpt b/xdebug-3.4.5/tests/debugger/bug01388-08.phpt
new file mode 100644
index 0000000..df1fec0
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-08.phpt
@@ -0,0 +1,67 @@
+--TEST--
+Test for bug #1388: Resolved Breakpoint: include files
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename    = realpath( dirname(__FILE__) . '/bug01388-08a.inc' );
+$incFilename = realpath( dirname(__FILE__) . '/bug01388-08b.inc' );
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	"breakpoint_set -t line -f file://{$incFilename} -n 1",
+	"breakpoint_set -t line -f file://{$incFilename} -n 8",
+	'step_into',
+	'run',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-08a.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 3 -t line -f file://bug01388-08b.inc -n 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001" resolved="unresolved"></response>
+
+-> breakpoint_set -i 4 -t line -f file://bug01388-08b.inc -n 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" id="{{PID}}0002" resolved="unresolved"></response>
+
+-> step_into -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug01388-08a.inc" lineno="2"></xdebug:message></response>
+
+-> run -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-08b.inc" lineno="%r(2|9)%r" state="enabled" hit_count="0" hit_value="0" id="{{PID}}000%r(1|2)%r"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-08b.inc" lineno="%r(2|9)%r" state="enabled" hit_count="0" hit_value="0" id="{{PID}}000%r(1|2)%r"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://bug01388-08b.inc" lineno="2"></xdebug:message></response>
+
+-> run -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://bug01388-08b.inc" lineno="9"></xdebug:message></response>
+
+-> detach -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="8" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-08a.inc b/xdebug-3.4.5/tests/debugger/bug01388-08a.inc
new file mode 100644
index 0000000..f797b08
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-08a.inc
@@ -0,0 +1,5 @@
+<?php
+include 'bug01388-08b.inc';
+
+scoped();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-08b.inc b/xdebug-3.4.5/tests/debugger/bug01388-08b.inc
new file mode 100644
index 0000000..e378cd7
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-08b.inc
@@ -0,0 +1,16 @@
+<?php
+$a = array( // line #1
+    1 => "first", // line #2
+    2 => "second",
+);
+
+function scoped()
+{
+	$a = array( // line #1
+		1 => "first", // line #2
+		2 => "second",
+	);
+
+	return $a;
+}
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-09.inc b/xdebug-3.4.5/tests/debugger/bug01388-09.inc
new file mode 100644
index 0000000..a404a10
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-09.inc
@@ -0,0 +1,11 @@
+<?php
+$func = function()
+{
+	$a = array( // line #1
+		1 => "first", // line #2
+		2 => "second",
+	);
+};
+
+$func();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-09.phpt b/xdebug-3.4.5/tests/debugger/bug01388-09.phpt
new file mode 100644
index 0000000..f541dec
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-09.phpt
@@ -0,0 +1,68 @@
+--TEST--
+Test for bug #1388: Resolved Breakpoint in a closure
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01388-09.inc' );
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	"breakpoint_set -t line -f file://{$filename} -n 3",
+	'step_into',
+	'step_into',
+	'step_into',
+	'stack_get',
+	'step_into',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-09.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 3 -t line -f file://bug01388-09.inc -n 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-09.inc" lineno="4" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001" resolved="resolved"></response>
+
+-> step_into -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01388-09.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug01388-09.inc" lineno="10"></xdebug:message></response>
+
+-> step_into -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://bug01388-09.inc" lineno="4"></xdebug:message></response>
+
+-> stack_get -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="7"><stack where="{closure:%sbug01388-09.inc:2-8}" level="0" type="file" filename="file://bug01388-09.inc" lineno="4"></stack><stack where="{main}" level="1" type="file" filename="file://bug01388-09.inc" lineno="10"></stack></response>
+
+-> step_into -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="8" status="break" reason="ok"><xdebug:message filename="file://bug01388-09.inc" lineno="8"></xdebug:message></response>
+
+-> detach -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="9" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-10.inc b/xdebug-3.4.5/tests/debugger/bug01388-10.inc
new file mode 100644
index 0000000..76d50ed
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-10.inc
@@ -0,0 +1,17 @@
+<?php
+function scoped()
+{
+	$func = function()
+	{
+		$a = array( // line #1
+			1 => "first", // line #2
+			2 => "second",
+		);
+	};
+
+	$func();
+}
+
+scoped();
+scoped();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-10.phpt b/xdebug-3.4.5/tests/debugger/bug01388-10.phpt
new file mode 100644
index 0000000..70538bd
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-10.phpt
@@ -0,0 +1,73 @@
+--TEST--
+Test for bug #1388: Resolved Breakpoint in a closure in function [1]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01388-10.inc' );
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	"breakpoint_set -t line -f file://{$filename} -n 5",
+	'step_into',
+	'step_into',
+	'stack_get',
+	'step_into',
+	'step_into',
+	'step_into',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-10.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 3 -t line -f file://bug01388-10.inc -n 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-10.inc" lineno="6" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001" resolved="resolved"></response>
+
+-> step_into -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01388-10.inc" lineno="15"></xdebug:message></response>
+
+-> step_into -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug01388-10.inc" lineno="4"></xdebug:message></response>
+
+-> stack_get -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="6"><stack where="scoped" level="0" type="file" filename="file://bug01388-10.inc" lineno="4"></stack><stack where="{main}" level="1" type="file" filename="file://bug01388-10.inc" lineno="15"></stack></response>
+
+-> step_into -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://bug01388-10.inc" lineno="12"></xdebug:message></response>
+
+-> step_into -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="8" status="break" reason="ok"><xdebug:message filename="file://bug01388-10.inc" lineno="6"></xdebug:message></response>
+
+-> step_into -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="9" status="break" reason="ok"><xdebug:message filename="file://bug01388-10.inc" lineno="10"></xdebug:message></response>
+
+-> detach -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="10" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-11.phpt b/xdebug-3.4.5/tests/debugger/bug01388-11.phpt
new file mode 100644
index 0000000..8932534
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-11.phpt
@@ -0,0 +1,53 @@
+--TEST--
+Test for bug #1388: Resolved Breakpoint in a closure in function [2]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01388-10.inc' );
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	"breakpoint_set -t line -f file://{$filename} -n 5",
+	'run',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-10.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 3 -t line -f file://bug01388-10.inc -n 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-10.inc" lineno="6" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001" resolved="resolved"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01388-10.inc" lineno="6"></xdebug:message></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug01388-10.inc" lineno="6"></xdebug:message></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-12.inc b/xdebug-3.4.5/tests/debugger/bug01388-12.inc
new file mode 100644
index 0000000..0980da0
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-12.inc
@@ -0,0 +1,17 @@
+<?php
+function scoped()
+{
+	eval('
+	$a = array( // line #1
+		1 => "first", // line #2
+		2 => "second",
+	);
+	$b = array( // line #1
+		1 => "first", // line #2
+		2 => "second",
+	);
+	');
+}
+
+scoped();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-12.phpt b/xdebug-3.4.5/tests/debugger/bug01388-12.phpt
new file mode 100644
index 0000000..37ad982
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-12.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test for bug #1388: Resolved Breakpoint in an eval statement in function
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01388-12.inc' );
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	"breakpoint_set -t line -f dbgp://1 -n 1",
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-12.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 3 -t line -f dbgp://1 -n 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001" resolved="unresolved"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="dbgp://1" lineno="2" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="dbgp://1" lineno="2"></xdebug:message></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-13.inc b/xdebug-3.4.5/tests/debugger/bug01388-13.inc
new file mode 100644
index 0000000..a986c6c
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-13.inc
@@ -0,0 +1,19 @@
+<?php
+
+function loadMod( $module )
+{
+	strrev( $module );
+	$module .= 's';
+	strrev( $module );
+}
+
+function loadFoo( $test )
+{
+	strrev( $test );
+	$test .= 's';
+	strrev( $test );
+}
+
+loadFoo( 'view' );
+loadMod( 'test' );
+loadMod( 'view' );
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-13.phpt b/xdebug-3.4.5/tests/debugger/bug01388-13.phpt
new file mode 100644
index 0000000..051afd5
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-13.phpt
@@ -0,0 +1,56 @@
+--TEST--
+Test for bug #1388: Resolved Breakpoint with conditional
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--INI--
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01388-13.inc' );
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	"breakpoint_set -n 7 -f file://{$filename} -t conditional -- JG1vZHVsZSA9PSAidmlld3Mi",
+	'run',
+	'context_get',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands, [ 'track_errors' => 'Off' ] );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-13.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 3 -n 7 -f file://bug01388-13.inc -t conditional -- JG1vZHVsZSA9PSAidmlld3Mi
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="conditional" resolved="resolved" filename="file://bug01388-13.inc" lineno="7" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"><expression encoding="base64"><![CDATA[JG1vZHVsZSA9PSAidmlld3Mi]]></expression></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001" resolved="resolved"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01388-13.inc" lineno="7"></xdebug:message></response>
+
+-> context_get -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="5" context="0"><property name="$module" fullname="$module" type="string" size="5" encoding="base64"><![CDATA[dmlld3M=]]></property></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-14-index.inc b/xdebug-3.4.5/tests/debugger/bug01388-14-index.inc
new file mode 100644
index 0000000..ecbea00
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-14-index.inc
@@ -0,0 +1,5 @@
+<?php
+include __DIR__ . '/bug01388-14-simpleclass.inc';
+
+echo SimpleClass::init();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-14-simpleclass.inc b/xdebug-3.4.5/tests/debugger/bug01388-14-simpleclass.inc
new file mode 100644
index 0000000..10f3138
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-14-simpleclass.inc
@@ -0,0 +1,17 @@
+<?php
+class SimpleClass
+{
+    const HELLO = "HELLO";
+    public static $hello;
+
+    public static function init(){
+        return self::displayVar();
+    }
+    
+    private static function displayVar() {
+        
+        self::$hello = self::HELLO;
+        return self::$hello;
+    }
+}
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-14.phpt b/xdebug-3.4.5/tests/debugger/bug01388-14.phpt
new file mode 100644
index 0000000..9713a6a
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-14.phpt
@@ -0,0 +1,59 @@
+--TEST--
+Test for bug #1388: Resolved function call breakpoint
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$dir = dirname(__FILE__);
+putenv("XDEBUG_TEST_DIR=$dir");
+
+$filename = realpath( dirname(__FILE__) . '/bug01388-14-index.inc' );
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	'breakpoint_set -t call -m SimpleClass::displayVar',
+	'run',
+	'step_into',
+	'context_get',
+	'property_get -n ::hello'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-14-index.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 3 -t call -m SimpleClass::displayVar
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001" resolved="resolved"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01388-14-simpleclass.inc" lineno="13"></xdebug:message></response>
+
+-> step_into -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug01388-14-simpleclass.inc" lineno="14"></xdebug:message></response>
+
+-> context_get -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="6" context="0"><property name="::" fullname="::" type="object" classname="SimpleClass" children="1" numchildren="1"><property name="::hello" fullname="::hello" type="string" size="5" facet="static public" encoding="base64"><![CDATA[SEVMTE8=]]></property></property></response>
+
+-> property_get -i 7 -n ::hello
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="::hello" fullname="::hello" type="string" size="5" encoding="base64"><![CDATA[SEVMTE8=]]></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-15.inc b/xdebug-3.4.5/tests/debugger/bug01388-15.inc
new file mode 100644
index 0000000..5d0b48c
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-15.inc
@@ -0,0 +1,33 @@
+<?php
+function test1()
+{
+	var_dump( "begin test1" );
+	var_dump( "end test1" );
+
+	return "return from test1";
+}
+
+class test_class
+{
+	static function test2()
+	{
+		var_dump( "begin test2" );
+		var_dump( "end test2" );
+
+		return "return from test2";
+	}
+
+	function test3()
+	{
+		var_dump( "begin test3" );
+		var_dump( "end test3" );
+
+		return "return from test3";
+	}
+}
+
+test1();
+test_class::test2();
+
+$test = new test_class;
+$test->test3();
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-15.phpt b/xdebug-3.4.5/tests/debugger/bug01388-15.phpt
new file mode 100644
index 0000000..f9c826e
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-15.phpt
@@ -0,0 +1,91 @@
+--TEST--
+Test for bug #1388: Resolved function return breakpoint (>= PHP 8.1)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$filename = realpath( dirname(__FILE__) . '/bug01388-15.inc' );
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	'breakpoint_set -t return -m test1',
+	'breakpoint_set -t return -m test_class::test2',
+	'breakpoint_set -t return -m test_class::test3',
+	'run',
+	'stack_get',
+	'context_get',
+	'run',
+	'stack_get',
+	'context_get',
+	'run',
+	'stack_get',
+	'context_get',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-15.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 3 -t return -m test1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001" resolved="resolved"></response>
+
+-> breakpoint_set -i 4 -t return -m test_class::test2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" id="{{PID}}0002" resolved="resolved"></response>
+
+-> breakpoint_set -i 5 -t return -m test_class::test3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="5" id="{{PID}}0003" resolved="resolved"></response>
+
+-> run -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://bug01388-15.inc" lineno="29"></xdebug:message></response>
+
+-> stack_get -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="7"><stack where="test1" level="0" type="file" filename="file://bug01388-15.inc" lineno="7"></stack><stack where="{main}" level="1" type="file" filename="file://bug01388-15.inc" lineno="29"></stack></response>
+
+-> context_get -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="8" context="0"></response>
+
+-> run -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="9" status="break" reason="ok"><xdebug:message filename="file://bug01388-15.inc" lineno="30"></xdebug:message></response>
+
+-> stack_get -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="10"><stack where="test_class::test2" level="0" type="file" filename="file://bug01388-15.inc" lineno="17"></stack><stack where="{main}" level="1" type="file" filename="file://bug01388-15.inc" lineno="30"></stack></response>
+
+-> context_get -i 11
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="11" context="0"><property name="::" fullname="::" type="object" classname="test_class" children="0" numchildren="0"></property></response>
+
+-> run -i 12
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="12" status="break" reason="ok"><xdebug:message filename="file://bug01388-15.inc" lineno="33"></xdebug:message></response>
+
+-> stack_get -i 13
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="13"><stack where="test_class-&gt;test3" level="0" type="file" filename="file://bug01388-15.inc" lineno="25"></stack><stack where="{main}" level="1" type="file" filename="file://bug01388-15.inc" lineno="33"></stack></response>
+
+-> context_get -i 14
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="14" context="0"><property name="$this" fullname="$this" type="object" classname="test_class" children="0" numchildren="0" page="0" pagesize="32"></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-16.inc b/xdebug-3.4.5/tests/debugger/bug01388-16.inc
new file mode 100644
index 0000000..0ba38c8
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-16.inc
@@ -0,0 +1,32 @@
+<?php
+class FooException extends Exception
+{
+}
+
+class FooBarException extends FooException
+{
+}
+
+class FooBarBazException extends FooBarException
+{
+}
+
+class MoonException extends Exception
+{
+}
+
+echo strlen("Hello there!"), "\n";
+
+/* Set -x FooBarException */
+try {throw new MoonException("this should not break"); } catch (Exception $e) {}
+try {throw new FooException("this should not break"); } catch (Exception $e) {}
+try {throw new FooBarException("this should break", 42); } catch (Exception $e) {}
+
+/* Set -x FooException */
+try {throw new MoonException("this should not break"); } catch (Exception $e) {}
+try {throw new FooException("this should now break"); } catch (Exception $e) {}
+try {throw new FooBarException("this should still break", 43); } catch (Exception $e) {}
+
+/* Set -x * */
+try {throw new MoonException("this should now break"); } catch (Exception $e) {}
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-16.phpt b/xdebug-3.4.5/tests/debugger/bug01388-16.phpt
new file mode 100644
index 0000000..c014923
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-16.phpt
@@ -0,0 +1,71 @@
+--TEST--
+Test for bug #1388: Resolved exception breakpoint
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$filename = realpath( dirname(__FILE__) . '/bug01388-16.inc' );
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	'breakpoint_set -t exception -x FooBarException',
+	'run',
+	'breakpoint_set -t exception -x FooException',
+	'run',
+	'run',
+	'breakpoint_set -t exception -x *',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-16.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 3 -t exception -x FooBarException
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001" resolved="resolved"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01388-16.inc" lineno="23" exception="FooBarException" code="42"><![CDATA[this should break]]></xdebug:message></response>
+
+-> breakpoint_set -i 5 -t exception -x FooException
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="5" id="{{PID}}0002" resolved="resolved"></response>
+
+-> run -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://bug01388-16.inc" lineno="27" exception="FooException"><![CDATA[this should now break]]></xdebug:message></response>
+
+-> run -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://bug01388-16.inc" lineno="28" exception="FooBarException" code="43"><![CDATA[this should still break]]></xdebug:message></response>
+
+-> breakpoint_set -i 8 -t exception -x *
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="8" id="{{PID}}0003" resolved="resolved"></response>
+
+-> run -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="9" status="break" reason="ok"><xdebug:message filename="file://bug01388-16.inc" lineno="31" exception="MoonException"><![CDATA[this should now break]]></xdebug:message></response>
+
+-> detach -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="10" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-17.inc b/xdebug-3.4.5/tests/debugger/bug01388-17.inc
new file mode 100644
index 0000000..111b4e3
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-17.inc
@@ -0,0 +1,25 @@
+<?php
+class FooException extends Exception
+{
+}
+
+class FooBarException extends FooException
+{
+}
+
+class FooBarBazException extends FooBarException
+{
+}
+
+class FlubberException extends FooBarBazException
+{
+}
+
+echo strlen("Hello there!"), "\n";
+
+/* Set -x FooException */
+try {throw new FlubberException("this should break", 39); } catch (Exception $e) {}
+
+echo strrev("Hello again!"), "\n";
+
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-17.phpt b/xdebug-3.4.5/tests/debugger/bug01388-17.phpt
new file mode 100644
index 0000000..378607f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-17.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Test for bug #1388: Resolved exception breakpoint with inherited exception
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$filename = realpath( dirname(__FILE__) . '/bug01388-17.inc' );
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	'breakpoint_set -t exception -x Exception',
+	'breakpoint_set -t exception -x FooException',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-17.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 3 -t exception -x Exception
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001" resolved="resolved"></response>
+
+-> breakpoint_set -i 4 -t exception -x FooException
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" id="{{PID}}0002" resolved="resolved"></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug01388-17.inc" lineno="21" exception="FlubberException" code="39"><![CDATA[this should break]]></xdebug:message></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-18.inc b/xdebug-3.4.5/tests/debugger/bug01388-18.inc
new file mode 100644
index 0000000..295f590
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-18.inc
@@ -0,0 +1,6 @@
+<?php
+$a = array( // breakpoint
+	1 => "first",
+	2 => "second",
+);
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-18.phpt b/xdebug-3.4.5/tests/debugger/bug01388-18.phpt
new file mode 100644
index 0000000..161518e
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-18.phpt
@@ -0,0 +1,53 @@
+--TEST--
+Test for bug #1388: Resolved Breakpoint: resolved with breakpoint set in current scope
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01388-18.inc';
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	'step_into',
+	'breakpoint_set -t line -n 4',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-18.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01388-18.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 4 -t line -n 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-18.inc" lineno="2" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" id="{{PID}}0001" resolved="resolved"></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="stopping" reason="ok"></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-19.inc b/xdebug-3.4.5/tests/debugger/bug01388-19.inc
new file mode 100644
index 0000000..25a5b71
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-19.inc
@@ -0,0 +1,9 @@
+<?php
+$a = 1; //breakpoint
+
+$array = array( //breakpoint
+    'b' =>2,
+    'c' =>3
+);
+$array = array('d'=>4); //breakpoint
+$e = 5; //breakpoint
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-19.phpt b/xdebug-3.4.5/tests/debugger/bug01388-19.phpt
new file mode 100644
index 0000000..e62247f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-19.phpt
@@ -0,0 +1,92 @@
+--TEST--
+Test for bug #1388: Resolved Breakpoint: resolved with breakpoint set in current scope
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01388-19.inc';
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	'step_into',
+	"breakpoint_set -t line -f file://{$filename} -n 2",
+	"breakpoint_set -t line -f file://{$filename} -n 3",
+	"breakpoint_set -t line -f file://{$filename} -n 8",
+	"breakpoint_set -t line -f file://{$filename} -n 9",
+	'run',
+	'run',
+	'run',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-19.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01388-19.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 4 -t line -f file://bug01388-19.inc -n 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-19.inc" lineno="2" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" id="{{PID}}0001" resolved="resolved"></response>
+
+-> breakpoint_set -i 5 -t line -f file://bug01388-19.inc -n 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-19.inc" lineno="4" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0002"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="5" id="{{PID}}0002" resolved="resolved"></response>
+
+-> breakpoint_set -i 6 -t line -f file://bug01388-19.inc -n 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-19.inc" lineno="8" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0003"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="6" id="{{PID}}0003" resolved="resolved"></response>
+
+-> breakpoint_set -i 7 -t line -f file://bug01388-19.inc -n 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-19.inc" lineno="9" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0004"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="7" id="{{PID}}0004" resolved="resolved"></response>
+
+-> run -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="8" status="break" reason="ok"><xdebug:message filename="file://bug01388-19.inc" lineno="4"></xdebug:message></response>
+
+-> run -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="9" status="break" reason="ok"><xdebug:message filename="file://bug01388-19.inc" lineno="8"></xdebug:message></response>
+
+-> run -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="10" status="break" reason="ok"><xdebug:message filename="file://bug01388-19.inc" lineno="9"></xdebug:message></response>
+
+-> run -i 11
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="11" status="stopping" reason="ok"></response>
+
+-> detach -i 12
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="12" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-20.inc b/xdebug-3.4.5/tests/debugger/bug01388-20.inc
new file mode 100644
index 0000000..26afbd0
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-20.inc
@@ -0,0 +1,6 @@
+<?php
+
+$array = array( //breakpoint
+  'b' =>2,
+  'c' =>3
+);
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-20.phpt b/xdebug-3.4.5/tests/debugger/bug01388-20.phpt
new file mode 100644
index 0000000..b62b6ec
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-20.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test for bug #1388: Resolved Breakpoint: resolved with breakpoint set in current scope
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01388-20.inc';
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	'step_into',
+	"breakpoint_set -t line -f file://{$filename} -n 2",
+	'run',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-20.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01388-20.inc" lineno="3"></xdebug:message></response>
+
+-> breakpoint_set -i 4 -t line -f file://bug01388-20.inc -n 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01388-20.inc" lineno="3" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" id="{{PID}}0001" resolved="resolved"></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01388-21.phpt b/xdebug-3.4.5/tests/debugger/bug01388-21.phpt
new file mode 100644
index 0000000..020c581
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01388-21.phpt
@@ -0,0 +1,70 @@
+--TEST--
+Test for bug #1388: Resolved Breakpoint: without notify_ok
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01388-07.inc' );
+
+$commands = array(
+	'feature_set -n resolved_breakpoints -v 1',
+	"breakpoint_set -t line -f file://{$filename} -n 1",
+	"breakpoint_set -t line -f file://{$filename} -n 3",
+	"breakpoint_set -t line -f file://{$filename} -n 5",
+	"breakpoint_set -t line -f file://{$filename} -n 6",
+	'run',
+	'run',
+	'run',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-07.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 2 -t line -f file://bug01388-07.inc -n 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001" resolved="resolved"></response>
+
+-> breakpoint_set -i 3 -t line -f file://bug01388-07.inc -n 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0002" resolved="resolved"></response>
+
+-> breakpoint_set -i 4 -t line -f file://bug01388-07.inc -n 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" id="{{PID}}0003" resolved="resolved"></response>
+
+-> breakpoint_set -i 5 -t line -f file://bug01388-07.inc -n 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="5" id="{{PID}}0004" resolved="resolved"></response>
+
+-> run -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://bug01388-07.inc" lineno="1"></xdebug:message></response>
+
+-> run -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://bug01388-07.inc" lineno="3"></xdebug:message></response>
+
+-> run -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="8" status="break" reason="ok"><xdebug:message filename="file://bug01388-07.inc" lineno="5"></xdebug:message></response>
+
+-> run -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="9" status="break" reason="ok"><xdebug:message filename="file://bug01388-07.inc" lineno="6"></xdebug:message></response>
+
+-> detach -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="10" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01417.inc b/xdebug-3.4.5/tests/debugger/bug01417.inc
new file mode 100644
index 0000000..101fa2d
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01417.inc
@@ -0,0 +1,13 @@
+<?php
+class Bar {
+    static $var = 52;
+    public static function f2() {
+        foo();
+    }
+}
+
+function foo() {
+    echo "hi"; // put breakpoint here
+}
+
+Bar::f2();
diff --git a/xdebug-3.4.5/tests/debugger/bug01417.phpt b/xdebug-3.4.5/tests/debugger/bug01417.phpt
new file mode 100644
index 0000000..3d7fd2f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01417.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #1417: Fetching properties of static class contexts fails due to incorrect fetch mode
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01417.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 10",
+	'run',
+	'context_get -d 0 -c 0',
+	'context_get -d 1 -c 0',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01417.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug01417.inc -n 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01417.inc" lineno="10"></xdebug:message></response>
+
+-> context_get -i 3 -d 0 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="3" context="0"></response>
+
+-> context_get -i 4 -d 1 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="::" fullname="::" type="object" classname="Bar" children="1" numchildren="1"><property name="::var" fullname="::var" type="int" facet="static public"><![CDATA[52]]></property></property></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01449.inc b/xdebug-3.4.5/tests/debugger/bug01449.inc
new file mode 100644
index 0000000..fca455b
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01449.inc
@@ -0,0 +1,7 @@
+<?php
+$var = [];
+for ( $i = 0; $i < 32; $i++ )
+{
+	$var[ "{$i}-" . chr( $i ) . "-{$i}" ] = "v";
+}
+var_dump($var);
diff --git a/xdebug-3.4.5/tests/debugger/bug01449.phpt b/xdebug-3.4.5/tests/debugger/bug01449.phpt
new file mode 100644
index 0000000..022bb9b
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01449.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Test for bug #1449: Array element keys containing low-ASCII variables
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$filename = dirname(__FILE__) . '/bug01449.inc';
+
+$commands = array(
+	'step_into',
+	'feature_set -n extended_properties -v 1',
+	'breakpoint_set -t line -n 7',
+	'run',
+	'property_get -n $var',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01449.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01449.inc" lineno="2"></xdebug:message></response>
+
+-> feature_set -i 2 -n extended_properties -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="extended_properties" success="1"></response>
+
+-> breakpoint_set -i 3 -t line -n 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01449.inc" lineno="7"></xdebug:message></response>
+
+-> property_get -i 5 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$var" fullname="$var" type="array" children="1" numchildren="32" page="0" pagesize="32"><property type="string" size="1"><name encoding="base64"><![CDATA[MC0ALTA=]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMC1cMC0wIl0=]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MS0BLTE=]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMS0BLTEiXQ==]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[Mi0CLTI=]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMi0CLTIiXQ==]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[My0DLTM=]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMy0DLTMiXQ==]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[NC0ELTQ=]]></name><fullname encoding="base64"><![CDATA[JHZhclsiNC0ELTQiXQ==]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[NS0FLTU=]]></name><fullname encoding="base64"><![CDATA[JHZhclsiNS0FLTUiXQ==]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[Ni0GLTY=]]></name><fullname encoding="base64"><![CDATA[JHZhclsiNi0GLTYiXQ==]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[Ny0HLTc=]]></name><fullname encoding="base64"><![CDATA[JHZhclsiNy0HLTciXQ==]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[OC0ILTg=]]></name><fullname encoding="base64"><![CDATA[JHZhclsiOC0ILTgiXQ==]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[OS0JLTk=]]></name><fullname encoding="base64"><![CDATA[JHZhclsiOS0JLTkiXQ==]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MTAtCi0xMA==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMTAtCi0xMCJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MTEtCy0xMQ==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMTEtCy0xMSJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MTItDC0xMg==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMTItDC0xMiJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MTMtDS0xMw==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMTMtDS0xMyJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MTQtDi0xNA==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMTQtDi0xNCJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MTUtDy0xNQ==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMTUtDy0xNSJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MTYtEC0xNg==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMTYtEC0xNiJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MTctES0xNw==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMTctES0xNyJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MTgtEi0xOA==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMTgtEi0xOCJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MTktEy0xOQ==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMTktEy0xOSJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MjAtFC0yMA==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMjAtFC0yMCJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MjEtFS0yMQ==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMjEtFS0yMSJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MjItFi0yMg==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMjItFi0yMiJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MjMtFy0yMw==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMjMtFy0yMyJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MjQtGC0yNA==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMjQtGC0yNCJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MjUtGS0yNQ==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMjUtGS0yNSJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MjYtGi0yNg==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMjYtGi0yNiJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MjctGy0yNw==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMjctGy0yNyJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MjgtHC0yOA==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMjgtHC0yOCJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MjktHS0yOQ==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMjktHS0yOSJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MzAtHi0zMA==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMzAtHi0zMCJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property><property type="string" size="1"><name encoding="base64"><![CDATA[MzEtHy0zMQ==]]></name><fullname encoding="base64"><![CDATA[JHZhclsiMzEtHy0zMSJd]]></fullname><value encoding="base64"><![CDATA[dg==]]></value></property></property></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01488.inc b/xdebug-3.4.5/tests/debugger/bug01488.inc
new file mode 100644
index 0000000..a90934c
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01488.inc
@@ -0,0 +1,9 @@
+<?php
+function scope0() {
+    $var = 'scope0';
+    $break = null;
+}
+
+scope0();
+
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01488.phpt b/xdebug-3.4.5/tests/debugger/bug01488.phpt
new file mode 100644
index 0000000..b58667c
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01488.phpt
@@ -0,0 +1,304 @@
+--TEST--
+Test for bug #1488: Rewrite DBGp 'property_set' to always use eval
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01488.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 4",
+	'run',
+);
+
+$types = [ 'string', 'bool', 'int', 'float' ];
+$values = [ '"scope0-modified"', 'true', 'false', '42', '"42"', '42.11', '"42.11"', "0x5E" ];
+
+foreach ( $types as $type )
+{
+	foreach ( $values as $value )
+	{
+		$commands[] = 'property_set -n $var -t ' . $type . ' -- ' . base64_encode( $value );
+		$commands[] = 'property_get -n $var';
+	}
+}
+
+$commands[] = 'detach';
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01488.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug01488.inc -n 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01488.inc" lineno="4"></xdebug:message></response>
+
+-> property_set -i 3 -n $var -t string -- InNjb3BlMC1tb2RpZmllZCI=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="3" success="1"></response>
+
+-> property_get -i 4 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$var" fullname="$var" type="string" size="15" encoding="base64"><![CDATA[c2NvcGUwLW1vZGlmaWVk]]></property></response>
+
+-> property_set -i 5 -n $var -t string -- dHJ1ZQ==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="5" success="1"></response>
+
+-> property_get -i 6 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$var" fullname="$var" type="string" size="1" encoding="base64"><![CDATA[MQ==]]></property></response>
+
+-> property_set -i 7 -n $var -t string -- ZmFsc2U=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="7" success="1"></response>
+
+-> property_get -i 8 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8"><property name="$var" fullname="$var" type="string" size="0" encoding="base64"><![CDATA[]]></property></response>
+
+-> property_set -i 9 -n $var -t string -- NDI=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="9" success="1"></response>
+
+-> property_get -i 10 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="10"><property name="$var" fullname="$var" type="string" size="2" encoding="base64"><![CDATA[NDI=]]></property></response>
+
+-> property_set -i 11 -n $var -t string -- IjQyIg==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="11" success="1"></response>
+
+-> property_get -i 12 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="12"><property name="$var" fullname="$var" type="string" size="2" encoding="base64"><![CDATA[NDI=]]></property></response>
+
+-> property_set -i 13 -n $var -t string -- NDIuMTE=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="13" success="1"></response>
+
+-> property_get -i 14 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="14"><property name="$var" fullname="$var" type="string" size="5" encoding="base64"><![CDATA[NDIuMTE=]]></property></response>
+
+-> property_set -i 15 -n $var -t string -- IjQyLjExIg==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="15" success="1"></response>
+
+-> property_get -i 16 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="16"><property name="$var" fullname="$var" type="string" size="5" encoding="base64"><![CDATA[NDIuMTE=]]></property></response>
+
+-> property_set -i 17 -n $var -t string -- MHg1RQ==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="17" success="1"></response>
+
+-> property_get -i 18 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="18"><property name="$var" fullname="$var" type="string" size="2" encoding="base64"><![CDATA[OTQ=]]></property></response>
+
+-> property_set -i 19 -n $var -t bool -- InNjb3BlMC1tb2RpZmllZCI=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="19" success="1"></response>
+
+-> property_get -i 20 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="20"><property name="$var" fullname="$var" type="bool"><![CDATA[1]]></property></response>
+
+-> property_set -i 21 -n $var -t bool -- dHJ1ZQ==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="21" success="1"></response>
+
+-> property_get -i 22 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="22"><property name="$var" fullname="$var" type="bool"><![CDATA[1]]></property></response>
+
+-> property_set -i 23 -n $var -t bool -- ZmFsc2U=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="23" success="1"></response>
+
+-> property_get -i 24 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="24"><property name="$var" fullname="$var" type="bool"><![CDATA[0]]></property></response>
+
+-> property_set -i 25 -n $var -t bool -- NDI=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="25" success="1"></response>
+
+-> property_get -i 26 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="26"><property name="$var" fullname="$var" type="bool"><![CDATA[1]]></property></response>
+
+-> property_set -i 27 -n $var -t bool -- IjQyIg==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="27" success="1"></response>
+
+-> property_get -i 28 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="28"><property name="$var" fullname="$var" type="bool"><![CDATA[1]]></property></response>
+
+-> property_set -i 29 -n $var -t bool -- NDIuMTE=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="29" success="1"></response>
+
+-> property_get -i 30 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="30"><property name="$var" fullname="$var" type="bool"><![CDATA[1]]></property></response>
+
+-> property_set -i 31 -n $var -t bool -- IjQyLjExIg==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="31" success="1"></response>
+
+-> property_get -i 32 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="32"><property name="$var" fullname="$var" type="bool"><![CDATA[1]]></property></response>
+
+-> property_set -i 33 -n $var -t bool -- MHg1RQ==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="33" success="1"></response>
+
+-> property_get -i 34 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="34"><property name="$var" fullname="$var" type="bool"><![CDATA[1]]></property></response>
+
+-> property_set -i 35 -n $var -t int -- InNjb3BlMC1tb2RpZmllZCI=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="35" success="1"></response>
+
+-> property_get -i 36 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="36"><property name="$var" fullname="$var" type="int"><![CDATA[0]]></property></response>
+
+-> property_set -i 37 -n $var -t int -- dHJ1ZQ==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="37" success="1"></response>
+
+-> property_get -i 38 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="38"><property name="$var" fullname="$var" type="int"><![CDATA[1]]></property></response>
+
+-> property_set -i 39 -n $var -t int -- ZmFsc2U=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="39" success="1"></response>
+
+-> property_get -i 40 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="40"><property name="$var" fullname="$var" type="int"><![CDATA[0]]></property></response>
+
+-> property_set -i 41 -n $var -t int -- NDI=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="41" success="1"></response>
+
+-> property_get -i 42 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="42"><property name="$var" fullname="$var" type="int"><![CDATA[42]]></property></response>
+
+-> property_set -i 43 -n $var -t int -- IjQyIg==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="43" success="1"></response>
+
+-> property_get -i 44 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="44"><property name="$var" fullname="$var" type="int"><![CDATA[42]]></property></response>
+
+-> property_set -i 45 -n $var -t int -- NDIuMTE=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="45" success="1"></response>
+
+-> property_get -i 46 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="46"><property name="$var" fullname="$var" type="int"><![CDATA[42]]></property></response>
+
+-> property_set -i 47 -n $var -t int -- IjQyLjExIg==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="47" success="1"></response>
+
+-> property_get -i 48 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="48"><property name="$var" fullname="$var" type="int"><![CDATA[42]]></property></response>
+
+-> property_set -i 49 -n $var -t int -- MHg1RQ==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="49" success="1"></response>
+
+-> property_get -i 50 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="50"><property name="$var" fullname="$var" type="int"><![CDATA[94]]></property></response>
+
+-> property_set -i 51 -n $var -t float -- InNjb3BlMC1tb2RpZmllZCI=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="51" success="1"></response>
+
+-> property_get -i 52 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="52"><property name="$var" fullname="$var" type="float"><![CDATA[0]]></property></response>
+
+-> property_set -i 53 -n $var -t float -- dHJ1ZQ==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="53" success="1"></response>
+
+-> property_get -i 54 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="54"><property name="$var" fullname="$var" type="float"><![CDATA[1]]></property></response>
+
+-> property_set -i 55 -n $var -t float -- ZmFsc2U=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="55" success="1"></response>
+
+-> property_get -i 56 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="56"><property name="$var" fullname="$var" type="float"><![CDATA[0]]></property></response>
+
+-> property_set -i 57 -n $var -t float -- NDI=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="57" success="1"></response>
+
+-> property_get -i 58 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="58"><property name="$var" fullname="$var" type="float"><![CDATA[42]]></property></response>
+
+-> property_set -i 59 -n $var -t float -- IjQyIg==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="59" success="1"></response>
+
+-> property_get -i 60 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="60"><property name="$var" fullname="$var" type="float"><![CDATA[42]]></property></response>
+
+-> property_set -i 61 -n $var -t float -- NDIuMTE=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="61" success="1"></response>
+
+-> property_get -i 62 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="62"><property name="$var" fullname="$var" type="float"><![CDATA[42.11]]></property></response>
+
+-> property_set -i 63 -n $var -t float -- IjQyLjExIg==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="63" success="1"></response>
+
+-> property_get -i 64 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="64"><property name="$var" fullname="$var" type="float"><![CDATA[42.11]]></property></response>
+
+-> property_set -i 65 -n $var -t float -- MHg1RQ==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="65" success="1"></response>
+
+-> property_get -i 66 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="66"><property name="$var" fullname="$var" type="float"><![CDATA[94]]></property></response>
+
+-> detach -i 67
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="67" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01512.inc b/xdebug-3.4.5/tests/debugger/bug01512.inc
new file mode 100644
index 0000000..7b1de0b
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01512.inc
@@ -0,0 +1,22 @@
+<?php
+
+namespace TestA\TestB\TestC;
+
+class A
+{
+    private $items;
+
+    public function __construct()
+    {
+        $this->items = array(array(1, 2));
+    }
+}
+
+class B extends A {
+    public function foo() {
+        $v = array(array("\\\\" => 1));
+        echo 1; // Set breakpoint here and inspect $v and $items
+    }
+}
+
+(new B())->foo();
diff --git a/xdebug-3.4.5/tests/debugger/bug01512.phpt b/xdebug-3.4.5/tests/debugger/bug01512.phpt
new file mode 100644
index 0000000..170fd5f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01512.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #1512: Xdebug returns escaped property name and fullname
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01512.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 17",
+	'run',
+	'property_get -d 0 -c 0 -n $this',
+	'property_get -d 0 -c 0 -n "$this"',
+	'property_get -d 0 -c 0 -n $this->*TestA\\TestB\\TestC\\A*items',
+	'property_get -d 0 -c 0 -n "$this->*TestA\\\\TestB\\\\TestC\\\\A*items"',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01512.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug01512.inc -n 17
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01512.inc" lineno="17"></xdebug:message></response>
+
+-> property_get -i 3 -d 0 -c 0 -n $this
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$this" fullname="$this" type="object" classname="TestA\TestB\TestC\B" children="1" numchildren="1" page="0" pagesize="32"><property name="*TestA\TestB\TestC\A*items" fullname="$this-&gt;*TestA\TestB\TestC\A*items" facet="private" type="array" children="1" numchildren="1"></property></property></response>
+
+-> property_get -i 4 -d 0 -c 0 -n "$this"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$this" fullname="$this" type="object" classname="TestA\TestB\TestC\B" children="1" numchildren="1" page="0" pagesize="32"><property name="*TestA\TestB\TestC\A*items" fullname="$this-&gt;*TestA\TestB\TestC\A*items" facet="private" type="array" children="1" numchildren="1"></property></property></response>
+
+-> property_get -i 5 -d 0 -c 0 -n $this->*TestA\TestB\TestC\A*items
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$this-&gt;*TestA\TestB\TestC\A*items" fullname="$this-&gt;*TestA\TestB\TestC\A*items" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="0" fullname="$this-&gt;*TestA\TestB\TestC\A*items[0]" type="array" children="1" numchildren="2"></property></property></response>
+
+-> property_get -i 6 -d 0 -c 0 -n "$this->*TestA\\TestB\\TestC\\A*items"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$this-&gt;*TestA\TestB\TestC\A*items" fullname="$this-&gt;*TestA\TestB\TestC\A*items" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="0" fullname="$this-&gt;*TestA\TestB\TestC\A*items[0]" type="array" children="1" numchildren="2"></property></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01514.inc b/xdebug-3.4.5/tests/debugger/bug01514.inc
new file mode 100644
index 0000000..466c02f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01514.inc
@@ -0,0 +1,6 @@
+<?php
+$name = "with_\0_null_char";
+$$name = 42;
+
+die();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01514.phpt b/xdebug-3.4.5/tests/debugger/bug01514.phpt
new file mode 100644
index 0000000..fecdd98
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01514.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #1514: Variable names with a NULL char are cut off at NULL char
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01514.inc';
+
+$commands = array(
+	'step_into',
+	'step_into',
+	'step_into',
+	'context_get',
+	'feature_set -n extended_properties -v 1',
+	'context_get',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01514.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01514.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01514.inc" lineno="3"></xdebug:message></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01514.inc" lineno="5"></xdebug:message></response>
+
+-> context_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="$name" fullname="$name" type="string" size="16" encoding="base64"><![CDATA[d2l0aF8AX251bGxfY2hhcg==]]></property><property name="$with_&#0;_null_char" fullname="$with_&#0;_null_char" type="int"><![CDATA[42]]></property></response>
+
+-> feature_set -i 5 -n extended_properties -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="5" feature="extended_properties" success="1"></response>
+
+-> context_get -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="6" context="0"><property type="string" size="16"><name encoding="base64"><![CDATA[JG5hbWU=]]></name><fullname encoding="base64"><![CDATA[JG5hbWU=]]></fullname><value encoding="base64"><![CDATA[d2l0aF8AX251bGxfY2hhcg==]]></value></property><property type="int"><name encoding="base64"><![CDATA[JHdpdGhfAF9udWxsX2NoYXI=]]></name><fullname encoding="base64"><![CDATA[JHdpdGhfAF9udWxsX2NoYXI=]]></fullname><value encoding="base64"><![CDATA[NDI=]]></value></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01515-002.phpt b/xdebug-3.4.5/tests/debugger/bug01515-002.phpt
new file mode 100644
index 0000000..3171a67
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01515-002.phpt
@@ -0,0 +1,60 @@
+--TEST--
+Test for bug #1515: Object property names with a NULL char are cut off at NULL char (DBGp)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01515.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 6',
+	'run',
+	'context_get',
+	'property_get -d 0 -c 0 -n $obj',
+	'feature_set -n extended_properties -v 1',
+	'context_get',
+	'property_get -d 0 -c 0 -n $obj',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01515.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01515.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01515.inc" lineno="6"></xdebug:message></response>
+
+-> context_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="$name" fullname="$name" type="string" size="16" encoding="base64"><![CDATA[d2l0aF8AX251bGxfY2hhcg==]]></property><property name="$obj" fullname="$obj" type="object" classname="stdClass" children="1" numchildren="1" page="0" pagesize="32"><property name="with_&#0;_null_char" fullname="$obj-&gt;with_&#0;_null_char" facet="public" type="int"><![CDATA[42]]></property></property></response>
+
+-> property_get -i 5 -d 0 -c 0 -n $obj
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$obj" fullname="$obj" type="object" classname="stdClass" children="1" numchildren="1" page="0" pagesize="32"><property name="with_&#0;_null_char" fullname="$obj-&gt;with_&#0;_null_char" facet="public" type="int"><![CDATA[42]]></property></property></response>
+
+-> feature_set -i 6 -n extended_properties -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="6" feature="extended_properties" success="1"></response>
+
+-> context_get -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="7" context="0"><property type="string" size="16"><name encoding="base64"><![CDATA[JG5hbWU=]]></name><fullname encoding="base64"><![CDATA[JG5hbWU=]]></fullname><value encoding="base64"><![CDATA[d2l0aF8AX251bGxfY2hhcg==]]></value></property><property name="$obj" fullname="$obj" type="object" classname="stdClass" children="1" numchildren="1" page="0" pagesize="32"><property facet="public" type="int"><name encoding="base64"><![CDATA[d2l0aF8AX251bGxfY2hhcg==]]></name><fullname encoding="base64"><![CDATA[JG9iai0+d2l0aF8AX251bGxfY2hhcg==]]></fullname><value encoding="base64"><![CDATA[NDI=]]></value></property></property></response>
+
+-> property_get -i 8 -d 0 -c 0 -n $obj
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8"><property name="$obj" fullname="$obj" type="object" classname="stdClass" children="1" numchildren="1" page="0" pagesize="32"><property facet="public" type="int"><name encoding="base64"><![CDATA[d2l0aF8AX251bGxfY2hhcg==]]></name><fullname encoding="base64"><![CDATA[JG9iai0+d2l0aF8AX251bGxfY2hhcg==]]></fullname><value encoding="base64"><![CDATA[NDI=]]></value></property></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01515.inc b/xdebug-3.4.5/tests/debugger/bug01515.inc
new file mode 100644
index 0000000..a5ff0dc
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01515.inc
@@ -0,0 +1,7 @@
+<?php
+$obj = new stdClass;
+$name = "with_\0_null_char";
+$obj->$name = 42;
+
+echo "We're here\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01516.inc b/xdebug-3.4.5/tests/debugger/bug01516.inc
new file mode 100644
index 0000000..2a5fc5d
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01516.inc
@@ -0,0 +1,9 @@
+<?php
+$obj = new stdClass;
+$name = "with_\0_null_char";
+$obj->$name = 42;
+
+$$name = 42;
+
+echo "We're here\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01516.phpt b/xdebug-3.4.5/tests/debugger/bug01516.phpt
new file mode 100644
index 0000000..3bc7ff1
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01516.phpt
@@ -0,0 +1,70 @@
+--TEST--
+Test for bug #1516: Can't fetch variables or object properties which have \0 characters in them
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01516.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 8',
+	'run',
+	'context_get',
+	'property_get -d 0 -c 0 -n "with_\\0_null_char"',
+	'property_get -d 0 -c 0 -n "$obj->with_\\0_null_char"',
+	'feature_set -n extended_properties -v 1',
+	'context_get',
+	'property_get -d 0 -c 0 -n "with_\\0_null_char"',
+	'property_get -d 0 -c 0 -n "$obj->with_\\0_null_char"',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01516.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01516.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01516.inc" lineno="8"></xdebug:message></response>
+
+-> context_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="$name" fullname="$name" type="string" size="16" encoding="base64"><![CDATA[d2l0aF8AX251bGxfY2hhcg==]]></property><property name="$obj" fullname="$obj" type="object" classname="stdClass" children="1" numchildren="1" page="0" pagesize="32"><property name="with_&#0;_null_char" fullname="$obj-&gt;with_&#0;_null_char" facet="public" type="int"><![CDATA[42]]></property></property><property name="$with_&#0;_null_char" fullname="$with_&#0;_null_char" type="int"><![CDATA[42]]></property></response>
+
+-> property_get -i 5 -d 0 -c 0 -n "with_\0_null_char"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$with_&#0;_null_char" fullname="$with_&#0;_null_char" type="int"><![CDATA[42]]></property></response>
+
+-> property_get -i 6 -d 0 -c 0 -n "$obj->with_\0_null_char"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$obj-&gt;with_&#0;_null_char" fullname="$obj-&gt;with_&#0;_null_char" type="int"><![CDATA[42]]></property></response>
+
+-> feature_set -i 7 -n extended_properties -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="7" feature="extended_properties" success="1"></response>
+
+-> context_get -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="8" context="0"><property type="string" size="16"><name encoding="base64"><![CDATA[JG5hbWU=]]></name><fullname encoding="base64"><![CDATA[JG5hbWU=]]></fullname><value encoding="base64"><![CDATA[d2l0aF8AX251bGxfY2hhcg==]]></value></property><property name="$obj" fullname="$obj" type="object" classname="stdClass" children="1" numchildren="1" page="0" pagesize="32"><property facet="public" type="int"><name encoding="base64"><![CDATA[d2l0aF8AX251bGxfY2hhcg==]]></name><fullname encoding="base64"><![CDATA[JG9iai0+d2l0aF8AX251bGxfY2hhcg==]]></fullname><value encoding="base64"><![CDATA[NDI=]]></value></property></property><property type="int"><name encoding="base64"><![CDATA[JHdpdGhfAF9udWxsX2NoYXI=]]></name><fullname encoding="base64"><![CDATA[JHdpdGhfAF9udWxsX2NoYXI=]]></fullname><value encoding="base64"><![CDATA[NDI=]]></value></property></response>
+
+-> property_get -i 9 -d 0 -c 0 -n "with_\0_null_char"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="9"><property type="int"><name encoding="base64"><![CDATA[JHdpdGhfAF9udWxsX2NoYXI=]]></name><fullname encoding="base64"><![CDATA[JHdpdGhfAF9udWxsX2NoYXI=]]></fullname><value encoding="base64"><![CDATA[NDI=]]></value></property></response>
+
+-> property_get -i 10 -d 0 -c 0 -n "$obj->with_\0_null_char"
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="10"><property type="int"><name encoding="base64"><![CDATA[JG9iai0+d2l0aF8AX251bGxfY2hhcg==]]></name><fullname encoding="base64"><![CDATA[JG9iai0+d2l0aF8AX251bGxfY2hhcg==]]></fullname><value encoding="base64"><![CDATA[NDI=]]></value></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01520.inc b/xdebug-3.4.5/tests/debugger/bug01520.inc
new file mode 100644
index 0000000..3a67459
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01520.inc
@@ -0,0 +1,20 @@
+<?php
+$obj = new stdClass;
+
+$dash = "with-dash-char";
+$obj->$dash = 42;
+
+$square = "with['square']";
+$obj->$square = 43;
+
+$brace = "{with";
+$obj->$brace = 45;
+
+$close = "{wi\"th";
+$obj->$close = 46;
+
+$square2 = "two['square']";
+$obj->$square2 = [ $close => 4, $brace => 5 ];
+
+echo $name, "\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01520.phpt b/xdebug-3.4.5/tests/debugger/bug01520.phpt
new file mode 100644
index 0000000..8df9c92
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01520.phpt
@@ -0,0 +1,80 @@
+--TEST--
+Test for bug #1520: Xdebug does not handle variable names with "-" in their name
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01520.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 19',
+	'run',
+	'property_get -n $obj',
+	'property_get -n $obj->{"with-dash-char"}',
+	'property_get -n $obj->{"with[\\\'square\\\']"}',
+	'property_get -n $obj->{"{with"}',
+	'property_get -n $obj->{"{wi\\"th"}',
+	'property_get -n $obj->{"two[\\\'square\\\']"}',
+	'property_get -n $obj->{"two[\\\'square\\\']"}["{with"]',
+	'property_get -n $obj->{"two[\\\'square\\\']"}["{wi\\"th"]',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01520.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01520.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 19
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01520.inc" lineno="19"></xdebug:message></response>
+
+-> property_get -i 4 -n $obj
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$obj" fullname="$obj" type="object" classname="stdClass" children="1" numchildren="5" page="0" pagesize="32"><property name="with-dash-char" fullname="$obj-&gt;{&quot;with-dash-char&quot;}" facet="public" type="int"><![CDATA[42]]></property><property name="with[&#39;square&#39;]" fullname="$obj-&gt;{&quot;with[\&#39;square\&#39;]&quot;}" facet="public" type="int"><![CDATA[43]]></property><property name="{with" fullname="$obj-&gt;{&quot;{with&quot;}" facet="public" type="int"><![CDATA[45]]></property><property name="{wi&quot;th" fullname="$obj-&gt;{&quot;{wi\&quot;th&quot;}" facet="public" type="int"><![CDATA[46]]></property><property name="two[&#39;square&#39;]" fullname="$obj-&gt;{&quot;two[\&#39;square\&#39;]&quot;}" facet="public" type="array" children="1" numchildren="2"></property></property></response>
+
+-> property_get -i 5 -n $obj->{"with-dash-char"}
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$obj-&gt;{&quot;with-dash-char&quot;}" fullname="$obj-&gt;{&quot;with-dash-char&quot;}" type="int"><![CDATA[42]]></property></response>
+
+-> property_get -i 6 -n $obj->{"with[\'square\']"}
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$obj-&gt;{&quot;with[\&#39;square\&#39;]&quot;}" fullname="$obj-&gt;{&quot;with[\&#39;square\&#39;]&quot;}" type="int"><![CDATA[43]]></property></response>
+
+-> property_get -i 7 -n $obj->{"{with"}
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="$obj-&gt;{&quot;{with&quot;}" fullname="$obj-&gt;{&quot;{with&quot;}" type="int"><![CDATA[45]]></property></response>
+
+-> property_get -i 8 -n $obj->{"{wi\"th"}
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8"><property name="$obj-&gt;{&quot;{wi\&quot;th&quot;}" fullname="$obj-&gt;{&quot;{wi\&quot;th&quot;}" type="int"><![CDATA[46]]></property></response>
+
+-> property_get -i 9 -n $obj->{"two[\'square\']"}
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="9"><property name="$obj-&gt;{&quot;two[\&#39;square\&#39;]&quot;}" fullname="$obj-&gt;{&quot;two[\&#39;square\&#39;]&quot;}" type="array" children="1" numchildren="2" page="0" pagesize="32"><property name="{wi&quot;th" fullname="$obj-&gt;{&quot;two[\&#39;square\&#39;]&quot;}[&quot;{wi\&quot;th&quot;]" type="int"><![CDATA[4]]></property><property name="{with" fullname="$obj-&gt;{&quot;two[\&#39;square\&#39;]&quot;}[&quot;{with&quot;]" type="int"><![CDATA[5]]></property></property></response>
+
+-> property_get -i 10 -n $obj->{"two[\'square\']"}["{with"]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="10"><property name="$obj-&gt;{&quot;two[\&#39;square\&#39;]&quot;}[&quot;{with&quot;]" fullname="$obj-&gt;{&quot;two[\&#39;square\&#39;]&quot;}[&quot;{with&quot;]" type="int"><![CDATA[5]]></property></response>
+
+-> property_get -i 11 -n $obj->{"two[\'square\']"}["{wi\"th"]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="11"><property name="$obj-&gt;{&quot;two[\&#39;square\&#39;]&quot;}[&quot;{wi\&quot;th&quot;]" fullname="$obj-&gt;{&quot;two[\&#39;square\&#39;]&quot;}[&quot;{wi\&quot;th&quot;]" type="int"><![CDATA[4]]></property></response>
+
+-> detach -i 12
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="12" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01532.inc b/xdebug-3.4.5/tests/debugger/bug01532.inc
new file mode 100644
index 0000000..a987a8f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01532.inc
@@ -0,0 +1 @@
+<?php eval('trigger_error("flupp", E_USER_NOTICE);'); ?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01532.phpt b/xdebug-3.4.5/tests/debugger/bug01532.phpt
new file mode 100644
index 0000000..3327d5a
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01532.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Test for bug #1532: SIGABRT when using remote debugging and an error is thrown in eval()
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01532.inc';
+
+$commands = array(
+    'feature_set -n notify_ok -v 1',
+    'step_into',
+    'run',
+    'detach'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01532.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01532.inc" lineno="1"></xdebug:message></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="error"><xdebug:message filename="dbgp://1" lineno="1" type="Notice"><![CDATA[flupp]]></xdebug:message></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="stopping" reason="ok"></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01551.inc b/xdebug-3.4.5/tests/debugger/bug01551.inc
new file mode 100644
index 0000000..f941990
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01551.inc
@@ -0,0 +1,11 @@
+<?php
+$object = (object) [
+	null => [ 1, 2, [ 3, 4, 5 ] ],
+];
+
+$array = [
+	null => [ 1, 2, [ 3, 4, 5 ] ],
+];
+
+count($array);
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01551.phpt b/xdebug-3.4.5/tests/debugger/bug01551.phpt
new file mode 100644
index 0000000..b8c91ca
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01551.phpt
@@ -0,0 +1,70 @@
+--TEST--
+Test for bug #1551: Can't debug properties with an empty name
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01551.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 10',
+	'run',
+	'property_get -n $object',
+	'property_get -n $object->{""}',
+	'property_get -n $object->{""}[2]',
+	'property_get -n $array',
+	'property_get -n $array[""]',
+	'property_get -n $array[""][2]',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01551.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01551.inc" lineno="3"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01551.inc" lineno="10"></xdebug:message></response>
+
+-> property_get -i 4 -n $object
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$object" fullname="$object" type="object" classname="stdClass" children="1" numchildren="1" page="0" pagesize="32"><property name="" fullname="$object-&gt;{&quot;&quot;}" facet="public" type="array" children="1" numchildren="3"></property></property></response>
+
+-> property_get -i 5 -n $object->{""}
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$object-&gt;{&quot;&quot;}" fullname="$object-&gt;{&quot;&quot;}" type="array" children="1" numchildren="3" page="0" pagesize="32"><property name="0" fullname="$object-&gt;{&quot;&quot;}[0]" type="int"><![CDATA[1]]></property><property name="1" fullname="$object-&gt;{&quot;&quot;}[1]" type="int"><![CDATA[2]]></property><property name="2" fullname="$object-&gt;{&quot;&quot;}[2]" type="array" children="1" numchildren="3"></property></property></response>
+
+-> property_get -i 6 -n $object->{""}[2]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$object-&gt;{&quot;&quot;}[2]" fullname="$object-&gt;{&quot;&quot;}[2]" type="array" children="1" numchildren="3" page="0" pagesize="32"><property name="0" fullname="$object-&gt;{&quot;&quot;}[2][0]" type="int"><![CDATA[3]]></property><property name="1" fullname="$object-&gt;{&quot;&quot;}[2][1]" type="int"><![CDATA[4]]></property><property name="2" fullname="$object-&gt;{&quot;&quot;}[2][2]" type="int"><![CDATA[5]]></property></property></response>
+
+-> property_get -i 7 -n $array
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="$array" fullname="$array" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="" fullname="$array[&quot;&quot;]" type="array" children="1" numchildren="3"></property></property></response>
+
+-> property_get -i 8 -n $array[""]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8"><property name="$array[&quot;&quot;]" fullname="$array[&quot;&quot;]" type="array" children="1" numchildren="3" page="0" pagesize="32"><property name="0" fullname="$array[&quot;&quot;][0]" type="int"><![CDATA[1]]></property><property name="1" fullname="$array[&quot;&quot;][1]" type="int"><![CDATA[2]]></property><property name="2" fullname="$array[&quot;&quot;][2]" type="array" children="1" numchildren="3"></property></property></response>
+
+-> property_get -i 9 -n $array[""][2]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="9"><property name="$array[&quot;&quot;][2]" fullname="$array[&quot;&quot;][2]" type="array" children="1" numchildren="3" page="0" pagesize="32"><property name="0" fullname="$array[&quot;&quot;][2][0]" type="int"><![CDATA[3]]></property><property name="1" fullname="$array[&quot;&quot;][2][1]" type="int"><![CDATA[4]]></property><property name="2" fullname="$array[&quot;&quot;][2][2]" type="int"><![CDATA[5]]></property></property></response>
+
+-> detach -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="10" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01568.inc b/xdebug-3.4.5/tests/debugger/bug01568.inc
new file mode 100644
index 0000000..84e7e32
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01568.inc
@@ -0,0 +1,24 @@
+<?php
+use Ds\Vector;
+
+$vector = new Vector();
+$vector->push([1]);
+$vector->push([2]);
+$vector->push([3]);
+
+class Foo
+{
+    private $val;
+
+    public function __construct($val)
+    {
+        $this->val = $val;
+    }
+}
+$vector = new Vector();
+$vector->push(new Foo(1));
+$vector->push(new Foo(2));
+$vector->push(new Foo(3));
+
+var_export($vector);
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01568.phpt b/xdebug-3.4.5/tests/debugger/bug01568.phpt
new file mode 100644
index 0000000..b156fab
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01568.phpt
@@ -0,0 +1,75 @@
+--TEST--
+Test for bug #1568: Can't debug object properties that have numeric keys
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; ext ds');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01568.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 6',
+	'breakpoint_set -t line -n 23',
+	'run',
+	'property_get -n $vector',
+	'property_get -n $vector->0',
+	'run',
+	'property_get -n $vector',
+	'property_get -n $vector->1',
+	'property_get -n $vector->2',
+	'detach'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01568.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01568.inc" lineno="4"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> breakpoint_set -i 3 -t line -n 23
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0002"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01568.inc" lineno="6"></xdebug:message></response>
+
+-> property_get -i 5 -n $vector
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$vector" fullname="$vector" type="object" classname="Ds\Vector" children="1" numchildren="1" page="0" pagesize="32"><property name="0" fullname="$vector-&gt;0" facet="public" type="array" children="1" numchildren="1"></property></property></response>
+
+-> property_get -i 6 -n $vector->0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$vector-&gt;0" fullname="$vector-&gt;0" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="0" fullname="$vector-&gt;0[0]" type="int"><![CDATA[1]]></property></property></response>
+
+-> run -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://bug01568.inc" lineno="23"></xdebug:message></response>
+
+-> property_get -i 8 -n $vector
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8"><property name="$vector" fullname="$vector" type="object" classname="Ds\Vector" children="1" numchildren="3" page="0" pagesize="32"><property name="0" fullname="$vector-&gt;0" facet="public" type="object" classname="Foo" children="1" numchildren="1"></property><property name="1" fullname="$vector-&gt;1" facet="public" type="object" classname="Foo" children="1" numchildren="1"></property><property name="2" fullname="$vector-&gt;2" facet="public" type="object" classname="Foo" children="1" numchildren="1"></property></property></response>
+
+-> property_get -i 9 -n $vector->1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="9"><property name="$vector-&gt;1" fullname="$vector-&gt;1" type="object" classname="Foo" children="1" numchildren="1" page="0" pagesize="32"><property name="val" fullname="$vector-&gt;1-&gt;val" facet="private" type="int"><![CDATA[2]]></property></property></response>
+
+-> property_get -i 10 -n $vector->2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="10"><property name="$vector-&gt;2" fullname="$vector-&gt;2" type="object" classname="Foo" children="1" numchildren="1" page="0" pagesize="32"><property name="val" fullname="$vector-&gt;2-&gt;val" facet="private" type="int"><![CDATA[3]]></property></property></response>
+
+-> detach -i 11
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="11" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01586-php83.phpt b/xdebug-3.4.5/tests/debugger/bug01586-php83.phpt
new file mode 100644
index 0000000..7c74f84
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01586-php83.phpt
@@ -0,0 +1,55 @@
+--TEST--
+Test for bug #1586: error_reporting evaluation (< PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.4; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01586.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 7",
+	"breakpoint_set -t line -f file://{$filename} -n 12",
+	'run',
+	'eval -- JEdMT0JBTFNbJ0lERV9FVkFMX0NBQ0hFJ11bJzkwZmI4NjBkLTgwOGUtNDRmOC1hMzk2LTM0N2RiZDkwNjU3OCddPWVycm9yX3JlcG9ydGluZygpOw==',
+	'run',
+	'eval -- JEdMT0JBTFNbJ0lERV9FVkFMX0NBQ0hFJ11bJzkwZmI4NjBkLTgwOGUtNDRmOC1hMzk2LTM0N2RiZDkwNjU3OCddPWVycm9yX3JlcG9ydGluZygpOw==',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands, [ 'error_reporting' => E_ALL & ~E_STRICT ] );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01586.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug01586.inc -n 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> breakpoint_set -i 2 -t line -f file://bug01586.inc -n 12
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0002"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01586.inc" lineno="7"></xdebug:message></response>
+
+-> eval -i 4 -- JEdMT0JBTFNbJ0lERV9FVkFMX0NBQ0hFJ11bJzkwZmI4NjBkLTgwOGUtNDRmOC1hMzk2LTM0N2RiZDkwNjU3OCddPWVycm9yX3JlcG9ydGluZygpOw==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="4"><property type="int"><![CDATA[30719]]></property></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug01586.inc" lineno="12"></xdebug:message></response>
+
+-> eval -i 6 -- JEdMT0JBTFNbJ0lERV9FVkFMX0NBQ0hFJ11bJzkwZmI4NjBkLTgwOGUtNDRmOC1hMzk2LTM0N2RiZDkwNjU3OCddPWVycm9yX3JlcG9ydGluZygpOw==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="6"><property type="int"><![CDATA[32767]]></property></response>
+
+-> detach -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="7" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01586-php84.phpt b/xdebug-3.4.5/tests/debugger/bug01586-php84.phpt
new file mode 100644
index 0000000..ebd76a8
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01586-php84.phpt
@@ -0,0 +1,55 @@
+--TEST--
+Test for bug #1586: error_reporting evaluation (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01586.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 7",
+	"breakpoint_set -t line -f file://{$filename} -n 12",
+	'run',
+	'eval -- JEdMT0JBTFNbJ0lERV9FVkFMX0NBQ0hFJ11bJzkwZmI4NjBkLTgwOGUtNDRmOC1hMzk2LTM0N2RiZDkwNjU3OCddPWVycm9yX3JlcG9ydGluZygpOw==',
+	'run',
+	'eval -- JEdMT0JBTFNbJ0lERV9FVkFMX0NBQ0hFJ11bJzkwZmI4NjBkLTgwOGUtNDRmOC1hMzk2LTM0N2RiZDkwNjU3OCddPWVycm9yX3JlcG9ydGluZygpOw==',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands, [ 'error_reporting' => E_ALL & ~E_NOTICE ] );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01586.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug01586.inc -n 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> breakpoint_set -i 2 -t line -f file://bug01586.inc -n 12
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0002"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01586.inc" lineno="7"></xdebug:message></response>
+
+-> eval -i 4 -- JEdMT0JBTFNbJ0lERV9FVkFMX0NBQ0hFJ11bJzkwZmI4NjBkLTgwOGUtNDRmOC1hMzk2LTM0N2RiZDkwNjU3OCddPWVycm9yX3JlcG9ydGluZygpOw==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="4"><property type="int"><![CDATA[30711]]></property></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug01586.inc" lineno="12"></xdebug:message></response>
+
+-> eval -i 6 -- JEdMT0JBTFNbJ0lERV9FVkFMX0NBQ0hFJ11bJzkwZmI4NjBkLTgwOGUtNDRmOC1hMzk2LTM0N2RiZDkwNjU3OCddPWVycm9yX3JlcG9ydGluZygpOw==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="6"><property type="int"><![CDATA[30719]]></property></response>
+
+-> detach -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="7" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01586.inc b/xdebug-3.4.5/tests/debugger/bug01586.inc
new file mode 100644
index 0000000..109232f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01586.inc
@@ -0,0 +1,12 @@
+<?php
+
+function sum($a, $b) {
+    return $a + $b;
+}
+
+echo error_reporting() . PHP_EOL;
+error_reporting(E_ALL);
+echo error_reporting() . PHP_EOL;
+
+$a = 1 + 179;
+echo $a . PHP_EOL;
diff --git a/xdebug-3.4.5/tests/debugger/bug01647.inc b/xdebug-3.4.5/tests/debugger/bug01647.inc
new file mode 100644
index 0000000..955e5af
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01647.inc
@@ -0,0 +1,4 @@
+<?php
+$x=1;
+$x+=1;
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01647.phpt b/xdebug-3.4.5/tests/debugger/bug01647.phpt
new file mode 100644
index 0000000..783211f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01647.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Test for bug #1647: Memory corruption when a conditional breakpoint is used
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01647.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 2 -- JGZkc2hmZGs=',
+	'run',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01647.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01647.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 2 -- JGZkc2hmZGs=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01656.phpt b/xdebug-3.4.5/tests/debugger/bug01656.phpt
new file mode 100644
index 0000000..f7af2f1
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01656.phpt
@@ -0,0 +1,19 @@
+--TEST--
+Test for bug #1656: discover_client_host alters header if multiple values are present
+--ENV--
+I_LIKE_COOKIES=127.0.0.1, 127.0.0.2
+--INI--
+xdebug.mode=debug
+xdebug.start_with_request=yes
+xdebug.client_discovery_header=I_LIKE_COOKIES
+xdebug.discover_client_host=1
+xdebug.client_port=9999
+xdebug.log=
+xdebug.log_level=10
+--FILE--
+<?php
+var_dump( $_SERVER['I_LIKE_COOKIES'] );
+?>
+--EXPECTF--
+Xdebug: [Step Debug] %sTried: 127.0.0.1:9999 (from I_LIKE_COOKIES HTTP header), localhost:9999 (fallback through xdebug.client_host/xdebug.client_port).
+string(20) "127.0.0.1, 127.0.0.2"
diff --git a/xdebug-3.4.5/tests/debugger/bug01660.phpt b/xdebug-3.4.5/tests/debugger/bug01660.phpt
new file mode 100644
index 0000000..d8cd381
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01660.phpt
@@ -0,0 +1,54 @@
+--TEST--
+Test for bug #1660: Return breakpoints for methods don't break immediately
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$dir = dirname(__FILE__);
+putenv("XDEBUG_TEST_DIR=$dir");
+
+$filename = realpath( dirname(__FILE__) . '/bug01388-14-index.inc' );
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	'breakpoint_set -t return -m SimpleClass::displayVar',
+	'run',
+	'context_get',
+	'property_get -n ::hello'
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01388-14-index.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 3 -t return -m SimpleClass::displayVar
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001" resolved="resolved"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01388-14-simpleclass.inc" lineno="8"></xdebug:message></response>
+
+-> context_get -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="5" context="0"><property name="::" fullname="::" type="object" classname="SimpleClass" children="1" numchildren="1"><property name="::hello" fullname="::hello" type="string" size="5" facet="static public" encoding="base64"><![CDATA[SEVMTE8=]]></property></property></response>
+
+-> property_get -i 6 -n ::hello
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="::hello" fullname="::hello" type="string" size="5" encoding="base64"><![CDATA[SEVMTE8=]]></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01662.inc b/xdebug-3.4.5/tests/debugger/bug01662.inc
new file mode 100644
index 0000000..47a09db
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01662.inc
@@ -0,0 +1,17 @@
+<?php
+class foo {
+	private $bar;
+
+	function __construct()
+	{
+		$this->bar = 42;
+	}
+
+	function __debugInfo()
+	{
+		return [ 'bar' => 50 ];
+	}
+}
+
+$f = new foo();
+var_dump( $f );
diff --git a/xdebug-3.4.5/tests/debugger/bug01662.phpt b/xdebug-3.4.5/tests/debugger/bug01662.phpt
new file mode 100644
index 0000000..d58a0ad
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01662.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #1662: __debugInfo() should not be used for user-defined classes
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01662.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 17",
+	'run',
+	'property_get -n $f',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01662.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug01662.inc -n 17
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01662.inc" lineno="17"></xdebug:message></response>
+
+-> property_get -i 3 -n $f
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$f" fullname="$f" type="object" classname="foo" children="1" numchildren="1" page="0" pagesize="32"><property name="bar" fullname="$f-&gt;bar" facet="private" type="int"><![CDATA[42]]></property></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01682-001.phpt b/xdebug-3.4.5/tests/debugger/bug01682-001.phpt
new file mode 100644
index 0000000..baf4cb1
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01682-001.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #1682: Invalid NULL byte in debugger XML with anonymous classes [1]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01682.inc' );
+
+$commands = array(
+	'feature_set -n extended_properties -v 1',
+	"breakpoint_set -t line -f file://{$filename} -n 5",
+	'run',
+	'context_get',
+	'property_get -n $a',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01682.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n extended_properties -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="extended_properties" success="1"></response>
+
+-> breakpoint_set -i 2 -t line -f file://bug01682.inc -n 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01682.inc" lineno="5"></xdebug:message></response>
+
+-> context_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property type="object" children="0" numchildren="0" page="0" pagesize="32"><name encoding="base64"><![CDATA[JGE=]]></name><fullname encoding="base64"><![CDATA[JGE=]]></fullname><classname encoding="base64"><![CDATA[Y2xhc3NAYW5vbnltb3Vz%s]]></classname></property></response>
+
+-> property_get -i 5 -n $a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property type="object" children="0" numchildren="0" page="0" pagesize="32"><name encoding="base64"><![CDATA[JGE=]]></name><fullname encoding="base64"><![CDATA[JGE=]]></fullname><classname encoding="base64"><![CDATA[Y2xhc3NAYW5vbnltb3Vz%s]]></classname></property></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01682-002.phpt b/xdebug-3.4.5/tests/debugger/bug01682-002.phpt
new file mode 100644
index 0000000..cd8c1c0
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01682-002.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #1682: Invalid NULL byte in debugger XML with anonymous classes [2]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug01682.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 5",
+	'run',
+	'context_get',
+	'property_get -n $a',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01682.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug01682.inc -n 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01682.inc" lineno="5"></xdebug:message></response>
+
+-> context_get -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="3" context="0"><property name="$a" fullname="$a" type="object" classname="class@anonymous&#0;%s" children="0" numchildren="0" page="0" pagesize="32"></property></response>
+
+-> property_get -i 4 -n $a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$a" fullname="$a" type="object" classname="class@anonymous&#0;%s" children="0" numchildren="0" page="0" pagesize="32"></property></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01682.inc b/xdebug-3.4.5/tests/debugger/bug01682.inc
new file mode 100644
index 0000000..0cece51
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01682.inc
@@ -0,0 +1,6 @@
+<?php
+
+$a = new class { };
+
+var_dump($a);
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01708.inc b/xdebug-3.4.5/tests/debugger/bug01708.inc
new file mode 100644
index 0000000..edc151e
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01708.inc
@@ -0,0 +1,9 @@
+<?php
+
+class Bar {
+    public $baz = 0;
+}
+
+$a = new Bar();
+echo "!"; // put breakpoint here
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01708.phpt b/xdebug-3.4.5/tests/debugger/bug01708.phpt
new file mode 100644
index 0000000..44b9d73
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01708.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #1708: Crash on evaluating object with properties
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01708.inc';
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 8",
+	'run',
+	'eval -- JGE=',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01708.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug01708.inc -n 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug01708.inc" lineno="8"></xdebug:message></response>
+
+-> eval -i 3 -- JGE=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="3"><property type="object" classname="Bar" children="1" numchildren="1" page="0" pagesize="32"><property name="baz" facet="public" type="int"><![CDATA[0]]></property></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01734.inc b/xdebug-3.4.5/tests/debugger/bug01734.inc
new file mode 100644
index 0000000..5b27a6f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01734.inc
@@ -0,0 +1,6 @@
+<?php
+function fibonacci( $n )
+{
+    return round( pow( ( sqrt( 5 ) + 1 ) / 2, $n ) / sqrt( 5 ) );
+}
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01734.phpt b/xdebug-3.4.5/tests/debugger/bug01734.phpt
new file mode 100644
index 0000000..2908b7e
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01734.phpt
@@ -0,0 +1,36 @@
+--TEST--
+Test for bug #1734: Segfault with DBGp "source" with a out-of-range start line number
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$filename = dirname(__FILE__) . '/bug00886.inc';
+
+$commands = array(
+	'step_into',
+	'source -b 10',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug00886.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug00886.inc" lineno="2"></xdebug:message></response>
+
+-> source -i 2 -b 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="source" transaction_id="2" encoding="base64"><![CDATA[]]></response>
+
+-> detach -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="3" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01735.inc b/xdebug-3.4.5/tests/debugger/bug01735.inc
new file mode 100644
index 0000000..ec69af6
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01735.inc
@@ -0,0 +1,14 @@
+<?php
+error_reporting( -1 );
+function error_handler( int $errno, string $errstr, ...$rest)
+{
+	echo "IN ERROR HANDLER\n";
+	throw new ErrorException( $errstr );
+}
+
+set_error_handler( 'error_handler' );
+
+$variable1 = 42;
+$variable2 = 42;
+$variable3 = 42;
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01735.phpt b/xdebug-3.4.5/tests/debugger/bug01735.phpt
new file mode 100644
index 0000000..1f2b767
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01735.phpt
@@ -0,0 +1,71 @@
+--TEST--
+Test for bug #1735: DBGp eval warning promoted to Exception causes out-of-sync responses
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$filename = dirname(__FILE__) . '/bug01735.inc';
+
+$commands = array(
+	'feature_set -n resolved_breakpoints -v 1',
+	'breakpoint_set -t exception -x *',
+	'step_into',
+	'breakpoint_set -t line -n 11',
+	'run',
+	'eval -- JHJlc3VsdEpzb24=',
+	'context_names',
+	'step_over',
+	'step_over',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01735.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 2 -t exception -x *
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001" resolved="resolved"></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01735.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 4 -t line -n 11
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" id="{{PID}}0002" resolved="resolved"></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug01735.inc" lineno="11"></xdebug:message></response>
+
+-> eval -i 6 -- JHJlc3VsdEpzb24=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="6" status="break" reason="ok"><error code="206"><message><![CDATA[error evaluating code:%s]]></message></error></response>
+
+-> context_names -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_names" transaction_id="7"><context name="Locals" id="0"></context><context name="Superglobals" id="1"></context><context name="User defined constants" id="2"></context></response>
+
+-> step_over -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="8" status="break" reason="ok"><xdebug:message filename="file://bug01735.inc" lineno="12"></xdebug:message></response>
+
+-> step_over -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="9" status="break" reason="ok"><xdebug:message filename="file://bug01735.inc" lineno="13"></xdebug:message></response>
+
+-> detach -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="10" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01753-PageIndex.inc b/xdebug-3.4.5/tests/debugger/bug01753-PageIndex.inc
new file mode 100644
index 0000000..9f4c74e
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01753-PageIndex.inc
@@ -0,0 +1,12 @@
+<?php
+class PageIndex extends SkeletonPage
+{
+
+
+
+
+	public function getData()
+	{
+		$var = 1;
+	}
+}
diff --git a/xdebug-3.4.5/tests/debugger/bug01753-SkeletonPage.inc b/xdebug-3.4.5/tests/debugger/bug01753-SkeletonPage.inc
new file mode 100644
index 0000000..ef24f2a
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01753-SkeletonPage.inc
@@ -0,0 +1,12 @@
+<?php
+class SkeletonPage
+{
+
+	
+
+
+
+	protected function func()
+	{
+	}
+}
diff --git a/xdebug-3.4.5/tests/debugger/bug01753.inc b/xdebug-3.4.5/tests/debugger/bug01753.inc
new file mode 100644
index 0000000..b09f0ad
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01753.inc
@@ -0,0 +1,5 @@
+<?php
+require_once(__DIR__ . '/bug01753-SkeletonPage.inc');
+require_once(__DIR__ . '/bug01753-PageIndex.inc');
+$page = new PageIndex();
+$page->getData();
diff --git a/xdebug-3.4.5/tests/debugger/bug01753.phpt b/xdebug-3.4.5/tests/debugger/bug01753.phpt
new file mode 100644
index 0000000..9d97049
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01753.phpt
@@ -0,0 +1,62 @@
+--TEST--
+Test for bug #1753: Resolved breakpoints use information from wrong files
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--INI--
+xdebug.log_level=50
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$filename = dirname(__FILE__) . '/bug01753.inc';
+$breakFile = dirname(__FILE__) . '/bug01753-PageIndex.inc';
+
+$commands = array(
+	'step_into',
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n resolved_breakpoints -v 1',
+	"breakpoint_set -t line -n 10 -f {$breakFile}",
+	'run',
+	'stack_get',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01753.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01753.inc" lineno="2"></xdebug:message></response>
+
+-> feature_set -i 2 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 3 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="3" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 4 -t line -n 10 -f %sbug01753-PageIndex.inc
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" id="{{PID}}0001" resolved="unresolved"></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="breakpoint_resolved"><breakpoint type="line" resolved="resolved" filename="file://bug01753-PageIndex.inc" lineno="10" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug01753-PageIndex.inc" lineno="10"></xdebug:message></response>
+
+-> stack_get -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="6"><stack where="PageIndex-&gt;getData" level="0" type="file" filename="file://bug01753-PageIndex.inc" lineno="10"></stack><stack where="{main}" level="1" type="file" filename="file://bug01753.inc" lineno="5"></stack></response>
+
+-> detach -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="7" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01782.phpt b/xdebug-3.4.5/tests/debugger/bug01782.phpt
new file mode 100644
index 0000000..33e97aa
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01782.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Test for bug #1782: Make sure we use SameSite=Lax cookies (>= PHP 7.3)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 7.3');
+?>
+--ENV--
+XDEBUG_CONFIG=idekey=testing
+--INI--
+xdebug.mode=debug,develop
+default_charset=utf-8
+xdebug.filename_format=
+xdebug.client_port=9172
+xdebug.log=
+xdebug.log_level=10
+--FILE--
+<?php
+var_dump( xdebug_get_headers( ) );
+?>
+--EXPECTF--
+Xdebug: [Step Debug] %sTried: localhost:9172 (through xdebug.client_host/xdebug.client_port).
+%sbug01782.php:2:
+array(1) {
+  [0] =>
+  string(%d) "Set-Cookie: XDEBUG_SESSION=testing; path=/; SameSite=Lax"
+}
diff --git a/xdebug-3.4.5/tests/debugger/bug01901.phpt b/xdebug-3.4.5/tests/debugger/bug01901.phpt
new file mode 100644
index 0000000..9a510fb
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01901.phpt
@@ -0,0 +1,16 @@
+--TEST--
+Test for bug #1901: Stack traces are shown (with a broken time) when Xdebug's mode includes 'debug' but not 'develop' or 'trace'
+--INI--
+xdebug.mode=debug
+xdebug.start_with_request=no
+--FILE--
+<?php
+function f() {
+	usleep(50000);
+	trigger_error("test");
+}
+
+f();
+?>
+--EXPECTF--
+Notice: test in %sbug01901.php on line 4
diff --git a/xdebug-3.4.5/tests/debugger/bug01915.phpt b/xdebug-3.4.5/tests/debugger/bug01915.phpt
new file mode 100644
index 0000000..f8b63b5
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01915.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Test for bug #1915: Debugger should only start with XDEBUG_SESSION and not XDEBUG_PROFILE
+--ENV--
+XDEBUG_PROFILE=1
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug,profile', 'xdebug.start_with_request' => 'trigger'],
+	['timeout' => 1]
+);
+?>
+--EXPECT--
+Hi!
diff --git a/xdebug-3.4.5/tests/debugger/bug01931-001.inc b/xdebug-3.4.5/tests/debugger/bug01931-001.inc
new file mode 100644
index 0000000..3ac6fea
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01931-001.inc
@@ -0,0 +1,9 @@
+<?php
+xdebug_break();
+$local = 1;
+
+$local_two = 'two';
+
+xdebug_break();
+
+echo $local_two, "\n";
diff --git a/xdebug-3.4.5/tests/debugger/bug01931-001.phpt b/xdebug-3.4.5/tests/debugger/bug01931-001.phpt
new file mode 100644
index 0000000..1926ab4
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01931-001.phpt
@@ -0,0 +1,56 @@
+--TEST--
+Test for bug #1931: No local variables with trigger and xdebug_break() [1]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$filename = dirname(__FILE__) . '/bug01931-001.inc';
+
+$commands = array(
+	'run',
+	'stack_get',
+	'context_get -d 0',
+	'run',
+	'stack_get',
+	'context_get -d 0',
+);
+
+$settings = [
+	'xdebug.mode' => 'debug',
+	'xdebug.start_with_request' => 'trigger',
+];
+
+dbgpRunFile( $filename, $commands, $settings );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01931-001.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> run -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01931-001.inc" lineno="3"></xdebug:message></response>
+
+-> stack_get -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="2"><stack where="{main}" level="0" type="file" filename="file://bug01931-001.inc" lineno="3"></stack></response>
+
+-> context_get -i 3 -d 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="3" context="0"><property name="$local" fullname="$local" type="uninitialized"></property><property name="$local_two" fullname="$local_two" type="uninitialized"></property></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01931-001.inc" lineno="9"></xdebug:message></response>
+
+-> stack_get -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="5"><stack where="{main}" level="0" type="file" filename="file://bug01931-001.inc" lineno="9"></stack></response>
+
+-> context_get -i 6 -d 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="6" context="0"><property name="$local" fullname="$local" type="int"><![CDATA[1]]></property><property name="$local_two" fullname="$local_two" type="string" size="3" encoding="base64"><![CDATA[dHdv]]></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01931-002.inc b/xdebug-3.4.5/tests/debugger/bug01931-002.inc
new file mode 100644
index 0000000..60b48c8
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01931-002.inc
@@ -0,0 +1,13 @@
+<?php
+function test()
+{
+	$local = 1;
+
+	$local_two = 'two';
+
+    $local_three = 3;
+}
+
+$another_local = 423;
+xdebug_break();
+test();
diff --git a/xdebug-3.4.5/tests/debugger/bug01931-002.phpt b/xdebug-3.4.5/tests/debugger/bug01931-002.phpt
new file mode 100644
index 0000000..ae2dc34
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01931-002.phpt
@@ -0,0 +1,76 @@
+--TEST--
+Test for bug #1931: No local variables with trigger and xdebug_break() [2]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$filename = dirname(__FILE__) . '/bug01931-002.inc';
+
+$commands = array(
+	'run',
+	'stack_get',
+	'context_get -d 0',
+	'step_into',
+	'stack_get',
+	'context_get -d 0',
+	'context_get -d 1',
+	'step_into',
+	'step_into',
+	'context_get -d 0',
+);
+
+$settings = [
+	'xdebug.mode' => 'debug',
+	'xdebug.start_with_request' => 'trigger',
+];
+
+dbgpRunFile( $filename, $commands, $settings );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01931-002.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> run -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01931-002.inc" lineno="13"></xdebug:message></response>
+
+-> stack_get -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="2"><stack where="{main}" level="0" type="file" filename="file://bug01931-002.inc" lineno="13"></stack></response>
+
+-> context_get -i 3 -d 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="3" context="0"><property name="$another_local" fullname="$another_local" type="int"><![CDATA[423]]></property></response>
+
+-> step_into -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01931-002.inc" lineno="4"></xdebug:message></response>
+
+-> stack_get -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="5"><stack where="test" level="0" type="file" filename="file://bug01931-002.inc" lineno="4"></stack><stack where="{main}" level="1" type="file" filename="file://bug01931-002.inc" lineno="13"></stack></response>
+
+-> context_get -i 6 -d 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="6" context="0"><property name="$local" fullname="$local" type="uninitialized"></property><property name="$local_three" fullname="$local_three" type="uninitialized"></property><property name="$local_two" fullname="$local_two" type="uninitialized"></property></response>
+
+-> context_get -i 7 -d 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="7" context="0"><property name="$another_local" fullname="$another_local" type="int"><![CDATA[423]]></property></response>
+
+-> step_into -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="8" status="break" reason="ok"><xdebug:message filename="file://bug01931-002.inc" lineno="6"></xdebug:message></response>
+
+-> step_into -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="9" status="break" reason="ok"><xdebug:message filename="file://bug01931-002.inc" lineno="8"></xdebug:message></response>
+
+-> context_get -i 10 -d 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="10" context="0"><property name="$local" fullname="$local" type="int"><![CDATA[1]]></property><property name="$local_three" fullname="$local_three" type="uninitialized"></property><property name="$local_two" fullname="$local_two" type="string" size="3" encoding="base64"><![CDATA[dHdv]]></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01931-003.inc b/xdebug-3.4.5/tests/debugger/bug01931-003.inc
new file mode 100644
index 0000000..34735d0
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01931-003.inc
@@ -0,0 +1,14 @@
+<?php
+function test($import)
+{
+	$local = 1;
+
+	$local_two = 'test: ' . $import;
+
+	xdebug_break();
+    $local_three = 3;
+}
+
+$main_local = 42;
+$array = [ 'one', 'two', 'three' ];
+array_map( 'test', $array );
diff --git a/xdebug-3.4.5/tests/debugger/bug01931-003.phpt b/xdebug-3.4.5/tests/debugger/bug01931-003.phpt
new file mode 100644
index 0000000..ca8ac47
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01931-003.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Test for bug #1931: No local variables with trigger and xdebug_break() [3]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$filename = dirname(__FILE__) . '/bug01931-003.inc';
+
+$commands = array(
+	'run',
+	'stack_get',
+	'context_get -d 0',
+	'context_get -d 1',
+	'context_get -d 2',
+);
+
+$settings = [
+	'xdebug.mode' => 'debug',
+	'xdebug.start_with_request' => 'trigger',
+];
+
+dbgpRunFile( $filename, $commands, $settings );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01931-003.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> run -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01931-003.inc" lineno="9"></xdebug:message></response>
+
+-> stack_get -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="2"><stack where="test" level="0" type="file" filename="file://bug01931-003.inc" lineno="9"></stack><stack where="array_map" level="1" type="file" filename="file://bug01931-003.inc" lineno="14"></stack><stack where="{main}" level="2" type="file" filename="file://bug01931-003.inc" lineno="14"></stack></response>
+
+-> context_get -i 3 -d 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="3" context="0"><property name="$import" fullname="$import" type="string" size="3" encoding="base64"><![CDATA[b25l]]></property><property name="$local" fullname="$local" type="int"><![CDATA[1]]></property><property name="$local_three" fullname="$local_three" type="uninitialized"></property><property name="$local_two" fullname="$local_two" type="string" size="9" encoding="base64"><![CDATA[dGVzdDogb25l]]></property></response>
+
+-> context_get -i 4 -d 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"></response>
+
+-> context_get -i 5 -d 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="5" context="0"><property name="$array" fullname="$array" type="array" children="1" numchildren="3" page="0" pagesize="32"><property name="0" fullname="$array[0]" type="string" size="3" encoding="base64"><![CDATA[b25l]]></property><property name="1" fullname="$array[1]" type="string" size="3" encoding="base64"><![CDATA[dHdv]]></property><property name="2" fullname="$array[2]" type="string" size="5" encoding="base64"><![CDATA[dGhyZWU=]]></property></property><property name="$main_local" fullname="$main_local" type="int"><![CDATA[42]]></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01949.inc b/xdebug-3.4.5/tests/debugger/bug01949.inc
new file mode 100644
index 0000000..989d8ad
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01949.inc
@@ -0,0 +1,7 @@
+<?php
+$stack = new SplStack();
+$stack->push("HI");
+$stack->push("from the stack");
+
+var_dump($stack);
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01949.phpt b/xdebug-3.4.5/tests/debugger/bug01949.phpt
new file mode 100644
index 0000000..237cfa7
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01949.phpt
@@ -0,0 +1,55 @@
+--TEST--
+Test for bug #1949: Xdebug won't show SplDoublyLinkedLists contents
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01949.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 6',
+	'run',
+	'property_get -n $stack',
+	'property_get -n $stack->*SplDoublyLinkedList*flags',
+	'property_get -n $stack->*SplDoublyLinkedList*dllist',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01949.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01949.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01949.inc" lineno="6"></xdebug:message></response>
+
+-> property_get -i 4 -n $stack
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$stack" fullname="$stack" type="object" classname="SplStack" children="1" numchildren="2" page="0" pagesize="32"><property name="*SplDoublyLinkedList*flags" fullname="$stack-&gt;*SplDoublyLinkedList*flags" facet="private" type="int"><![CDATA[6]]></property><property name="*SplDoublyLinkedList*dllist" fullname="$stack-&gt;*SplDoublyLinkedList*dllist" facet="private" type="array" children="1" numchildren="2"></property></property></response>
+
+-> property_get -i 5 -n $stack->*SplDoublyLinkedList*flags
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$stack-&gt;*SplDoublyLinkedList*flags" fullname="$stack-&gt;*SplDoublyLinkedList*flags" type="int"><![CDATA[6]]></property></response>
+
+-> property_get -i 6 -n $stack->*SplDoublyLinkedList*dllist
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$stack-&gt;*SplDoublyLinkedList*dllist" fullname="$stack-&gt;*SplDoublyLinkedList*dllist" type="array" children="1" numchildren="2" page="0" pagesize="32"><property name="0" fullname="$stack-&gt;*SplDoublyLinkedList*dllist[0]" type="string" size="2" encoding="base64"><![CDATA[SEk=]]></property><property name="1" fullname="$stack-&gt;*SplDoublyLinkedList*dllist[1]" type="string" size="14" encoding="base64"><![CDATA[ZnJvbSB0aGUgc3RhY2s=]]></property></property></response>
+
+-> detach -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="7" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01978.phpt b/xdebug-3.4.5/tests/debugger/bug01978.phpt
new file mode 100644
index 0000000..e6e26ec
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01978.phpt
@@ -0,0 +1,89 @@
+--TEST--
+Test for Xdebug's remote log (with xdebug.client_discovery_header value)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; !win');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01949.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 6',
+	'run',
+	'property_get -n $stack',
+	'property_get -n $stack->*SplDoublyLinkedList*flags',
+	'property_get -n $stack->*SplDoublyLinkedList*dllist',
+	'detach',
+);
+
+$xdebugLogFileName = sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'remote-log-1978.txt';
+@unlink( $xdebugLogFileName );
+
+dbgpRunFile( $filename, $commands, [ 'xdebug.log' => $xdebugLogFileName, 'xdebug.log_level' => 7, 'xdebug.control_socket' => 'off' ] );
+
+echo file_get_contents( $xdebugLogFileName );
+@unlink( $xdebugLogFileName );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01949.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01949.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01949.inc" lineno="6"></xdebug:message></response>
+
+-> property_get -i 4 -n $stack
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$stack" fullname="$stack" type="object" classname="SplStack" children="1" numchildren="2" page="0" pagesize="32"><property name="*SplDoublyLinkedList*flags" fullname="$stack-&gt;*SplDoublyLinkedList*flags" facet="private" type="int"><![CDATA[6]]></property><property name="*SplDoublyLinkedList*dllist" fullname="$stack-&gt;*SplDoublyLinkedList*dllist" facet="private" type="array" children="1" numchildren="2"></property></property></response>
+
+-> property_get -i 5 -n $stack->*SplDoublyLinkedList*flags
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$stack-&gt;*SplDoublyLinkedList*flags" fullname="$stack-&gt;*SplDoublyLinkedList*flags" type="int"><![CDATA[6]]></property></response>
+
+-> property_get -i 6 -n $stack->*SplDoublyLinkedList*dllist
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$stack-&gt;*SplDoublyLinkedList*dllist" fullname="$stack-&gt;*SplDoublyLinkedList*dllist" type="array" children="1" numchildren="2" page="0" pagesize="32"><property name="0" fullname="$stack-&gt;*SplDoublyLinkedList*dllist[0]" type="string" size="2" encoding="base64"><![CDATA[SEk=]]></property><property name="1" fullname="$stack-&gt;*SplDoublyLinkedList*dllist[1]" type="string" size="14" encoding="base64"><![CDATA[ZnJvbSB0aGUgc3RhY2s=]]></property></property></response>
+
+-> detach -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="7" status="stopping" reason="ok"></response>
+
+[%d] Log opened at %s
+[%d] [Step Debug] INFO: Connecting to configured address/port: %s
+[%d] [Step Debug] INFO: Connected to debugging client: %s
+[%d] [Step Debug] -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" %s></init>
+
+[%d] [Step Debug] <- step_into -i 1
+[%d] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://%sbug01949.inc" lineno="2"></xdebug:message></response>
+
+[%d] [Step Debug] <- breakpoint_set -i 2 -t line -n 6
+[%d] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="%s"></response>
+
+[%d] [Step Debug] <- run -i 3
+[%d] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://%sbug01949.inc" lineno="6"></xdebug:message></response>
+
+[%d] [Step Debug] <- property_get -i 4 -n $stack
+[%d] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$stack" fullname="$stack" type="object" classname="SplStack" children="1" numchildren="2" page="0" pagesize="32"><property name="*SplDoublyLinkedList*flags" fullname="$stack-&gt;*SplDoublyLinkedList*flags" facet="private" type="int"><![CDATA[6]]></property><property name="*SplDoublyLinkedList*dllist" fullname="$stack-&gt;*SplDoublyLinkedList*dllist" facet="private" type="array" children="1" numchildren="2"></property></property></response>
+
+[%d] [Step Debug] <- property_get -i 5 -n $stack->*SplDoublyLinkedList*flags
+[%d] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$stack-&gt;*SplDoublyLinkedList*flags" fullname="$stack-&gt;*SplDoublyLinkedList*flags" type="int"><![CDATA[6]]></property></response>
+
+[%d] [Step Debug] <- property_get -i 6 -n $stack->*SplDoublyLinkedList*dllist
+[%d] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$stack-&gt;*SplDoublyLinkedList*dllist" fullname="$stack-&gt;*SplDoublyLinkedList*dllist" type="array" children="1" numchildren="2" page="0" pagesize="32"><property name="0" fullname="$stack-&gt;*SplDoublyLinkedList*dllist[0]" type="string" size="2" encoding="base64"><![CDATA[SEk=]]></property><property name="1" fullname="$stack-&gt;*SplDoublyLinkedList*dllist[1]" type="string" size="14" encoding="base64"><![CDATA[ZnJvbSB0aGUgc3RhY2s=]]></property></property></response>
+
+[%d] [Step Debug] <- detach -i 7
+[%d] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="7" status="stopping" reason="ok"></response>
+
+[%d] Log closed at %s
diff --git a/xdebug-3.4.5/tests/debugger/bug01989.inc b/xdebug-3.4.5/tests/debugger/bug01989.inc
new file mode 100644
index 0000000..177b7c6
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01989.inc
@@ -0,0 +1,19 @@
+<?php
+
+class A
+{
+    public function __construct()
+    {
+		xdebug_break();
+    }
+}
+
+class B extends A
+{
+    public function __construct()
+    {
+        parent::__construct();
+    }
+}
+
+new B();
diff --git a/xdebug-3.4.5/tests/debugger/bug01989.phpt b/xdebug-3.4.5/tests/debugger/bug01989.phpt
new file mode 100644
index 0000000..0607edb
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01989.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Test for bug #1989: Wrong class name when using parent::
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01989.inc';
+
+$commands = array(
+	'run',
+	'stack_get',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01989.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> run -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01989.inc" lineno="8"></xdebug:message></response>
+
+-> stack_get -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="2"><stack where="A-&gt;__construct" level="0" type="file" filename="file://bug01989.inc" lineno="8"></stack><stack where="B-&gt;__construct" level="1" type="file" filename="file://bug01989.inc" lineno="15"></stack><stack where="{main}" level="2" type="file" filename="file://bug01989.inc" lineno="19"></stack></response>
+
+-> detach -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="3" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01993.inc b/xdebug-3.4.5/tests/debugger/bug01993.inc
new file mode 100644
index 0000000..4da3c2b
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01993.inc
@@ -0,0 +1,5 @@
+<?php
+echo "1";
+echo "2";
+echo "3";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01993.phpt b/xdebug-3.4.5/tests/debugger/bug01993.phpt
new file mode 100644
index 0000000..aa2c6b1
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01993.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #1993: eval-ing broken code causes stepping to break
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01993.inc';
+
+$commands = array(
+	'step_into',
+	'eval -- Ghpcy4k',
+	'step_into',
+	'step_into',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01993.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01993.inc" lineno="2"></xdebug:message></response>
+
+-> eval -i 2 -- Ghpcy4k
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="2" status="break" reason="ok"><error code="206"><message><![CDATA[error evaluating code: %s]]></message></error></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01993.inc" lineno="3"></xdebug:message></response>
+
+-> step_into -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug01993.inc" lineno="4"></xdebug:message></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01996-001-php81.phpt b/xdebug-3.4.5/tests/debugger/bug01996-001-php81.phpt
new file mode 100644
index 0000000..286bc51
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01996-001-php81.phpt
@@ -0,0 +1,60 @@
+--TEST--
+Test for bug #1996: Visualing closures (< PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.2; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01996-001.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 17',
+	'run',
+	'property_get -n $closure_1',
+	'property_get -n $closure_2',
+	'property_get -n $closure_3',
+	'property_get -n $closure_4',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01996-001.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01996-001.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 17
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01996-001.inc" lineno="17"></xdebug:message></response>
+
+-> property_get -i 4 -n $closure_1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$closure_1" fullname="$closure_1" type="object" facet="closure" classname="Closure" children="1" numchildren="2" page="0" pagesize="32"><property facet="virtual readonly" name="{closure}" type="array" children="1" page="0" pagesize="2" numchildren="1"><property facet="readonly" name="function" type="string"><![CDATA[substr]]></property></property><property name="parameter" fullname="$closure_1-&gt;parameter" facet="public" type="array" children="1" numchildren="3"></property></property></response>
+
+-> property_get -i 5 -n $closure_2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$closure_2" fullname="$closure_2" type="object" facet="closure" classname="Closure" children="1" numchildren="2" page="0" pagesize="32"><property facet="virtual readonly" name="{closure}" type="array" children="1" page="0" pagesize="2" numchildren="1"><property facet="readonly" name="function" type="string"><![CDATA[user_defined]]></property></property><property name="parameter" fullname="$closure_2-&gt;parameter" facet="public" type="array" children="1" numchildren="2"></property></property></response>
+
+-> property_get -i 6 -n $closure_3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$closure_3" fullname="$closure_3" type="object" facet="closure" classname="Closure" children="1" numchildren="2" page="0" pagesize="32"><property facet="virtual readonly" name="{closure}" type="array" children="1" page="0" pagesize="2" numchildren="2"><property facet="readonly" name="scope" type="string"><![CDATA[DateTimeImmutable]]></property><property facet="readonly" name="function" type="string"><![CDATA[createFromFormat]]></property></property><property name="parameter" fullname="$closure_3-&gt;parameter" facet="public" type="array" children="1" numchildren="3"></property></property></response>
+
+-> property_get -i 7 -n $closure_4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="$closure_4" fullname="$closure_4" type="object" facet="closure" classname="Closure" children="1" numchildren="3" page="0" pagesize="32"><property facet="virtual readonly" name="{closure}" type="array" children="1" page="0" pagesize="2" numchildren="2"><property facet="readonly" name="scope" type="string"><![CDATA[$this]]></property><property facet="readonly" name="function" type="string"><![CDATA[format]]></property></property><property name="this" fullname="$closure_4-&gt;this" facet="public" type="object" classname="DateTimeImmutable" children="1" numchildren="3"></property><property name="parameter" fullname="$closure_4-&gt;parameter" facet="public" type="array" children="1" numchildren="1"></property></property></response>
+
+-> detach -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="8" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01996-001-php82.phpt b/xdebug-3.4.5/tests/debugger/bug01996-001-php82.phpt
new file mode 100644
index 0000000..1ae5725
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01996-001-php82.phpt
@@ -0,0 +1,60 @@
+--TEST--
+Test for bug #1996: Visualing closures (>= PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01996-001.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 17',
+	'run',
+	'property_get -n $closure_1',
+	'property_get -n $closure_2',
+	'property_get -n $closure_3',
+	'property_get -n $closure_4',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01996-001.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01996-001.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 17
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01996-001.inc" lineno="17"></xdebug:message></response>
+
+-> property_get -i 4 -n $closure_1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$closure_1" fullname="$closure_1" type="object" facet="closure" classname="Closure" children="1" numchildren="2" page="0" pagesize="32"><property name="function" fullname="$closure_1-&gt;function" facet="public" type="string" size="6" encoding="base64"><![CDATA[c3Vic3Ry]]></property><property name="parameter" fullname="$closure_1-&gt;parameter" facet="public" type="array" children="1" numchildren="3"></property></property></response>
+
+-> property_get -i 5 -n $closure_2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$closure_2" fullname="$closure_2" type="object" facet="closure" classname="Closure" children="1" numchildren="2" page="0" pagesize="32"><property name="function" fullname="$closure_2-&gt;function" facet="public" type="string" size="12" encoding="base64"><![CDATA[dXNlcl9kZWZpbmVk]]></property><property name="parameter" fullname="$closure_2-&gt;parameter" facet="public" type="array" children="1" numchildren="2"></property></property></response>
+
+-> property_get -i 6 -n $closure_3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$closure_3" fullname="$closure_3" type="object" facet="closure" classname="Closure" children="1" numchildren="2" page="0" pagesize="32"><property name="function" fullname="$closure_3-&gt;function" facet="public" type="string" size="35" encoding="base64"><![CDATA[RGF0ZVRpbWVJbW11dGFibGU6OmNyZWF0ZUZyb21Gb3JtYXQ=]]></property><property name="parameter" fullname="$closure_3-&gt;parameter" facet="public" type="array" children="1" numchildren="3"></property></property></response>
+
+-> property_get -i 7 -n $closure_4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="$closure_4" fullname="$closure_4" type="object" facet="closure" classname="Closure" children="1" numchildren="3" page="0" pagesize="32"><property name="function" fullname="$closure_4-&gt;function" facet="public" type="string" size="25" encoding="base64"><![CDATA[RGF0ZVRpbWVJbW11dGFibGU6OmZvcm1hdA==]]></property><property name="this" fullname="$closure_4-&gt;this" facet="public" type="object" classname="DateTimeImmutable" children="1" numchildren="3"></property><property name="parameter" fullname="$closure_4-&gt;parameter" facet="public" type="array" children="1" numchildren="1"></property></property></response>
+
+-> detach -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="8" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01996-001.inc b/xdebug-3.4.5/tests/debugger/bug01996-001.inc
new file mode 100644
index 0000000..cf08a52
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01996-001.inc
@@ -0,0 +1,18 @@
+<?php
+$closure_1 = Closure::fromCallable('substr');
+
+
+function user_defined($a, $b)
+{
+	return substr($a, $b);
+}
+$closure_2 = Closure::fromCallable('user_defined');
+
+
+$closure_3 = Closure::fromCallable(['DateTimeImmutable', 'createFromFormat']);
+
+
+$dateTime = new DateTimeImmutable("2021-07-22");
+$closure_4 = Closure::fromCallable([$dateTime, 'format']);
+echo "Done!";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01996-002-php81.phpt b/xdebug-3.4.5/tests/debugger/bug01996-002-php81.phpt
new file mode 100644
index 0000000..ac59fd7
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01996-002-php81.phpt
@@ -0,0 +1,60 @@
+--TEST--
+Test for bug #1996: Visualing closures with first class callable syntax (PHP 8.1)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1,< 8.2; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01996-002.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 17',
+	'run',
+	'property_get -n $closure_1',
+	'property_get -n $closure_2',
+	'property_get -n $closure_3',
+	'property_get -n $closure_4',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01996-002.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01996-002.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 17
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01996-002.inc" lineno="17"></xdebug:message></response>
+
+-> property_get -i 4 -n $closure_1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$closure_1" fullname="$closure_1" type="object" facet="closure" classname="Closure" children="1" numchildren="2" page="0" pagesize="32"><property facet="virtual readonly" name="{closure}" type="array" children="1" page="0" pagesize="2" numchildren="1"><property facet="readonly" name="function" type="string"><![CDATA[substr]]></property></property><property name="parameter" fullname="$closure_1-&gt;parameter" facet="public" type="array" children="1" numchildren="3"></property></property></response>
+
+-> property_get -i 5 -n $closure_2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$closure_2" fullname="$closure_2" type="object" facet="closure" classname="Closure" children="1" numchildren="2" page="0" pagesize="32"><property facet="virtual readonly" name="{closure}" type="array" children="1" page="0" pagesize="2" numchildren="1"><property facet="readonly" name="function" type="string"><![CDATA[user_defined]]></property></property><property name="parameter" fullname="$closure_2-&gt;parameter" facet="public" type="array" children="1" numchildren="2"></property></property></response>
+
+-> property_get -i 6 -n $closure_3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$closure_3" fullname="$closure_3" type="object" facet="closure" classname="Closure" children="1" numchildren="2" page="0" pagesize="32"><property facet="virtual readonly" name="{closure}" type="array" children="1" page="0" pagesize="2" numchildren="2"><property facet="readonly" name="scope" type="string"><![CDATA[DateTimeImmutable]]></property><property facet="readonly" name="function" type="string"><![CDATA[createFromFormat]]></property></property><property name="parameter" fullname="$closure_3-&gt;parameter" facet="public" type="array" children="1" numchildren="3"></property></property></response>
+
+-> property_get -i 7 -n $closure_4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="$closure_4" fullname="$closure_4" type="object" facet="closure" classname="Closure" children="1" numchildren="3" page="0" pagesize="32"><property facet="virtual readonly" name="{closure}" type="array" children="1" page="0" pagesize="2" numchildren="2"><property facet="readonly" name="scope" type="string"><![CDATA[$this]]></property><property facet="readonly" name="function" type="string"><![CDATA[format]]></property></property><property name="this" fullname="$closure_4-&gt;this" facet="public" type="object" classname="DateTimeImmutable" children="1" numchildren="3"></property><property name="parameter" fullname="$closure_4-&gt;parameter" facet="public" type="array" children="1" numchildren="1"></property></property></response>
+
+-> detach -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="8" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01996-002-php82.phpt b/xdebug-3.4.5/tests/debugger/bug01996-002-php82.phpt
new file mode 100644
index 0000000..32d692a
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01996-002-php82.phpt
@@ -0,0 +1,60 @@
+--TEST--
+Test for bug #1996: Visualing closures with first class callable syntax (>= PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01996-002.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 17',
+	'run',
+	'property_get -n $closure_1',
+	'property_get -n $closure_2',
+	'property_get -n $closure_3',
+	'property_get -n $closure_4',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01996-002.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01996-002.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 17
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01996-002.inc" lineno="17"></xdebug:message></response>
+
+-> property_get -i 4 -n $closure_1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$closure_1" fullname="$closure_1" type="object" facet="closure" classname="Closure" children="1" numchildren="2" page="0" pagesize="32"><property name="function" fullname="$closure_1-&gt;function" facet="public" type="string" size="6" encoding="base64"><![CDATA[c3Vic3Ry]]></property><property name="parameter" fullname="$closure_1-&gt;parameter" facet="public" type="array" children="1" numchildren="3"></property></property></response>
+
+-> property_get -i 5 -n $closure_2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$closure_2" fullname="$closure_2" type="object" facet="closure" classname="Closure" children="1" numchildren="2" page="0" pagesize="32"><property name="function" fullname="$closure_2-&gt;function" facet="public" type="string" size="12" encoding="base64"><![CDATA[dXNlcl9kZWZpbmVk]]></property><property name="parameter" fullname="$closure_2-&gt;parameter" facet="public" type="array" children="1" numchildren="2"></property></property></response>
+
+-> property_get -i 6 -n $closure_3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$closure_3" fullname="$closure_3" type="object" facet="closure" classname="Closure" children="1" numchildren="2" page="0" pagesize="32"><property name="function" fullname="$closure_3-&gt;function" facet="public" type="string" size="35" encoding="base64"><![CDATA[RGF0ZVRpbWVJbW11dGFibGU6OmNyZWF0ZUZyb21Gb3JtYXQ=]]></property><property name="parameter" fullname="$closure_3-&gt;parameter" facet="public" type="array" children="1" numchildren="3"></property></property></response>
+
+-> property_get -i 7 -n $closure_4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="$closure_4" fullname="$closure_4" type="object" facet="closure" classname="Closure" children="1" numchildren="3" page="0" pagesize="32"><property name="function" fullname="$closure_4-&gt;function" facet="public" type="string" size="25" encoding="base64"><![CDATA[RGF0ZVRpbWVJbW11dGFibGU6OmZvcm1hdA==]]></property><property name="this" fullname="$closure_4-&gt;this" facet="public" type="object" classname="DateTimeImmutable" children="1" numchildren="3"></property><property name="parameter" fullname="$closure_4-&gt;parameter" facet="public" type="array" children="1" numchildren="1"></property></property></response>
+
+-> detach -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="8" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01996-002.inc b/xdebug-3.4.5/tests/debugger/bug01996-002.inc
new file mode 100644
index 0000000..7bcfde6
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01996-002.inc
@@ -0,0 +1,18 @@
+<?php
+$closure_1 = substr(...);
+
+
+function user_defined($a, $b)
+{
+	return substr($a, $b);
+}
+$closure_2 = user_defined(...);
+
+
+$closure_3 = DateTimeImmutable::createFromFormat(...);
+
+
+$dateTime = new DateTimeImmutable("2021-07-22");
+$closure_4 = $dateTime->format(...);
+echo "Done!";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01998.inc b/xdebug-3.4.5/tests/debugger/bug01998.inc
new file mode 100644
index 0000000..2663dab
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01998.inc
@@ -0,0 +1,23 @@
+<?php
+enum Currency: string {
+    case EUR = "€";
+    case GBP = "£";
+}
+
+final class TotalAmount
+{
+    private int $amount;
+
+    private Currency $currency;
+
+    public function __construct(int $amount, Currency $currency)
+    {
+        $this->amount = $amount;
+        $this->currency = $currency;
+    }
+}
+
+$totalAmount = new TotalAmount(30, Currency::EUR);
+
+echo "Hi!\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01998.phpt b/xdebug-3.4.5/tests/debugger/bug01998.phpt
new file mode 100644
index 0000000..83870f6
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01998.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Test for bug #1998: Double facet attribute generated for enums that are stored in properties
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; PHP >= 8.1');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$filename = dirname(__FILE__) . '/bug01998.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 22',
+	'run',
+	'context_get',
+	'property_get -n $totalAmount',
+	'property_get -n $totalAmount->currency',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01998.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01998.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 22
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01998.inc" lineno="22"></xdebug:message></response>
+
+-> context_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="$totalAmount" fullname="$totalAmount" type="object" classname="TotalAmount" children="1" numchildren="2" page="0" pagesize="32"><property name="amount" fullname="$totalAmount-&gt;amount" facet="private" type="int"><![CDATA[30]]></property><property name="currency" fullname="$totalAmount-&gt;currency" facet="private enum" type="object" classname="Currency" children="1" numchildren="2"></property></property></response>
+
+-> property_get -i 5 -n $totalAmount
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$totalAmount" fullname="$totalAmount" type="object" classname="TotalAmount" children="1" numchildren="2" page="0" pagesize="32"><property name="amount" fullname="$totalAmount-&gt;amount" facet="private" type="int"><![CDATA[30]]></property><property name="currency" fullname="$totalAmount-&gt;currency" facet="private enum" type="object" classname="Currency" children="1" numchildren="2"></property></property></response>
+
+-> property_get -i 6 -n $totalAmount->currency
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$totalAmount-&gt;currency" fullname="$totalAmount-&gt;currency" type="object" facet="enum" classname="Currency" children="1" numchildren="2" page="0" pagesize="32"><property name="name" fullname="$totalAmount-&gt;currency-&gt;name" facet="public readonly" type="string" size="3" encoding="base64"><![CDATA[RVVS]]></property><property name="value" fullname="$totalAmount-&gt;currency-&gt;value" facet="public readonly" type="string" size="3" encoding="base64"><![CDATA[4oKs]]></property></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug01999.inc b/xdebug-3.4.5/tests/debugger/bug01999.inc
new file mode 100644
index 0000000..c606973
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01999.inc
@@ -0,0 +1,15 @@
+<?php
+class WithReadOnlyProps
+{
+	static int $static_int = 1;
+
+	function __construct(
+		public string $static_string = "two",
+		public readonly string $ro_string = "readonly-default",
+	) {}
+}
+
+$obj = new WithReadOnlyProps(ro_string: "New Value");
+
+var_dump($obj);
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug01999.phpt b/xdebug-3.4.5/tests/debugger/bug01999.phpt
new file mode 100644
index 0000000..27e8c9d
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug01999.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #1999: Show readonly properties (PHP >= 8.1)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01999.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 14',
+	'run',
+	'property_get -n $obj',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01999.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug01999.inc" lineno="12"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 14
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug01999.inc" lineno="14"></xdebug:message></response>
+
+-> property_get -i 4 -n $obj
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$obj" fullname="$obj" type="object" classname="WithReadOnlyProps" children="1" numchildren="3" page="0" pagesize="32"><property name="static_int" fullname="$obj::static_int" facet="static public" type="int"><![CDATA[1]]></property><property name="static_string" fullname="$obj-&gt;static_string" facet="public" type="string" size="3" encoding="base64"><![CDATA[dHdv]]></property><property name="ro_string" fullname="$obj-&gt;ro_string" facet="public readonly" type="string" size="9" encoding="base64"><![CDATA[TmV3IFZhbHVl]]></property></property></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02006-001.phpt b/xdebug-3.4.5/tests/debugger/bug02006-001.phpt
new file mode 100644
index 0000000..b52218b
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02006-001.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #2006: Removing second call breakpoint with same function name crashes
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; NTS; !win');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02006.inc';
+
+$commands = array(
+	'breakpoint_set -t call -m a',
+	'breakpoint_set -t call -m b',
+	'breakpoint_list',
+	'breakpoint_remove -d {{PID}}0001',
+	'breakpoint_remove -d {{PID}}0002',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02006.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t call -m a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> breakpoint_set -i 2 -t call -m b
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0002"></response>
+
+-> breakpoint_list -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="3"><breakpoint type="call" function="%r(a|b)%r" state="enabled" hit_count="0" hit_value="0" id="{{PID}}000%r(1|2)%r"></breakpoint><breakpoint type="call" function="%r(a|b)%r" state="enabled" hit_count="0" hit_value="0" id="{{PID}}000%r(1|2)%r"></breakpoint></response>
+
+-> breakpoint_remove -i 4 -d %d0001
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_remove" transaction_id="4"><breakpoint type="call" function="a" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></response>
+
+-> breakpoint_remove -i 5 -d %d0002
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_remove" transaction_id="5"><breakpoint type="call" function="b" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0002"></breakpoint></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02006-002.phpt b/xdebug-3.4.5/tests/debugger/bug02006-002.phpt
new file mode 100644
index 0000000..90f0810
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02006-002.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #2006: Removing second call breakpoint with same function name crashes
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; NTS; !win');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02006.inc';
+
+$commands = array(
+	'breakpoint_set -t call -m a',
+	'breakpoint_set -t call -m a',
+	'breakpoint_list',
+	'breakpoint_remove -d {{PID}}0001',
+	'breakpoint_remove -d {{PID}}0002',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02006.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t call -m a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> breakpoint_set -i 2 -t call -m a
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" status="starting" reason="ok"><error code="200"><message><![CDATA[breakpoint could not be set]]></message></error></response>
+
+-> breakpoint_list -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="3"><breakpoint type="call" function="a" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></response>
+
+-> breakpoint_remove -i 4 -d %d0001
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_remove" transaction_id="4"><breakpoint type="call" function="a" state="enabled" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></response>
+
+-> breakpoint_remove -i 5 -d %d0002
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_remove" transaction_id="5" status="starting" reason="ok"><error code="205"><message><![CDATA[no such breakpoint]]></message></error></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02006.inc b/xdebug-3.4.5/tests/debugger/bug02006.inc
new file mode 100644
index 0000000..7e8d0b1
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02006.inc
@@ -0,0 +1,12 @@
+<?php
+function a()
+{
+	$stop = 1;
+}
+
+function b()
+{
+	a();
+}
+
+a();
diff --git a/xdebug-3.4.5/tests/debugger/bug02011-php81.phpt b/xdebug-3.4.5/tests/debugger/bug02011-php81.phpt
new file mode 100644
index 0000000..4d6ee6c
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02011-php81.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #2011: Protected closure facets (< PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.2; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02011.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 13',
+	'run',
+	'property_get -n $obj',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02011.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug02011.inc" lineno="%d"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 13
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug02011.inc" lineno="13"></xdebug:message></response>
+
+-> property_get -i 4 -n $obj
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$obj" fullname="$obj" type="object" classname="WithProtectedClosure" children="1" numchildren="1" page="0" pagesize="32"><property name="c" fullname="$obj-&gt;c" facet="protected closure" type="object" classname="Closure" children="1" numchildren="2"><property facet="virtual readonly" name="{closure}" type="array" children="1" page="0" pagesize="2" numchildren="2"><property facet="readonly" name="scope" type="string"><![CDATA[$this]]></property><property facet="readonly" name="function" type="string"><![CDATA[{closure}]]></property></property></property></property></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02011-php82.phpt b/xdebug-3.4.5/tests/debugger/bug02011-php82.phpt
new file mode 100644
index 0000000..2ae3955
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02011-php82.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #2011: Protected closure facets (>= PHP 8.2, < PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2,< 8.4; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02011.inc';
+
+$commands = array(
+	'feature_set -n max_depth -v 2',
+	'step_into',
+	'breakpoint_set -t line -n 13',
+	'run',
+	'property_get -n $obj',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02011.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n max_depth -v 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="max_depth" success="1"></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug02011.inc" lineno="%d"></xdebug:message></response>
+
+-> breakpoint_set -i 3 -t line -n 13
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug02011.inc" lineno="13"></xdebug:message></response>
+
+-> property_get -i 5 -n $obj
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$obj" fullname="$obj" type="object" classname="WithProtectedClosure" children="1" numchildren="1" page="0" pagesize="32"><property name="c" fullname="$obj-&gt;c" facet="protected closure" type="object" classname="Closure" children="1" numchildren="1" page="0" pagesize="32"><property name="this" fullname="$obj-&gt;c-&gt;this" facet="public" type="object" classname="WithProtectedClosure" children="1" numchildren="1"></property></property></property></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02011-php84.phpt b/xdebug-3.4.5/tests/debugger/bug02011-php84.phpt
new file mode 100644
index 0000000..e25fecc
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02011-php84.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #2011: Protected closure facets (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02011.inc';
+
+$commands = array(
+	'feature_set -n max_depth -v 2',
+	'step_into',
+	'breakpoint_set -t line -n 13',
+	'run',
+	'property_get -n $obj',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02011.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n max_depth -v 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="max_depth" success="1"></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug02011.inc" lineno="%d"></xdebug:message></response>
+
+-> breakpoint_set -i 3 -t line -n 13
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug02011.inc" lineno="13"></xdebug:message></response>
+
+-> property_get -i 5 -n $obj
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$obj" fullname="$obj" type="object" classname="WithProtectedClosure" children="1" numchildren="1" page="0" pagesize="32"><property name="c" fullname="$obj-&gt;c" facet="protected closure" type="object" classname="Closure" children="1" numchildren="4" page="0" pagesize="32"><property name="name" fullname="$obj-&gt;c-&gt;name" facet="public" type="string" size="%d" encoding="base64"><![CDATA[%s]]></property><property name="file" fullname="$obj-&gt;c-&gt;file" facet="public" type="string" size="%d" encoding="base64"><![CDATA[%s]]></property><property name="line" fullname="$obj-&gt;c-&gt;line" facet="public" type="int"><![CDATA[7]]></property><property name="this" fullname="$obj-&gt;c-&gt;this" facet="public" type="object" classname="WithProtectedClosure" children="1" numchildren="1"></property></property></property></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02011.inc b/xdebug-3.4.5/tests/debugger/bug02011.inc
new file mode 100644
index 0000000..79c07a2
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02011.inc
@@ -0,0 +1,14 @@
+<?php
+class WithProtectedClosure
+{
+	protected $c;
+
+	function __construct() {
+		$this->c = function() { echo "Hi!\n"; };
+	}
+}
+
+$obj = new WithProtectedClosure();
+
+var_dump($obj);
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug02025.inc b/xdebug-3.4.5/tests/debugger/bug02025.inc
new file mode 100644
index 0000000..958e38a
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02025.inc
@@ -0,0 +1,19 @@
+<?php
+
+eval('
+class foo {
+  protected $foo = "bar";
+  public function bar() {
+    xdebug_break();
+    echo $this->foo;
+  }
+}
+');
+
+$tmp = new class() extends foo {
+  function baz() {
+    // step into this.
+    $this->bar();
+  }
+};
+$tmp->baz();
diff --git a/xdebug-3.4.5/tests/debugger/bug02025.phpt b/xdebug-3.4.5/tests/debugger/bug02025.phpt
new file mode 100644
index 0000000..049de91
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02025.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Test for bug #2025: Anonymous classes which extend are not detected as anonymous classes since PHP 8.0
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02025.inc';
+
+$commands = array(
+	'run',
+	'stack_get',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02025.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> run -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="1" status="break" reason="ok"><xdebug:message filename="dbgp://1" lineno="6"></xdebug:message></response>
+
+-> stack_get -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="2"><stack where="foo-&gt;bar" level="0" type="eval" filename="dbgp://1" lineno="6"></stack><stack where="{anonymous-class:%sbug02025.inc:13-18}-&gt;baz" level="1" type="file" filename="file://bug02025.inc" lineno="16"></stack><stack where="{main}" level="2" type="file" filename="file://bug02025.inc" lineno="19"></stack></response>
+
+-> detach -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="3" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02049.inc b/xdebug-3.4.5/tests/debugger/bug02049.inc
new file mode 100644
index 0000000..4f3e768
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02049.inc
@@ -0,0 +1,8 @@
+<?php
+
+echo "1";
+xdebug_break();
+echo "2";
+echo "3";
+echo "4";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug02049.phpt b/xdebug-3.4.5/tests/debugger/bug02049.phpt
new file mode 100644
index 0000000..7fbe4f9
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02049.phpt
@@ -0,0 +1,100 @@
+--TEST--
+Test for bug #2049: Eval with 'namespace' broken code causes exception
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02049.inc';
+
+$commands = array(
+	'feature_set -n resolved_breakpoints -v 1',
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n extended_properties -v 1',
+	'run',
+	'stack_get',
+	'context_names -d 0',
+	'context_get -d 0 -c 0',
+	'eval -- bmFtZXNwYWNl',
+	'context_names -d 0',
+	'context_get -d 0 -c 0',
+	'step_over',
+	'stack_get',
+	'context_names -d 0',
+	'context_get -d 0 -c 0',
+	'step_over',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02049.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="resolved_breakpoints" success="1"></response>
+
+-> feature_set -i 2 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 3 -n extended_properties -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="3" feature="extended_properties" success="1"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug02049.inc" lineno="5"></xdebug:message></response>
+
+-> stack_get -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="5"><stack where="{main}" level="0" type="file" filename="file://bug02049.inc" lineno="5"></stack></response>
+
+-> context_names -i 6 -d 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_names" transaction_id="6"><context name="Locals" id="0"></context><context name="Superglobals" id="1"></context><context name="User defined constants" id="2"></context></response>
+
+-> context_get -i 7 -d 0 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="7" context="0"></response>
+
+-> eval -i 8 -- bmFtZXNwYWNl
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="8" status="break" reason="ok"><error code="206"><message><![CDATA[error evaluating code: %s]]></message></error></response>
+
+-> context_names -i 9 -d 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_names" transaction_id="9"><context name="Locals" id="0"></context><context name="Superglobals" id="1"></context><context name="User defined constants" id="2"></context></response>
+
+-> context_get -i 10 -d 0 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="10" context="0"></response>
+
+-> step_over -i 11
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="11" status="break" reason="ok"><xdebug:message filename="file://bug02049.inc" lineno="6"></xdebug:message></response>
+
+-> stack_get -i 12
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="12"><stack where="{main}" level="0" type="file" filename="file://bug02049.inc" lineno="6"></stack></response>
+
+-> context_names -i 13 -d 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_names" transaction_id="13"><context name="Locals" id="0"></context><context name="Superglobals" id="1"></context><context name="User defined constants" id="2"></context></response>
+
+-> context_get -i 14 -d 0 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="14" context="0"></response>
+
+-> step_over -i 15
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="15" status="break" reason="ok"><xdebug:message filename="file://bug02049.inc" lineno="7"></xdebug:message></response>
+
+-> detach -i 16
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="16" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02053.inc b/xdebug-3.4.5/tests/debugger/bug02053.inc
new file mode 100644
index 0000000..b8019c9
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02053.inc
@@ -0,0 +1,23 @@
+<?php
+declare(strict_types=1);
+class MyObject
+{
+	public $pub;
+	protected $prot;
+	private $priv;
+
+	public function __construct($pub, $prot, $priv)
+	{
+		$this->pub = $pub;
+		$this->prot = $prot;
+		$this->priv = $priv;
+	}
+}
+/** @var MyObject[] $arr */
+$arr = [
+	new MyObject(1, 'first', true),
+	new MyObject(2, 'second', false),
+	new MyObject(3, '3rd', false),
+];
+echo $arr[0]->pub;
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug02053.phpt b/xdebug-3.4.5/tests/debugger/bug02053.phpt
new file mode 100644
index 0000000..3ff743e
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02053.phpt
@@ -0,0 +1,75 @@
+--TEST--
+Test for bug #2053: "Cannot get property" for array elements while evaluating
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02053.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 22',
+	'run',
+	'property_get -n $arr',
+	'property_get -n $arr[0]',
+	'property_get -n $arr[1]',
+	'eval -- ' . base64_encode("\$GLOBALS['IDE_EVAL_CACHE']['5e298245-9fc5-47cc-9007-2c9e743e87c3']=\$arr"),
+	"property_get -c 1 -n \$IDE_EVAL_CACHE['5e298245-9fc5-47cc-9007-2c9e743e87c3']",
+	"property_get -c 1 -n \$IDE_EVAL_CACHE['5e298245-9fc5-47cc-9007-2c9e743e87c3'][0]",
+	"property_get -c 1 -n \$IDE_EVAL_CACHE['5e298245-9fc5-47cc-9007-2c9e743e87c3'][1]",
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02053.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug02053.inc" lineno="%d"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 22
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug02053.inc" lineno="22"></xdebug:message></response>
+
+-> property_get -i 4 -n $arr
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$arr" fullname="$arr" type="array" children="1" numchildren="3" page="0" pagesize="32"><property name="0" fullname="$arr[0]" type="object" classname="MyObject" children="1" numchildren="3"></property><property name="1" fullname="$arr[1]" type="object" classname="MyObject" children="1" numchildren="3"></property><property name="2" fullname="$arr[2]" type="object" classname="MyObject" children="1" numchildren="3"></property></property></response>
+
+-> property_get -i 5 -n $arr[0]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$arr[0]" fullname="$arr[0]" type="object" classname="MyObject" children="1" numchildren="3" page="0" pagesize="32"><property name="pub" fullname="$arr[0]-&gt;pub" facet="public" type="int"><![CDATA[1]]></property><property name="prot" fullname="$arr[0]-&gt;prot" facet="protected" type="string" size="5" encoding="base64"><![CDATA[Zmlyc3Q=]]></property><property name="priv" fullname="$arr[0]-&gt;priv" facet="private" type="bool"><![CDATA[1]]></property></property></response>
+
+-> property_get -i 6 -n $arr[1]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$arr[1]" fullname="$arr[1]" type="object" classname="MyObject" children="1" numchildren="3" page="0" pagesize="32"><property name="pub" fullname="$arr[1]-&gt;pub" facet="public" type="int"><![CDATA[2]]></property><property name="prot" fullname="$arr[1]-&gt;prot" facet="protected" type="string" size="6" encoding="base64"><![CDATA[c2Vjb25k]]></property><property name="priv" fullname="$arr[1]-&gt;priv" facet="private" type="bool"><![CDATA[0]]></property></property></response>
+
+-> eval -i 7 -- JEdMT0JBTFNbJ0lERV9FVkFMX0NBQ0hFJ11bJzVlMjk4MjQ1LTlmYzUtNDdjYy05MDA3LTJjOWU3NDNlODdjMyddPSRhcnI=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="7"><property type="array" children="1" numchildren="3" page="0" pagesize="32"><property name="0" type="object" classname="MyObject" children="1" numchildren="3"></property><property name="1" type="object" classname="MyObject" children="1" numchildren="3"></property><property name="2" type="object" classname="MyObject" children="1" numchildren="3"></property></property></response>
+
+-> property_get -i 8 -c 1 -n $IDE_EVAL_CACHE['5e298245-9fc5-47cc-9007-2c9e743e87c3']
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8"><property name="$IDE_EVAL_CACHE[&#39;5e298245-9fc5-47cc-9007-2c9e743e87c3&#39;]" fullname="$IDE_EVAL_CACHE[&#39;5e298245-9fc5-47cc-9007-2c9e743e87c3&#39;]" type="array" children="1" numchildren="3" page="0" pagesize="32"><property name="0" fullname="$IDE_EVAL_CACHE[&#39;5e298245-9fc5-47cc-9007-2c9e743e87c3&#39;][0]" type="object" classname="MyObject" children="1" numchildren="3"></property><property name="1" fullname="$IDE_EVAL_CACHE[&#39;5e298245-9fc5-47cc-9007-2c9e743e87c3&#39;][1]" type="object" classname="MyObject" children="1" numchildren="3"></property><property name="2" fullname="$IDE_EVAL_CACHE[&#39;5e298245-9fc5-47cc-9007-2c9e743e87c3&#39;][2]" type="object" classname="MyObject" children="1" numchildren="3"></property></property></response>
+
+-> property_get -i 9 -c 1 -n $IDE_EVAL_CACHE['5e298245-9fc5-47cc-9007-2c9e743e87c3'][0]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="9"><property name="$IDE_EVAL_CACHE[&#39;5e298245-9fc5-47cc-9007-2c9e743e87c3&#39;][0]" fullname="$IDE_EVAL_CACHE[&#39;5e298245-9fc5-47cc-9007-2c9e743e87c3&#39;][0]" type="object" classname="MyObject" children="1" numchildren="3" page="0" pagesize="32"><property name="pub" fullname="$IDE_EVAL_CACHE[&#39;5e298245-9fc5-47cc-9007-2c9e743e87c3&#39;][0]-&gt;pub" facet="public" type="int"><![CDATA[1]]></property><property name="prot" fullname="$IDE_EVAL_CACHE[&#39;5e298245-9fc5-47cc-9007-2c9e743e87c3&#39;][0]-&gt;prot" facet="protected" type="string" size="5" encoding="base64"><![CDATA[Zmlyc3Q=]]></property><property name="priv" fullname="$IDE_EVAL_CACHE[&#39;5e298245-9fc5-47cc-9007-2c9e743e87c3&#39;][0]-&gt;priv" facet="private" type="bool"><![CDATA[1]]></property></property></response>
+
+-> property_get -i 10 -c 1 -n $IDE_EVAL_CACHE['5e298245-9fc5-47cc-9007-2c9e743e87c3'][1]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="10"><property name="$IDE_EVAL_CACHE[&#39;5e298245-9fc5-47cc-9007-2c9e743e87c3&#39;][1]" fullname="$IDE_EVAL_CACHE[&#39;5e298245-9fc5-47cc-9007-2c9e743e87c3&#39;][1]" type="object" classname="MyObject" children="1" numchildren="3" page="0" pagesize="32"><property name="pub" fullname="$IDE_EVAL_CACHE[&#39;5e298245-9fc5-47cc-9007-2c9e743e87c3&#39;][1]-&gt;pub" facet="public" type="int"><![CDATA[2]]></property><property name="prot" fullname="$IDE_EVAL_CACHE[&#39;5e298245-9fc5-47cc-9007-2c9e743e87c3&#39;][1]-&gt;prot" facet="protected" type="string" size="6" encoding="base64"><![CDATA[c2Vjb25k]]></property><property name="priv" fullname="$IDE_EVAL_CACHE[&#39;5e298245-9fc5-47cc-9007-2c9e743e87c3&#39;][1]-&gt;priv" facet="private" type="bool"><![CDATA[0]]></property></property></response>
+
+-> detach -i 11
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="11" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02055.inc b/xdebug-3.4.5/tests/debugger/bug02055.inc
new file mode 100644
index 0000000..3f00fa7
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02055.inc
@@ -0,0 +1,19 @@
+<?php
+class Test2055 {
+	static protected $c;
+
+	static function setUp()
+	{
+		self::$c = function($a, $b) { return $a + $b; };
+	}
+
+	static function doOp( $a, $b )
+	{
+		$c = self::$c;
+
+		return $c($a, $b);
+	}
+}
+
+Test2055::setUp();
+echo Test2055::doOp( 5, 8 ), "\n";
diff --git a/xdebug-3.4.5/tests/debugger/bug02055.phpt b/xdebug-3.4.5/tests/debugger/bug02055.phpt
new file mode 100644
index 0000000..6e70961
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02055.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #2055: Debugger creates XML with double facet attribute (< PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.2; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02055.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 14',
+	'run',
+	'context_get',
+	'property_get -n $t',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02055.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug02055.inc" lineno="%r(2|18)%r"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 14
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug02055.inc" lineno="14"></xdebug:message></response>
+
+-> context_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="$a" fullname="$a" type="int"><![CDATA[5]]></property><property name="$b" fullname="$b" type="int"><![CDATA[8]]></property><property name="$c" fullname="$c" type="object" facet="closure" classname="Closure" children="1" numchildren="2" page="0" pagesize="32"><property facet="virtual readonly" name="{closure}" type="array" children="1" page="0" pagesize="2" numchildren="2"><property facet="readonly" name="scope" type="string"><![CDATA[$this]]></property><property facet="readonly" name="function" type="string"><![CDATA[{closure}]]></property></property><property name="parameter" fullname="$c-&gt;parameter" facet="public" type="array" children="1" numchildren="2"></property></property><property name="::" fullname="::" type="object" classname="Test2055" children="1" numchildren="1"><property name="::c" fullname="::c" type="object" facet="closure static protected" classname="Closure" children="1" numchildren="2" page="0" pagesize="32"><property facet="virtual readonly" name="{closure}" type="array" children="1" page="0" pagesize="2" numchildren="2"><property facet="readonly" name="scope" type="string"><![CDATA[$this]]></property><property facet="readonly" name="function" type="string"><![CDATA[{closure}]]></property></property><property name="parameter" fullname="::c-&gt;parameter" facet="public" type="array" children="1" numchildren="2"></property></property></property></response>
+
+-> property_get -i 5 -n $t
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5" status="break" reason="ok"><error code="300"><message><![CDATA[can not get property]]></message></error></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02063.inc b/xdebug-3.4.5/tests/debugger/bug02063.inc
new file mode 100644
index 0000000..158afee
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02063.inc
@@ -0,0 +1,4 @@
+<?php
+$permissions = new ArrayObject();
+$permissions->append(1);
+$stop = 1;
diff --git a/xdebug-3.4.5/tests/debugger/bug02063.phpt b/xdebug-3.4.5/tests/debugger/bug02063.phpt
new file mode 100644
index 0000000..5b6862c
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02063.phpt
@@ -0,0 +1,55 @@
+--TEST--
+Test for bug #2063: ArrayObject storage elements not viewable in PhpStorm
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02063.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 4',
+	'run',
+	'property_get -n $permissions',
+	'property_get -n $permissions->storage',
+	'property_get -n $permissions->storage[0]',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02063.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug02063.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug02063.inc" lineno="4"></xdebug:message></response>
+
+-> property_get -i 4 -n $permissions
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$permissions" fullname="$permissions" type="object" classname="ArrayObject" children="1" numchildren="1" page="0" pagesize="32"><property name="storage" fullname="$permissions-&gt;storage" facet="private" type="array" children="1" numchildren="1"></property></property></response>
+
+-> property_get -i 5 -n $permissions->storage
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$permissions-&gt;storage" fullname="$permissions-&gt;storage" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="0" fullname="$permissions-&gt;storage[0]" type="int"><![CDATA[1]]></property></property></response>
+
+-> property_get -i 6 -n $permissions->storage[0]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$permissions-&gt;storage[0]" fullname="$permissions-&gt;storage[0]" type="int"><![CDATA[1]]></property></response>
+
+-> detach -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="7" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02083.inc b/xdebug-3.4.5/tests/debugger/bug02083.inc
new file mode 100644
index 0000000..90c7d45
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02083.inc
@@ -0,0 +1,9 @@
+<?php
+
+enum TestEnum {
+    case EnumCase;
+}
+
+const TEST_CONST = TestEnum::EnumCase;
+
+$value = TEST_CONST;
diff --git a/xdebug-3.4.5/tests/debugger/bug02083.phpt b/xdebug-3.4.5/tests/debugger/bug02083.phpt
new file mode 100644
index 0000000..d3f5463
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02083.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #2083: Constant defined with an enum case
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; PHP >= 8.1');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02083.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 9',
+	'run',
+	'context_get -c 2',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02083.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug02083.inc" lineno="3"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug02083.inc" lineno="9"></xdebug:message></response>
+
+-> context_get -i 4 -c 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="2"><property name="TEST_CONST" fullname="TEST_CONST" type="object" facet="enum constant" classname="TestEnum" children="1" numchildren="1" page="0" pagesize="32"><property name="name" fullname="TEST_CONST-&gt;name" facet="public readonly" type="string" size="8" encoding="base64"><![CDATA[RW51bUNhc2U=]]></property></property></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02090.inc b/xdebug-3.4.5/tests/debugger/bug02090.inc
new file mode 100644
index 0000000..e9ed16b
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02090.inc
@@ -0,0 +1,18 @@
+<?php
+declare(strict_types=1);
+
+class Test
+{
+	public static function __callStatic($name, $args)
+	{
+		echo "$name called\n";
+	}
+}
+
+Test::works1();
+Test::works2();
+
+$ffi = FFI::cdef('int printf(const char *format, ...);', 'libc.so.6');
+$ffi->printf("Hello %s!\n", "world");
+
+Test::breaks();
diff --git a/xdebug-3.4.5/tests/debugger/bug02090.phpt b/xdebug-3.4.5/tests/debugger/bug02090.phpt
new file mode 100644
index 0000000..55ffa0b
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02090.phpt
@@ -0,0 +1,70 @@
+--TEST--
+Test for bug #2090: Segfault in __callStatic() after FFI initialization
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; ext FFI; PHP >= 8.0');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02090.inc';
+
+$commands = array(
+	'step_into',
+	'step_into',
+	'step_into',
+	'step_into',
+	'step_into',
+	'step_into',
+	'step_into',
+	'step_into',
+	'step_into',
+	'step_into',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02090.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug02090.inc" lineno="12"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug02090.inc" lineno="8"></xdebug:message></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug02090.inc" lineno="9"></xdebug:message></response>
+
+-> step_into -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug02090.inc" lineno="13"></xdebug:message></response>
+
+-> step_into -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug02090.inc" lineno="8"></xdebug:message></response>
+
+-> step_into -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://bug02090.inc" lineno="9"></xdebug:message></response>
+
+-> step_into -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://bug02090.inc" lineno="15"></xdebug:message></response>
+
+-> step_into -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="8" status="break" reason="ok"><xdebug:message filename="file://bug02090.inc" lineno="16"></xdebug:message></response>
+
+-> step_into -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="9" status="break" reason="ok"><xdebug:message filename="file://bug02090.inc" lineno="18"></xdebug:message></response>
+
+-> step_into -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="10" status="break" reason="ok"><xdebug:message filename="file://bug02090.inc" lineno="8"></xdebug:message></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02094-php81.phpt b/xdebug-3.4.5/tests/debugger/bug02094-php81.phpt
new file mode 100644
index 0000000..8df19c1
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02094-php81.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #2094: Public static property with closure data type have double facet XML attribute (< PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.2; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02094.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 11',
+	'run',
+	'context_get',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02094.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug02094.inc" lineno="%d"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 11
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug02094.inc" lineno="11"></xdebug:message></response>
+
+-> context_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="::" fullname="::" type="object" classname="Test" children="1" numchildren="1"><property name="::bar" fullname="::bar" type="object" facet="closure static public" classname="Closure" children="1" numchildren="1" page="0" pagesize="32"><property facet="virtual readonly" name="{closure}" type="array" children="1" page="0" pagesize="2" numchildren="1"><property facet="readonly" name="function" type="string"><![CDATA[{closure}]]></property></property></property></property></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02094-php82.phpt b/xdebug-3.4.5/tests/debugger/bug02094-php82.phpt
new file mode 100644
index 0000000..6bf5009
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02094-php82.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #2094: Public static property with closure data type have double facet XML attribute (>= PHP 8.2, < PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2,< 8.4; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02094.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 11',
+	'run',
+	'context_get',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02094.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug02094.inc" lineno="%d"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 11
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug02094.inc" lineno="11"></xdebug:message></response>
+
+-> context_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="::" fullname="::" type="object" classname="Test" children="1" numchildren="1"><property name="::bar" fullname="::bar" type="object" facet="closure static public" classname="Closure" children="0" numchildren="0" page="0" pagesize="32"></property></property></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02094-php84.phpt b/xdebug-3.4.5/tests/debugger/bug02094-php84.phpt
new file mode 100644
index 0000000..fa3b39c
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02094-php84.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #2094: Public static property with closure data type have double facet XML attribute (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02094.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 11',
+	'run',
+	'context_get',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02094.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug02094.inc" lineno="%d"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 11
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug02094.inc" lineno="11"></xdebug:message></response>
+
+-> context_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="::" fullname="::" type="object" classname="Test" children="1" numchildren="1"><property name="::bar" fullname="::bar" type="object" facet="closure static public" classname="Closure" children="1" numchildren="3" page="0" pagesize="32"><property name="name" fullname="::bar-&gt;name" facet="public" type="string" size="%d" encoding="base64"><![CDATA[%s]]></property><property name="file" fullname="::bar-&gt;file" facet="public" type="string" size="%d" encoding="base64"><![CDATA[%s]]></property><property name="line" fullname="::bar-&gt;line" facet="public" type="int"><![CDATA[15]]></property></property></property></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02094.inc b/xdebug-3.4.5/tests/debugger/bug02094.inc
new file mode 100644
index 0000000..bc70a23
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02094.inc
@@ -0,0 +1,20 @@
+<?php
+
+class Test {
+    public static $bar;
+
+    public static function foo($closure) {
+        static::$bar = $closure;
+    }
+
+    public static function baz() {
+        (static::$bar)();
+    }
+}
+
+Test::foo(function(){
+    echo "called";
+});
+
+Test::baz();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug02098-001.inc b/xdebug-3.4.5/tests/debugger/bug02098-001.inc
new file mode 100644
index 0000000..49ca8de
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02098-001.inc
@@ -0,0 +1,4 @@
+<?php
+
+var_dump("");
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug02098-001.phpt b/xdebug-3.4.5/tests/debugger/bug02098-001.phpt
new file mode 100644
index 0000000..511e4cb
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02098-001.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Test for bug #2098: With breakpoint_include_return_value enabled step_out break at every function (simple)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02098-001.inc';
+
+$commands = array(
+	'feature_set -n breakpoint_include_return_value -v 1',
+	'step_out',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02098-001.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n breakpoint_include_return_value -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="breakpoint_include_return_value" success="1"></response>
+
+-> step_out -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_out" transaction_id="2" status="stopping" reason="ok"></response>
+
+-> detach -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="3" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02098-002.inc b/xdebug-3.4.5/tests/debugger/bug02098-002.inc
new file mode 100644
index 0000000..ac71796
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02098-002.inc
@@ -0,0 +1,33 @@
+<?php
+class Fluent
+{
+	function __construct(private string $start)
+	{
+	}
+
+	function __toString() : string
+	{
+		return $this->start;
+	}
+
+	private function format(string $name, string $value) : string
+	{
+		return " ({$name}={$value})";
+	}
+
+	function __call(string $name, array $values) : Fluent
+	{
+		foreach ( $values as $value )
+		{
+			$this->start .= $this->format( $name, $value );
+		}
+
+		return $this;
+	}
+}
+
+$f = new Fluent("Return value inspection");
+$g = $f->php('8.1', 'great')->xdebug('awesome', 'amazing');
+
+echo $g, "\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug02098-002.phpt b/xdebug-3.4.5/tests/debugger/bug02098-002.phpt
new file mode 100644
index 0000000..124e964
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02098-002.phpt
@@ -0,0 +1,75 @@
+--TEST--
+Test for bug #2098: With breakpoint_include_return_value enabled step_out break at every function (complex) (>= PHP 8.0)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.0; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02098-002.inc';
+
+$commands = array(
+	'feature_set -n breakpoint_include_return_value -v 1',
+	'step_into',
+	'breakpoint_set -t line -n 10',
+	'breakpoint_set -t line -n 20 -r 1',
+	'run',
+	'step_out',
+	'context_get',
+	'run',
+	'step_out',
+	'context_get',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02098-002.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n breakpoint_include_return_value -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="breakpoint_include_return_value" success="1"></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug02098-002.inc" lineno="29"></xdebug:message></response>
+
+-> breakpoint_set -i 3 -t line -n 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001"></response>
+
+-> breakpoint_set -i 4 -t line -n 20 -r 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" id="{{PID}}0002"></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug02098-002.inc" lineno="20"></xdebug:message></response>
+
+-> step_out -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_out" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://bug02098-002.inc" lineno="30"></xdebug:message><xdebug:return_value><property type="object" classname="Fluent" children="1" numchildren="1" page="0" pagesize="32"><property name="start" facet="private" type="string" size="45" encoding="base64"><![CDATA[UmV0dXJuIHZhbHVlIGluc3BlY3Rpb24gKHBocD04LjEpIChwaHA9Z3JlYXQp]]></property></property></xdebug:return_value></response>
+
+-> context_get -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="7" context="0"><property name="$__RETURN_VALUE" fullname="$__RETURN_VALUE" type="object" classname="Fluent" children="1" numchildren="1" page="0" pagesize="32" facet="readonly return_value virtual"><property name="start" fullname="$__RETURN_VALUE-&gt;start" facet="private" type="string" size="45" encoding="base64"><![CDATA[UmV0dXJuIHZhbHVlIGluc3BlY3Rpb24gKHBocD04LjEpIChwaHA9Z3JlYXQp]]></property></property></response>
+
+-> run -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="8" status="break" reason="ok"><xdebug:message filename="file://bug02098-002.inc" lineno="10"></xdebug:message></response>
+
+-> step_out -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_out" transaction_id="9" status="break" reason="ok"><xdebug:message filename="file://bug02098-002.inc" lineno="32"></xdebug:message><xdebug:return_value><property type="string" size="79" encoding="base64"><![CDATA[UmV0dXJuIHZhbHVlIGluc3BlY3Rpb24gKHBocD04LjEpIChwaHA9Z3JlYXQpICh4ZGVidWc9YXdlc29tZSkgKHhkZWJ1Zz1hbWF6aW5nKQ==]]></property></xdebug:return_value></response>
+
+-> context_get -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="10" context="0"><property name="$__RETURN_VALUE" fullname="$__RETURN_VALUE" type="string" size="79" facet="readonly return_value virtual" encoding="base64"><![CDATA[UmV0dXJuIHZhbHVlIGluc3BlY3Rpb24gKHBocD04LjEpIChwaHA9Z3JlYXQpICh4ZGVidWc9YXdlc29tZSkgKHhkZWJ1Zz1hbWF6aW5nKQ==]]></property></response>
+
+-> detach -i 11
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="11" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02101.inc b/xdebug-3.4.5/tests/debugger/bug02101.inc
new file mode 100644
index 0000000..cfd69d8
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02101.inc
@@ -0,0 +1,36 @@
+<?php
+class Fluent
+{
+	private $start;
+
+	function __construct(string $start)
+	{
+		$this->start = $start;
+	}
+
+	function __toString() : string
+	{
+		return $this->start;
+	}
+
+	private function format(string $name, string $value) : string
+	{
+		return " ({$name}={$value})";
+	}
+
+	function __call(string $name, array $values) : Fluent
+	{
+		foreach ( $values as $value )
+		{
+			$this->start .= $this->format( $name, $value );
+		}
+
+		return $this;
+	}
+}
+
+$f = new Fluent("Return value inspection");
+$g = $f->php('8.1', 'great')->xdebug('awesome', 'amazing');
+
+echo $g, "\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug02101.phpt b/xdebug-3.4.5/tests/debugger/bug02101.phpt
new file mode 100644
index 0000000..a54eb40
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02101.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #2101: When a temporary breakpoint is hit, breakpoint_list should show it as disabled
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02101.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 23 -r 1',
+	'breakpoint_list',
+	'run',
+	'breakpoint_list',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02101.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug02101.inc" lineno="%d"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 23 -r 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> breakpoint_list -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="3"><breakpoint type="line" filename="file://bug02101.inc" lineno="23" state="temporary" hit_count="0" hit_value="0" id="{{PID}}0001"></breakpoint></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug02101.inc" lineno="23"></xdebug:message></response>
+
+-> breakpoint_list -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="5"><breakpoint type="line" filename="file://bug02101.inc" lineno="23" state="disabled" hit_count="1" hit_value="0" id="{{PID}}0001"></breakpoint></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02113-001.inc b/xdebug-3.4.5/tests/debugger/bug02113-001.inc
new file mode 100644
index 0000000..6dadb16
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02113-001.inc
@@ -0,0 +1,11 @@
+<?php
+function g(){
+    return 2;
+}
+function myMethod($b)
+{
+    f(); //breakpoint there
+}
+
+$foo = 1;
+$a = myMethod(42);
diff --git a/xdebug-3.4.5/tests/debugger/bug02113-001.phpt b/xdebug-3.4.5/tests/debugger/bug02113-001.phpt
new file mode 100644
index 0000000..fd727ee
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02113-001.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #2113: SIGSEV is thrown on step into after Exception breakpoint [1]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02113-001.inc';
+
+$commands = array(
+	'feature_set -n breakpoint_include_return_value -v 1',
+	'step_into',
+	"breakpoint_set -t line -f file://{$filename} -n 7",
+	'run',
+	'step_into',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02113-001.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n breakpoint_include_return_value -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="breakpoint_include_return_value" success="1"></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug02113-001.inc" lineno="10"></xdebug:message></response>
+
+-> breakpoint_set -i 3 -t line -f file://bug02113-001.inc -n 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug02113-001.inc" lineno="7"></xdebug:message></response>
+
+-> step_into -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02113-002.inc b/xdebug-3.4.5/tests/debugger/bug02113-002.inc
new file mode 100644
index 0000000..7d52562
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02113-002.inc
@@ -0,0 +1,17 @@
+<?php
+function g(){
+    return 2;
+}
+function myMethod($b)
+{
+	try {
+	    f(); //breakpoint there
+	} catch (Throwable $e) {
+	}
+	return "We have returned";
+}
+
+$foo = 1;
+$a = myMethod(42);
+
+$floob = g();
diff --git a/xdebug-3.4.5/tests/debugger/bug02113-002.phpt b/xdebug-3.4.5/tests/debugger/bug02113-002.phpt
new file mode 100644
index 0000000..d5d88a4
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02113-002.phpt
@@ -0,0 +1,65 @@
+--TEST--
+Test for bug #2113: SIGSEV is thrown on step into after Exception breakpoint [2] (>= PHP 8.1)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02113-002.inc';
+
+$commands = array(
+	'feature_set -n breakpoint_include_return_value -v 1',
+	"breakpoint_set -t line -f file://{$filename} -n 8",
+	'run',
+	'step_into',
+	'stack_get',
+	'step_into',
+	'stack_get',
+	'context_get',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02113-002.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n breakpoint_include_return_value -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="breakpoint_include_return_value" success="1"></response>
+
+-> breakpoint_set -i 2 -t line -f file://bug02113-002.inc -n 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug02113-002.inc" lineno="8"></xdebug:message></response>
+
+-> step_into -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug02113-002.inc" lineno="11"></xdebug:message></response>
+
+-> stack_get -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="5"><stack where="myMethod" level="0" type="file" filename="file://bug02113-002.inc" lineno="11"></stack><stack where="{main}" level="1" type="file" filename="file://bug02113-002.inc" lineno="15"></stack></response>
+
+-> step_into -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://bug02113-002.inc" lineno="15"></xdebug:message><xdebug:return_value><property type="string" size="16" encoding="base64"><![CDATA[V2UgaGF2ZSByZXR1cm5lZA==]]></property></xdebug:return_value></response>
+
+-> stack_get -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="7"><stack where="myMethod" level="0" type="file" filename="file://bug02113-002.inc" lineno="11"></stack><stack where="{main}" level="1" type="file" filename="file://bug02113-002.inc" lineno="15"></stack></response>
+
+-> context_get -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="8" context="0"><property name="$__RETURN_VALUE" fullname="$__RETURN_VALUE" type="string" size="16" facet="readonly return_value virtual" encoding="base64"><![CDATA[V2UgaGF2ZSByZXR1cm5lZA==]]></property></response>
+
+-> detach -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="9" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02121.inc b/xdebug-3.4.5/tests/debugger/bug02121.inc
new file mode 100644
index 0000000..0a47d09
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02121.inc
@@ -0,0 +1,5 @@
+<?php
+setlocale(LC_ALL, "da_DK.utf8");
+$a = M_PI;
+echo $a, "\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug02121.phpt b/xdebug-3.4.5/tests/debugger/bug02121.phpt
new file mode 100644
index 0000000..00f2dcc
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02121.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #2121: Xdebug does not use local independent float-to-string functions
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+if (false == setlocale(LC_ALL, "da_DK.utf8")) print "skip locale not found";
+?>
+--INI--
+serialize_precision=-1
+--FILE--
+<?php
+setlocale(LC_ALL, "da_DK.utf8");
+
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02121.inc';
+
+$commands = array(
+	'step_into',
+	'step_into',
+	'step_into',
+	'context_get',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02121.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug02121.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug02121.inc" lineno="3"></xdebug:message></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug02121.inc" lineno="4"></xdebug:message></response>
+
+-> context_get -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="$a" fullname="$a" type="float"><![CDATA[3.141592653589793]]></property></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02122.inc b/xdebug-3.4.5/tests/debugger/bug02122.inc
new file mode 100644
index 0000000..cc1fe26
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02122.inc
@@ -0,0 +1,27 @@
+<?php
+class User
+{
+	function __construct( private string $name )
+	{
+	}
+
+	function showName()
+	{
+		$default = 'default value';
+
+		throw new \Exception( "Don't know the name" );
+	}
+}
+
+$u = new User( 'Elephpant' );
+
+try
+{
+	$u->showName();
+}
+catch ( Exception $e )
+{
+}
+
+var_dump( $u );
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug02122.phpt b/xdebug-3.4.5/tests/debugger/bug02122.phpt
new file mode 100644
index 0000000..65296b7
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02122.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Test for bug #2122: Local variables are not available when using start_upon_error
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; !win');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02122.inc';
+
+$commands = array(
+	'context_get -d 0',
+	'context_get -d 1',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands, [ 'xdebug.start_with_request' => 'default', 'xdebug.start_upon_error' => 'yes' ] );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02122.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> context_get -i 1 -d 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="1" context="0"><property name="$default" fullname="$default" type="string" size="13" encoding="base64"><![CDATA[ZGVmYXVsdCB2YWx1ZQ==]]></property><property name="$this" fullname="$this" type="object" classname="User" children="1" numchildren="1" page="0" pagesize="32"><property name="name" fullname="$this-&gt;name" facet="private" type="string" size="9" encoding="base64"><![CDATA[RWxlcGhwYW50]]></property></property></response>
+
+-> context_get -i 2 -d 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="2" context="0"><property name="$e" fullname="$e" type="uninitialized"></property><property name="$u" fullname="$u" type="object" classname="User" children="1" numchildren="1" page="0" pagesize="32"><property name="name" fullname="$u-&gt;name" facet="private" type="string" size="9" encoding="base64"><![CDATA[RWxlcGhwYW50]]></property></property></response>
+
+-> detach -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="3" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02123.inc b/xdebug-3.4.5/tests/debugger/bug02123.inc
new file mode 100644
index 0000000..57dc8fa
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02123.inc
@@ -0,0 +1,3 @@
+<?php
+xdebug_info();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug02123.phpt b/xdebug-3.4.5/tests/debugger/bug02123.phpt
new file mode 100644
index 0000000..6664819
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02123.phpt
@@ -0,0 +1,47 @@
+--TEST--
+Test for bug #2123: Add warning in log and diagnositics information when a breakpoint is set on a non-existing file
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; !win');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02123.inc';
+
+$commands = array(
+	'breakpoint_set -t line -f /var/www/elephpants-are-cool/does-not-exist -n 1',
+	'run',
+	'detach',
+);
+
+$xdebugLogFileName = sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'remote-log-2123.txt';
+@unlink( $xdebugLogFileName );
+
+dbgpRunFile( $filename, $commands, [ 'xdebug.log' => $xdebugLogFileName, 'xdebug.log_level' => 3 ], [ 'show-stdout' => true ] );
+
+echo file_get_contents( $xdebugLogFileName );
+@unlink( $xdebugLogFileName );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02123.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f /var/www/elephpants-are-cool/does-not-exist -n 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="stopping" reason="ok"></response>
+
+-> detach -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="3" status="stopping" reason="ok"></response>
+
+%A[Step Debug] WARN: Breakpoint file name does not exist: /var/www/elephpants-are-cool/does-not-exist (No such file or directory).%A
+
+[%d] Log opened at %s%A
+[%d] [Step Debug] WARN: Breakpoint file name does not exist: /var/www/elephpants-are-cool/does-not-exist (No such file or directory).
+[%d] Log closed at %s
diff --git a/xdebug-3.4.5/tests/debugger/bug02126.inc b/xdebug-3.4.5/tests/debugger/bug02126.inc
new file mode 100644
index 0000000..b4099fd
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02126.inc
@@ -0,0 +1,13 @@
+<?php
+$globalVar = 42;
+
+function dateStuff()
+{
+	$tz = new \DateTimeZone('Europe/Amsterdam');
+	$ts = $tz->getTransitions(1593186495, 1711813695);
+	$ts = $tz->getTransitions(strtotime("2020-01-01"));
+
+	var_dump($ts);
+}
+
+dateStuff();
diff --git a/xdebug-3.4.5/tests/debugger/bug02126.phpt b/xdebug-3.4.5/tests/debugger/bug02126.phpt
new file mode 100644
index 0000000..a469f27
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02126.phpt
@@ -0,0 +1,70 @@
+--TEST--
+Test for bug #2126: Problems with showing global variables
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02126.inc';
+
+$commands = array(
+	'step_into',
+	'feature_set -n max_depth -v 0',
+	'context_get -c 1',
+	'breakpoint_set -t line -n 8',
+	'run',
+	'context_get -c 1',
+	'feature_set -n max_depth -v 1',
+	'property_get -c 1 -n $globalVar',
+	'property_get -c 1 -n $argv',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02126.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug02126.inc" lineno="2"></xdebug:message></response>
+
+-> feature_set -i 2 -n max_depth -v 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_depth" success="1"></response>
+
+-> context_get -i 3 -c 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="3" context="1"><property name="$_GET" fullname="$_GET" type="array" children="0" numchildren="0"></property><property name="$_POST" fullname="$_POST" type="array" children="0" numchildren="0"></property><property name="$_COOKIE" fullname="$_COOKIE" type="array" children="0" numchildren="0"></property><property name="$_FILES" fullname="$_FILES" type="array" children="0" numchildren="0"></property><property name="$argv" fullname="$argv" type="array" children="1" numchildren="1"></property><property name="$argc" fullname="$argc" type="int"><![CDATA[1]]></property><property name="$_ENV" fullname="$_ENV" type="array" children="%d" numchildren="%d"></property><property name="$_REQUEST" fullname="$_REQUEST" type="array" children="0" numchildren="0"></property><property name="$_SERVER" fullname="$_SERVER" type="array" children="1" numchildren="%d"></property><property name="$globalVar" fullname="$globalVar" type="uninitialized"></property></response>
+
+-> breakpoint_set -i 4 -t line -n 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" id="{{PID}}0001"></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug02126.inc" lineno="8"></xdebug:message></response>
+
+-> context_get -i 6 -c 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="6" context="1"><property name="$_GET" fullname="$_GET" type="array" children="0" numchildren="0"></property><property name="$_POST" fullname="$_POST" type="array" children="0" numchildren="0"></property><property name="$_COOKIE" fullname="$_COOKIE" type="array" children="0" numchildren="0"></property><property name="$_FILES" fullname="$_FILES" type="array" children="0" numchildren="0"></property><property name="$argv" fullname="$argv" type="array" children="1" numchildren="1"></property><property name="$argc" fullname="$argc" type="int"><![CDATA[1]]></property><property name="$_ENV" fullname="$_ENV" type="array" children="%d" numchildren="%d"></property><property name="$_REQUEST" fullname="$_REQUEST" type="array" children="0" numchildren="0"></property><property name="$_SERVER" fullname="$_SERVER" type="array" children="1" numchildren="%d"></property><property name="$globalVar" fullname="$globalVar" type="int"><![CDATA[42]]></property></response>
+
+-> feature_set -i 7 -n max_depth -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="7" feature="max_depth" success="1"></response>
+
+-> property_get -i 8 -c 1 -n $globalVar
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8"><property name="$globalVar" fullname="$globalVar" type="int"><![CDATA[42]]></property></response>
+
+-> property_get -i 9 -c 1 -n $argv
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="9"><property name="$argv" fullname="$argv" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="0" fullname="$argv[0]" type="string" size="%d" encoding="base64"><![CDATA[%s]]></property></property></response>
+
+-> detach -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="10" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02170-array-iterator.inc b/xdebug-3.4.5/tests/debugger/bug02170-array-iterator.inc
new file mode 100644
index 0000000..586d051
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02170-array-iterator.inc
@@ -0,0 +1,4 @@
+<?php
+$array = new ArrayIterator( [ 2, 13, 15, 17 ] );
+var_dump($array);
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug02170-array-iterator.phpt b/xdebug-3.4.5/tests/debugger/bug02170-array-iterator.phpt
new file mode 100644
index 0000000..c8b3ce4
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02170-array-iterator.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #2170: Support ArrayIterator
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug02170-array-iterator.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 3",
+	'run',
+	'property_get -n $array',
+	'property_get -n $array->storage',
+	'property_get -n $array->storage[2]',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02170-array-iterator.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug02170-array-iterator.inc -n 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug02170-array-iterator.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $array
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$array" fullname="$array" type="object" classname="ArrayIterator" children="1" numchildren="1" page="0" pagesize="32"><property name="storage" fullname="$array-&gt;storage" facet="private" type="array" children="1" numchildren="4"></property></property></response>
+
+-> property_get -i 4 -n $array->storage
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$array-&gt;storage" fullname="$array-&gt;storage" type="array" children="1" numchildren="4" page="0" pagesize="32"><property name="0" fullname="$array-&gt;storage[0]" type="int"><![CDATA[2]]></property><property name="1" fullname="$array-&gt;storage[1]" type="int"><![CDATA[13]]></property><property name="2" fullname="$array-&gt;storage[2]" type="int"><![CDATA[15]]></property><property name="3" fullname="$array-&gt;storage[3]" type="int"><![CDATA[17]]></property></property></response>
+
+-> property_get -i 5 -n $array->storage[2]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$array-&gt;storage[2]" fullname="$array-&gt;storage[2]" type="int"><![CDATA[15]]></property></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02172-spl-datastructures.inc b/xdebug-3.4.5/tests/debugger/bug02172-spl-datastructures.inc
new file mode 100644
index 0000000..e1c6b3d
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02172-spl-datastructures.inc
@@ -0,0 +1,15 @@
+<?php
+$dll = new SplDoublyLinkedList();
+$dll->push('a');
+$dll->push('b');
+$dll->push('c');
+$dll->push('d');
+
+$priorityQueue = new SplPriorityQueue();
+$priorityQueue->insert('A', 3);
+$priorityQueue->insert('B', 6);
+$priorityQueue->insert('C', 1);
+$priorityQueue->insert('D', 2);
+
+print_r($dll, $priorityQueue);
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug02172-spl-datastructures.phpt b/xdebug-3.4.5/tests/debugger/bug02172-spl-datastructures.phpt
new file mode 100644
index 0000000..9d48900
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02172-spl-datastructures.phpt
@@ -0,0 +1,75 @@
+--TEST--
+Test for bug #2172: Support SplDoublyLinkedList and SplPriorityQueue
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = realpath( dirname(__FILE__) . '/bug02172-spl-datastructures.inc' );
+
+$commands = array(
+	"breakpoint_set -t line -f file://{$filename} -n 14",
+	'run',
+	'property_get -n $dll',
+	'property_get -n $dll->dllist',
+	'property_get -n $dll->dllist[3]',
+	'property_get -n $priorityQueue',
+	'property_get -n $priorityQueue->heap',
+	'property_get -n $priorityQueue->heap[1]',
+	'property_get -n $priorityQueue->heap[1][\'data\']',
+	'property_get -n $priorityQueue->heap[1][\'priority\']',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02172-spl-datastructures.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> breakpoint_set -i 1 -t line -f file://bug02172-spl-datastructures.inc -n 14
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="{{PID}}0001"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug02172-spl-datastructures.inc" lineno="14"></xdebug:message></response>
+
+-> property_get -i 3 -n $dll
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$dll" fullname="$dll" type="object" classname="SplDoublyLinkedList" children="1" numchildren="2" page="0" pagesize="32"><property name="flags" fullname="$dll-&gt;flags" facet="private" type="int"><![CDATA[0]]></property><property name="dllist" fullname="$dll-&gt;dllist" facet="private" type="array" children="1" numchildren="4"></property></property></response>
+
+-> property_get -i 4 -n $dll->dllist
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$dll-&gt;dllist" fullname="$dll-&gt;dllist" type="array" children="1" numchildren="4" page="0" pagesize="32"><property name="0" fullname="$dll-&gt;dllist[0]" type="string" size="1" encoding="base64"><![CDATA[YQ==]]></property><property name="1" fullname="$dll-&gt;dllist[1]" type="string" size="1" encoding="base64"><![CDATA[Yg==]]></property><property name="2" fullname="$dll-&gt;dllist[2]" type="string" size="1" encoding="base64"><![CDATA[Yw==]]></property><property name="3" fullname="$dll-&gt;dllist[3]" type="string" size="1" encoding="base64"><![CDATA[ZA==]]></property></property></response>
+
+-> property_get -i 5 -n $dll->dllist[3]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$dll-&gt;dllist[3]" fullname="$dll-&gt;dllist[3]" type="string" size="1" encoding="base64"><![CDATA[ZA==]]></property></response>
+
+-> property_get -i 6 -n $priorityQueue
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$priorityQueue" fullname="$priorityQueue" type="object" classname="SplPriorityQueue" children="1" numchildren="3" page="0" pagesize="32"><property name="flags" fullname="$priorityQueue-&gt;flags" facet="private" type="int"><![CDATA[1]]></property><property name="isCorrupted" fullname="$priorityQueue-&gt;isCorrupted" facet="private" type="bool"><![CDATA[0]]></property><property name="heap" fullname="$priorityQueue-&gt;heap" facet="private" type="array" children="1" numchildren="4"></property></property></response>
+
+-> property_get -i 7 -n $priorityQueue->heap
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7"><property name="$priorityQueue-&gt;heap" fullname="$priorityQueue-&gt;heap" type="array" children="1" numchildren="4" page="0" pagesize="32"><property name="0" fullname="$priorityQueue-&gt;heap[0]" type="array" children="1" numchildren="2"></property><property name="1" fullname="$priorityQueue-&gt;heap[1]" type="array" children="1" numchildren="2"></property><property name="2" fullname="$priorityQueue-&gt;heap[2]" type="array" children="1" numchildren="2"></property><property name="3" fullname="$priorityQueue-&gt;heap[3]" type="array" children="1" numchildren="2"></property></property></response>
+
+-> property_get -i 8 -n $priorityQueue->heap[1]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8"><property name="$priorityQueue-&gt;heap[1]" fullname="$priorityQueue-&gt;heap[1]" type="array" children="1" numchildren="2" page="0" pagesize="32"><property name="data" fullname="$priorityQueue-&gt;heap[1][&quot;data&quot;]" type="string" size="1" encoding="base64"><![CDATA[QQ==]]></property><property name="priority" fullname="$priorityQueue-&gt;heap[1][&quot;priority&quot;]" type="int"><![CDATA[3]]></property></property></response>
+
+-> property_get -i 9 -n $priorityQueue->heap[1]['data']
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="9"><property name="$priorityQueue-&gt;heap[1][&#39;data&#39;]" fullname="$priorityQueue-&gt;heap[1][&#39;data&#39;]" type="string" size="1" encoding="base64"><![CDATA[QQ==]]></property></response>
+
+-> property_get -i 10 -n $priorityQueue->heap[1]['priority']
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="10"><property name="$priorityQueue-&gt;heap[1][&#39;priority&#39;]" fullname="$priorityQueue-&gt;heap[1][&#39;priority&#39;]" type="int"><![CDATA[3]]></property></response>
+
+-> detach -i 11
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="11" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02180.inc b/xdebug-3.4.5/tests/debugger/bug02180.inc
new file mode 100644
index 0000000..399fbdc
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02180.inc
@@ -0,0 +1,10 @@
+<?php
+
+class Foo extends SplFixedArray {}
+
+$foo = new Foo();
+$foo->setSize(7);
+var_dump($foo);
+$foo[3] = 'three';
+
+echo 123;
diff --git a/xdebug-3.4.5/tests/debugger/bug02180.phpt b/xdebug-3.4.5/tests/debugger/bug02180.phpt
new file mode 100644
index 0000000..ee6960e
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02180.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #2180: Crash with extended SplFixedArray
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02180.inc';
+
+$commands = array(
+	'step_into',
+	'step_into',
+	'step_into',
+	'context_get -c 0',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02180.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug02180.inc" lineno="5"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug02180.inc" lineno="6"></xdebug:message></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug02180.inc" lineno="7"></xdebug:message></response>
+
+-> context_get -i 4 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="$foo" fullname="$foo" type="object" classname="Foo" children="1" numchildren="7" page="0" pagesize="32"><property name="0" fullname="$foo-&gt;0" facet="public" type="null"></property><property name="1" fullname="$foo-&gt;1" facet="public" type="null"></property><property name="2" fullname="$foo-&gt;2" facet="public" type="null"></property><property name="3" fullname="$foo-&gt;3" facet="public" type="null"></property><property name="4" fullname="$foo-&gt;4" facet="public" type="null"></property><property name="5" fullname="$foo-&gt;5" facet="public" type="null"></property><property name="6" fullname="$foo-&gt;6" facet="public" type="null"></property></property></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02211-php82.phpt b/xdebug-3.4.5/tests/debugger/bug02211-php82.phpt
new file mode 100644
index 0000000..31d439f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02211-php82.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #2211: File wrapper gets wrong filename location in stack (< PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.4; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02211.inc';
+
+$commands = array(
+	'run',
+	'stack_get',
+	'source -f data://text/plain;base64,PD9waHAKcmV0dXJuIGZ1bmN0aW9uKCkgewp4ZGVidWdfYnJlYWsoKTsKfTs=',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands, array( 'allow_url_include' => '1' ) );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02211.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> run -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="1" status="break" reason="ok"><xdebug:message filename="data://text/plain;base64,PD9waHAKcmV0dXJuIGZ1bmN0aW9uKCkgewp4ZGVidWdfYnJlYWsoKTsKfTs=" lineno="4"></xdebug:message></response>
+
+-> stack_get -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="2"><stack where="{closure:data://text/plain;base64,PD9waHAKcmV0dXJuIGZ1bmN0aW9uKCkgewp4ZGVidWdfYnJlYWsoKTsKfTs=:2-4}" level="0" type="file" filename="data://text/plain;base64,PD9waHAKcmV0dXJuIGZ1bmN0aW9uKCkgewp4ZGVidWdfYnJlYWsoKTsKfTs=" lineno="4"></stack><stack where="{main}" level="1" type="file" filename="file://bug02211.inc" lineno="6"></stack></response>
+
+-> source -i 3 -f data://text/plain;base64,PD9waHAKcmV0dXJuIGZ1bmN0aW9uKCkgewp4ZGVidWdfYnJlYWsoKTsKfTs=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="source" transaction_id="3" encoding="base64"><![CDATA[PD9waHAKcmV0dXJuIGZ1bmN0aW9uKCkgewp4ZGVidWdfYnJlYWsoKTsKfTs=]]></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02211-php84.phpt b/xdebug-3.4.5/tests/debugger/bug02211-php84.phpt
new file mode 100644
index 0000000..8959cbb
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02211-php84.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #2211: File wrapper gets wrong filename location in stack (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02211.inc';
+
+$commands = array(
+	'run',
+	'stack_get',
+	'source -f data://text/plain;base64,PD9waHAKcmV0dXJuIGZ1bmN0aW9uKCkgewp4ZGVidWdfYnJlYWsoKTsKfTs=',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands, array( 'allow_url_include' => '1' ) );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02211.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> run -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="1" status="break" reason="ok"><xdebug:message filename="data://text/plain;base64,PD9waHAKcmV0dXJuIGZ1bmN0aW9uKCkgewp4ZGVidWdfYnJlYWsoKTsKfTs=" lineno="4"></xdebug:message></response>
+
+-> stack_get -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="2"><stack where="{closure:data://text/plain;base64,PD9waHAKcmV0dXJuIGZ1bmN0aW9uKCkgewp4ZGVidWdfYnJlYWsoKTsKfTs=:2-4}" level="0" type="file" filename="data://text/plain;base64,PD9waHAKcmV0dXJuIGZ1bmN0aW9uKCkgewp4ZGVidWdfYnJlYWsoKTsKfTs=" lineno="4"></stack><stack where="{main}" level="1" type="file" filename="file://bug02211.inc" lineno="6"></stack></response>
+
+-> source -i 3 -f data://text/plain;base64,PD9waHAKcmV0dXJuIGZ1bmN0aW9uKCkgewp4ZGVidWdfYnJlYWsoKTsKfTs=
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="source" transaction_id="3" encoding="base64"><![CDATA[PD9waHAKcmV0dXJuIGZ1bmN0aW9uKCkgewp4ZGVidWdfYnJlYWsoKTsKfTs=]]></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02211.inc b/xdebug-3.4.5/tests/debugger/bug02211.inc
new file mode 100644
index 0000000..44852e0
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02211.inc
@@ -0,0 +1,6 @@
+<?php
+
+$data = "data://text/plain;base64,".base64_encode("<"."?php\nreturn function() {\nxdebug_break();\n};");
+
+$f = include($data);
+$f();
diff --git a/xdebug-3.4.5/tests/debugger/bug02250.phpt b/xdebug-3.4.5/tests/debugger/bug02250.phpt
new file mode 100644
index 0000000..9bf3872
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02250.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Test for bug #2250: Multiple 'DEBUG SESSION ENDED' messages
+--INI--
+xdebug.mode=debug
+--GET--
+XDEBUG_SESSION_STOP_NO_EXEC=netbeans-xdebug
+--FILE--
+<?php
+xdebug_info();
+?>
+--EXPECT--
+DEBUG SESSION ENDED
diff --git a/xdebug-3.4.5/tests/debugger/bug02251.phpt b/xdebug-3.4.5/tests/debugger/bug02251.phpt
new file mode 100644
index 0000000..456f1b9
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02251.phpt
@@ -0,0 +1,19 @@
+--TEST--
+Test for bug #2251: xdebug.log setting not picked up from XDEBUG_CONFIG
+--ENV--
+XDEBUG_CONFIG=log={TMP}/{RUNID}{TEST_PHP_WORKER}bug02251.log
+--INI--
+xdebug.mode=debug,develop
+default_charset=utf-8
+xdebug.filename_format=
+xdebug.client_port=9172
+xdebug.start_with_request=yes
+xdebug.log=
+xdebug.log_level=10
+--FILE--
+<?php
+echo file_get_contents(sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'bug02251.log' );
+@unlink (sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'bug02251.log' );
+?>
+--EXPECTF--
+%A[Step Debug] %sTried: localhost:9172 (through xdebug.client_host/xdebug.client_port).
diff --git a/xdebug-3.4.5/tests/debugger/bug02261-001.phpt b/xdebug-3.4.5/tests/debugger/bug02261-001.phpt
new file mode 100644
index 0000000..1878473
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02261-001.phpt
@@ -0,0 +1,42 @@
+--TEST--
+Test for bug #2261: Control socket in init package (Control Socket with TSC)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; ext-flag control-socket; ext-flag tsc');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01949.inc';
+
+$commands = array(
+	'detach',
+);
+
+$xdebugLogFileName = sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'remote-log-2261-001.txt';
+@unlink( $xdebugLogFileName );
+
+dbgpRunFile( $filename, $commands, [ 'xdebug.log' => $xdebugLogFileName, 'xdebug.log_level' => 7, 'xdebug.control_socket' => 'time' ] );
+
+echo file_get_contents( $xdebugLogFileName );
+@unlink( $xdebugLogFileName );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01949.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" xdebug:ctrl_socket="xdebug-ctrl.%s"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> detach -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="1" status="stopping" reason="ok"></response>
+
+[%d] Log opened at %s
+[%d] [Config] INFO: Control socket set up successfully: '@xdebug-ctrl.%s'
+[%d] [Step Debug] INFO: Connecting to configured address/port: %s
+[%d] [Step Debug] INFO: Connected to debugging client: %s
+[%d] [Step Debug] -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" %s></init>
+
+[%d] [Step Debug] <- detach -i 1
+[%d] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="1" status="stopping" reason="ok"></response>
+
+[%d] Log closed at %s
diff --git a/xdebug-3.4.5/tests/debugger/bug02261-002.phpt b/xdebug-3.4.5/tests/debugger/bug02261-002.phpt
new file mode 100644
index 0000000..dec93e1
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02261-002.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Test for bug #2261: Control socket in init package (Control Socket without TSC)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; ext-flag control-socket; !ext-flag tsc');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug01949.inc';
+
+$commands = array(
+	'detach',
+);
+
+$xdebugLogFileName = sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'remote-log-2261-002.txt';
+@unlink( $xdebugLogFileName );
+
+dbgpRunFile( $filename, $commands, [ 'xdebug.log' => $xdebugLogFileName, 'xdebug.log_level' => 7, 'xdebug.control_socket' => 'time' ] );
+
+echo file_get_contents( $xdebugLogFileName );
+@unlink( $xdebugLogFileName );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug01949.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" xdebug:ctrl_socket="xdebug-ctrl.%s"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> detach -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="1" status="stopping" reason="ok"></response>
+
+[%d] Log opened at %s
+[%d] [Config] WARN: Due to unavailable TSC clock, setting poll granularity to 100ms instead of 25ms
+[%d] [Config] INFO: Control socket set up successfully: '@xdebug-ctrl.%s'
+[%d] [Step Debug] INFO: Connecting to configured address/port: %s
+[%d] [Step Debug] INFO: Connected to debugging client: %s
+[%d] [Step Debug] -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" %s></init>
+
+[%d] [Step Debug] <- detach -i 1
+[%d] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="1" status="stopping" reason="ok"></response>
+
+[%d] Log closed at %s
diff --git a/xdebug-3.4.5/tests/debugger/bug02305.phpt b/xdebug-3.4.5/tests/debugger/bug02305.phpt
new file mode 100644
index 0000000..30a26bd
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02305.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Test for bug #2305: Segfault when checking whether to ignore creating a debug connection during shutdown functions
+--INI--
+xdebug.discover_client_host=true
+xdebug.mode=debug
+xdebug.start_with_request=trigger
+--FILE--
+<?php
+register_shutdown_function(function () {});
+parse_str("", $_POST);
+?>
+--EXPECTF--
diff --git a/xdebug-3.4.5/tests/debugger/bug02314-001.inc b/xdebug-3.4.5/tests/debugger/bug02314-001.inc
new file mode 100644
index 0000000..c4624ab
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02314-001.inc
@@ -0,0 +1,33 @@
+<?php
+class Foo
+{
+    public string $time_string {
+        get {
+            return $this->date->format('H:i:s');
+        }
+    }
+
+    public function __construct(
+        public DateTime $date = new DateTime('1979-01-01 00:00:00') {
+            set (string|DateTime $value) {
+                if (is_string($value)) {
+                    $this->date = new DateTime($value);
+                } else {
+                    $this->date = $value;
+                }
+            }
+        }
+    )
+    {
+    }
+}
+
+$date = new DateTime('1980-01-01 00:00:00' );
+
+$foo = new Foo();
+var_dump($foo->date);
+$foo->date = '1970-01-01 12:34:56';
+var_dump($foo->date);
+echo $foo->time_string;
+echo '';
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug02314-001.phpt b/xdebug-3.4.5/tests/debugger/bug02314-001.phpt
new file mode 100644
index 0000000..fe539f9
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02314-001.phpt
@@ -0,0 +1,55 @@
+--TEST--
+Test for bug #2314: Class properties with hooks are always shown as null [1]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02314-001.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 30',
+	'run',
+	'context_get -c 0',
+	'property_get -c 0 -n $foo',
+	'property_get -c 0 -n $foo->date',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02314-001.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug02314-001.inc" lineno="%d"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 30
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug02314-001.inc" lineno="30"></xdebug:message></response>
+
+-> context_get -i 4 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="$date" fullname="$date" type="object" classname="DateTime" children="1" numchildren="3" page="0" pagesize="32"><property name="date" fullname="$date-&gt;date" facet="public" type="string" size="26" encoding="base64"><![CDATA[MTk4MC0wMS0wMSAwMDowMDowMC4wMDAwMDA=]]></property><property name="timezone_type" fullname="$date-&gt;timezone_type" facet="public" type="int"><![CDATA[3]]></property><property name="timezone" fullname="$date-&gt;timezone" facet="public" type="string" size="3" encoding="base64"><![CDATA[VVRD]]></property></property><property name="$foo" fullname="$foo" type="object" classname="Foo" children="1" numchildren="1" page="0" pagesize="32"><property name="date" fullname="$foo-&gt;date" facet="public" type="object" classname="DateTime" children="1" numchildren="3"></property></property></response>
+
+-> property_get -i 5 -c 0 -n $foo
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$foo" fullname="$foo" type="object" classname="Foo" children="1" numchildren="1" page="0" pagesize="32"><property name="date" fullname="$foo-&gt;date" facet="public" type="object" classname="DateTime" children="1" numchildren="3"></property></property></response>
+
+-> property_get -i 6 -c 0 -n $foo->date
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$foo-&gt;date" fullname="$foo-&gt;date" type="object" classname="DateTime" children="1" numchildren="3" page="0" pagesize="32"><property name="date" fullname="$foo-&gt;date-&gt;date" facet="public" type="string" size="26" encoding="base64"><![CDATA[MTk3MC0wMS0wMSAxMjozNDo1Ni4wMDAwMDA=]]></property><property name="timezone_type" fullname="$foo-&gt;date-&gt;timezone_type" facet="public" type="int"><![CDATA[3]]></property><property name="timezone" fullname="$foo-&gt;date-&gt;timezone" facet="public" type="string" size="3" encoding="base64"><![CDATA[VVRD]]></property></property></response>
+
+-> detach -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="7" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02314-002.inc b/xdebug-3.4.5/tests/debugger/bug02314-002.inc
new file mode 100644
index 0000000..c1c2197
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02314-002.inc
@@ -0,0 +1,36 @@
+<?php
+class Foo
+{
+    public string $time_string {
+        get {
+            return $this->date->format('H:i:s');
+        }
+    }
+
+    public function __construct(
+        private DateTime $date = new DateTime('1979-01-01 00:00:00') {
+            set (string|DateTime $value) {
+                if (is_string($value)) {
+                    $this->date = new DateTime($value);
+                } else {
+                    $this->date = $value;
+                }
+            }
+        }
+    )
+    {
+    }
+
+    function setNewDate( string|DateTime $date )
+    {
+        $this->date = $date;
+    }
+}
+
+$date = new DateTime('1980-01-01 00:00:00' );
+
+$foo = new Foo();
+$foo->setNewDate( '1970-01-01 12:34:56' );
+echo $foo->time_string;
+echo '';
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug02314-002.phpt b/xdebug-3.4.5/tests/debugger/bug02314-002.phpt
new file mode 100644
index 0000000..1fe23f8
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02314-002.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #2314: Class properties with hooks are always shown as null [2]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02314-002.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 34',
+	'run',
+	'context_get -c 0',
+	'property_get -c 0 -n $foo->date',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02314-002.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug02314-002.inc" lineno="%d"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 34
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug02314-002.inc" lineno="34"></xdebug:message></response>
+
+-> context_get -i 4 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="$date" fullname="$date" type="object" classname="DateTime" children="1" numchildren="3" page="0" pagesize="32"><property name="date" fullname="$date-&gt;date" facet="public" type="string" size="26" encoding="base64"><![CDATA[MTk4MC0wMS0wMSAwMDowMDowMC4wMDAwMDA=]]></property><property name="timezone_type" fullname="$date-&gt;timezone_type" facet="public" type="int"><![CDATA[3]]></property><property name="timezone" fullname="$date-&gt;timezone" facet="public" type="string" size="3" encoding="base64"><![CDATA[VVRD]]></property></property><property name="$foo" fullname="$foo" type="object" classname="Foo" children="1" numchildren="1" page="0" pagesize="32"><property name="date" fullname="$foo-&gt;date" facet="private" type="object" classname="DateTime" children="1" numchildren="3"></property></property></response>
+
+-> property_get -i 5 -c 0 -n $foo->date
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="$foo-&gt;date" fullname="$foo-&gt;date" type="object" classname="DateTime" children="1" numchildren="3" page="0" pagesize="32"><property name="date" fullname="$foo-&gt;date-&gt;date" facet="public" type="string" size="26" encoding="base64"><![CDATA[MTk3MC0wMS0wMSAxMjozNDo1Ni4wMDAwMDA=]]></property><property name="timezone_type" fullname="$foo-&gt;date-&gt;timezone_type" facet="public" type="int"><![CDATA[3]]></property><property name="timezone" fullname="$foo-&gt;date-&gt;timezone" facet="public" type="string" size="3" encoding="base64"><![CDATA[VVRD]]></property></property></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02322.phpt b/xdebug-3.4.5/tests/debugger/bug02322.phpt
new file mode 100644
index 0000000..96c1f7c
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02322.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test for bug #2322: Xdebug tries to open debugging connection in destructors during shutdown
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--INI--
+xdebug.mode=debug
+xdebug.start_with_request=yes
+xdebug.log=
+--FILE--
+<?php
+class Testing
+{
+	function __destruct() {
+		echo "Destruct\n";
+	}
+}
+
+$t = array();
+for ($i=0; $i<5; $i++) {
+	$t[] = new Testing();
+}
+?>
+--EXPECTF--
+Xdebug: [Step Debug] %sdebugging client%s
+Destruct
+Destruct
+Destruct
+Destruct
+Destruct
diff --git a/xdebug-3.4.5/tests/debugger/bug02326-php83.phpt b/xdebug-3.4.5/tests/debugger/bug02326-php83.phpt
new file mode 100644
index 0000000..8430668
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02326-php83.phpt
@@ -0,0 +1,81 @@
+--TEST--
+Test for bug #2326: Step debugger finishes if property debugging handler in PHP throws an exception (< PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.4; dbgp');
+?>
+--EXTENSIONS--
+dom
+xmlreader
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02326.inc';
+
+$commands = array(
+	'step_into',
+	'stdout -c 1',
+	'breakpoint_set -t line -n 12',
+	'run',
+	'context_get -c 0',
+	'step_over',
+	'context_get -c 0',
+	'step_into',
+	'context_get -c 0',
+	'step_into',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands, [ 'extension' => [ 'dom', 'xmlreader' ] ] );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02326.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug02326.inc" lineno="2"></xdebug:message></response>
+
+-> stdout -i 2 -c 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stdout" transaction_id="2" success="1"></response>
+
+-> breakpoint_set -i 3 -t line -n 12
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug02326.inc" lineno="12"></xdebug:message></response>
+
+-> context_get -i 5 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="5" context="0"><property name="$err" fullname="$err" type="uninitialized"></property><property name="$reader" fullname="$reader" type="null"></property></response>
+
+-> step_over -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://bug02326.inc" lineno="13"></xdebug:message></response>
+
+-> context_get -i 7 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="7" context="0"><property name="$err" fullname="$err" type="bool"><![CDATA[1]]></property><property name="$reader" fullname="$reader" type="object" classname="XMLReader" children="0" numchildren="0" page="0" pagesize="32"></property></response>
+
+-> step_into -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="8" status="break" reason="ok"><xdebug:message filename="file://bug02326.inc" lineno="17"></xdebug:message></response>
+
+-> context_get -i 9 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="9" context="0"><property name="$err" fullname="$err" type="bool"><![CDATA[1]]></property><property name="$reader" fullname="$reader" type="object" classname="XMLReader" children="0" numchildren="0" page="0" pagesize="32"></property></response>
+
+-> step_into -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<stream xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" type="stdout" encoding="base64"><![CDATA[TmV4dCBsaW5lMQ==]]></stream>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="10" status="break" reason="ok"><xdebug:message filename="file://bug02326.inc" lineno="18"></xdebug:message></response>
+
+-> detach -i 11
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="11" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02326-php84.phpt b/xdebug-3.4.5/tests/debugger/bug02326-php84.phpt
new file mode 100644
index 0000000..b148295
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02326-php84.phpt
@@ -0,0 +1,81 @@
+--TEST--
+Test for bug #2326: Step debugger finishes if property debugging handler in PHP throws an exception (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4; dbgp');
+?>
+--EXTENSIONS--
+dom
+xmlreader
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02326.inc';
+
+$commands = array(
+	'step_into',
+	'stdout -c 1',
+	'breakpoint_set -t line -n 12',
+	'run',
+	'context_get -c 0',
+	'step_over',
+	'context_get -c 0',
+	'step_into',
+	'context_get -c 0',
+	'step_into',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands, [ 'extension' => [ 'dom', 'xmlreader' ] ] );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02326.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug02326.inc" lineno="2"></xdebug:message></response>
+
+-> stdout -i 2 -c 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stdout" transaction_id="2" success="1"></response>
+
+-> breakpoint_set -i 3 -t line -n 12
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug02326.inc" lineno="12"></xdebug:message></response>
+
+-> context_get -i 5 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="5" context="0"><property name="$err" fullname="$err" type="uninitialized"></property><property name="$reader" fullname="$reader" type="null"></property></response>
+
+-> step_over -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://bug02326.inc" lineno="13"></xdebug:message></response>
+
+-> context_get -i 7 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="7" context="0"><property name="$err" fullname="$err" type="bool"><![CDATA[1]]></property><property name="$reader" fullname="$reader" type="object" classname="XMLReader" children="1" numchildren="13" page="0" pagesize="32"><property name="attributeCount" fullname="$reader-&gt;attributeCount" facet="public" type="int"><![CDATA[0]]></property><property name="baseURI" fullname="$reader-&gt;baseURI" facet="public" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="depth" fullname="$reader-&gt;depth" facet="public" type="int"><![CDATA[0]]></property><property name="hasAttributes" fullname="$reader-&gt;hasAttributes" facet="public" type="bool"><![CDATA[0]]></property><property name="hasValue" fullname="$reader-&gt;hasValue" facet="public" type="bool"><![CDATA[0]]></property><property name="isDefault" fullname="$reader-&gt;isDefault" facet="public" type="bool"><![CDATA[0]]></property><property name="localName" fullname="$reader-&gt;localName" facet="public" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="name" fullname="$reader-&gt;name" facet="public" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="namespaceURI" fullname="$reader-&gt;namespaceURI" facet="public" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="nodeType" fullname="$reader-&gt;nodeType" facet="public" type="int"><![CDATA[0]]></property><property name="prefix" fullname="$reader-&gt;prefix" facet="public" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="value" fullname="$reader-&gt;value" facet="public" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="xmlLang" fullname="$reader-&gt;xmlLang" facet="public" type="string" size="0" encoding="base64"><![CDATA[]]></property></property></response>
+
+-> step_into -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="8" status="break" reason="ok"><xdebug:message filename="file://bug02326.inc" lineno="17"></xdebug:message></response>
+
+-> context_get -i 9 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="9" context="0"><property name="$err" fullname="$err" type="bool"><![CDATA[1]]></property><property name="$reader" fullname="$reader" type="object" classname="XMLReader" children="1" numchildren="13" page="0" pagesize="32"><property name="attributeCount" fullname="$reader-&gt;attributeCount" facet="public" type="int"><![CDATA[0]]></property><property name="baseURI" fullname="$reader-&gt;baseURI" facet="public" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="depth" fullname="$reader-&gt;depth" facet="public" type="int"><![CDATA[0]]></property><property name="hasAttributes" fullname="$reader-&gt;hasAttributes" facet="public" type="bool"><![CDATA[0]]></property><property name="hasValue" fullname="$reader-&gt;hasValue" facet="public" type="bool"><![CDATA[0]]></property><property name="isDefault" fullname="$reader-&gt;isDefault" facet="public" type="bool"><![CDATA[0]]></property><property name="localName" fullname="$reader-&gt;localName" facet="public" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="name" fullname="$reader-&gt;name" facet="public" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="namespaceURI" fullname="$reader-&gt;namespaceURI" facet="public" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="nodeType" fullname="$reader-&gt;nodeType" facet="public" type="int"><![CDATA[0]]></property><property name="prefix" fullname="$reader-&gt;prefix" facet="public" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="value" fullname="$reader-&gt;value" facet="public" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="xmlLang" fullname="$reader-&gt;xmlLang" facet="public" type="string" size="0" encoding="base64"><![CDATA[]]></property></property></response>
+
+-> step_into -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<stream xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" type="stdout" encoding="base64"><![CDATA[TmV4dCBsaW5lMQ==]]></stream>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="10" status="break" reason="ok"><xdebug:message filename="file://bug02326.inc" lineno="18"></xdebug:message></response>
+
+-> detach -i 11
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="11" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02326.inc b/xdebug-3.4.5/tests/debugger/bug02326.inc
new file mode 100644
index 0000000..4175eaa
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02326.inc
@@ -0,0 +1,19 @@
+<?php
+$reader = null;
+function ReloadXmlFile($fname)
+{
+    global $reader;
+    $reader = new XMLReader();
+
+    $err = $reader->open($fname);
+    return $err;
+}
+
+$err = ReloadXmlFile(__DIR__ . "/bug02326.xml");
+if (!$err)
+{
+    echo ("error");
+}
+echo ("Next line1");
+echo ("Next line2");
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug02326.xml b/xdebug-3.4.5/tests/debugger/bug02326.xml
new file mode 100644
index 0000000..2775993
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02326.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<PurchaseOrder PurchaseOrderNumber="99503" OrderDate="1999-10-20">
+  <Address Type="Shipping">
+    <Name>Ellen Adams</Name>
+    <Street>123 Maple Street</Street>
+    <City>Mill Valley</City>
+    <State>CA</State>
+    <Zip>10999</Zip>
+    <Country>USA</Country>
+  </Address>
+  <Address Type="Billing">
+    <Name>Tai Yee</Name>
+    <Street>8 Oak Avenue</Street>
+    <City>Old Town</City>
+    <State>PA</State>
+    <Zip>95819</Zip>
+    <Country>USA</Country>
+  </Address>
+  <DeliveryNotes>Please leave packages in shed by driveway.</DeliveryNotes>
+  <Items>
+    <Item PartNumber="872-AA">
+      <ProductName>Lawnmower</ProductName>
+      <Quantity>1</Quantity>
+      <USPrice>148.95</USPrice>
+      <Comment>Confirm this is electric</Comment>
+    </Item>
+    <Item PartNumber="926-AA">
+      <ProductName>Baby Monitor</ProductName>
+      <Quantity>2</Quantity>
+      <USPrice>39.98</USPrice>
+      <ShipDate>1999-05-21</ShipDate>
+    </Item>
+  </Items>
+</PurchaseOrder>
\ No newline at end of file
diff --git a/xdebug-3.4.5/tests/debugger/bug02331.inc b/xdebug-3.4.5/tests/debugger/bug02331.inc
new file mode 100644
index 0000000..bb95abd
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02331.inc
@@ -0,0 +1,4 @@
+<?php
+$GLOBALS['->h'] = 5;
+echo(1);
+?>
diff --git a/xdebug-3.4.5/tests/debugger/bug02331.phpt b/xdebug-3.4.5/tests/debugger/bug02331.phpt
new file mode 100644
index 0000000..9543152
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02331.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #2331: Segmentation fault with 'invalid' variable names
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02331.inc';
+
+$commands = array(
+	'step_into',
+	'context_get -c 1',
+	'step_into',
+	'context_get -c 1',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02331.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug02331.inc" lineno="2"></xdebug:message></response>
+
+-> context_get -i 2 -c 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="2" context="1">%s</response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug02331.inc" lineno="3"></xdebug:message></response>
+
+-> context_get -i 4 -c 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="1">%s</response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02340.inc b/xdebug-3.4.5/tests/debugger/bug02340.inc
new file mode 100644
index 0000000..5736c2d
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02340.inc
@@ -0,0 +1,5 @@
+<?php
+$one = 1;
+$two = 2;
+$three = 3;
+$four = 4;
diff --git a/xdebug-3.4.5/tests/debugger/bug02340.phpt b/xdebug-3.4.5/tests/debugger/bug02340.phpt
new file mode 100644
index 0000000..723c504
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02340.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Test for bug #2340: Case-insensitive file name matches in line breakpoints
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02340.inc';
+$ucFilename = strtoupper($filename);
+
+$commands = array(
+	'feature_set -n breakpoint_include_return_value -v 1',
+	'step_into',
+	"breakpoint_set -t line -f file://{$ucFilename} -n 4",
+	'run',
+	'stack_get',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02340.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n breakpoint_include_return_value -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="breakpoint_include_return_value" success="1"></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://bug02340.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 3 -t line -f file://%sBUG02340.INC -n 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://bug02340.inc" lineno="4"></xdebug:message></response>
+
+-> stack_get -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="5"><stack where="{main}" level="0" type="file" filename="file://bug02340.inc" lineno="4"></stack></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02343.inc b/xdebug-3.4.5/tests/debugger/bug02343.inc
new file mode 100644
index 0000000..5ca7d9b
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02343.inc
@@ -0,0 +1,16 @@
+<?php
+$example = new class {
+	private string $name;
+
+	public function __construct() { }
+
+	public DateTimeImmutable $datetime {
+		get {
+			return new DateTimeImmutable();
+		}
+		set (mixed $void) {}
+	}
+};
+
+echo $example->datetime->format("c");
+echo "DONE\n";
diff --git a/xdebug-3.4.5/tests/debugger/bug02343.phpt b/xdebug-3.4.5/tests/debugger/bug02343.phpt
new file mode 100644
index 0000000..d21c9ee
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02343.phpt
@@ -0,0 +1,65 @@
+--TEST--
+Test for bug #2343: Virtual properties can not be shown safely
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02343.inc';
+
+$commands = array(
+	'feature_set -n extended_properties -v 1',
+	'feature_set -n max_depth -v 2',
+	"breakpoint_set -t line -f file://{$filename} -n 9",
+	'breakpoint_set -t exception -x *',
+	'run',
+	'context_get -c 0',
+	'step_into',
+	'context_get -c 0',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02343.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n extended_properties -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="extended_properties" success="1"></response>
+
+-> feature_set -i 2 -n max_depth -v 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_depth" success="1"></response>
+
+-> breakpoint_set -i 3 -t line -f file://bug02343.inc -n 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001"></response>
+
+-> breakpoint_set -i 4 -t exception -x *
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" id="{{PID}}0002"></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://bug02343.inc" lineno="9"></xdebug:message></response>
+
+-> context_get -i 6 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="6" context="0"><property type="object" children="0" numchildren="0" page="0" pagesize="32"><name encoding="base64"><![CDATA[JHRoaXM=]]></name><fullname encoding="base64"><![CDATA[JHRoaXM=]]></fullname><classname encoding="base64"><![CDATA[%s]]></classname></property></response>
+
+-> step_into -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://bug02343.inc" lineno="16"></xdebug:message></response>
+
+-> context_get -i 8 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="8" context="0"><property type="object" children="0" numchildren="0" page="0" pagesize="32"><name encoding="base64"><![CDATA[JGV4YW1wbGU=]]></name><fullname encoding="base64"><![CDATA[JGV4YW1wbGU=]]></fullname><classname encoding="base64"><![CDATA[%s]]></classname></property></response>
+
+-> detach -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="9" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/bug02348.inc b/xdebug-3.4.5/tests/debugger/bug02348.inc
new file mode 100644
index 0000000..5f248c4
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02348.inc
@@ -0,0 +1,13 @@
+<?php
+$example = new class {
+	public function __construct() {}
+
+	public DateTimeImmutable $datetime {
+		get {
+			return new DateTimeImmutable();
+		}
+		set (mixed $void) {}
+	}
+};
+
+echo $example->datetime->format("c");
diff --git a/xdebug-3.4.5/tests/debugger/bug02348.phpt b/xdebug-3.4.5/tests/debugger/bug02348.phpt
new file mode 100644
index 0000000..f9f17b0
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02348.phpt
@@ -0,0 +1,83 @@
+--TEST--
+Test for bug #2348: Breakpoints in property hooks are not resolved
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02348.inc';
+
+$commands = array(
+	'feature_set -n resolved_breakpoints -v 1',
+	"breakpoint_set -t line -f file://{$filename} -n 7",
+	'run',
+	'detach',
+);
+
+$xdebugLogFileName = sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'remote-log-2343.txt';
+@unlink( $xdebugLogFileName );
+
+dbgpRunFile( $filename, $commands, [ 'xdebug.log' => $xdebugLogFileName, 'xdebug.log_level' => 10 ] );
+
+echo file_get_contents( $xdebugLogFileName );
+@unlink( $xdebugLogFileName );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02348.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n resolved_breakpoints -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="resolved_breakpoints" success="1"></response>
+
+-> breakpoint_set -i 2 -t line -f file://bug02348.inc -n 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001" resolved="resolved"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug02348.inc" lineno="7"></xdebug:message></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
+
+[%d] Log opened at %s
+[%d] [Step Debug] INFO: Connecting to configured address/port: 127.0.0.1:%d.
+[%d] [Step Debug] INFO: Connected to debugging client: 127.0.0.1:%d (through xdebug.client_host/xdebug.client_port).
+[%d] [Step Debug] -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="%sbug02348.inc" language="PHP" xdebug:language_version="%s" protocol_version="1.0" appid="%d"><engine version="%s"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[%s]]></copyright></init>
+
+[%d] [Step Debug] <- feature_set -i 1 -n resolved_breakpoints -v 1
+[%d] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="resolved_breakpoints" success="1"></response>
+
+[%d] [Step Debug] <- breakpoint_set -i 2 -t line -f %sbug02348.inc -n 7
+[%d] [Step Debug] DEBUG: R: Line number (7) out of range (3-3).
+[%d] [Step Debug] DEBUG: R: Line number (7) out of range (9-9).
+[%d] [Step Debug] DEBUG: R: Line number (7) in smallest range of range (6-8).
+[%d] [Step Debug] DEBUG: F: Breakpoint line (7) found in set of executable lines.
+[%d] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="%d" resolved="resolved"></response>
+
+[%d] [Step Debug] <- run -i 3
+[%d] [Step Debug] DEBUG: Setting 'has_line_breakpoints on {main} (%sbug02348.inc:0)
+[%d] [Step Debug] DEBUG: Checking whether to break on %sbug02348.inc:7.
+[%d] [Step Debug] DEBUG: I: Current location: %sbug02348.inc:2.
+[%d] [Step Debug] DEBUG: I: Matching breakpoint '%sbug02348.inc:7' against location '%sbug02348.inc:2'.
+[%d] [Step Debug] DEBUG: R: Line number (2) doesn't match with breakpoint (7).
+[%d] [Step Debug] DEBUG: Checking whether to break on %sbug02348.inc:7.
+[%d] [Step Debug] DEBUG: I: Current location: %sbug02348.inc:13.
+[%d] [Step Debug] DEBUG: I: Matching breakpoint '%sbug02348.inc:7' against location '%sbug02348.inc:13'.
+[%d] [Step Debug] DEBUG: R: Line number (13) doesn't match with breakpoint (7).
+[%d] [Step Debug] DEBUG: Setting 'has_line_breakpoints on $datetime::get (%sbug02348.inc:13)
+[%d] [Step Debug] DEBUG: Checking whether to break on %sbug02348.inc:7.
+[%d] [Step Debug] DEBUG: I: Current location: %sbug02348.inc:7.
+[%d] [Step Debug] DEBUG: I: Matching breakpoint '%sbug02348.inc:7' against location '%sbug02348.inc:7'.
+[%d] [Step Debug] DEBUG: F: File names match (%sbug02348.inc).
+[%d] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="%sbug02348.inc" lineno="7"></xdebug:message></response>
+
+[%d] [Step Debug] <- detach -i 4
+[%d] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
+
+[%d] Log closed at %s
diff --git a/xdebug-3.4.5/tests/debugger/bug02356.inc b/xdebug-3.4.5/tests/debugger/bug02356.inc
new file mode 100644
index 0000000..44fbc62
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02356.inc
@@ -0,0 +1,39 @@
+<?php
+
+class TEEST {
+	public string $time_string {
+		get => date_create()->format('H:i:s');
+	}
+
+	public String $AAA = '' {
+		get {
+			if (str_contains($this->AAA, ':')) {
+				$Sub_Script_Depth = explode(':', $this->AAA)[1];
+				$Sub_Script_Depth = (int)$Sub_Script_Depth + 1;
+				$New_Script_Depth = explode(':', $this->AAA)[0] . ':' . $Sub_Script_Depth;
+				$this->AAA = $New_Script_Depth;
+				return $this->AAA;
+			} else {
+				$this->AAA .= ':0';
+			}
+			return $this->AAA;
+		}
+		set (String $value) {
+			$this->AAA = $value;
+		}
+	}
+
+	public function __construct()
+	{
+		$this->main();
+	}
+
+	public function main()
+	{
+		$this->AAA = 'Hello World.';
+		$fff = $this->AAA;
+		echo $fff;
+	}
+}
+
+$aaa = new TEEST();
diff --git a/xdebug-3.4.5/tests/debugger/bug02356.phpt b/xdebug-3.4.5/tests/debugger/bug02356.phpt
new file mode 100644
index 0000000..ecffa51
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/bug02356.phpt
@@ -0,0 +1,55 @@
+--TEST--
+Test for bug #2356: Reading properties with get hooks may modify property value
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/bug02356.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 28',
+	'run',
+	'context_get -c 0',
+	'context_get -c 0',
+	'context_get -c 0',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://bug02356.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://bug02356.inc" lineno="%d"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 28
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://bug02356.inc" lineno="28"></xdebug:message></response>
+
+-> context_get -i 4 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="$this" fullname="$this" type="object" classname="TEEST" children="1" numchildren="1" page="0" pagesize="32"><property name="AAA" fullname="$this-&gt;AAA" facet="public" type="string" size="0" encoding="base64"><![CDATA[]]></property></property></response>
+
+-> context_get -i 5 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="5" context="0"><property name="$this" fullname="$this" type="object" classname="TEEST" children="1" numchildren="1" page="0" pagesize="32"><property name="AAA" fullname="$this-&gt;AAA" facet="public" type="string" size="0" encoding="base64"><![CDATA[]]></property></property></response>
+
+-> context_get -i 6 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="6" context="0"><property name="$this" fullname="$this" type="object" classname="TEEST" children="1" numchildren="1" page="0" pagesize="32"><property name="AAA" fullname="$this-&gt;AAA" facet="public" type="string" size="0" encoding="base64"><![CDATA[]]></property></property></response>
+
+-> detach -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="7" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-call-function.inc b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-call-function.inc
new file mode 100644
index 0000000..f12b505
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-call-function.inc
@@ -0,0 +1,14 @@
+<?php
+function breakOnMe()
+{
+	echo "break in the breakOnMe function\n";
+}
+
+breakOnMe();
+
+$array = range( 0, 7 );
+$array = array_reverse( $array );
+
+array_push( $array, 42 );
+$array = array_reverse( $array );
+?>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-call-function.phpt b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-call-function.phpt
new file mode 100644
index 0000000..dc796cc
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-call-function.phpt
@@ -0,0 +1,55 @@
+--TEST--
+DBGP: call breakpoints
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/dbgp-breakpoint-call-function.inc';
+
+$commands = array(
+	'feature_set -n breakpoint_details -v 1',
+	'breakpoint_set -t call -m breakOnMe',
+	'breakpoint_set -t call -m array_reverse',
+	'run',
+	'run',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://dbgp-breakpoint-call-function.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n breakpoint_details -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="breakpoint_details" success="1"></response>
+
+-> breakpoint_set -i 2 -t call -m breakOnMe
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> breakpoint_set -i 3 -t call -m array_reverse
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0002"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-call-function.inc" lineno="4"></xdebug:message><breakpoint type="call" function="breakOnMe" state="enabled" hit_count="1" hit_value="0" id="{{PID}}0001"></breakpoint></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-call-function.inc" lineno="10"></xdebug:message><breakpoint type="call" function="array_reverse" state="enabled" hit_count="1" hit_value="0" id="{{PID}}0002"></breakpoint></response>
+
+-> run -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-call-function.inc" lineno="13"></xdebug:message><breakpoint type="call" function="array_reverse" state="enabled" hit_count="2" hit_value="0" id="{{PID}}0002"></breakpoint></response>
+
+-> detach -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="7" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-call-method.inc b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-call-method.inc
new file mode 100644
index 0000000..f210843
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-call-method.inc
@@ -0,0 +1,21 @@
+<?php
+class breaking
+{
+	function onMe()
+	{
+		echo "break in the onMe method\n";
+	}
+
+	static function staticMe()
+	{
+		echo "break in the staticMe method\n";
+	}
+}
+
+breaking::staticMe();
+
+$a = new breaking;
+$a->onMe();
+$a->staticMe();
+$a->onMe();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-call-method.phpt b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-call-method.phpt
new file mode 100644
index 0000000..0ddffe4
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-call-method.phpt
@@ -0,0 +1,60 @@
+--TEST--
+DBGP: call breakpoints with method
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/dbgp-breakpoint-call-method.inc';
+
+$commands = array(
+	'feature_set -n breakpoint_details -v 1',
+	'breakpoint_set -t call -m breaking::staticMe',
+	'breakpoint_set -t call -m breaking::onMe',
+	'run',
+	'run',
+	'run',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://dbgp-breakpoint-call-method.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n breakpoint_details -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="breakpoint_details" success="1"></response>
+
+-> breakpoint_set -i 2 -t call -m breaking::staticMe
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> breakpoint_set -i 3 -t call -m breaking::onMe
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0002"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-call-method.inc" lineno="11"></xdebug:message><breakpoint type="call" function="breaking::staticMe" state="enabled" hit_count="1" hit_value="0" id="{{PID}}0001"></breakpoint></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-call-method.inc" lineno="6"></xdebug:message><breakpoint type="call" function="breaking::onMe" state="enabled" hit_count="1" hit_value="0" id="{{PID}}0002"></breakpoint></response>
+
+-> run -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-call-method.inc" lineno="11"></xdebug:message><breakpoint type="call" function="breaking::staticMe" state="enabled" hit_count="2" hit_value="0" id="{{PID}}0001"></breakpoint></response>
+
+-> run -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-call-method.inc" lineno="6"></xdebug:message><breakpoint type="call" function="breaking::onMe" state="enabled" hit_count="2" hit_value="0" id="{{PID}}0002"></breakpoint></response>
+
+-> detach -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="8" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-error.inc b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-error.inc
new file mode 100644
index 0000000..0d1abdb
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-error.inc
@@ -0,0 +1,11 @@
+<?php
+error_reporting(E_ALL);
+
+trigger_error("FOO");
+
+class FooException extends Exception
+{
+}
+
+throw new FooException("testing foo exception");
+?>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-error.phpt b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-error.phpt
new file mode 100644
index 0000000..018db8e
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-error.phpt
@@ -0,0 +1,50 @@
+--TEST--
+DBGP: breakpoints on errors
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/dbgp-breakpoint-error.inc';
+
+$commands = array(
+	'feature_set -n breakpoint_details -v 1',
+	'step_into',
+	'breakpoint_set -t exception -x *',
+	'run',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://dbgp-breakpoint-error.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n breakpoint_details -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="breakpoint_details" success="1"></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-error.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 3 -t exception -x *
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-error.inc" lineno="4" exception="Notice" code="1024"><![CDATA[FOO]]></xdebug:message><breakpoint type="exception" exception="*" state="enabled" hit_count="1" hit_value="0" id="{{PID}}0001"></breakpoint></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-error.inc" lineno="10" exception="FooException"><![CDATA[testing foo exception]]></xdebug:message><breakpoint type="exception" exception="*" state="enabled" hit_count="2" hit_value="0" id="{{PID}}0001"></breakpoint></response>
+
+-> detach -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="6" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-line-with-condition.inc b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-line-with-condition.inc
new file mode 100644
index 0000000..5155248
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-line-with-condition.inc
@@ -0,0 +1,10 @@
+<?php
+function breakWithCondition(int $chance)
+{
+	echo "Chance = {$chance}\n";
+}
+
+breakWithCondition(1);
+breakWithCondition(42);
+breakWithCondition(100);
+?>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-line-with-condition.phpt b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-line-with-condition.phpt
new file mode 100644
index 0000000..def3d86
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-line-with-condition.phpt
@@ -0,0 +1,55 @@
+--TEST--
+DBGP: line breakpoint
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/dbgp-breakpoint-line-with-condition.inc';
+
+$commands = array(
+	'feature_set -n breakpoint_details -v 1',
+	'step_into',
+	'breakpoint_set -t conditional -n 4 -- ' . base64_encode('$chance > 40'),
+	'run',
+	'run',
+	'step_into',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://dbgp-breakpoint-line-with-condition.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n breakpoint_details -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="breakpoint_details" success="1"></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-line-with-condition.inc" lineno="%r(2|7)%r"></xdebug:message></response>
+
+-> breakpoint_set -i 3 -t conditional -n 4 -- JGNoYW5jZSA+IDQw
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-line-with-condition.inc" lineno="4"></xdebug:message><breakpoint type="conditional" filename="file://dbgp-breakpoint-line-with-condition.inc" lineno="4" state="enabled" hit_count="1" hit_value="0" id="{{PID}}0001"><expression encoding="base64"><![CDATA[JGNoYW5jZSA+IDQw]]></expression></breakpoint></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-line-with-condition.inc" lineno="4"></xdebug:message><breakpoint type="conditional" filename="file://dbgp-breakpoint-line-with-condition.inc" lineno="4" state="enabled" hit_count="2" hit_value="0" id="{{PID}}0001"><expression encoding="base64"><![CDATA[JGNoYW5jZSA+IDQw]]></expression></breakpoint></response>
+
+-> step_into -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-line-with-condition.inc" lineno="5"></xdebug:message></response>
+
+-> detach -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="7" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-line.inc b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-line.inc
new file mode 100644
index 0000000..c71ee04
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-line.inc
@@ -0,0 +1,4 @@
+<?php
+define("YES", M_PI); $NO = 42;
+echo "hi\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-line.phpt b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-line.phpt
new file mode 100644
index 0000000..8c92703
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-line.phpt
@@ -0,0 +1,45 @@
+--TEST--
+DBGP: line breakpoint
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/dbgp-breakpoint-line.inc';
+
+$commands = array(
+	'feature_set -n breakpoint_details -v 1',
+	'step_into',
+	'breakpoint_set -t line -n 3',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://dbgp-breakpoint-line.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n breakpoint_details -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="breakpoint_details" success="1"></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-line.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 3 -t line -n 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-line.inc" lineno="3"></xdebug:message><breakpoint type="line" filename="file://dbgp-breakpoint-line.inc" lineno="3" state="enabled" hit_count="1" hit_value="0" id="{{PID}}0001"></breakpoint></response>
+
+-> detach -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="5" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-001.phpt b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-001.phpt
new file mode 100644
index 0000000..10ae067
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-001.phpt
@@ -0,0 +1,55 @@
+--TEST--
+DBGP: return breakpoints
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/dbgp-breakpoint-call-function.inc';
+
+$commands = array(
+	'feature_set -n breakpoint_details -v 1',
+	'breakpoint_set -t return -m breakOnMe',
+	'breakpoint_set -t return -m array_reverse',
+	'run',
+	'run',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://dbgp-breakpoint-call-function.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n breakpoint_details -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="breakpoint_details" success="1"></response>
+
+-> breakpoint_set -i 2 -t return -m breakOnMe
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> breakpoint_set -i 3 -t return -m array_reverse
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0002"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-call-function.inc" lineno="7"></xdebug:message><breakpoint type="return" function="breakOnMe" state="enabled" hit_count="1" hit_value="0" id="{{PID}}0001"></breakpoint></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-call-function.inc" lineno="10"></xdebug:message><breakpoint type="return" function="array_reverse" state="enabled" hit_count="1" hit_value="0" id="{{PID}}0002"></breakpoint></response>
+
+-> run -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-call-function.inc" lineno="13"></xdebug:message><breakpoint type="return" function="array_reverse" state="enabled" hit_count="2" hit_value="0" id="{{PID}}0002"></breakpoint></response>
+
+-> detach -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="7" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-002.phpt b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-002.phpt
new file mode 100644
index 0000000..82c8dcf
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-002.phpt
@@ -0,0 +1,60 @@
+--TEST--
+DBGP: return breakpoints with return value
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/dbgp-breakpoint-call-function.inc';
+
+$commands = array(
+	'feature_set -n breakpoint_details -v 1',
+	'feature_set -n breakpoint_include_return_value -v 1',
+	'breakpoint_set -t return -m breakOnMe',
+	'breakpoint_set -t return -m array_reverse',
+	'run',
+	'run',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://dbgp-breakpoint-call-function.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n breakpoint_details -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="breakpoint_details" success="1"></response>
+
+-> feature_set -i 2 -n breakpoint_include_return_value -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="breakpoint_include_return_value" success="1"></response>
+
+-> breakpoint_set -i 3 -t return -m breakOnMe
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001"></response>
+
+-> breakpoint_set -i 4 -t return -m array_reverse
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" id="{{PID}}0002"></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-call-function.inc" lineno="7"></xdebug:message><breakpoint type="return" function="breakOnMe" state="enabled" hit_count="1" hit_value="0" id="{{PID}}0001"></breakpoint></response>
+
+-> run -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-call-function.inc" lineno="10"></xdebug:message><xdebug:return_value><property type="array" children="1" numchildren="8" page="0" pagesize="32"><property name="0" type="int"><![CDATA[7]]></property><property name="1" type="int"><![CDATA[6]]></property><property name="2" type="int"><![CDATA[5]]></property><property name="3" type="int"><![CDATA[4]]></property><property name="4" type="int"><![CDATA[3]]></property><property name="5" type="int"><![CDATA[2]]></property><property name="6" type="int"><![CDATA[1]]></property><property name="7" type="int"><![CDATA[0]]></property></property></xdebug:return_value><breakpoint type="return" function="array_reverse" state="enabled" hit_count="1" hit_value="0" id="{{PID}}0002"></breakpoint></response>
+
+-> run -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-call-function.inc" lineno="13"></xdebug:message><xdebug:return_value><property type="array" children="1" numchildren="9" page="0" pagesize="32"><property name="0" type="int"><![CDATA[42]]></property><property name="1" type="int"><![CDATA[0]]></property><property name="2" type="int"><![CDATA[1]]></property><property name="3" type="int"><![CDATA[2]]></property><property name="4" type="int"><![CDATA[3]]></property><property name="5" type="int"><![CDATA[4]]></property><property name="6" type="int"><![CDATA[5]]></property><property name="7" type="int"><![CDATA[6]]></property><property name="8" type="int"><![CDATA[7]]></property></property></xdebug:return_value><breakpoint type="return" function="array_reverse" state="enabled" hit_count="2" hit_value="0" id="{{PID}}0002"></breakpoint></response>
+
+-> detach -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="8" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-003.inc b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-003.inc
new file mode 100644
index 0000000..7576f60
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-003.inc
@@ -0,0 +1,28 @@
+<?php
+class Foo
+{
+	public $x;
+	public $y;
+
+	public function __construct($x, $y)
+	{
+		$this->x = $x;
+		$this->y = $y;
+	}
+
+	public function product()
+	{
+		$ocean = 'yes';
+		return $this->x * $this->y;
+	}
+}
+
+function breakOnMe()
+{
+	return new Foo(42, 2.7);
+}
+
+$foo = breakOnMe();
+
+echo $foo->product(), "\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-003.phpt b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-003.phpt
new file mode 100644
index 0000000..9a6d075
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-003.phpt
@@ -0,0 +1,65 @@
+--TEST--
+DBGP: return breakpoints with userland return value
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/dbgp-breakpoint-return-function-003.inc';
+
+$commands = array(
+	'feature_set -n breakpoint_details -v 1',
+	'feature_set -n breakpoint_include_return_value -v 1',
+	'breakpoint_set -t return -m breakOnMe',
+	'breakpoint_set -t return -m __construct -a Foo',
+	'breakpoint_set -t return -m product -a Foo',
+	'run',
+	'run',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://dbgp-breakpoint-return-function-003.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n breakpoint_details -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="breakpoint_details" success="1"></response>
+
+-> feature_set -i 2 -n breakpoint_include_return_value -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="breakpoint_include_return_value" success="1"></response>
+
+-> breakpoint_set -i 3 -t return -m breakOnMe
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001"></response>
+
+-> breakpoint_set -i 4 -t return -m __construct -a Foo
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" id="{{PID}}0002"></response>
+
+-> breakpoint_set -i 5 -t return -m product -a Foo
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="5" id="{{PID}}0003"></response>
+
+-> run -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-003.inc" lineno="22"></xdebug:message><breakpoint type="return" function="__construct" class="Foo" state="enabled" hit_count="1" hit_value="0" id="{{PID}}0002"></breakpoint></response>
+
+-> run -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-003.inc" lineno="25"></xdebug:message><xdebug:return_value><property type="object" classname="Foo" children="1" numchildren="2" page="0" pagesize="32"><property name="x" facet="public" type="int"><![CDATA[42]]></property><property name="y" facet="public" type="float"><![CDATA[2.7]]></property></property></xdebug:return_value><breakpoint type="return" function="breakOnMe" state="enabled" hit_count="1" hit_value="0" id="{{PID}}0001"></breakpoint></response>
+
+-> run -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="8" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-003.inc" lineno="27"></xdebug:message><xdebug:return_value><property type="float"><![CDATA[113.4]]></property></xdebug:return_value><breakpoint type="return" function="product" class="Foo" state="enabled" hit_count="1" hit_value="0" id="{{PID}}0003"></breakpoint></response>
+
+-> detach -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="9" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-004.phpt b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-004.phpt
new file mode 100644
index 0000000..5d997cb
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-004.phpt
@@ -0,0 +1,125 @@
+--TEST--
+DBGP: return value in specially stepped context
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 7.4; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/dbgp-breakpoint-return-function-003.inc';
+
+$commands = array(
+	'feature_set -n breakpoint_details -v 1',
+	'feature_set -n breakpoint_include_return_value -v 1',
+	'step_into',
+	'step_into',
+	'step_into',
+	'step_into',
+	'step_into',
+	'step_into',
+	'context_get',
+	'context_get -d 1',
+	'property_get -n $__RETURN_VALUE',
+	'property_get -n $__RETURN_VALUE->x',
+	'step_into',
+	'step_into',
+	'step_into',
+	'context_get',
+	'step_into',
+	'context_get',
+	'context_get -d 1',
+	'property_get -n $__RETURN_VALUE',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://dbgp-breakpoint-return-function-003.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n breakpoint_details -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="breakpoint_details" success="1"></response>
+
+-> feature_set -i 2 -n breakpoint_include_return_value -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="breakpoint_include_return_value" success="1"></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-003.inc" lineno="25"></xdebug:message></response>
+
+-> step_into -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-003.inc" lineno="22"></xdebug:message></response>
+
+-> step_into -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-003.inc" lineno="9"></xdebug:message></response>
+
+-> step_into -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-003.inc" lineno="10"></xdebug:message></response>
+
+-> step_into -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-003.inc" lineno="11"></xdebug:message></response>
+
+-> step_into -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="8" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-003.inc" lineno="25"></xdebug:message><xdebug:return_value><property type="object" classname="Foo" children="1" numchildren="2" page="0" pagesize="32"><property name="x" facet="public" type="int"><![CDATA[42]]></property><property name="y" facet="public" type="float"><![CDATA[2.7]]></property></property></xdebug:return_value></response>
+
+-> context_get -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="9" context="0"><property name="$__RETURN_VALUE" fullname="$__RETURN_VALUE" type="object" classname="Foo" children="1" numchildren="2" page="0" pagesize="32" facet="readonly return_value virtual"><property name="x" fullname="$__RETURN_VALUE-&gt;x" facet="public" type="int"><![CDATA[42]]></property><property name="y" fullname="$__RETURN_VALUE-&gt;y" facet="public" type="float"><![CDATA[2.7]]></property></property></response>
+
+-> context_get -i 10 -d 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="10" context="0"><property name="$foo" fullname="$foo" type="uninitialized"></property></response>
+
+-> property_get -i 11 -n $__RETURN_VALUE
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="11"><property name="$__RETURN_VALUE" fullname="$__RETURN_VALUE" type="object" classname="Foo" children="1" numchildren="2" page="0" pagesize="32"><property name="x" fullname="$__RETURN_VALUE-&gt;x" facet="public" type="int"><![CDATA[42]]></property><property name="y" fullname="$__RETURN_VALUE-&gt;y" facet="public" type="float"><![CDATA[2.7]]></property></property></response>
+
+-> property_get -i 12 -n $__RETURN_VALUE->x
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="12"><property name="$__RETURN_VALUE-&gt;x" fullname="$__RETURN_VALUE-&gt;x" type="int"><![CDATA[42]]></property></response>
+
+-> step_into -i 13
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="13" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-003.inc" lineno="27"></xdebug:message></response>
+
+-> step_into -i 14
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="14" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-003.inc" lineno="15"></xdebug:message></response>
+
+-> step_into -i 15
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="15" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-003.inc" lineno="16"></xdebug:message></response>
+
+-> context_get -i 16
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="16" context="0"><property name="$ocean" fullname="$ocean" type="string" size="3" encoding="base64"><![CDATA[eWVz]]></property><property name="$this" fullname="$this" type="object" classname="Foo" children="1" numchildren="2" page="0" pagesize="32"><property name="x" fullname="$this-&gt;x" facet="public" type="int"><![CDATA[42]]></property><property name="y" fullname="$this-&gt;y" facet="public" type="float"><![CDATA[2.7]]></property></property></response>
+
+-> step_into -i 17
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="17" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-003.inc" lineno="27"></xdebug:message><xdebug:return_value><property type="float"><![CDATA[113.4]]></property></xdebug:return_value></response>
+
+-> context_get -i 18
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="18" context="0"><property name="$__RETURN_VALUE" fullname="$__RETURN_VALUE" type="float" facet="readonly return_value virtual"><![CDATA[113.4]]></property></response>
+
+-> context_get -i 19 -d 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="19" context="0"><property name="$foo" fullname="$foo" type="object" classname="Foo" children="1" numchildren="2" page="0" pagesize="32"><property name="x" fullname="$foo-&gt;x" facet="public" type="int"><![CDATA[42]]></property><property name="y" fullname="$foo-&gt;y" facet="public" type="float"><![CDATA[2.7]]></property></property></response>
+
+-> property_get -i 20 -n $__RETURN_VALUE
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="20"><property name="$__RETURN_VALUE" fullname="$__RETURN_VALUE" type="float"><![CDATA[113.4]]></property></response>
+
+-> detach -i 21
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="21" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-005.phpt b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-005.phpt
new file mode 100644
index 0000000..68d1422
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-005.phpt
@@ -0,0 +1,105 @@
+--TEST--
+DBGP: return value with 'step_out'
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 7.4; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/dbgp-breakpoint-return-function-003.inc';
+
+$commands = array(
+	'feature_set -n breakpoint_details -v 1',
+	'feature_set -n breakpoint_include_return_value -v 1',
+	'step_into',
+	'step_into',
+	'step_out',
+	'context_get',
+	'context_get -d 1',
+	'property_get -n $__RETURN_VALUE',
+	'property_get -n $__RETURN_VALUE->x',
+	'step_into',
+	'step_into',
+	'step_out',
+	'context_get',
+	'context_get -d 1',
+	'property_get -n $__RETURN_VALUE',
+	'property_get -n $__RETURN_VALUE->x',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://dbgp-breakpoint-return-function-003.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n breakpoint_details -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="breakpoint_details" success="1"></response>
+
+-> feature_set -i 2 -n breakpoint_include_return_value -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="breakpoint_include_return_value" success="1"></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-003.inc" lineno="25"></xdebug:message></response>
+
+-> step_into -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-003.inc" lineno="22"></xdebug:message></response>
+
+-> step_out -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_out" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-003.inc" lineno="25"></xdebug:message><xdebug:return_value><property type="object" classname="Foo" children="1" numchildren="2" page="0" pagesize="32"><property name="x" facet="public" type="int"><![CDATA[42]]></property><property name="y" facet="public" type="float"><![CDATA[2.7]]></property></property></xdebug:return_value></response>
+
+-> context_get -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="6" context="0"><property name="$__RETURN_VALUE" fullname="$__RETURN_VALUE" type="object" classname="Foo" children="1" numchildren="2" page="0" pagesize="32" facet="readonly return_value virtual"><property name="x" fullname="$__RETURN_VALUE-&gt;x" facet="public" type="int"><![CDATA[42]]></property><property name="y" fullname="$__RETURN_VALUE-&gt;y" facet="public" type="float"><![CDATA[2.7]]></property></property></response>
+
+-> context_get -i 7 -d 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="7" context="0"><property name="$foo" fullname="$foo" type="uninitialized"></property></response>
+
+-> property_get -i 8 -n $__RETURN_VALUE
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8"><property name="$__RETURN_VALUE" fullname="$__RETURN_VALUE" type="object" classname="Foo" children="1" numchildren="2" page="0" pagesize="32"><property name="x" fullname="$__RETURN_VALUE-&gt;x" facet="public" type="int"><![CDATA[42]]></property><property name="y" fullname="$__RETURN_VALUE-&gt;y" facet="public" type="float"><![CDATA[2.7]]></property></property></response>
+
+-> property_get -i 9 -n $__RETURN_VALUE->x
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="9"><property name="$__RETURN_VALUE-&gt;x" fullname="$__RETURN_VALUE-&gt;x" type="int"><![CDATA[42]]></property></response>
+
+-> step_into -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="10" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-003.inc" lineno="27"></xdebug:message></response>
+
+-> step_into -i 11
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="11" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-003.inc" lineno="15"></xdebug:message></response>
+
+-> step_out -i 12
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_out" transaction_id="12" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-003.inc" lineno="27"></xdebug:message><xdebug:return_value><property type="float"><![CDATA[113.4]]></property></xdebug:return_value></response>
+
+-> context_get -i 13
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="13" context="0"><property name="$__RETURN_VALUE" fullname="$__RETURN_VALUE" type="float" facet="readonly return_value virtual"><![CDATA[113.4]]></property></response>
+
+-> context_get -i 14 -d 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="14" context="0"><property name="$foo" fullname="$foo" type="object" classname="Foo" children="1" numchildren="2" page="0" pagesize="32"><property name="x" fullname="$foo-&gt;x" facet="public" type="int"><![CDATA[42]]></property><property name="y" fullname="$foo-&gt;y" facet="public" type="float"><![CDATA[2.7]]></property></property></response>
+
+-> property_get -i 15 -n $__RETURN_VALUE
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="15"><property name="$__RETURN_VALUE" fullname="$__RETURN_VALUE" type="float"><![CDATA[113.4]]></property></response>
+
+-> property_get -i 16 -n $__RETURN_VALUE->x
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="16" status="break" reason="ok"><error code="300"><message><![CDATA[can not get property]]></message></error></response>
+
+-> detach -i 17
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="17" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-006.inc b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-006.inc
new file mode 100644
index 0000000..d6e48fc
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-006.inc
@@ -0,0 +1,15 @@
+<?php
+function stackMe($e)
+{
+	return array_reverse(xdebug_get_function_stack( ['from_exception' => $e ]));
+}
+
+function breakOnMe()
+{
+	throw new Exception("Bite Me");
+}
+
+set_exception_handler('stackMe');
+
+$foo = breakOnMe();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-006.phpt b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-006.phpt
new file mode 100644
index 0000000..80ca148
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-function-006.phpt
@@ -0,0 +1,105 @@
+--TEST--
+DBGP: return value with internal function as top frame
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 7.4; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/dbgp-breakpoint-return-function-006.inc';
+
+$commands = array(
+	'feature_set -n breakpoint_details -v 1',
+	'feature_set -n breakpoint_include_return_value -v 1',
+	'step_into',
+	'step_into',
+	'step_into',
+	'step_into',
+	'step_into',
+	'step_into',
+	'step_into',
+	'context_get',
+	'property_get -n $__RETURN_VALUE',
+	'property_get -n $__RETURN_VALUE[1]',
+	'property_get -n $__RETURN_VALUE[1]["time"]',
+	'property_value -n $__RETURN_VALUE',
+	'property_value -n $__RETURN_VALUE[1]',
+	'property_value -n $__RETURN_VALUE[1]["time"]',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands, [ 'xdebug.mode' => 'develop,debug' ] );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://dbgp-breakpoint-return-function-006.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n breakpoint_details -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="breakpoint_details" success="1"></response>
+
+-> feature_set -i 2 -n breakpoint_include_return_value -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="breakpoint_include_return_value" success="1"></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-006.inc" lineno="12"></xdebug:message></response>
+
+-> step_into -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-006.inc" lineno="12"></xdebug:message><xdebug:return_value><property type="null"></property></xdebug:return_value></response>
+
+-> step_into -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-006.inc" lineno="14"></xdebug:message></response>
+
+-> step_into -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-006.inc" lineno="9"></xdebug:message></response>
+
+-> step_into -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-006.inc" lineno="9"></xdebug:message><xdebug:return_value><property type="null"></property></xdebug:return_value></response>
+
+-> step_into -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="8" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-006.inc" lineno="4"></xdebug:message></response>
+
+-> step_into -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="9" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-return-function-006.inc" lineno="4"></xdebug:message><xdebug:return_value><property type="array" children="1" numchildren="2" page="0" pagesize="32"><property name="0" type="array" children="1" numchildren="6"></property><property name="1" type="array" children="1" numchildren="6"></property></property></xdebug:return_value></response>
+
+-> context_get -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="10" context="0"><property name="$__RETURN_VALUE" fullname="$__RETURN_VALUE" type="array" children="1" numchildren="2" page="0" pagesize="32" facet="readonly return_value virtual"><property name="0" fullname="$__RETURN_VALUE[0]" type="array" children="1" numchildren="6"></property><property name="1" fullname="$__RETURN_VALUE[1]" type="array" children="1" numchildren="6"></property></property></response>
+
+-> property_get -i 11 -n $__RETURN_VALUE
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="11"><property name="$__RETURN_VALUE" fullname="$__RETURN_VALUE" type="array" children="1" numchildren="2" page="0" pagesize="32"><property name="0" fullname="$__RETURN_VALUE[0]" type="array" children="1" numchildren="6"></property><property name="1" fullname="$__RETURN_VALUE[1]" type="array" children="1" numchildren="6"></property></property></response>
+
+-> property_get -i 12 -n $__RETURN_VALUE[1]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="12"><property name="$__RETURN_VALUE[1]" fullname="$__RETURN_VALUE[1]" type="array" children="1" numchildren="6" page="0" pagesize="32"><property name="time" fullname="$__RETURN_VALUE[1][&quot;time&quot;]" type="float"><![CDATA[%s]]></property><property name="memory" fullname="$__RETURN_VALUE[1][&quot;memory&quot;]" type="int"><![CDATA[%s]]></property><property name="function" fullname="$__RETURN_VALUE[1][&quot;function&quot;]" type="string" size="9" encoding="base64"><![CDATA[%s]]></property><property name="file" fullname="$__RETURN_VALUE[1][&quot;file&quot;]" type="string" size="%d" encoding="base64"><![CDATA[%s]]></property><property name="line" fullname="$__RETURN_VALUE[1][&quot;line&quot;]" type="int"><![CDATA[%s]]></property><property name="params" fullname="$__RETURN_VALUE[1][&quot;params&quot;]" type="array" children="0" numchildren="0"></property></property></response>
+
+-> property_get -i 13 -n $__RETURN_VALUE[1]["time"]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="13"><property name="$__RETURN_VALUE[1][&quot;time&quot;]" fullname="$__RETURN_VALUE[1][&quot;time&quot;]" type="float"><![CDATA[%s]]></property></response>
+
+-> property_value -i 14 -n $__RETURN_VALUE
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_value" transaction_id="14" type="array" children="1" numchildren="2"></response>
+
+-> property_value -i 15 -n $__RETURN_VALUE[1]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_value" transaction_id="15" type="array" children="1" numchildren="6"></response>
+
+-> property_value -i 16 -n $__RETURN_VALUE[1]["time"]
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_value" transaction_id="16" type="float"><![CDATA[%s]]></response>
+
+-> detach -i 17
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="17" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-method.phpt b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-method.phpt
new file mode 100644
index 0000000..42c203b
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-breakpoint-return-method.phpt
@@ -0,0 +1,60 @@
+--TEST--
+DBGP: return breakpoints with method
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/dbgp-breakpoint-call-method.inc';
+
+$commands = array(
+	'feature_set -n breakpoint_details -v 1',
+	'breakpoint_set -t return -m breaking::staticMe',
+	'breakpoint_set -t return -m breaking::onMe',
+	'run',
+	'run',
+	'run',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://dbgp-breakpoint-call-method.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n breakpoint_details -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="breakpoint_details" success="1"></response>
+
+-> breakpoint_set -i 2 -t return -m breaking::staticMe
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> breakpoint_set -i 3 -t return -m breaking::onMe
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0002"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-call-method.inc" lineno="15"></xdebug:message><breakpoint type="return" function="breaking::staticMe" state="enabled" hit_count="1" hit_value="0" id="{{PID}}0001"></breakpoint></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-call-method.inc" lineno="18"></xdebug:message><breakpoint type="return" function="breaking::onMe" state="enabled" hit_count="1" hit_value="0" id="{{PID}}0002"></breakpoint></response>
+
+-> run -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-call-method.inc" lineno="19"></xdebug:message><breakpoint type="return" function="breaking::staticMe" state="enabled" hit_count="2" hit_value="0" id="{{PID}}0001"></breakpoint></response>
+
+-> run -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://dbgp-breakpoint-call-method.inc" lineno="20"></xdebug:message><breakpoint type="return" function="breaking::onMe" state="enabled" hit_count="2" hit_value="0" id="{{PID}}0002"></breakpoint></response>
+
+-> detach -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="8" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-context-get.inc b/xdebug-3.4.5/tests/debugger/dbgp-context-get.inc
new file mode 100644
index 0000000..c71ee04
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-context-get.inc
@@ -0,0 +1,4 @@
+<?php
+define("YES", M_PI); $NO = 42;
+echo "hi\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-context-get.phpt b/xdebug-3.4.5/tests/debugger/dbgp-context-get.phpt
new file mode 100644
index 0000000..1267dc9
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-context-get.phpt
@@ -0,0 +1,47 @@
+--TEST--
+DBGP: context_get
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--INI--
+serialize_precision=-1
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/dbgp-context-get.inc';
+
+$commands = array(
+	'step_into',
+	'step_into',
+	'step_into',
+	'context_get -c 0',
+	'context_get -c 2',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://dbgp-context-get.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://dbgp-context-get.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://dbgp-context-get.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://dbgp-context-get.inc" lineno="3"></xdebug:message></response>
+
+-> context_get -i 4 -c 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="0"><property name="$NO" fullname="$NO" type="int"><![CDATA[42]]></property></response>
+
+-> context_get -i 5 -c 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="5" context="2"><property name="YES" fullname="YES" type="float" facet="constant"><![CDATA[3.141592653589793]]></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-feature-breakpoint-details.phpt b/xdebug-3.4.5/tests/debugger/dbgp-feature-breakpoint-details.phpt
new file mode 100644
index 0000000..29732a0
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-feature-breakpoint-details.phpt
@@ -0,0 +1,40 @@
+--TEST--
+DBGP: call breakpoints with method
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/dbgp-breakpoint-call-method.inc';
+
+$commands = array(
+	'feature_get -n breakpoint_details',
+	'feature_set -n breakpoint_details -v 1',
+	'feature_get -n breakpoint_details',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://dbgp-breakpoint-call-method.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_get -i 1 -n breakpoint_details
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_get" transaction_id="1" feature_name="breakpoint_details" supported="1"><![CDATA[0]]></response>
+
+-> feature_set -i 2 -n breakpoint_details -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="breakpoint_details" success="1"></response>
+
+-> feature_get -i 3 -n breakpoint_details
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_get" transaction_id="3" feature_name="breakpoint_details" supported="1"><![CDATA[1]]></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-property-enum.inc b/xdebug-3.4.5/tests/debugger/dbgp-property-enum.inc
new file mode 100644
index 0000000..dca2ed5
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-property-enum.inc
@@ -0,0 +1,24 @@
+<?php
+enum Language {
+	case English;
+	case Cymru;
+	case Gàidhlig;
+}
+$lang = Language::Gàidhlig;
+
+enum Currency: string {
+	case EUR = "€";
+	case GBP = "£";
+}
+$eur = Currency::EUR;
+
+enum Unit: int {
+	case Second = 1;
+	case Minute = 60;
+	case Hour = 3600;
+	case Day = 86400;
+}
+$time = Unit::Hour;
+
+echo "Hi!\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-property-enum.phpt b/xdebug-3.4.5/tests/debugger/dbgp-property-enum.phpt
new file mode 100644
index 0000000..757fa90
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-property-enum.phpt
@@ -0,0 +1,46 @@
+--TEST--
+DBGP: Enum properties
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; PHP >= 8.1');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$filename = dirname(__FILE__) . '/dbgp-property-enum.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 23',
+	'run',
+	'property_set -n $eur->value -- ' . base64_encode('"EURO"'),
+	'context_get',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://dbgp-property-enum.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://dbgp-property-enum.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 23
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://dbgp-property-enum.inc" lineno="23"></xdebug:message></response>
+
+-> property_set -i 4 -n $eur->value -- IkVVUk8i
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_set" transaction_id="4" success="0"></response>
+
+-> context_get -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="5" context="0"><property name="$eur" fullname="$eur" type="object" facet="enum" classname="Currency" children="1" numchildren="2" page="0" pagesize="32"><property name="name" fullname="$eur-&gt;name" facet="public readonly" type="string" size="3" encoding="base64"><![CDATA[RVVS]]></property><property name="value" fullname="$eur-&gt;value" facet="public readonly" type="string" size="3" encoding="base64"><![CDATA[4oKs]]></property></property><property name="$lang" fullname="$lang" type="object" facet="enum" classname="Language" children="1" numchildren="1" page="0" pagesize="32"><property name="name" fullname="$lang-&gt;name" facet="public readonly" type="string" size="9" encoding="base64"><![CDATA[R8OgaWRobGln]]></property></property><property name="$time" fullname="$time" type="object" facet="enum" classname="Unit" children="1" numchildren="2" page="0" pagesize="32"><property name="name" fullname="$time-&gt;name" facet="public readonly" type="string" size="4" encoding="base64"><![CDATA[SG91cg==]]></property><property name="value" fullname="$time-&gt;value" facet="public readonly" type="int"><![CDATA[3600]]></property></property></response>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-property-get-constants.phpt b/xdebug-3.4.5/tests/debugger/dbgp-property-get-constants.phpt
new file mode 100644
index 0000000..7b544b6
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-property-get-constants.phpt
@@ -0,0 +1,57 @@
+--TEST--
+DBGP: property_get (constants)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--INI--
+serialize_precision=-1
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/dbgp-context-get.inc';
+
+$commands = array(
+	'step_into',
+	'step_into',
+	'step_into',
+	'context_get -c 2',
+	'property_get -c 2 -n YES',
+	'property_get -c 2 -n NO',
+	'property_get -c 2 -n $YES',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://dbgp-context-get.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://dbgp-context-get.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://dbgp-context-get.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://dbgp-context-get.inc" lineno="3"></xdebug:message></response>
+
+-> context_get -i 4 -c 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="4" context="2"><property name="YES" fullname="YES" type="float" facet="constant"><![CDATA[3.141592653589793]]></property></response>
+
+-> property_get -i 5 -c 2 -n YES
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="5"><property name="YES" fullname="YES" type="float" facet="constant"><![CDATA[3.141592653589793]]></property></response>
+
+-> property_get -i 6 -c 2 -n NO
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6" status="break" reason="ok"><error code="300"><message><![CDATA[can not get property]]></message></error></response>
+
+-> property_get -i 7 -c 2 -n $YES
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="7" status="break" reason="ok"><error code="300"><message><![CDATA[can not get property]]></message></error></response>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-property-value.inc b/xdebug-3.4.5/tests/debugger/dbgp-property-value.inc
new file mode 100644
index 0000000..b57b67b
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-property-value.inc
@@ -0,0 +1,6 @@
+<?php
+$var = '';
+for ($i = 0; $i < 1000; $i++) {
+	$var .= sprintf("%05d ", $i );
+}
+echo $var; //breakpoint here
diff --git a/xdebug-3.4.5/tests/debugger/dbgp-property-value.phpt b/xdebug-3.4.5/tests/debugger/dbgp-property-value.phpt
new file mode 100644
index 0000000..305c722
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp-property-value.phpt
@@ -0,0 +1,65 @@
+--TEST--
+DBGP: property_value
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/dbgp-property-value.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 6',
+	'run',
+	'property_get -d 0 -c 0 -n $var',
+	'property_value -d 0 -c 0 -n $var -p 0 -m 0',
+	'property_value -d 0 -c 0 -n $var -p 0 -m 10',
+	'property_value -d 0 -c 0 -n $var -p 0 -m 500',
+	'property_value -d 0 -c 0 -n $var -p 0 -m 6000',
+	'property_value -d 0 -c 0 -n $var -p 0 -m 10000',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://dbgp-property-value.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://dbgp-property-value.inc" lineno="2"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://dbgp-property-value.inc" lineno="6"></xdebug:message></response>
+
+-> property_get -i 4 -d 0 -c 0 -n $var
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="4"><property name="$var" fullname="$var" type="string" size="6000" encoding="base64"><![CDATA[MDAwMDAgMDAwMDEgMDAwMDIgMDAwMDMgMDAwMDQgMDAwMDUgMDAwMDYgMDAwMDcgMDAwMDggMDAwMDkgMDAwMTAgMDAwMTEgMDAwMTIgMDAwMTMgMDAwMTQgMDAwMTUgMDAwMTYgMDAwMTcgMDAwMTggMDAwMTkgMDAwMjAgMDAwMjEgMDAwMjIgMDAwMjMgMDAwMjQgMDAwMjUgMDAwMjYgMDAwMjcgMDAwMjggMDAwMjkgMDAwMzAgMDAwMzEgMDAwMzIgMDAwMzMgMDAwMzQgMDAwMzUgMDAwMzYgMDAwMzcgMDAwMzggMDAwMzkgMDAwNDAgMDAwNDEgMDAwNDIgMDAwNDMgMDAwNDQgMDAwNDUgMDAwNDYgMDAwNDcgMDAwNDggMDAwNDkgMDAwNTAgMDAwNTEgMDAwNTIgMDAwNTMgMDAwNTQgMDAwNTUgMDAwNTYgMDAwNTcgMDAwNTggMDAwNTkgMDAwNjAgMDAwNjEgMDAwNjIgMDAwNjMgMDAwNjQgMDAwNjUgMDAwNjYgMDAwNjcgMDAwNjggMDAwNjkgMDAwNzAgMDAwNzEgMDAwNzIgMDAwNzMgMDAwNzQgMDAwNzUgMDAwNzYgMDAwNzcgMDAwNzggMDAwNzkgMDAwODAgMDAwODEgMDAwODIgMDAwODMgMDAwODQgMDAwODUgMDAwODYgMDAwODcgMDAwODggMDAwODkgMDAwOTAgMDAwOTEgMDAwOTIgMDAwOTMgMDAwOTQgMDAwOTUgMDAwOTYgMDAwOTcgMDAwOTggMDAwOTkgMDAxMDAgMDAxMDEgMDAxMDIgMDAxMDMgMDAxMDQgMDAxMDUgMDAxMDYgMDAxMDcgMDAxMDggMDAxMDkgMDAxMTAgMDAxMTEgMDAxMTIgMDAxMTMgMDAxMTQgMDAxMTUgMDAxMTYgMDAxMTcgMDAxMTggMDAxMTkgMDAxMjAgMDAxMjEgMDAxMjIgMDAxMjMgMDAxMjQgMDAxMjUgMDAxMjYgMDAxMjcgMDAxMjggMDAxMjkgMDAxMzAgMDAxMzEgMDAxMzIgMDAxMzMgMDAxMzQgMDAxMzUgMDAxMzYgMDAxMzcgMDAxMzggMDAxMzkgMDAxNDAgMDAxNDEgMDAxNDIgMDAxNDMgMDAxNDQgMDAxNDUgMDAxNDYgMDAxNDcgMDAxNDggMDAxNDkgMDAxNTAgMDAxNTEgMDAxNTIgMDAxNTMgMDAxNTQgMDAxNTUgMDAxNTYgMDAxNTcgMDAxNTggMDAxNTkgMDAxNjAgMDAxNjEgMDAxNjIgMDAxNjMgMDAxNjQgMDAxNjUgMDAxNjYgMDAxNjcgMDAxNjggMDAxNjkgMDAxNw==]]></property></response>
+
+-> property_value -i 5 -d 0 -c 0 -n $var -p 0 -m 0
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_value" transaction_id="5" type="string" size="6000" encoding="base64"><![CDATA[MDAwMDAgMDAwMDEgMDAwMDIgMDAwMDMgMDAwMDQgMDAwMDUgMDAwMDYgMDAwMDcgMDAwMDggMDAwMDkgMDAwMTAgMDAwMTEgMDAwMTIgMDAwMTMgMDAwMTQgMDAwMTUgMDAwMTYgMDAwMTcgMDAwMTggMDAwMTkgMDAwMjAgMDAwMjEgMDAwMjIgMDAwMjMgMDAwMjQgMDAwMjUgMDAwMjYgMDAwMjcgMDAwMjggMDAwMjkgMDAwMzAgMDAwMzEgMDAwMzIgMDAwMzMgMDAwMzQgMDAwMzUgMDAwMzYgMDAwMzcgMDAwMzggMDAwMzkgMDAwNDAgMDAwNDEgMDAwNDIgMDAwNDMgMDAwNDQgMDAwNDUgMDAwNDYgMDAwNDcgMDAwNDggMDAwNDkgMDAwNTAgMDAwNTEgMDAwNTIgMDAwNTMgMDAwNTQgMDAwNTUgMDAwNTYgMDAwNTcgMDAwNTggMDAwNTkgMDAwNjAgMDAwNjEgMDAwNjIgMDAwNjMgMDAwNjQgMDAwNjUgMDAwNjYgMDAwNjcgMDAwNjggMDAwNjkgMDAwNzAgMDAwNzEgMDAwNzIgMDAwNzMgMDAwNzQgMDAwNzUgMDAwNzYgMDAwNzcgMDAwNzggMDAwNzkgMDAwODAgMDAwODEgMDAwODIgMDAwODMgMDAwODQgMDAwODUgMDAwODYgMDAwODcgMDAwODggMDAwODkgMDAwOTAgMDAwOTEgMDAwOTIgMDAwOTMgMDAwOTQgMDAwOTUgMDAwOTYgMDAwOTcgMDAwOTggMDAwOTkgMDAxMDAgMDAxMDEgMDAxMDIgMDAxMDMgMDAxMDQgMDAxMDUgMDAxMDYgMDAxMDcgMDAxMDggMDAxMDkgMDAxMTAgMDAxMTEgMDAxMTIgMDAxMTMgMDAxMTQgMDAxMTUgMDAxMTYgMDAxMTcgMDAxMTggMDAxMTkgMDAxMjAgMDAxMjEgMDAxMjIgMDAxMjMgMDAxMjQgMDAxMjUgMDAxMjYgMDAxMjcgMDAxMjggMDAxMjkgMDAxMzAgMDAxMzEgMDAxMzIgMDAxMzMgMDAxMzQgMDAxMzUgMDAxMzYgMDAxMzcgMDAxMzggMDAxMzkgMDAxNDAgMDAxNDEgMDAxNDIgMDAxNDMgMDAxNDQgMDAxNDUgMDAxNDYgMDAxNDcgMDAxNDggMDAxNDkgMDAxNTAgMDAxNTEgMDAxNTIgMDAxNTMgMDAxNTQgMDAxNTUgMDAxNTYgMDAxNTcgMDAxNTggMDAxNTkgMDAxNjAgMDAxNjEgMDAxNjIgMDAxNjMgMDAxNjQgMDAxNjUgMDAxNjYgMDAxNjcgMDAxNjggMDAxNjkgMDAxNzAgMDAxNzEgMDAxNzIgMDAxNzMgMDAxNzQgMDAxNzUgMDAxNzYgMDAxNzcgMDAxNzggMDAxNzkgMDAxODAgMDAxODEgMDAxODIgMDAxODMgMDAxODQgMDAxODUgMDAxODYgMDAxODcgMDAxODggMDAxODkgMDAxOTAgMDAxOTEgMDAxOTIgMDAxOTMgMDAxOTQgMDAxOTUgMDAxOTYgMDAxOTcgMDAxOTggMDAxOTkgMDAyMDAgMDAyMDEgMDAyMDIgMDAyMDMgMDAyMDQgMDAyMDUgMDAyMDYgMDAyMDcgMDAyMDggMDAyMDkgMDAyMTAgMDAyMTEgMDAyMTIgMDAyMTMgMDAyMTQgMDAyMTUgMDAyMTYgMDAyMTcgMDAyMTggMDAyMTkgMDAyMjAgMDAyMjEgMDAyMjIgMDAyMjMgMDAyMjQgMDAyMjUgMDAyMjYgMDAyMjcgMDAyMjggMDAyMjkgMDAyMzAgMDAyMzEgMDAyMzIgMDAyMzMgMDAyMzQgMDAyMzUgMDAyMzYgMDAyMzcgMDAyMzggMDAyMzkgMDAyNDAgMDAyNDEgMDAyNDIgMDAyNDMgMDAyNDQgMDAyNDUgMDAyNDYgMDAyNDcgMDAyNDggMDAyNDkgMDAyNTAgMDAyNTEgMDAyNTIgMDAyNTMgMDAyNTQgMDAyNTUgMDAyNTYgMDAyNTcgMDAyNTggMDAyNTkgMDAyNjAgMDAyNjEgMDAyNjIgMDAyNjMgMDAyNjQgMDAyNjUgMDAyNjYgMDAyNjcgMDAyNjggMDAyNjkgMDAyNzAgMDAyNzEgMDAyNzIgMDAyNzMgMDAyNzQgMDAyNzUgMDAyNzYgMDAyNzcgMDAyNzggMDAyNzkgMDAyODAgMDAyODEgMDAyODIgMDAyODMgMDAyODQgMDAyODUgMDAyODYgMDAyODcgMDAyODggMDAyODkgMDAyOTAgMDAyOTEgMDAyOTIgMDAyOTMgMDAyOTQgMDAyOTUgMDAyOTYgMDAyOTcgMDAyOTggMDAyOTkgMDAzMDAgMDAzMDEgMDAzMDIgMDAzMDMgMDAzMDQgMDAzMDUgMDAzMDYgMDAzMDcgMDAzMDggMDAzMDkgMDAzMTAgMDAzMTEgMDAzMTIgMDAzMTMgMDAzMTQgMDAzMTUgMDAzMTYgMDAzMTcgMDAzMTggMDAzMTkgMDAzMjAgMDAzMjEgMDAzMjIgMDAzMjMgMDAzMjQgMDAzMjUgMDAzMjYgMDAzMjcgMDAzMjggMDAzMjkgMDAzMzAgMDAzMzEgMDAzMzIgMDAzMzMgMDAzMzQgMDAzMzUgMDAzMzYgMDAzMzcgMDAzMzggMDAzMzkgMDAzNDAgMDAzNDEgMDAzNDIgMDAzNDMgMDAzNDQgMDAzNDUgMDAzNDYgMDAzNDcgMDAzNDggMDAzNDkgMDAzNTAgMDAzNTEgMDAzNTIgMDAzNTMgMDAzNTQgMDAzNTUgMDAzNTYgMDAzNTcgMDAzNTggMDAzNTkgMDAzNjAgMDAzNjEgMDAzNjIgMDAzNjMgMDAzNjQgMDAzNjUgMDAzNjYgMDAzNjcgMDAzNjggMDAzNjkgMDAzNzAgMDAzNzEgMDAzNzIgMDAzNzMgMDAzNzQgMDAzNzUgMDAzNzYgMDAzNzcgMDAzNzggMDAzNzkgMDAzODAgMDAzODEgMDAzODIgMDAzODMgMDAzODQgMDAzODUgMDAzODYgMDAzODcgMDAzODggMDAzODkgMDAzOTAgMDAzOTEgMDAzOTIgMDAzOTMgMDAzOTQgMDAzOTUgMDAzOTYgMDAzOTcgMDAzOTggMDAzOTkgMDA0MDAgMDA0MDEgMDA0MDIgMDA0MDMgMDA0MDQgMDA0MDUgMDA0MDYgMDA0MDcgMDA0MDggMDA0MDkgMDA0MTAgMDA0MTEgMDA0MTIgMDA0MTMgMDA0MTQgMDA0MTUgMDA0MTYgMDA0MTcgMDA0MTggMDA0MTkgMDA0MjAgMDA0MjEgMDA0MjIgMDA0MjMgMDA0MjQgMDA0MjUgMDA0MjYgMDA0MjcgMDA0MjggMDA0MjkgMDA0MzAgMDA0MzEgMDA0MzIgMDA0MzMgMDA0MzQgMDA0MzUgMDA0MzYgMDA0MzcgMDA0MzggMDA0MzkgMDA0NDAgMDA0NDEgMDA0NDIgMDA0NDMgMDA0NDQgMDA0NDUgMDA0NDYgMDA0NDcgMDA0NDggMDA0NDkgMDA0NTAgMDA0NTEgMDA0NTIgMDA0NTMgMDA0NTQgMDA0NTUgMDA0NTYgMDA0NTcgMDA0NTggMDA0NTkgMDA0NjAgMDA0NjEgMDA0NjIgMDA0NjMgMDA0NjQgMDA0NjUgMDA0NjYgMDA0NjcgMDA0NjggMDA0NjkgMDA0NzAgMDA0NzEgMDA0NzIgMDA0NzMgMDA0NzQgMDA0NzUgMDA0NzYgMDA0NzcgMDA0NzggMDA0NzkgMDA0ODAgMDA0ODEgMDA0ODIgMDA0ODMgMDA0ODQgMDA0ODUgMDA0ODYgMDA0ODcgMDA0ODggMDA0ODkgMDA0OTAgMDA0OTEgMDA0OTIgMDA0OTMgMDA0OTQgMDA0OTUgMDA0OTYgMDA0OTcgMDA0OTggMDA0OTkgMDA1MDAgMDA1MDEgMDA1MDIgMDA1MDMgMDA1MDQgMDA1MDUgMDA1MDYgMDA1MDcgMDA1MDggMDA1MDkgMDA1MTAgMDA1MTEgMDA1MTIgMDA1MTMgMDA1MTQgMDA1MTUgMDA1MTYgMDA1MTcgMDA1MTggMDA1MTkgMDA1MjAgMDA1MjEgMDA1MjIgMDA1MjMgMDA1MjQgMDA1MjUgMDA1MjYgMDA1MjcgMDA1MjggMDA1MjkgMDA1MzAgMDA1MzEgMDA1MzIgMDA1MzMgMDA1MzQgMDA1MzUgMDA1MzYgMDA1MzcgMDA1MzggMDA1MzkgMDA1NDAgMDA1NDEgMDA1NDIgMDA1NDMgMDA1NDQgMDA1NDUgMDA1NDYgMDA1NDcgMDA1NDggMDA1NDkgMDA1NTAgMDA1NTEgMDA1NTIgMDA1NTMgMDA1NTQgMDA1NTUgMDA1NTYgMDA1NTcgMDA1NTggMDA1NTkgMDA1NjAgMDA1NjEgMDA1NjIgMDA1NjMgMDA1NjQgMDA1NjUgMDA1NjYgMDA1NjcgMDA1NjggMDA1NjkgMDA1NzAgMDA1NzEgMDA1NzIgMDA1NzMgMDA1NzQgMDA1NzUgMDA1NzYgMDA1NzcgMDA1NzggMDA1NzkgMDA1ODAgMDA1ODEgMDA1ODIgMDA1ODMgMDA1ODQgMDA1ODUgMDA1ODYgMDA1ODcgMDA1ODggMDA1ODkgMDA1OTAgMDA1OTEgMDA1OTIgMDA1OTMgMDA1OTQgMDA1OTUgMDA1OTYgMDA1OTcgMDA1OTggMDA1OTkgMDA2MDAgMDA2MDEgMDA2MDIgMDA2MDMgMDA2MDQgMDA2MDUgMDA2MDYgMDA2MDcgMDA2MDggMDA2MDkgMDA2MTAgMDA2MTEgMDA2MTIgMDA2MTMgMDA2MTQgMDA2MTUgMDA2MTYgMDA2MTcgMDA2MTggMDA2MTkgMDA2MjAgMDA2MjEgMDA2MjIgMDA2MjMgMDA2MjQgMDA2MjUgMDA2MjYgMDA2MjcgMDA2MjggMDA2MjkgMDA2MzAgMDA2MzEgMDA2MzIgMDA2MzMgMDA2MzQgMDA2MzUgMDA2MzYgMDA2MzcgMDA2MzggMDA2MzkgMDA2NDAgMDA2NDEgMDA2NDIgMDA2NDMgMDA2NDQgMDA2NDUgMDA2NDYgMDA2NDcgMDA2NDggMDA2NDkgMDA2NTAgMDA2NTEgMDA2NTIgMDA2NTMgMDA2NTQgMDA2NTUgMDA2NTYgMDA2NTcgMDA2NTggMDA2NTkgMDA2NjAgMDA2NjEgMDA2NjIgMDA2NjMgMDA2NjQgMDA2NjUgMDA2NjYgMDA2NjcgMDA2NjggMDA2NjkgMDA2NzAgMDA2NzEgMDA2NzIgMDA2NzMgMDA2NzQgMDA2NzUgMDA2NzYgMDA2NzcgMDA2NzggMDA2NzkgMDA2ODAgMDA2ODEgMDA2ODIgMDA2ODMgMDA2ODQgMDA2ODUgMDA2ODYgMDA2ODcgMDA2ODggMDA2ODkgMDA2OTAgMDA2OTEgMDA2OTIgMDA2OTMgMDA2OTQgMDA2OTUgMDA2OTYgMDA2OTcgMDA2OTggMDA2OTkgMDA3MDAgMDA3MDEgMDA3MDIgMDA3MDMgMDA3MDQgMDA3MDUgMDA3MDYgMDA3MDcgMDA3MDggMDA3MDkgMDA3MTAgMDA3MTEgMDA3MTIgMDA3MTMgMDA3MTQgMDA3MTUgMDA3MTYgMDA3MTcgMDA3MTggMDA3MTkgMDA3MjAgMDA3MjEgMDA3MjIgMDA3MjMgMDA3MjQgMDA3MjUgMDA3MjYgMDA3MjcgMDA3MjggMDA3MjkgMDA3MzAgMDA3MzEgMDA3MzIgMDA3MzMgMDA3MzQgMDA3MzUgMDA3MzYgMDA3MzcgMDA3MzggMDA3MzkgMDA3NDAgMDA3NDEgMDA3NDIgMDA3NDMgMDA3NDQgMDA3NDUgMDA3NDYgMDA3NDcgMDA3NDggMDA3NDkgMDA3NTAgMDA3NTEgMDA3NTIgMDA3NTMgMDA3NTQgMDA3NTUgMDA3NTYgMDA3NTcgMDA3NTggMDA3NTkgMDA3NjAgMDA3NjEgMDA3NjIgMDA3NjMgMDA3NjQgMDA3NjUgMDA3NjYgMDA3NjcgMDA3NjggMDA3NjkgMDA3NzAgMDA3NzEgMDA3NzIgMDA3NzMgMDA3NzQgMDA3NzUgMDA3NzYgMDA3NzcgMDA3NzggMDA3NzkgMDA3ODAgMDA3ODEgMDA3ODIgMDA3ODMgMDA3ODQgMDA3ODUgMDA3ODYgMDA3ODcgMDA3ODggMDA3ODkgMDA3OTAgMDA3OTEgMDA3OTIgMDA3OTMgMDA3OTQgMDA3OTUgMDA3OTYgMDA3OTcgMDA3OTggMDA3OTkgMDA4MDAgMDA4MDEgMDA4MDIgMDA4MDMgMDA4MDQgMDA4MDUgMDA4MDYgMDA4MDcgMDA4MDggMDA4MDkgMDA4MTAgMDA4MTEgMDA4MTIgMDA4MTMgMDA4MTQgMDA4MTUgMDA4MTYgMDA4MTcgMDA4MTggMDA4MTkgMDA4MjAgMDA4MjEgMDA4MjIgMDA4MjMgMDA4MjQgMDA4MjUgMDA4MjYgMDA4MjcgMDA4MjggMDA4MjkgMDA4MzAgMDA4MzEgMDA4MzIgMDA4MzMgMDA4MzQgMDA4MzUgMDA4MzYgMDA4MzcgMDA4MzggMDA4MzkgMDA4NDAgMDA4NDEgMDA4NDIgMDA4NDMgMDA4NDQgMDA4NDUgMDA4NDYgMDA4NDcgMDA4NDggMDA4NDkgMDA4NTAgMDA4NTEgMDA4NTIgMDA4NTMgMDA4NTQgMDA4NTUgMDA4NTYgMDA4NTcgMDA4NTggMDA4NTkgMDA4NjAgMDA4NjEgMDA4NjIgMDA4NjMgMDA4NjQgMDA4NjUgMDA4NjYgMDA4NjcgMDA4NjggMDA4NjkgMDA4NzAgMDA4NzEgMDA4NzIgMDA4NzMgMDA4NzQgMDA4NzUgMDA4NzYgMDA4NzcgMDA4NzggMDA4NzkgMDA4ODAgMDA4ODEgMDA4ODIgMDA4ODMgMDA4ODQgMDA4ODUgMDA4ODYgMDA4ODcgMDA4ODggMDA4ODkgMDA4OTAgMDA4OTEgMDA4OTIgMDA4OTMgMDA4OTQgMDA4OTUgMDA4OTYgMDA4OTcgMDA4OTggMDA4OTkgMDA5MDAgMDA5MDEgMDA5MDIgMDA5MDMgMDA5MDQgMDA5MDUgMDA5MDYgMDA5MDcgMDA5MDggMDA5MDkgMDA5MTAgMDA5MTEgMDA5MTIgMDA5MTMgMDA5MTQgMDA5MTUgMDA5MTYgMDA5MTcgMDA5MTggMDA5MTkgMDA5MjAgMDA5MjEgMDA5MjIgMDA5MjMgMDA5MjQgMDA5MjUgMDA5MjYgMDA5MjcgMDA5MjggMDA5MjkgMDA5MzAgMDA5MzEgMDA5MzIgMDA5MzMgMDA5MzQgMDA5MzUgMDA5MzYgMDA5MzcgMDA5MzggMDA5MzkgMDA5NDAgMDA5NDEgMDA5NDIgMDA5NDMgMDA5NDQgMDA5NDUgMDA5NDYgMDA5NDcgMDA5NDggMDA5NDkgMDA5NTAgMDA5NTEgMDA5NTIgMDA5NTMgMDA5NTQgMDA5NTUgMDA5NTYgMDA5NTcgMDA5NTggMDA5NTkgMDA5NjAgMDA5NjEgMDA5NjIgMDA5NjMgMDA5NjQgMDA5NjUgMDA5NjYgMDA5NjcgMDA5NjggMDA5NjkgMDA5NzAgMDA5NzEgMDA5NzIgMDA5NzMgMDA5NzQgMDA5NzUgMDA5NzYgMDA5NzcgMDA5NzggMDA5NzkgMDA5ODAgMDA5ODEgMDA5ODIgMDA5ODMgMDA5ODQgMDA5ODUgMDA5ODYgMDA5ODcgMDA5ODggMDA5ODkgMDA5OTAgMDA5OTEgMDA5OTIgMDA5OTMgMDA5OTQgMDA5OTUgMDA5OTYgMDA5OTcgMDA5OTggMDA5OTkg]]></response>
+
+-> property_value -i 6 -d 0 -c 0 -n $var -p 0 -m 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_value" transaction_id="6" type="string" size="6000" encoding="base64"><![CDATA[MDAwMDAgMDAwMA==]]></response>
+
+-> property_value -i 7 -d 0 -c 0 -n $var -p 0 -m 500
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_value" transaction_id="7" type="string" size="6000" encoding="base64"><![CDATA[MDAwMDAgMDAwMDEgMDAwMDIgMDAwMDMgMDAwMDQgMDAwMDUgMDAwMDYgMDAwMDcgMDAwMDggMDAwMDkgMDAwMTAgMDAwMTEgMDAwMTIgMDAwMTMgMDAwMTQgMDAwMTUgMDAwMTYgMDAwMTcgMDAwMTggMDAwMTkgMDAwMjAgMDAwMjEgMDAwMjIgMDAwMjMgMDAwMjQgMDAwMjUgMDAwMjYgMDAwMjcgMDAwMjggMDAwMjkgMDAwMzAgMDAwMzEgMDAwMzIgMDAwMzMgMDAwMzQgMDAwMzUgMDAwMzYgMDAwMzcgMDAwMzggMDAwMzkgMDAwNDAgMDAwNDEgMDAwNDIgMDAwNDMgMDAwNDQgMDAwNDUgMDAwNDYgMDAwNDcgMDAwNDggMDAwNDkgMDAwNTAgMDAwNTEgMDAwNTIgMDAwNTMgMDAwNTQgMDAwNTUgMDAwNTYgMDAwNTcgMDAwNTggMDAwNTkgMDAwNjAgMDAwNjEgMDAwNjIgMDAwNjMgMDAwNjQgMDAwNjUgMDAwNjYgMDAwNjcgMDAwNjggMDAwNjkgMDAwNzAgMDAwNzEgMDAwNzIgMDAwNzMgMDAwNzQgMDAwNzUgMDAwNzYgMDAwNzcgMDAwNzggMDAwNzkgMDAwODAgMDAwODEgMDAwODIgMDA=]]></response>
+
+-> property_value -i 8 -d 0 -c 0 -n $var -p 0 -m 6000
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_value" transaction_id="8" type="string" size="6000" encoding="base64"><![CDATA[MDAwMDAgMDAwMDEgMDAwMDIgMDAwMDMgMDAwMDQgMDAwMDUgMDAwMDYgMDAwMDcgMDAwMDggMDAwMDkgMDAwMTAgMDAwMTEgMDAwMTIgMDAwMTMgMDAwMTQgMDAwMTUgMDAwMTYgMDAwMTcgMDAwMTggMDAwMTkgMDAwMjAgMDAwMjEgMDAwMjIgMDAwMjMgMDAwMjQgMDAwMjUgMDAwMjYgMDAwMjcgMDAwMjggMDAwMjkgMDAwMzAgMDAwMzEgMDAwMzIgMDAwMzMgMDAwMzQgMDAwMzUgMDAwMzYgMDAwMzcgMDAwMzggMDAwMzkgMDAwNDAgMDAwNDEgMDAwNDIgMDAwNDMgMDAwNDQgMDAwNDUgMDAwNDYgMDAwNDcgMDAwNDggMDAwNDkgMDAwNTAgMDAwNTEgMDAwNTIgMDAwNTMgMDAwNTQgMDAwNTUgMDAwNTYgMDAwNTcgMDAwNTggMDAwNTkgMDAwNjAgMDAwNjEgMDAwNjIgMDAwNjMgMDAwNjQgMDAwNjUgMDAwNjYgMDAwNjcgMDAwNjggMDAwNjkgMDAwNzAgMDAwNzEgMDAwNzIgMDAwNzMgMDAwNzQgMDAwNzUgMDAwNzYgMDAwNzcgMDAwNzggMDAwNzkgMDAwODAgMDAwODEgMDAwODIgMDAwODMgMDAwODQgMDAwODUgMDAwODYgMDAwODcgMDAwODggMDAwODkgMDAwOTAgMDAwOTEgMDAwOTIgMDAwOTMgMDAwOTQgMDAwOTUgMDAwOTYgMDAwOTcgMDAwOTggMDAwOTkgMDAxMDAgMDAxMDEgMDAxMDIgMDAxMDMgMDAxMDQgMDAxMDUgMDAxMDYgMDAxMDcgMDAxMDggMDAxMDkgMDAxMTAgMDAxMTEgMDAxMTIgMDAxMTMgMDAxMTQgMDAxMTUgMDAxMTYgMDAxMTcgMDAxMTggMDAxMTkgMDAxMjAgMDAxMjEgMDAxMjIgMDAxMjMgMDAxMjQgMDAxMjUgMDAxMjYgMDAxMjcgMDAxMjggMDAxMjkgMDAxMzAgMDAxMzEgMDAxMzIgMDAxMzMgMDAxMzQgMDAxMzUgMDAxMzYgMDAxMzcgMDAxMzggMDAxMzkgMDAxNDAgMDAxNDEgMDAxNDIgMDAxNDMgMDAxNDQgMDAxNDUgMDAxNDYgMDAxNDcgMDAxNDggMDAxNDkgMDAxNTAgMDAxNTEgMDAxNTIgMDAxNTMgMDAxNTQgMDAxNTUgMDAxNTYgMDAxNTcgMDAxNTggMDAxNTkgMDAxNjAgMDAxNjEgMDAxNjIgMDAxNjMgMDAxNjQgMDAxNjUgMDAxNjYgMDAxNjcgMDAxNjggMDAxNjkgMDAxNzAgMDAxNzEgMDAxNzIgMDAxNzMgMDAxNzQgMDAxNzUgMDAxNzYgMDAxNzcgMDAxNzggMDAxNzkgMDAxODAgMDAxODEgMDAxODIgMDAxODMgMDAxODQgMDAxODUgMDAxODYgMDAxODcgMDAxODggMDAxODkgMDAxOTAgMDAxOTEgMDAxOTIgMDAxOTMgMDAxOTQgMDAxOTUgMDAxOTYgMDAxOTcgMDAxOTggMDAxOTkgMDAyMDAgMDAyMDEgMDAyMDIgMDAyMDMgMDAyMDQgMDAyMDUgMDAyMDYgMDAyMDcgMDAyMDggMDAyMDkgMDAyMTAgMDAyMTEgMDAyMTIgMDAyMTMgMDAyMTQgMDAyMTUgMDAyMTYgMDAyMTcgMDAyMTggMDAyMTkgMDAyMjAgMDAyMjEgMDAyMjIgMDAyMjMgMDAyMjQgMDAyMjUgMDAyMjYgMDAyMjcgMDAyMjggMDAyMjkgMDAyMzAgMDAyMzEgMDAyMzIgMDAyMzMgMDAyMzQgMDAyMzUgMDAyMzYgMDAyMzcgMDAyMzggMDAyMzkgMDAyNDAgMDAyNDEgMDAyNDIgMDAyNDMgMDAyNDQgMDAyNDUgMDAyNDYgMDAyNDcgMDAyNDggMDAyNDkgMDAyNTAgMDAyNTEgMDAyNTIgMDAyNTMgMDAyNTQgMDAyNTUgMDAyNTYgMDAyNTcgMDAyNTggMDAyNTkgMDAyNjAgMDAyNjEgMDAyNjIgMDAyNjMgMDAyNjQgMDAyNjUgMDAyNjYgMDAyNjcgMDAyNjggMDAyNjkgMDAyNzAgMDAyNzEgMDAyNzIgMDAyNzMgMDAyNzQgMDAyNzUgMDAyNzYgMDAyNzcgMDAyNzggMDAyNzkgMDAyODAgMDAyODEgMDAyODIgMDAyODMgMDAyODQgMDAyODUgMDAyODYgMDAyODcgMDAyODggMDAyODkgMDAyOTAgMDAyOTEgMDAyOTIgMDAyOTMgMDAyOTQgMDAyOTUgMDAyOTYgMDAyOTcgMDAyOTggMDAyOTkgMDAzMDAgMDAzMDEgMDAzMDIgMDAzMDMgMDAzMDQgMDAzMDUgMDAzMDYgMDAzMDcgMDAzMDggMDAzMDkgMDAzMTAgMDAzMTEgMDAzMTIgMDAzMTMgMDAzMTQgMDAzMTUgMDAzMTYgMDAzMTcgMDAzMTggMDAzMTkgMDAzMjAgMDAzMjEgMDAzMjIgMDAzMjMgMDAzMjQgMDAzMjUgMDAzMjYgMDAzMjcgMDAzMjggMDAzMjkgMDAzMzAgMDAzMzEgMDAzMzIgMDAzMzMgMDAzMzQgMDAzMzUgMDAzMzYgMDAzMzcgMDAzMzggMDAzMzkgMDAzNDAgMDAzNDEgMDAzNDIgMDAzNDMgMDAzNDQgMDAzNDUgMDAzNDYgMDAzNDcgMDAzNDggMDAzNDkgMDAzNTAgMDAzNTEgMDAzNTIgMDAzNTMgMDAzNTQgMDAzNTUgMDAzNTYgMDAzNTcgMDAzNTggMDAzNTkgMDAzNjAgMDAzNjEgMDAzNjIgMDAzNjMgMDAzNjQgMDAzNjUgMDAzNjYgMDAzNjcgMDAzNjggMDAzNjkgMDAzNzAgMDAzNzEgMDAzNzIgMDAzNzMgMDAzNzQgMDAzNzUgMDAzNzYgMDAzNzcgMDAzNzggMDAzNzkgMDAzODAgMDAzODEgMDAzODIgMDAzODMgMDAzODQgMDAzODUgMDAzODYgMDAzODcgMDAzODggMDAzODkgMDAzOTAgMDAzOTEgMDAzOTIgMDAzOTMgMDAzOTQgMDAzOTUgMDAzOTYgMDAzOTcgMDAzOTggMDAzOTkgMDA0MDAgMDA0MDEgMDA0MDIgMDA0MDMgMDA0MDQgMDA0MDUgMDA0MDYgMDA0MDcgMDA0MDggMDA0MDkgMDA0MTAgMDA0MTEgMDA0MTIgMDA0MTMgMDA0MTQgMDA0MTUgMDA0MTYgMDA0MTcgMDA0MTggMDA0MTkgMDA0MjAgMDA0MjEgMDA0MjIgMDA0MjMgMDA0MjQgMDA0MjUgMDA0MjYgMDA0MjcgMDA0MjggMDA0MjkgMDA0MzAgMDA0MzEgMDA0MzIgMDA0MzMgMDA0MzQgMDA0MzUgMDA0MzYgMDA0MzcgMDA0MzggMDA0MzkgMDA0NDAgMDA0NDEgMDA0NDIgMDA0NDMgMDA0NDQgMDA0NDUgMDA0NDYgMDA0NDcgMDA0NDggMDA0NDkgMDA0NTAgMDA0NTEgMDA0NTIgMDA0NTMgMDA0NTQgMDA0NTUgMDA0NTYgMDA0NTcgMDA0NTggMDA0NTkgMDA0NjAgMDA0NjEgMDA0NjIgMDA0NjMgMDA0NjQgMDA0NjUgMDA0NjYgMDA0NjcgMDA0NjggMDA0NjkgMDA0NzAgMDA0NzEgMDA0NzIgMDA0NzMgMDA0NzQgMDA0NzUgMDA0NzYgMDA0NzcgMDA0NzggMDA0NzkgMDA0ODAgMDA0ODEgMDA0ODIgMDA0ODMgMDA0ODQgMDA0ODUgMDA0ODYgMDA0ODcgMDA0ODggMDA0ODkgMDA0OTAgMDA0OTEgMDA0OTIgMDA0OTMgMDA0OTQgMDA0OTUgMDA0OTYgMDA0OTcgMDA0OTggMDA0OTkgMDA1MDAgMDA1MDEgMDA1MDIgMDA1MDMgMDA1MDQgMDA1MDUgMDA1MDYgMDA1MDcgMDA1MDggMDA1MDkgMDA1MTAgMDA1MTEgMDA1MTIgMDA1MTMgMDA1MTQgMDA1MTUgMDA1MTYgMDA1MTcgMDA1MTggMDA1MTkgMDA1MjAgMDA1MjEgMDA1MjIgMDA1MjMgMDA1MjQgMDA1MjUgMDA1MjYgMDA1MjcgMDA1MjggMDA1MjkgMDA1MzAgMDA1MzEgMDA1MzIgMDA1MzMgMDA1MzQgMDA1MzUgMDA1MzYgMDA1MzcgMDA1MzggMDA1MzkgMDA1NDAgMDA1NDEgMDA1NDIgMDA1NDMgMDA1NDQgMDA1NDUgMDA1NDYgMDA1NDcgMDA1NDggMDA1NDkgMDA1NTAgMDA1NTEgMDA1NTIgMDA1NTMgMDA1NTQgMDA1NTUgMDA1NTYgMDA1NTcgMDA1NTggMDA1NTkgMDA1NjAgMDA1NjEgMDA1NjIgMDA1NjMgMDA1NjQgMDA1NjUgMDA1NjYgMDA1NjcgMDA1NjggMDA1NjkgMDA1NzAgMDA1NzEgMDA1NzIgMDA1NzMgMDA1NzQgMDA1NzUgMDA1NzYgMDA1NzcgMDA1NzggMDA1NzkgMDA1ODAgMDA1ODEgMDA1ODIgMDA1ODMgMDA1ODQgMDA1ODUgMDA1ODYgMDA1ODcgMDA1ODggMDA1ODkgMDA1OTAgMDA1OTEgMDA1OTIgMDA1OTMgMDA1OTQgMDA1OTUgMDA1OTYgMDA1OTcgMDA1OTggMDA1OTkgMDA2MDAgMDA2MDEgMDA2MDIgMDA2MDMgMDA2MDQgMDA2MDUgMDA2MDYgMDA2MDcgMDA2MDggMDA2MDkgMDA2MTAgMDA2MTEgMDA2MTIgMDA2MTMgMDA2MTQgMDA2MTUgMDA2MTYgMDA2MTcgMDA2MTggMDA2MTkgMDA2MjAgMDA2MjEgMDA2MjIgMDA2MjMgMDA2MjQgMDA2MjUgMDA2MjYgMDA2MjcgMDA2MjggMDA2MjkgMDA2MzAgMDA2MzEgMDA2MzIgMDA2MzMgMDA2MzQgMDA2MzUgMDA2MzYgMDA2MzcgMDA2MzggMDA2MzkgMDA2NDAgMDA2NDEgMDA2NDIgMDA2NDMgMDA2NDQgMDA2NDUgMDA2NDYgMDA2NDcgMDA2NDggMDA2NDkgMDA2NTAgMDA2NTEgMDA2NTIgMDA2NTMgMDA2NTQgMDA2NTUgMDA2NTYgMDA2NTcgMDA2NTggMDA2NTkgMDA2NjAgMDA2NjEgMDA2NjIgMDA2NjMgMDA2NjQgMDA2NjUgMDA2NjYgMDA2NjcgMDA2NjggMDA2NjkgMDA2NzAgMDA2NzEgMDA2NzIgMDA2NzMgMDA2NzQgMDA2NzUgMDA2NzYgMDA2NzcgMDA2NzggMDA2NzkgMDA2ODAgMDA2ODEgMDA2ODIgMDA2ODMgMDA2ODQgMDA2ODUgMDA2ODYgMDA2ODcgMDA2ODggMDA2ODkgMDA2OTAgMDA2OTEgMDA2OTIgMDA2OTMgMDA2OTQgMDA2OTUgMDA2OTYgMDA2OTcgMDA2OTggMDA2OTkgMDA3MDAgMDA3MDEgMDA3MDIgMDA3MDMgMDA3MDQgMDA3MDUgMDA3MDYgMDA3MDcgMDA3MDggMDA3MDkgMDA3MTAgMDA3MTEgMDA3MTIgMDA3MTMgMDA3MTQgMDA3MTUgMDA3MTYgMDA3MTcgMDA3MTggMDA3MTkgMDA3MjAgMDA3MjEgMDA3MjIgMDA3MjMgMDA3MjQgMDA3MjUgMDA3MjYgMDA3MjcgMDA3MjggMDA3MjkgMDA3MzAgMDA3MzEgMDA3MzIgMDA3MzMgMDA3MzQgMDA3MzUgMDA3MzYgMDA3MzcgMDA3MzggMDA3MzkgMDA3NDAgMDA3NDEgMDA3NDIgMDA3NDMgMDA3NDQgMDA3NDUgMDA3NDYgMDA3NDcgMDA3NDggMDA3NDkgMDA3NTAgMDA3NTEgMDA3NTIgMDA3NTMgMDA3NTQgMDA3NTUgMDA3NTYgMDA3NTcgMDA3NTggMDA3NTkgMDA3NjAgMDA3NjEgMDA3NjIgMDA3NjMgMDA3NjQgMDA3NjUgMDA3NjYgMDA3NjcgMDA3NjggMDA3NjkgMDA3NzAgMDA3NzEgMDA3NzIgMDA3NzMgMDA3NzQgMDA3NzUgMDA3NzYgMDA3NzcgMDA3NzggMDA3NzkgMDA3ODAgMDA3ODEgMDA3ODIgMDA3ODMgMDA3ODQgMDA3ODUgMDA3ODYgMDA3ODcgMDA3ODggMDA3ODkgMDA3OTAgMDA3OTEgMDA3OTIgMDA3OTMgMDA3OTQgMDA3OTUgMDA3OTYgMDA3OTcgMDA3OTggMDA3OTkgMDA4MDAgMDA4MDEgMDA4MDIgMDA4MDMgMDA4MDQgMDA4MDUgMDA4MDYgMDA4MDcgMDA4MDggMDA4MDkgMDA4MTAgMDA4MTEgMDA4MTIgMDA4MTMgMDA4MTQgMDA4MTUgMDA4MTYgMDA4MTcgMDA4MTggMDA4MTkgMDA4MjAgMDA4MjEgMDA4MjIgMDA4MjMgMDA4MjQgMDA4MjUgMDA4MjYgMDA4MjcgMDA4MjggMDA4MjkgMDA4MzAgMDA4MzEgMDA4MzIgMDA4MzMgMDA4MzQgMDA4MzUgMDA4MzYgMDA4MzcgMDA4MzggMDA4MzkgMDA4NDAgMDA4NDEgMDA4NDIgMDA4NDMgMDA4NDQgMDA4NDUgMDA4NDYgMDA4NDcgMDA4NDggMDA4NDkgMDA4NTAgMDA4NTEgMDA4NTIgMDA4NTMgMDA4NTQgMDA4NTUgMDA4NTYgMDA4NTcgMDA4NTggMDA4NTkgMDA4NjAgMDA4NjEgMDA4NjIgMDA4NjMgMDA4NjQgMDA4NjUgMDA4NjYgMDA4NjcgMDA4NjggMDA4NjkgMDA4NzAgMDA4NzEgMDA4NzIgMDA4NzMgMDA4NzQgMDA4NzUgMDA4NzYgMDA4NzcgMDA4NzggMDA4NzkgMDA4ODAgMDA4ODEgMDA4ODIgMDA4ODMgMDA4ODQgMDA4ODUgMDA4ODYgMDA4ODcgMDA4ODggMDA4ODkgMDA4OTAgMDA4OTEgMDA4OTIgMDA4OTMgMDA4OTQgMDA4OTUgMDA4OTYgMDA4OTcgMDA4OTggMDA4OTkgMDA5MDAgMDA5MDEgMDA5MDIgMDA5MDMgMDA5MDQgMDA5MDUgMDA5MDYgMDA5MDcgMDA5MDggMDA5MDkgMDA5MTAgMDA5MTEgMDA5MTIgMDA5MTMgMDA5MTQgMDA5MTUgMDA5MTYgMDA5MTcgMDA5MTggMDA5MTkgMDA5MjAgMDA5MjEgMDA5MjIgMDA5MjMgMDA5MjQgMDA5MjUgMDA5MjYgMDA5MjcgMDA5MjggMDA5MjkgMDA5MzAgMDA5MzEgMDA5MzIgMDA5MzMgMDA5MzQgMDA5MzUgMDA5MzYgMDA5MzcgMDA5MzggMDA5MzkgMDA5NDAgMDA5NDEgMDA5NDIgMDA5NDMgMDA5NDQgMDA5NDUgMDA5NDYgMDA5NDcgMDA5NDggMDA5NDkgMDA5NTAgMDA5NTEgMDA5NTIgMDA5NTMgMDA5NTQgMDA5NTUgMDA5NTYgMDA5NTcgMDA5NTggMDA5NTkgMDA5NjAgMDA5NjEgMDA5NjIgMDA5NjMgMDA5NjQgMDA5NjUgMDA5NjYgMDA5NjcgMDA5NjggMDA5NjkgMDA5NzAgMDA5NzEgMDA5NzIgMDA5NzMgMDA5NzQgMDA5NzUgMDA5NzYgMDA5NzcgMDA5NzggMDA5NzkgMDA5ODAgMDA5ODEgMDA5ODIgMDA5ODMgMDA5ODQgMDA5ODUgMDA5ODYgMDA5ODcgMDA5ODggMDA5ODkgMDA5OTAgMDA5OTEgMDA5OTIgMDA5OTMgMDA5OTQgMDA5OTUgMDA5OTYgMDA5OTcgMDA5OTggMDA5OTkg]]></response>
+
+-> property_value -i 9 -d 0 -c 0 -n $var -p 0 -m 10000
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_value" transaction_id="9" type="string" size="6000" encoding="base64"><![CDATA[MDAwMDAgMDAwMDEgMDAwMDIgMDAwMDMgMDAwMDQgMDAwMDUgMDAwMDYgMDAwMDcgMDAwMDggMDAwMDkgMDAwMTAgMDAwMTEgMDAwMTIgMDAwMTMgMDAwMTQgMDAwMTUgMDAwMTYgMDAwMTcgMDAwMTggMDAwMTkgMDAwMjAgMDAwMjEgMDAwMjIgMDAwMjMgMDAwMjQgMDAwMjUgMDAwMjYgMDAwMjcgMDAwMjggMDAwMjkgMDAwMzAgMDAwMzEgMDAwMzIgMDAwMzMgMDAwMzQgMDAwMzUgMDAwMzYgMDAwMzcgMDAwMzggMDAwMzkgMDAwNDAgMDAwNDEgMDAwNDIgMDAwNDMgMDAwNDQgMDAwNDUgMDAwNDYgMDAwNDcgMDAwNDggMDAwNDkgMDAwNTAgMDAwNTEgMDAwNTIgMDAwNTMgMDAwNTQgMDAwNTUgMDAwNTYgMDAwNTcgMDAwNTggMDAwNTkgMDAwNjAgMDAwNjEgMDAwNjIgMDAwNjMgMDAwNjQgMDAwNjUgMDAwNjYgMDAwNjcgMDAwNjggMDAwNjkgMDAwNzAgMDAwNzEgMDAwNzIgMDAwNzMgMDAwNzQgMDAwNzUgMDAwNzYgMDAwNzcgMDAwNzggMDAwNzkgMDAwODAgMDAwODEgMDAwODIgMDAwODMgMDAwODQgMDAwODUgMDAwODYgMDAwODcgMDAwODggMDAwODkgMDAwOTAgMDAwOTEgMDAwOTIgMDAwOTMgMDAwOTQgMDAwOTUgMDAwOTYgMDAwOTcgMDAwOTggMDAwOTkgMDAxMDAgMDAxMDEgMDAxMDIgMDAxMDMgMDAxMDQgMDAxMDUgMDAxMDYgMDAxMDcgMDAxMDggMDAxMDkgMDAxMTAgMDAxMTEgMDAxMTIgMDAxMTMgMDAxMTQgMDAxMTUgMDAxMTYgMDAxMTcgMDAxMTggMDAxMTkgMDAxMjAgMDAxMjEgMDAxMjIgMDAxMjMgMDAxMjQgMDAxMjUgMDAxMjYgMDAxMjcgMDAxMjggMDAxMjkgMDAxMzAgMDAxMzEgMDAxMzIgMDAxMzMgMDAxMzQgMDAxMzUgMDAxMzYgMDAxMzcgMDAxMzggMDAxMzkgMDAxNDAgMDAxNDEgMDAxNDIgMDAxNDMgMDAxNDQgMDAxNDUgMDAxNDYgMDAxNDcgMDAxNDggMDAxNDkgMDAxNTAgMDAxNTEgMDAxNTIgMDAxNTMgMDAxNTQgMDAxNTUgMDAxNTYgMDAxNTcgMDAxNTggMDAxNTkgMDAxNjAgMDAxNjEgMDAxNjIgMDAxNjMgMDAxNjQgMDAxNjUgMDAxNjYgMDAxNjcgMDAxNjggMDAxNjkgMDAxNzAgMDAxNzEgMDAxNzIgMDAxNzMgMDAxNzQgMDAxNzUgMDAxNzYgMDAxNzcgMDAxNzggMDAxNzkgMDAxODAgMDAxODEgMDAxODIgMDAxODMgMDAxODQgMDAxODUgMDAxODYgMDAxODcgMDAxODggMDAxODkgMDAxOTAgMDAxOTEgMDAxOTIgMDAxOTMgMDAxOTQgMDAxOTUgMDAxOTYgMDAxOTcgMDAxOTggMDAxOTkgMDAyMDAgMDAyMDEgMDAyMDIgMDAyMDMgMDAyMDQgMDAyMDUgMDAyMDYgMDAyMDcgMDAyMDggMDAyMDkgMDAyMTAgMDAyMTEgMDAyMTIgMDAyMTMgMDAyMTQgMDAyMTUgMDAyMTYgMDAyMTcgMDAyMTggMDAyMTkgMDAyMjAgMDAyMjEgMDAyMjIgMDAyMjMgMDAyMjQgMDAyMjUgMDAyMjYgMDAyMjcgMDAyMjggMDAyMjkgMDAyMzAgMDAyMzEgMDAyMzIgMDAyMzMgMDAyMzQgMDAyMzUgMDAyMzYgMDAyMzcgMDAyMzggMDAyMzkgMDAyNDAgMDAyNDEgMDAyNDIgMDAyNDMgMDAyNDQgMDAyNDUgMDAyNDYgMDAyNDcgMDAyNDggMDAyNDkgMDAyNTAgMDAyNTEgMDAyNTIgMDAyNTMgMDAyNTQgMDAyNTUgMDAyNTYgMDAyNTcgMDAyNTggMDAyNTkgMDAyNjAgMDAyNjEgMDAyNjIgMDAyNjMgMDAyNjQgMDAyNjUgMDAyNjYgMDAyNjcgMDAyNjggMDAyNjkgMDAyNzAgMDAyNzEgMDAyNzIgMDAyNzMgMDAyNzQgMDAyNzUgMDAyNzYgMDAyNzcgMDAyNzggMDAyNzkgMDAyODAgMDAyODEgMDAyODIgMDAyODMgMDAyODQgMDAyODUgMDAyODYgMDAyODcgMDAyODggMDAyODkgMDAyOTAgMDAyOTEgMDAyOTIgMDAyOTMgMDAyOTQgMDAyOTUgMDAyOTYgMDAyOTcgMDAyOTggMDAyOTkgMDAzMDAgMDAzMDEgMDAzMDIgMDAzMDMgMDAzMDQgMDAzMDUgMDAzMDYgMDAzMDcgMDAzMDggMDAzMDkgMDAzMTAgMDAzMTEgMDAzMTIgMDAzMTMgMDAzMTQgMDAzMTUgMDAzMTYgMDAzMTcgMDAzMTggMDAzMTkgMDAzMjAgMDAzMjEgMDAzMjIgMDAzMjMgMDAzMjQgMDAzMjUgMDAzMjYgMDAzMjcgMDAzMjggMDAzMjkgMDAzMzAgMDAzMzEgMDAzMzIgMDAzMzMgMDAzMzQgMDAzMzUgMDAzMzYgMDAzMzcgMDAzMzggMDAzMzkgMDAzNDAgMDAzNDEgMDAzNDIgMDAzNDMgMDAzNDQgMDAzNDUgMDAzNDYgMDAzNDcgMDAzNDggMDAzNDkgMDAzNTAgMDAzNTEgMDAzNTIgMDAzNTMgMDAzNTQgMDAzNTUgMDAzNTYgMDAzNTcgMDAzNTggMDAzNTkgMDAzNjAgMDAzNjEgMDAzNjIgMDAzNjMgMDAzNjQgMDAzNjUgMDAzNjYgMDAzNjcgMDAzNjggMDAzNjkgMDAzNzAgMDAzNzEgMDAzNzIgMDAzNzMgMDAzNzQgMDAzNzUgMDAzNzYgMDAzNzcgMDAzNzggMDAzNzkgMDAzODAgMDAzODEgMDAzODIgMDAzODMgMDAzODQgMDAzODUgMDAzODYgMDAzODcgMDAzODggMDAzODkgMDAzOTAgMDAzOTEgMDAzOTIgMDAzOTMgMDAzOTQgMDAzOTUgMDAzOTYgMDAzOTcgMDAzOTggMDAzOTkgMDA0MDAgMDA0MDEgMDA0MDIgMDA0MDMgMDA0MDQgMDA0MDUgMDA0MDYgMDA0MDcgMDA0MDggMDA0MDkgMDA0MTAgMDA0MTEgMDA0MTIgMDA0MTMgMDA0MTQgMDA0MTUgMDA0MTYgMDA0MTcgMDA0MTggMDA0MTkgMDA0MjAgMDA0MjEgMDA0MjIgMDA0MjMgMDA0MjQgMDA0MjUgMDA0MjYgMDA0MjcgMDA0MjggMDA0MjkgMDA0MzAgMDA0MzEgMDA0MzIgMDA0MzMgMDA0MzQgMDA0MzUgMDA0MzYgMDA0MzcgMDA0MzggMDA0MzkgMDA0NDAgMDA0NDEgMDA0NDIgMDA0NDMgMDA0NDQgMDA0NDUgMDA0NDYgMDA0NDcgMDA0NDggMDA0NDkgMDA0NTAgMDA0NTEgMDA0NTIgMDA0NTMgMDA0NTQgMDA0NTUgMDA0NTYgMDA0NTcgMDA0NTggMDA0NTkgMDA0NjAgMDA0NjEgMDA0NjIgMDA0NjMgMDA0NjQgMDA0NjUgMDA0NjYgMDA0NjcgMDA0NjggMDA0NjkgMDA0NzAgMDA0NzEgMDA0NzIgMDA0NzMgMDA0NzQgMDA0NzUgMDA0NzYgMDA0NzcgMDA0NzggMDA0NzkgMDA0ODAgMDA0ODEgMDA0ODIgMDA0ODMgMDA0ODQgMDA0ODUgMDA0ODYgMDA0ODcgMDA0ODggMDA0ODkgMDA0OTAgMDA0OTEgMDA0OTIgMDA0OTMgMDA0OTQgMDA0OTUgMDA0OTYgMDA0OTcgMDA0OTggMDA0OTkgMDA1MDAgMDA1MDEgMDA1MDIgMDA1MDMgMDA1MDQgMDA1MDUgMDA1MDYgMDA1MDcgMDA1MDggMDA1MDkgMDA1MTAgMDA1MTEgMDA1MTIgMDA1MTMgMDA1MTQgMDA1MTUgMDA1MTYgMDA1MTcgMDA1MTggMDA1MTkgMDA1MjAgMDA1MjEgMDA1MjIgMDA1MjMgMDA1MjQgMDA1MjUgMDA1MjYgMDA1MjcgMDA1MjggMDA1MjkgMDA1MzAgMDA1MzEgMDA1MzIgMDA1MzMgMDA1MzQgMDA1MzUgMDA1MzYgMDA1MzcgMDA1MzggMDA1MzkgMDA1NDAgMDA1NDEgMDA1NDIgMDA1NDMgMDA1NDQgMDA1NDUgMDA1NDYgMDA1NDcgMDA1NDggMDA1NDkgMDA1NTAgMDA1NTEgMDA1NTIgMDA1NTMgMDA1NTQgMDA1NTUgMDA1NTYgMDA1NTcgMDA1NTggMDA1NTkgMDA1NjAgMDA1NjEgMDA1NjIgMDA1NjMgMDA1NjQgMDA1NjUgMDA1NjYgMDA1NjcgMDA1NjggMDA1NjkgMDA1NzAgMDA1NzEgMDA1NzIgMDA1NzMgMDA1NzQgMDA1NzUgMDA1NzYgMDA1NzcgMDA1NzggMDA1NzkgMDA1ODAgMDA1ODEgMDA1ODIgMDA1ODMgMDA1ODQgMDA1ODUgMDA1ODYgMDA1ODcgMDA1ODggMDA1ODkgMDA1OTAgMDA1OTEgMDA1OTIgMDA1OTMgMDA1OTQgMDA1OTUgMDA1OTYgMDA1OTcgMDA1OTggMDA1OTkgMDA2MDAgMDA2MDEgMDA2MDIgMDA2MDMgMDA2MDQgMDA2MDUgMDA2MDYgMDA2MDcgMDA2MDggMDA2MDkgMDA2MTAgMDA2MTEgMDA2MTIgMDA2MTMgMDA2MTQgMDA2MTUgMDA2MTYgMDA2MTcgMDA2MTggMDA2MTkgMDA2MjAgMDA2MjEgMDA2MjIgMDA2MjMgMDA2MjQgMDA2MjUgMDA2MjYgMDA2MjcgMDA2MjggMDA2MjkgMDA2MzAgMDA2MzEgMDA2MzIgMDA2MzMgMDA2MzQgMDA2MzUgMDA2MzYgMDA2MzcgMDA2MzggMDA2MzkgMDA2NDAgMDA2NDEgMDA2NDIgMDA2NDMgMDA2NDQgMDA2NDUgMDA2NDYgMDA2NDcgMDA2NDggMDA2NDkgMDA2NTAgMDA2NTEgMDA2NTIgMDA2NTMgMDA2NTQgMDA2NTUgMDA2NTYgMDA2NTcgMDA2NTggMDA2NTkgMDA2NjAgMDA2NjEgMDA2NjIgMDA2NjMgMDA2NjQgMDA2NjUgMDA2NjYgMDA2NjcgMDA2NjggMDA2NjkgMDA2NzAgMDA2NzEgMDA2NzIgMDA2NzMgMDA2NzQgMDA2NzUgMDA2NzYgMDA2NzcgMDA2NzggMDA2NzkgMDA2ODAgMDA2ODEgMDA2ODIgMDA2ODMgMDA2ODQgMDA2ODUgMDA2ODYgMDA2ODcgMDA2ODggMDA2ODkgMDA2OTAgMDA2OTEgMDA2OTIgMDA2OTMgMDA2OTQgMDA2OTUgMDA2OTYgMDA2OTcgMDA2OTggMDA2OTkgMDA3MDAgMDA3MDEgMDA3MDIgMDA3MDMgMDA3MDQgMDA3MDUgMDA3MDYgMDA3MDcgMDA3MDggMDA3MDkgMDA3MTAgMDA3MTEgMDA3MTIgMDA3MTMgMDA3MTQgMDA3MTUgMDA3MTYgMDA3MTcgMDA3MTggMDA3MTkgMDA3MjAgMDA3MjEgMDA3MjIgMDA3MjMgMDA3MjQgMDA3MjUgMDA3MjYgMDA3MjcgMDA3MjggMDA3MjkgMDA3MzAgMDA3MzEgMDA3MzIgMDA3MzMgMDA3MzQgMDA3MzUgMDA3MzYgMDA3MzcgMDA3MzggMDA3MzkgMDA3NDAgMDA3NDEgMDA3NDIgMDA3NDMgMDA3NDQgMDA3NDUgMDA3NDYgMDA3NDcgMDA3NDggMDA3NDkgMDA3NTAgMDA3NTEgMDA3NTIgMDA3NTMgMDA3NTQgMDA3NTUgMDA3NTYgMDA3NTcgMDA3NTggMDA3NTkgMDA3NjAgMDA3NjEgMDA3NjIgMDA3NjMgMDA3NjQgMDA3NjUgMDA3NjYgMDA3NjcgMDA3NjggMDA3NjkgMDA3NzAgMDA3NzEgMDA3NzIgMDA3NzMgMDA3NzQgMDA3NzUgMDA3NzYgMDA3NzcgMDA3NzggMDA3NzkgMDA3ODAgMDA3ODEgMDA3ODIgMDA3ODMgMDA3ODQgMDA3ODUgMDA3ODYgMDA3ODcgMDA3ODggMDA3ODkgMDA3OTAgMDA3OTEgMDA3OTIgMDA3OTMgMDA3OTQgMDA3OTUgMDA3OTYgMDA3OTcgMDA3OTggMDA3OTkgMDA4MDAgMDA4MDEgMDA4MDIgMDA4MDMgMDA4MDQgMDA4MDUgMDA4MDYgMDA4MDcgMDA4MDggMDA4MDkgMDA4MTAgMDA4MTEgMDA4MTIgMDA4MTMgMDA4MTQgMDA4MTUgMDA4MTYgMDA4MTcgMDA4MTggMDA4MTkgMDA4MjAgMDA4MjEgMDA4MjIgMDA4MjMgMDA4MjQgMDA4MjUgMDA4MjYgMDA4MjcgMDA4MjggMDA4MjkgMDA4MzAgMDA4MzEgMDA4MzIgMDA4MzMgMDA4MzQgMDA4MzUgMDA4MzYgMDA4MzcgMDA4MzggMDA4MzkgMDA4NDAgMDA4NDEgMDA4NDIgMDA4NDMgMDA4NDQgMDA4NDUgMDA4NDYgMDA4NDcgMDA4NDggMDA4NDkgMDA4NTAgMDA4NTEgMDA4NTIgMDA4NTMgMDA4NTQgMDA4NTUgMDA4NTYgMDA4NTcgMDA4NTggMDA4NTkgMDA4NjAgMDA4NjEgMDA4NjIgMDA4NjMgMDA4NjQgMDA4NjUgMDA4NjYgMDA4NjcgMDA4NjggMDA4NjkgMDA4NzAgMDA4NzEgMDA4NzIgMDA4NzMgMDA4NzQgMDA4NzUgMDA4NzYgMDA4NzcgMDA4NzggMDA4NzkgMDA4ODAgMDA4ODEgMDA4ODIgMDA4ODMgMDA4ODQgMDA4ODUgMDA4ODYgMDA4ODcgMDA4ODggMDA4ODkgMDA4OTAgMDA4OTEgMDA4OTIgMDA4OTMgMDA4OTQgMDA4OTUgMDA4OTYgMDA4OTcgMDA4OTggMDA4OTkgMDA5MDAgMDA5MDEgMDA5MDIgMDA5MDMgMDA5MDQgMDA5MDUgMDA5MDYgMDA5MDcgMDA5MDggMDA5MDkgMDA5MTAgMDA5MTEgMDA5MTIgMDA5MTMgMDA5MTQgMDA5MTUgMDA5MTYgMDA5MTcgMDA5MTggMDA5MTkgMDA5MjAgMDA5MjEgMDA5MjIgMDA5MjMgMDA5MjQgMDA5MjUgMDA5MjYgMDA5MjcgMDA5MjggMDA5MjkgMDA5MzAgMDA5MzEgMDA5MzIgMDA5MzMgMDA5MzQgMDA5MzUgMDA5MzYgMDA5MzcgMDA5MzggMDA5MzkgMDA5NDAgMDA5NDEgMDA5NDIgMDA5NDMgMDA5NDQgMDA5NDUgMDA5NDYgMDA5NDcgMDA5NDggMDA5NDkgMDA5NTAgMDA5NTEgMDA5NTIgMDA5NTMgMDA5NTQgMDA5NTUgMDA5NTYgMDA5NTcgMDA5NTggMDA5NTkgMDA5NjAgMDA5NjEgMDA5NjIgMDA5NjMgMDA5NjQgMDA5NjUgMDA5NjYgMDA5NjcgMDA5NjggMDA5NjkgMDA5NzAgMDA5NzEgMDA5NzIgMDA5NzMgMDA5NzQgMDA5NzUgMDA5NzYgMDA5NzcgMDA5NzggMDA5NzkgMDA5ODAgMDA5ODEgMDA5ODIgMDA5ODMgMDA5ODQgMDA5ODUgMDA5ODYgMDA5ODcgMDA5ODggMDA5ODkgMDA5OTAgMDA5OTEgMDA5OTIgMDA5OTMgMDA5OTQgMDA5OTUgMDA5OTYgMDA5OTcgMDA5OTggMDA5OTkg]]></response>
diff --git a/xdebug-3.4.5/tests/debugger/dbgp/dbgpclient.php b/xdebug-3.4.5/tests/debugger/dbgp/dbgpclient.php
new file mode 100644
index 0000000..c788e08
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/dbgp/dbgpclient.php
@@ -0,0 +1,310 @@
+<?php
+require_once __DIR__ . '/../../utils.inc';
+
+class DebugClient
+{
+	// free port will be selected automatically by the operating system
+	protected $port = 0;
+
+	private $tmpDir;
+
+	protected $socket;
+	protected $php;
+	protected $ppipes;
+	private   $pid = null;
+
+	public function getPort()
+	{
+		return $this->port;
+	}
+
+	public function setPort($port)
+	{
+		$this->port = $port;
+	}
+
+	protected function getIPAddress()
+	{
+		return "127.0.0.1";
+	}
+
+	protected function getAddress()
+	{
+		return "tcp://" . $this->getIPAddress() . ":" . $this->getPort();
+	}
+
+	public function __construct()
+	{
+		$this->tmpDir = getTmpDir();
+	}
+
+	private function open( &$errno, &$errstr )
+	{
+		$socket = @stream_socket_server( $this->getAddress(), $errno, $errstr );
+		if ( $socket )
+		{
+			$name = stream_socket_get_name( $socket, false );
+			$name = explode( ":", $name );
+			$this->port = array_pop( $name );
+		}
+		return $socket;
+	}
+
+	private function launchPhp( &$pipes, $filename, array $ini_options = [], array $extra_options = [] )
+	{
+		@unlink( $this->tmpDir . 'error-output.txt' );
+		@unlink( $this->tmpDir . 'remote_log.txt' );
+
+		$descriptorspec = array(
+		   0 => array( 'pipe', 'r' ),
+		   1 => array( 'pipe', 'w' ),
+		   2 => array( 'file', $this->tmpDir . 'error-output.txt', 'a' )
+		);
+
+		$default_options = array(
+			"xdebug.mode" => "debug",
+			"xdebug.start_with_request" => "'yes'",
+			"xdebug.client_host" => $this->getIPAddress(),
+			"xdebug.client_port" => $this->getPort(),
+			'xdebug.control_socket' => "'no'",
+		);
+
+		$env_vars = array_key_exists( 'env', $extra_options ) ? $extra_options['env'] : [];
+		$env_vars += $_ENV;
+
+		$options = (getenv('TEST_PHP_ARGS') ?: '');
+		$ini_options = array_merge( $default_options, $ini_options );
+		foreach ( $ini_options as $key => $value )
+		{
+			if ( is_array( $value ) )
+			{
+				foreach ( $value as $valueElement )
+				{
+					$options .= " -d{$key}=$valueElement";
+				}
+			}
+			else
+			{
+				$options .= " -d{$key}=$value";
+			}
+		}
+
+		if ( array_key_exists( 'auto_prepend', $extra_options ) )
+		{
+			$prependFile = "{$this->tmpDir}auto-prepend.inc";
+			file_put_contents( $prependFile, $extra_options['auto_prepend'] );
+			$options .= " -dauto_prepend_file={$prependFile}";
+		}
+
+		$php = getenv( 'TEST_PHP_EXECUTABLE' );
+		$cmd = "{$php} $options {$filename} >{$this->tmpDir}php-stdout.txt 2>{$this->tmpDir}php-stderr.txt";
+		if (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') {
+			$cmd = "exec {$cmd}";
+		}
+		$cwd = dirname( __FILE__ );
+
+		$process = proc_open( $cmd, $descriptorspec, $pipes, $cwd, $env_vars );
+		return $process;
+	}
+
+	function fixFilePath( $m )
+	{
+		preg_match( '@.*/(.*\.inc)@', $m[2], $fm );
+		if ( !isset( $fm[1] ) )
+		{
+			$fm[1] = '';
+		}
+		return " {$m[1]}=\"file://{$fm[1]}\"";
+	}
+
+	function doRead( $conn, ?string $transaction_id = null )
+	{
+		stream_set_timeout( $conn, 3 );
+		do {
+			$trans_id = null;
+			$length = 0;
+			while ( "\0" !== ( $char = fgetc($conn) ) ) {
+				if ( $char === false ) {
+					echo "read a false for $transaction_id" . PHP_EOL;
+					return null;
+				}
+				if ( !is_numeric($char) ) {
+					echo "read a non-number for $transaction_id" . PHP_EOL;
+					return null;
+				}
+				$length = $length * 10 + (int)$char;
+			}
+
+			$read = '';
+			while ( 0 < $length ) {
+				$data = fread( $conn, $length );
+				if ( $data === false )
+				{
+					echo "read a false for $transaction_id" . PHP_EOL;
+					return null;
+				}
+				$length -= strlen( $data );
+				$read .= $data;
+			}
+			$char = fgetc( $conn );
+			if ( $char !== "\0" )
+			{
+				echo 'must end with \0' . PHP_EOL;
+			}
+
+			// sanitize
+			$read = preg_replace( '@(?<!"Locals") id="\d+?(\d{4})"@', ' id="{{PID}}\\1"', $read );
+			$read = preg_replace( '@\s(appid)="\d+?"@', ' \\1=""', $read );
+			$read = preg_replace( '@\s(xdebug:language_version)="[^"]+?"@', ' \\1=""', $read );
+			$read = preg_replace( '@(engine\sversion)="[^"]+?"@', '\\1=""', $read );
+			$read = preg_replace( '@(2002-20[0-9]{2})@', '2002-2099', $read );
+			$read = preg_replace_callback( '@\s(fileuri|filename)="file:///(.+?)"@', self::class . '::fixFilePath', $read );
+
+			echo $read, "\n\n";
+
+			if ( preg_match( '@<stream xmlns="urn.debugger_protocol_v1" xmlns:xdebug@', $read ) )
+			{
+				continue;
+			}
+			if ( preg_match( '@<notify xmlns="urn.debugger_protocol_v1" xmlns:xdebug@', $read ) )
+			{
+				continue;
+			}
+			$matches = [];
+			if ( preg_match( '@transaction_id="(?P<transaction_id>\d+)"@', $read, $matches ) )
+			{
+				$trans_id = $matches['transaction_id'] ?? null;
+			}
+		} while ( $trans_id !== $transaction_id );
+	}
+
+	function start( $filename, array $ini_options = [], array $options = [])
+	{
+		$filename = realpath( $filename );
+
+		$this->socket = $this->open( $errno, $errstr );
+		if ( $this->socket === false )
+		{
+			echo "Could not create socket server - already in use?\n";
+			echo "Error: {$errstr}, errno: {$errno}\n";
+			echo "Address: {$this->getAddress()}\n";
+			return false;
+		}
+		$this->php = $this->launchPhp( $this->ppipes, $filename, $ini_options, $options );
+		$conn = @stream_socket_accept( $this->socket, isset( $options['timeout'] ) ? $options['timeout'] : 5 );
+
+		if ( $conn === false )
+		{
+			echo @file_get_contents( $this->tmpDir . 'php-stdout.txt' ), "\n";
+			echo @file_get_contents( $this->tmpDir . 'php-stderr.txt' ), "\n";
+			echo @file_get_contents( $this->tmpDir . 'error-output.txt' ), "\n";
+			echo @file_get_contents( $this->tmpDir . 'remote_log.txt' ), "\n";
+			proc_close( $this->php );
+			return false;
+		}
+		return $conn;
+	}
+
+	function stop( $conn, array $options = [] )
+	{
+		fclose( $conn );
+		fclose( $this->ppipes[0] );
+		fclose( $this->ppipes[1] );
+		fclose( $this->socket );
+		proc_close( $this->php );
+
+		if ( array_key_exists( 'show-stdout', $options ) && $options['show-stdout'] )
+		{
+			echo @file_get_contents( $this->tmpDir . 'php-stdout.txt' ), "\n";
+		}
+		// echo @file_get_contents( $this->tmpDir . 'php-stderr.txt' ), "\n";
+		// echo @file_get_contents( $this->tmpDir . 'error-output.txt' ), "\n";
+	}
+
+	function sendCommand( $conn, $command, $transaction_id )
+	{
+		// inject identifier
+		$parts = explode( ' ', $command, 2 );
+		if ( count($parts) == 1 )
+		{
+			$command = $parts[0] . " -i $transaction_id";
+		}
+		else
+		{
+			$command = $parts[0] . " -i $transaction_id " . $parts[1];
+		}
+
+		/* Replace PID macro */
+		$command = str_replace( "{{PID}}", $this->pid & 0x1ffff, $command );
+
+		$sanitised = $command;
+		$sanitised = preg_replace( '@\sfile://.*[/\\\\](.*\.inc)\s@', ' file://\\1 ', $sanitised );
+
+		echo "-> ", $sanitised, "\n";
+		fwrite( $conn, $command . "\0" );
+	}
+
+	function runTest( $filename, array $commands, array $ini_options = [], array $options = [] )
+	{
+		$conn = $this->start( $filename, $ini_options, $options );
+		if ( $conn === false )
+		{
+			return;
+		}
+		$i = 1;
+		$procInfo = proc_get_status( $this->php );
+		$this->pid = $procInfo['pid'];
+
+		// read header
+		$this->doRead( $conn );
+		foreach ( $commands as $command )
+		{
+			$this->sendCommand( $conn, $command, $i );
+			$this->doRead( $conn, (string)$i );
+
+			$i++;
+		}
+		$this->stop( $conn, $options );
+	}
+}
+
+class DebugClientIPv6 extends DebugClient
+{
+	protected function getIPAddress()
+	{
+		return "::1";
+	}
+
+	protected function getAddress()
+	{
+		return "tcp://[" . $this->getIPAddress() . "]:" . $this->getPort();
+	}
+
+	public static function isSupported( &$errno, &$errstr )
+	{
+		$socket = @stream_socket_server( "tcp://[::1]:0", $errno, $errstr );
+
+		if ( $socket === false )
+		{
+			return false;
+		}
+
+		fclose( $socket );
+		return true;
+	}
+}
+
+function dbgpRunFile( $data, $commands, array $ini_options = [], array $options = [] )
+{
+	if ( isset( $options['ipv'] ) && $options['ipv'] == 6 )
+	{
+		$t = new DebugClientIPv6();
+	}
+	else
+	{
+		$t = new DebugClient();
+	}
+
+	$t->runTest( $data, $commands, $ini_options, $options );
+}
+?>
diff --git a/xdebug-3.4.5/tests/debugger/empty-echo.inc b/xdebug-3.4.5/tests/debugger/empty-echo.inc
new file mode 100644
index 0000000..c44ba8e
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/empty-echo.inc
@@ -0,0 +1,4 @@
+<?php
+$e = xdebug_get_headers();
+echo "Hi!\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/fiber-001.inc b/xdebug-3.4.5/tests/debugger/fiber-001.inc
new file mode 100644
index 0000000..d3a682e
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/fiber-001.inc
@@ -0,0 +1,82 @@
+<?php
+class EventLoop
+{
+    private string $nextId = 'a';
+    private array $deferCallbacks = [];
+    private array $read = [];
+    private array $streamCallbacks = [];
+
+    public function run(): void
+    {
+        while (!empty($this->deferCallbacks) || !empty($this->read)) {
+            $defers = $this->deferCallbacks;
+            $this->deferCallbacks = [];
+            foreach ($defers as $id => $defer) {
+                $defer();
+            }
+
+            $this->select($this->read);
+        }
+    }
+
+    private function select(array $read): void
+    {
+        $timeout = empty($this->deferCallbacks) ? null : 0;
+        if (!stream_select($read, $write, $except, $timeout, $timeout)) {
+            return;
+        }
+
+        foreach ($read as $id => $resource) {
+            $callback = $this->streamCallbacks[$id];
+            unset($this->read[$id], $this->streamCallbacks[$id]);
+            $callback($resource);
+        }
+    }
+
+    public function defer(callable $callback): void
+    {
+        $id = $this->nextId++;
+        $this->deferCallbacks[$id] = $callback;
+    }
+
+    public function read($resource, callable $callback): void
+    {
+        $id = $this->nextId++;
+        $this->read[$id] = $resource;
+        $this->streamCallbacks[$id] = $callback;
+    }
+}
+
+[$read, $write] = stream_socket_pair(
+    stripos(PHP_OS, 'win') === 0 ? STREAM_PF_INET : STREAM_PF_UNIX,
+    STREAM_SOCK_STREAM,
+    STREAM_IPPROTO_IP
+);
+
+// Set streams to non-blocking mode.
+stream_set_blocking($read, false);
+stream_set_blocking($write, false);
+
+$loop = new EventLoop;
+
+// Read data in a separate fiber after checking if the stream is readable.
+$fiber = new Fiber(function () use ($loop, $read): void {
+    echo "Waiting for data...\n";
+
+    $fiber = Fiber::getCurrent();
+    $loop->read($read, fn() => $fiber->resume());
+    Fiber::suspend();
+
+    $data = fread($read, 8192);
+
+    echo "Received data: ", $data, "\n";
+});
+
+// Start the fiber, which will suspend while waiting for a read event.
+$fiber->start();
+
+// Defer writing data to an event loop callback.
+$loop->defer(fn() => fwrite($write, "Hello, world!"));
+
+// Run the event loop.
+$loop->run();
diff --git a/xdebug-3.4.5/tests/debugger/fiber-001.phpt b/xdebug-3.4.5/tests/debugger/fiber-001.phpt
new file mode 100644
index 0000000..c5acd79
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/fiber-001.phpt
@@ -0,0 +1,105 @@
+--TEST--
+Test for debugging with fibers (>= PHP 8.1)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/fiber-001.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 39',
+	'breakpoint_set -t line -n 66',
+	'breakpoint_set -t line -n 70',
+	'run',
+	'stack_depth',
+	'stack_get',
+	'property_get -n $loop->nextId',
+	'run',
+	'stack_depth',
+	'stack_get',
+	'property_get -n $id',
+	'run',
+	'stack_depth',
+	'stack_get',
+	'property_get -n $loop->nextId',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://fiber-001.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://fiber-001.inc" lineno="50"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 39
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> breakpoint_set -i 3 -t line -n 66
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0002"></response>
+
+-> breakpoint_set -i 4 -t line -n 70
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" id="{{PID}}0003"></response>
+
+-> run -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://fiber-001.inc" lineno="66"></xdebug:message></response>
+
+-> stack_depth -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_depth" transaction_id="6" depth="2"></response>
+
+-> stack_get -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="7"><stack where="{closure:%sfiber-001.inc:63-73}" level="0" type="file" filename="file://fiber-001.inc" lineno="66"></stack><stack where="{fiber:%s}" level="1" type="file" filename="file://fiber-001.inc" lineno="76"></stack></response>
+
+-> property_get -i 8 -n $loop->nextId
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="8"><property name="$loop-&gt;nextId" fullname="$loop-&gt;nextId" type="string" size="1" encoding="base64"><![CDATA[YQ==]]></property></response>
+
+-> run -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="9" status="break" reason="ok"><xdebug:message filename="file://fiber-001.inc" lineno="39"></xdebug:message></response>
+
+-> stack_depth -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_depth" transaction_id="10" depth="2"></response>
+
+-> stack_get -i 11
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="11"><stack where="EventLoop-&gt;defer" level="0" type="file" filename="file://fiber-001.inc" lineno="39"></stack><stack where="{main}" level="1" type="file" filename="file://fiber-001.inc" lineno="79"></stack></response>
+
+-> property_get -i 12 -n $id
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="12"><property name="$id" fullname="$id" type="string" size="1" encoding="base64"><![CDATA[Yg==]]></property></response>
+
+-> run -i 13
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="13" status="break" reason="ok"><xdebug:message filename="file://fiber-001.inc" lineno="70"></xdebug:message></response>
+
+-> stack_depth -i 14
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_depth" transaction_id="14" depth="2"></response>
+
+-> stack_get -i 15
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="15"><stack where="{closure:%sfiber-001.inc:63-73}" level="0" type="file" filename="file://fiber-001.inc" lineno="70"></stack><stack where="{fiber:%s}" level="1" type="file" filename="file://fiber-001.inc" lineno="76"></stack></response>
+
+-> property_get -i 16 -n $loop->nextId
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="16"><property name="$loop-&gt;nextId" fullname="$loop-&gt;nextId" type="string" size="1" encoding="base64"><![CDATA[Yw==]]></property></response>
+
+-> detach -i 17
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="17" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/fiber-002.inc b/xdebug-3.4.5/tests/debugger/fiber-002.inc
new file mode 100644
index 0000000..acd6b25
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/fiber-002.inc
@@ -0,0 +1,30 @@
+<?php
+
+(new Fiber(function (): void {
+    $fiber1 = new Fiber(function (): void {
+        $a = 1;
+        Fiber::suspend();
+        $a = 2;
+    });
+    $fiber1->start();
+
+    $fiber2 = new Fiber(function (): void {
+        $a = 1;
+        Fiber::suspend();
+        $a = 2;
+    });
+    $fiber2->start();
+
+    $fiber3 = new Fiber(function (): void {
+        $a = 1;
+        Fiber::suspend();
+        $a = 2;
+    });
+    $fiber3->start();
+
+    $fiber1->resume();
+    $fiber2->resume();
+    $fiber3->resume();
+    $a = 1;
+}))->start();
+?>
diff --git a/xdebug-3.4.5/tests/debugger/fiber-step-into-001.phpt b/xdebug-3.4.5/tests/debugger/fiber-step-into-001.phpt
new file mode 100644
index 0000000..563c894
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/fiber-step-into-001.phpt
@@ -0,0 +1,60 @@
+--TEST--
+Test for step_into with fibers
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/fiber-002.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 9',
+	'breakpoint_set -t line -n 28',
+	'run',
+	'step_into',
+	'run',
+	'step_into',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://fiber-002.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://fiber-002.inc" lineno="3"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> breakpoint_set -i 3 -t line -n 28
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0002"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://fiber-002.inc" lineno="9"></xdebug:message></response>
+
+-> step_into -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://fiber-002.inc" lineno="5"></xdebug:message></response>
+
+-> run -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://fiber-002.inc" lineno="28"></xdebug:message></response>
+
+-> step_into -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://fiber-002.inc" lineno="29"></xdebug:message></response>
+
+-> detach -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="8" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/fiber-step-over-001.phpt b/xdebug-3.4.5/tests/debugger/fiber-step-over-001.phpt
new file mode 100644
index 0000000..18ae8e9
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/fiber-step-over-001.phpt
@@ -0,0 +1,60 @@
+--TEST--
+Test for step_into with fibers [1]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/fiber-002.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 9',
+	'breakpoint_set -t line -n 28',
+	'run',
+	'step_over',
+	'run',
+	'step_over',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://fiber-002.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://fiber-002.inc" lineno="3"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> breakpoint_set -i 3 -t line -n 28
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0002"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://fiber-002.inc" lineno="9"></xdebug:message></response>
+
+-> step_over -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://fiber-002.inc" lineno="11"></xdebug:message></response>
+
+-> run -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://fiber-002.inc" lineno="28"></xdebug:message></response>
+
+-> step_over -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://fiber-002.inc" lineno="29"></xdebug:message></response>
+
+-> detach -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="8" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/fiber-step-over-002.phpt b/xdebug-3.4.5/tests/debugger/fiber-step-over-002.phpt
new file mode 100644
index 0000000..eb74cfa
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/fiber-step-over-002.phpt
@@ -0,0 +1,70 @@
+--TEST--
+Test for step_into with fibers [2]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1; dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/fiber-002.inc';
+
+$commands = array(
+	'step_into',
+	'breakpoint_set -t line -n 7',
+	'run',
+	'step_over',
+	'step_over',
+	'step_over',
+	'step_over',
+	'step_over',
+	'step_over',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://fiber-002.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://fiber-002.inc" lineno="3"></xdebug:message></response>
+
+-> breakpoint_set -i 2 -t line -n 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2" id="{{PID}}0001"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="break" reason="ok"><xdebug:message filename="file://fiber-002.inc" lineno="7"></xdebug:message></response>
+
+-> step_over -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://fiber-002.inc" lineno="8"></xdebug:message></response>
+
+-> step_over -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file://fiber-002.inc" lineno="26"></xdebug:message></response>
+
+-> step_over -i 6
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file://fiber-002.inc" lineno="27"></xdebug:message></response>
+
+-> step_over -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="7" status="break" reason="ok"><xdebug:message filename="file://fiber-002.inc" lineno="28"></xdebug:message></response>
+
+-> step_over -i 8
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="8" status="break" reason="ok"><xdebug:message filename="file://fiber-002.inc" lineno="29"></xdebug:message></response>
+
+-> step_over -i 9
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="9" status="stopping" reason="ok"></response>
+
+-> detach -i 10
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="10" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/remote_log-unix-2.phpt b/xdebug-3.4.5/tests/debugger/remote_log-unix-2.phpt
new file mode 100644
index 0000000..a5fdc74
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/remote_log-unix-2.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test for Xdebug's remote log (with unix sockets and header)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; !win');
+?>
+--ENV--
+I_LIKE_COOKIES=unix:///tmp/haxx0r.sock
+--INI--
+xdebug.mode=debug
+xdebug.start_with_request=yes
+xdebug.log={TMP}/{RUNID}{TEST_PHP_WORKER}remote-unix.txt
+xdebug.discover_client_host=1
+xdebug.client_host=unix:///tmp/xdbg.sock
+xdebug.client_port=0
+xdebug.client_discovery_header=I_LIKE_COOKIES
+xdebug.control_socket=off
+--FILE--
+<?php
+echo strlen("foo"), "\n";
+echo file_get_contents(sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'remote-unix.txt' );
+unlink (sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'remote-unix.txt' );
+?>
+--EXPECTF--
+3
+[%d] Log opened at %d-%d-%d %d:%d:%d.%d
+[%d] [Step Debug] INFO: Checking for client discovery headers: 'I_LIKE_COOKIES'.
+[%d] [Step Debug] INFO: Checking header 'I_LIKE_COOKIES'.
+[%d] [Step Debug] WARN: Invalid remote address provided containing URI spec 'unix:///tmp/haxx0r.sock'.
+[%d] [Step Debug] WARN: Could not discover client host through HTTP headers, connecting to configured address/port: unix:///tmp/xdbg.sock:0.
+[%d] [Step Debug] WARN: Creating socket for 'unix:///tmp/xdbg.sock', connect: No such file or directory.
+[%d] [Step Debug] ERR: Could not connect to debugging client. Tried: unix:///tmp/xdbg.sock:0 (fallback through xdebug.client_host/xdebug.client_port).
diff --git a/xdebug-3.4.5/tests/debugger/remote_log-unix.phpt b/xdebug-3.4.5/tests/debugger/remote_log-unix.phpt
new file mode 100644
index 0000000..cc0c68c
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/remote_log-unix.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Test for Xdebug's remote log (with unix sockets)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; !win');
+?>
+--ENV--
+I_LIKE_COOKIES=doesnotexist3
+--INI--
+xdebug.mode=debug
+xdebug.start_with_request=yes
+xdebug.log={TMP}/{RUNID}{TEST_PHP_WORKER}remote-log4.txt
+xdebug.client_host=unix:///tmp/xdbg.sock
+xdebug.client_port=0
+xdebug.control_socket=off
+--FILE--
+<?php
+echo strlen("foo"), "\n";
+echo file_get_contents(sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'remote-log4.txt' );
+unlink (sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'remote-log4.txt' );
+?>
+--EXPECTF--
+3
+[%d] Log opened at %d-%d-%d %d:%d:%d.%d
+[%d] [Step Debug] INFO: Connecting to configured address/port: unix:///tmp/xdbg.sock:0.
+[%d] [Step Debug] WARN: Creating socket for 'unix:///tmp/xdbg.sock', connect: No such file or directory.
+[%d] [Step Debug] ERR: Could not connect to debugging client. Tried: unix:///tmp/xdbg.sock:0 (through xdebug.client_host/xdebug.client_port).
diff --git a/xdebug-3.4.5/tests/debugger/remote_log-win.phpt b/xdebug-3.4.5/tests/debugger/remote_log-win.phpt
new file mode 100644
index 0000000..af1fbcc
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/remote_log-win.phpt
@@ -0,0 +1,34 @@
+--TEST--
+Test for Xdebug's remote log (Windows)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; win');
+?>
+--ENV--
+I_LIKE_COOKIES=doesnotexist3
+--INI--
+xdebug.mode=debug
+xdebug.start_with_request=yes
+xdebug.log=C:\Windows\Temp\remote-log4.txt
+xdebug.discover_client_host=1
+xdebug.client_host=doesnotexist2
+xdebug.client_port=9003
+xdebug.client_discovery_header=I_LIKE_COOKIES
+--FILE--
+<?php
+@unlink ("C:\\Windows\\Temp\\remote-log4.txt");
+echo strlen("foo"), "\n";
+echo file_get_contents("C:\\Windows\\Temp\\remote-log4.txt");
+@unlink ("C:\\Windows\\Temp\\remote-log4.txt");
+?>
+--EXPECTF--
+3
+[%d] Log opened at %d-%d-%d %d:%d:%d.%d
+[%d] [Step Debug] INFO: Checking for client discovery headers: 'I_LIKE_COOKIES'.
+[%d] [Step Debug] INFO: Checking header 'I_LIKE_COOKIES'.
+[%d] [Step Debug] INFO: Client host discovered through HTTP header, connecting to doesnotexist3:9003.
+[%d] [Step Debug] WARN: Creating socket for 'doesnotexist3:9003', getaddrinfo: %d.
+[%d] [Step Debug] WARN: Could not connect to client host discovered through HTTP headers, connecting to configured address/port: doesnotexist2:9003.
+[%d] [Step Debug] WARN: Creating socket for 'doesnotexist2:9003', getaddrinfo: 11001.
+[%d] [Step Debug] ERR: Could not connect to debugging client. Tried: doesnotexist3:9003 (from I_LIKE_COOKIES HTTP header), doesnotexist2:9003 (fallback through xdebug.client_host/xdebug.client_port).
diff --git a/xdebug-3.4.5/tests/debugger/remote_log1.phpt b/xdebug-3.4.5/tests/debugger/remote_log1.phpt
new file mode 100644
index 0000000..aa3bc9b
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/remote_log1.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Test for Xdebug's remote log (can not connect, no remote callback)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; !win');
+?>
+--INI--
+xdebug.mode=debug
+xdebug.start_with_request=yes
+xdebug.log={TMP}/{RUNID}{TEST_PHP_WORKER}remote-log1.txt
+xdebug.log_level=20
+xdebug.discover_client_host=0
+xdebug.client_host=doesnotexist
+xdebug.client_port=9002
+xdebug.control_socket=off
+--FILE--
+<?php
+echo strlen("foo"), "\n";
+echo file_get_contents(sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'remote-log1.txt' );
+unlink (sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'remote-log1.txt' );
+?>
+--EXPECTF--
+3
+[%d] Log opened at %d-%d-%d %d:%d:%d.%d
+[%d] [Step Debug] INFO: Connecting to configured address/port: doesnotexist:9002.
+[%d] [Step Debug] WARN: Creating socket for 'doesnotexist:9002', getaddrinfo: %s.
+[%d] [Step Debug] ERR: Could not connect to debugging client. Tried: doesnotexist:9002 (through xdebug.client_host/xdebug.client_port).
diff --git a/xdebug-3.4.5/tests/debugger/remote_log2.phpt b/xdebug-3.4.5/tests/debugger/remote_log2.phpt
new file mode 100644
index 0000000..324a267
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/remote_log2.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Test for Xdebug's remote log (can not connect, with not-found remote callback)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; !win');
+?>
+--INI--
+xdebug.mode=debug
+xdebug.start_with_request=yes
+xdebug.log={TMP}/{RUNID}{TEST_PHP_WORKER}remote-log2.txt
+xdebug.discover_client_host=1
+xdebug.client_host=doesnotexist2
+xdebug.client_port=9003
+xdebug.control_socket=off
+--FILE--
+<?php
+echo strlen("foo"), "\n";
+echo file_get_contents(sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'remote-log2.txt' );
+unlink (sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'remote-log2.txt' );
+?>
+--EXPECTF--
+3
+[%d] Log opened at %d-%d-%d %d:%d:%d.%d
+[%d] [Step Debug] INFO: Checking for client discovery headers: 'HTTP_X_FORWARDED_FOR,REMOTE_ADDR'.
+[%d] [Step Debug] INFO: Checking header 'HTTP_X_FORWARDED_FOR'.
+[%d] [Step Debug] INFO: Checking header 'REMOTE_ADDR'.
+[%d] [Step Debug] WARN: Could not discover client host through HTTP headers, connecting to configured address/port: doesnotexist2:9003.
+[%d] [Step Debug] WARN: Creating socket for 'doesnotexist2:9003', getaddrinfo: %s.
+[%d] [Step Debug] ERR: Could not connect to debugging client. Tried: doesnotexist2:9003 (fallback through xdebug.client_host/xdebug.client_port).
diff --git a/xdebug-3.4.5/tests/debugger/remote_log3.phpt b/xdebug-3.4.5/tests/debugger/remote_log3.phpt
new file mode 100644
index 0000000..2c6e966
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/remote_log3.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test for Xdebug's remote log (with xdebug.client_discovery_header)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; !win');
+?>
+--INI--
+xdebug.mode=debug
+xdebug.start_with_request=yes
+xdebug.log={TMP}/{RUNID}{TEST_PHP_WORKER}remote-log3.txt
+xdebug.discover_client_host=1
+xdebug.client_host=doesnotexist2
+xdebug.client_port=9003
+xdebug.client_discovery_header=I_LIKE_COOKIES,HTTP_X_FORWARDED_FOR,REMOTE_ADDR
+xdebug.control_socket=off
+--FILE--
+<?php
+echo strlen("foo"), "\n";
+echo file_get_contents(sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'remote-log3.txt' );
+unlink (sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'remote-log3.txt' );
+?>
+--EXPECTF--
+3
+[%d] Log opened at %d-%d-%d %d:%d:%d.%d
+[%d] [Step Debug] INFO: Checking for client discovery headers: 'I_LIKE_COOKIES,HTTP_X_FORWARDED_FOR,REMOTE_ADDR'.
+[%d] [Step Debug] INFO: Checking header 'I_LIKE_COOKIES'.
+[%d] [Step Debug] INFO: Checking header 'HTTP_X_FORWARDED_FOR'.
+[%d] [Step Debug] INFO: Checking header 'REMOTE_ADDR'.
+[%d] [Step Debug] WARN: Could not discover client host through HTTP headers, connecting to configured address/port: doesnotexist2:9003.
+[%d] [Step Debug] WARN: Creating socket for 'doesnotexist2:9003', getaddrinfo: %s.
+[%d] [Step Debug] ERR: Could not connect to debugging client. Tried: doesnotexist2:9003 (fallback through xdebug.client_host/xdebug.client_port).
diff --git a/xdebug-3.4.5/tests/debugger/remote_log4.phpt b/xdebug-3.4.5/tests/debugger/remote_log4.phpt
new file mode 100644
index 0000000..daa3c53
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/remote_log4.phpt
@@ -0,0 +1,34 @@
+--TEST--
+Test for Xdebug's remote log (with xdebug.client_discovery_header value)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; !win');
+?>
+--ENV--
+I_LIKE_COOKIES=cookiehost
+--INI--
+xdebug.mode=debug
+xdebug.start_with_request=yes
+xdebug.log={TMP}/{RUNID}{TEST_PHP_WORKER}remote-log4.txt
+xdebug.discover_client_host=1
+xdebug.client_host=doesnotexist2
+xdebug.client_port=9003
+xdebug.client_discovery_header=I_LIKE_COOKIES
+xdebug.control_socket=off
+--FILE--
+<?php
+echo strlen("foo"), "\n";
+echo file_get_contents(sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'remote-log4.txt' );
+unlink (sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'remote-log4.txt' );
+?>
+--EXPECTF--
+3
+[%d] Log opened at %d-%d-%d %d:%d:%d.%d
+[%d] [Step Debug] INFO: Checking for client discovery headers: 'I_LIKE_COOKIES'.
+[%d] [Step Debug] INFO: Checking header 'I_LIKE_COOKIES'.
+[%d] [Step Debug] INFO: Client host discovered through HTTP header, connecting to cookiehost:9003.
+[%d] [Step Debug] WARN: Creating socket for 'cookiehost:9003', getaddrinfo: %s.
+[%d] [Step Debug] WARN: Could not connect to client host discovered through HTTP headers, connecting to configured address/port: doesnotexist2:9003.
+[%d] [Step Debug] WARN: Creating socket for 'doesnotexist2:9003', getaddrinfo: %s.
+[%d] [Step Debug] ERR: Could not connect to debugging client. Tried: cookiehost:9003 (from I_LIKE_COOKIES HTTP header), doesnotexist2:9003 (fallback through xdebug.client_host/xdebug.client_port).
diff --git a/xdebug-3.4.5/tests/debugger/remote_log5.phpt b/xdebug-3.4.5/tests/debugger/remote_log5.phpt
new file mode 100644
index 0000000..0c0528d
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/remote_log5.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Test for Xdebug's remote log output through PHP's log
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; !win');
+?>
+--ENV--
+I_LIKE_COOKIES=cookiehost
+--INI--
+xdebug.mode=debug
+xdebug.start_with_request=yes
+xdebug.log=
+xdebug.discover_client_host=1
+xdebug.client_host=doesnotexist2
+xdebug.client_port=9003
+xdebug.client_discovery_header=I_LIKE_COOKIES
+--FILE--
+<?php
+echo strlen("foo"), "\n";
+?>
+--EXPECTF--
+Xdebug: [Step Debug] Could not connect to debugging client. Tried: cookiehost:9003 (from I_LIKE_COOKIES HTTP header), doesnotexist2:9003 (fallback through xdebug.client_host/xdebug.client_port).
+3
diff --git a/xdebug-3.4.5/tests/debugger/spl-iterators.inc b/xdebug-3.4.5/tests/debugger/spl-iterators.inc
new file mode 100644
index 0000000..bb808bb
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/spl-iterators.inc
@@ -0,0 +1,117 @@
+<?php
+$append = new AppendIterator();
+$append->append( new ArrayIterator( [ 0, 1, 3, 5, 6, 8, 9, 10, 12, 14, 16 ] ) );
+$append->append( new ArrayIterator( [ 2, 13, 15, 17 ] ) );
+
+
+$array = new ArrayIterator( [ 2, 13, 15, 17 ] );
+
+
+$caching = new CachingIterator( new ArrayIterator( [ 0, 1, 3, 5, 6, 8, 9, 10, 12, 14, 16 ] ) );
+
+
+$callbackFilter = new CallbackFilterIterator(
+	new ArrayIterator( [ 0, 1, 3, 5, 6, 8, 9, 10, 12, 14, 16 ] ),
+	function($c, $k, $i) { return true; },
+);
+
+
+$directory = new DirectoryIterator( __DIR__ );
+
+
+$empty_ = new EmptyIterator();
+
+
+$fileSystem = new FileSystemIterator( __DIR__ );
+
+
+class MyFilterIterator extends FilterIterator
+{
+	function accept() : bool
+	{
+		return true;
+	}
+}
+$filter = new MyFilterIterator( new ArrayIterator( [ 2, 13, 15, 17 ] ) );
+
+
+$glob = new GlobIterator( __DIR__ . '/*.inc' );
+
+
+$infinite = new InfiniteIterator( new ArrayIterator( [ 2, 13, 15, 17 ] ) );
+
+
+$iterator = new IteratorIterator( new ArrayIterator( [ 2, 13, 15, 17 ] ) );
+
+
+$limit = new LimitIterator(
+	new ArrayIterator( [ 0, 1, 3, 5, 6, 8, 9, 10, 12, 14, 16 ] ),
+	3, 6,
+);
+
+$multiple = new MultipleIterator( MultipleIterator::MIT_NEED_ANY );
+$multiple->attachIterator( new ArrayIterator( [ 0, 1, 3, 5, 6, 8, 9, 10, 12, 14, 16 ] ) );
+$multiple->attachIterator( new ArrayIterator( [ 2, 13, 15, 17 ] ) );
+
+
+$norewind = new NoRewindIterator( new ArrayIterator( [ 0, 1, 3, 5, 6, 8, 9, 10, 12, 14, 16 ] ) );
+
+
+$parent = new ParentIterator(
+    new RecursiveArrayIterator( [
+        [ 0, 1, 3, 5, 6, 8, 9, 10, 12, 14, 16 ],
+        [ 2, 13, 15, 17 ]
+    ] )
+);
+
+
+$recursiveArray = new RecursiveArrayIterator( [
+	0 => 'a',
+	1 => [
+		'subA',
+		'subB',
+		[
+			0 => 'subsubA',
+			1 => 'subsubB',
+			2 => [
+				0 => 'deepA',
+				1 => 'deepB'
+			]
+		]
+	],
+	2 => 'b',
+	3 => [ 'subA', 'subB', 'subC' ],
+	4 => 'c'
+] );
+
+
+$recursiveIterator = new RecursiveIteratorIterator(
+	new RecursiveArrayIterator( [
+		'test' => 'value',
+		'level_one' => [
+			'level_two' => [
+				'level_three' => [
+					'replace_this_array' => [
+						'special_key' => 'replacement_value',
+						'key_one' => 'testing',
+						'key_two' => 'value',
+						'four' => 'another value'
+					]
+				],
+				'ordinary_key' => 'value'
+			]
+		]
+	] ),
+	RecursiveIteratorIterator::SELF_FIRST
+);
+
+
+$regex = new RegexIterator(
+	new ArrayIterator( [ 'test1', 'test2', 'test3' ] ),
+	'/^(test)(\d+)/',
+	RegexIterator::REPLACE
+);
+$regex->replacement = '$2:$1';
+
+echo "Finished\n";
+?>
diff --git a/xdebug-3.4.5/tests/debugger/start_ignore_0_env.phpt b/xdebug-3.4.5/tests/debugger/start_ignore_0_env.phpt
new file mode 100644
index 0000000..f9622c8
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_ignore_0_env.phpt
@@ -0,0 +1,41 @@
+--TEST--
+Starting Debugger: always, but ignore value is '0' (ENV)
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$xdebugLogFileName = sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'start_ignore_0_env.txt';
+@unlink( $xdebugLogFileName );
+
+dbgpRunFile(
+	dirname(__FILE__) . '/break-echo.inc',
+	['stack_get', 'step_into', 'detach'],
+	[
+		'xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'yes',
+		'xdebug.log' => $xdebugLogFileName, 'xdebug.log_level' => 10,
+	],
+	['timeout' => 1, 'env' => ['XDEBUG_IGNORE' => '0']]
+);
+
+echo file_get_contents( $xdebugLogFileName );
+@unlink( $xdebugLogFileName );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://break-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> stack_get -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="1"></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://break-echo.inc" lineno="2"></xdebug:message></response>
+
+-> detach -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="3" status="stopping" reason="ok"></response>
+
+[%d] Log opened at %s%A
+[%d] [Step Debug] INFO: Not ignoring present 'XDEBUG_IGNORE' ENV variable, because the value is '0'.
+%A
diff --git a/xdebug-3.4.5/tests/debugger/start_ignore_no_cookie.phpt b/xdebug-3.4.5/tests/debugger/start_ignore_no_cookie.phpt
new file mode 100644
index 0000000..156b061
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_ignore_no_cookie.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Starting Debugger: overridden COOKIE ignore value is 'no'
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$xdebugLogFileName = sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'start_ignore_no_env.txt';
+@unlink( $xdebugLogFileName );
+
+dbgpRunFile(
+	dirname(__FILE__) . '/break-echo.inc',
+	['stack_get', 'step_into', 'detach'],
+	[
+		'xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'yes',
+		'xdebug.log' => $xdebugLogFileName, 'xdebug.log_level' => 10,
+	],
+	['timeout' => 1, 'env' => [ 'XDEBUG_IGNORE' => 'yes' ], 'auto_prepend' => '<?php $_COOKIE["XDEBUG_IGNORE"] = "no";']
+);
+
+echo file_get_contents( $xdebugLogFileName );
+@unlink( $xdebugLogFileName );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://%Sauto-prepend.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> stack_get -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="1"></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://break-echo.inc" lineno="2"></xdebug:message></response>
+
+-> detach -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="3" status="stopping" reason="ok"></response>
+
+[%d] Log opened at %s%A
+[%d] [Step Debug] DEBUG: Not activating because an 'XDEBUG_IGNORE' ENV variable is present, with value 'yes'.
+[%d] [Step Debug] INFO: Not ignoring present 'XDEBUG_IGNORE' COOKIE variable, because the value is 'no'.
+%A
+[%d] Log closed at %s
diff --git a/xdebug-3.4.5/tests/debugger/start_ignore_no_env.phpt b/xdebug-3.4.5/tests/debugger/start_ignore_no_env.phpt
new file mode 100644
index 0000000..2ccf8b6
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_ignore_no_env.phpt
@@ -0,0 +1,41 @@
+--TEST--
+Starting Debugger: always, but ignore value is 'no' (ENV)
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$xdebugLogFileName = sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'start_ignore_no_env.txt';
+@unlink( $xdebugLogFileName );
+
+dbgpRunFile(
+	dirname(__FILE__) . '/break-echo.inc',
+	['stack_get', 'step_into', 'detach'],
+	[
+		'xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'yes',
+		'xdebug.log' => $xdebugLogFileName, 'xdebug.log_level' => 10,
+	],
+	['timeout' => 1, 'env' => ['XDEBUG_IGNORE' => 'no']]
+);
+
+echo file_get_contents( $xdebugLogFileName );
+@unlink( $xdebugLogFileName );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://break-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> stack_get -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="1"></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://break-echo.inc" lineno="2"></xdebug:message></response>
+
+-> detach -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="3" status="stopping" reason="ok"></response>
+
+[%d] Log opened at %s%A
+[%d] [Step Debug] INFO: Not ignoring present 'XDEBUG_IGNORE' ENV variable, because the value is 'no'.
+%A
diff --git a/xdebug-3.4.5/tests/debugger/start_ignore_no_get.phpt b/xdebug-3.4.5/tests/debugger/start_ignore_no_get.phpt
new file mode 100644
index 0000000..1d21cd9
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_ignore_no_get.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Starting Debugger: overridden GET ignore value is 'no'
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$xdebugLogFileName = sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'start_ignore_no_env.txt';
+@unlink( $xdebugLogFileName );
+
+dbgpRunFile(
+	dirname(__FILE__) . '/break-echo.inc',
+	['stack_get', 'step_into', 'detach'],
+	[
+		'xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'yes',
+		'xdebug.log' => $xdebugLogFileName, 'xdebug.log_level' => 10,
+	],
+	['timeout' => 1, 'env' => [ 'XDEBUG_IGNORE' => 'yes' ], 'auto_prepend' => '<?php $_GET["XDEBUG_IGNORE"] = "no";']
+);
+
+echo file_get_contents( $xdebugLogFileName );
+@unlink( $xdebugLogFileName );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://%Sauto-prepend.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> stack_get -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="1"></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://break-echo.inc" lineno="2"></xdebug:message></response>
+
+-> detach -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="3" status="stopping" reason="ok"></response>
+
+[%d] Log opened at %s%A
+[%d] [Step Debug] DEBUG: Not activating because an 'XDEBUG_IGNORE' ENV variable is present, with value 'yes'.
+[%d] [Step Debug] INFO: Not ignoring present 'XDEBUG_IGNORE' GET variable, because the value is 'no'.
+%A
+[%d] Log closed at %s
diff --git a/xdebug-3.4.5/tests/debugger/start_ignore_no_post.phpt b/xdebug-3.4.5/tests/debugger/start_ignore_no_post.phpt
new file mode 100644
index 0000000..2a077c8
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_ignore_no_post.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Starting Debugger: overridden POST ignore value is 'no'
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$xdebugLogFileName = sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'start_ignore_no_env.txt';
+@unlink( $xdebugLogFileName );
+
+dbgpRunFile(
+	dirname(__FILE__) . '/break-echo.inc',
+	['stack_get', 'step_into', 'detach'],
+	[
+		'xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'yes',
+		'xdebug.log' => $xdebugLogFileName, 'xdebug.log_level' => 10,
+	],
+	['timeout' => 1, 'env' => [ 'XDEBUG_IGNORE' => 'yes' ], 'auto_prepend' => '<?php $_POST["XDEBUG_IGNORE"] = "no";']
+);
+
+echo file_get_contents( $xdebugLogFileName );
+@unlink( $xdebugLogFileName );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://%Sauto-prepend.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> stack_get -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="1"></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://break-echo.inc" lineno="2"></xdebug:message></response>
+
+-> detach -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="3" status="stopping" reason="ok"></response>
+
+[%d] Log opened at %s%A
+[%d] [Step Debug] DEBUG: Not activating because an 'XDEBUG_IGNORE' ENV variable is present, with value 'yes'.
+[%d] [Step Debug] INFO: Not ignoring present 'XDEBUG_IGNORE' POST variable, because the value is 'no'.
+%A
+[%d] Log closed at %s
diff --git a/xdebug-3.4.5/tests/debugger/start_ignore_yes_cookie.phpt b/xdebug-3.4.5/tests/debugger/start_ignore_yes_cookie.phpt
new file mode 100644
index 0000000..6c5671a
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_ignore_yes_cookie.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Starting Debugger: overridden COOKIE ignore value is 'yes'
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$xdebugLogFileName = sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'start_ignore_yes_env.txt';
+@unlink( $xdebugLogFileName );
+
+dbgpRunFile(
+	dirname(__FILE__) . '/break-echo.inc',
+	['stack_get', 'step_into', 'detach'],
+	[
+		'xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'yes',
+		'xdebug.log' => $xdebugLogFileName, 'xdebug.log_level' => 10,
+	],
+	['timeout' => 1, 'env' => [ 'XDEBUG_IGNORE' => 'yes' ], 'auto_prepend' => '<?php $_COOKIE["XDEBUG_IGNORE"] = "yes";']
+);
+
+echo file_get_contents( $xdebugLogFileName );
+@unlink( $xdebugLogFileName );
+?>
+--EXPECTF--
+Hi!
+
+
+
+
+[%d] Log opened at %s%A
+[%d] [Step Debug] DEBUG: Not activating because an 'XDEBUG_IGNORE' ENV variable is present, with value 'yes'.
+[%d] [Step Debug] DEBUG: Not activating because an 'XDEBUG_IGNORE' COOKIE variable is present, with value 'yes'.
+[%d] Log closed at %s
diff --git a/xdebug-3.4.5/tests/debugger/start_ignore_yes_env.phpt b/xdebug-3.4.5/tests/debugger/start_ignore_yes_env.phpt
new file mode 100644
index 0000000..0064521
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_ignore_yes_env.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Starting Debugger: always, but ignore value is 'yes' (ENV)
+--ENV--
+XDEBUG_IGNORE=yes
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$xdebugLogFileName = sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'start_ignore_yes_env.txt';
+@unlink( $xdebugLogFileName );
+
+dbgpRunFile(
+	dirname(__FILE__) . '/break-echo.inc',
+	['stack_get', 'step_into', 'detach'],
+	[
+		'xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'yes',
+		'xdebug.log' => $xdebugLogFileName, 'xdebug.log_level' => 10,
+	],
+	['timeout' => 1, 'env' => ['XDEBUG_IGNORE' => 'yes']]
+);
+
+echo file_get_contents( $xdebugLogFileName );
+@unlink( $xdebugLogFileName );
+?>
+--EXPECTF--
+Hi!
+
+
+
+
+[%d] Log opened at %s%A
+[%d] [Step Debug] DEBUG: Not activating because an 'XDEBUG_IGNORE' ENV variable is present, with value 'yes'.
+[%d] Log closed at %s
diff --git a/xdebug-3.4.5/tests/debugger/start_ignore_yes_get.phpt b/xdebug-3.4.5/tests/debugger/start_ignore_yes_get.phpt
new file mode 100644
index 0000000..f2cc2f4
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_ignore_yes_get.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Starting Debugger: overridden GET ignore value is 'yes'
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$xdebugLogFileName = sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'start_ignore_yes_env.txt';
+@unlink( $xdebugLogFileName );
+
+dbgpRunFile(
+	dirname(__FILE__) . '/break-echo.inc',
+	['stack_get', 'step_into', 'detach'],
+	[
+		'xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'yes',
+		'xdebug.log' => $xdebugLogFileName, 'xdebug.log_level' => 10,
+	],
+	['timeout' => 1, 'env' => [ 'XDEBUG_IGNORE' => 'yes' ], 'auto_prepend' => '<?php $_GET["XDEBUG_IGNORE"] = "yes";']
+);
+
+echo file_get_contents( $xdebugLogFileName );
+@unlink( $xdebugLogFileName );
+?>
+--EXPECTF--
+Hi!
+
+
+
+
+[%d] Log opened at %s%A
+[%d] [Step Debug] DEBUG: Not activating because an 'XDEBUG_IGNORE' ENV variable is present, with value 'yes'.
+[%d] [Step Debug] DEBUG: Not activating because an 'XDEBUG_IGNORE' GET variable is present, with value 'yes'.
+[%d] Log closed at %s
diff --git a/xdebug-3.4.5/tests/debugger/start_ignore_yes_post.phpt b/xdebug-3.4.5/tests/debugger/start_ignore_yes_post.phpt
new file mode 100644
index 0000000..fed81f6
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_ignore_yes_post.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Starting Debugger: overridden POST ignore value is 'yes'
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$xdebugLogFileName = sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'start_ignore_yes_env.txt';
+@unlink( $xdebugLogFileName );
+
+dbgpRunFile(
+	dirname(__FILE__) . '/break-echo.inc',
+	['stack_get', 'step_into', 'detach'],
+	[
+		'xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'yes',
+		'xdebug.log' => $xdebugLogFileName, 'xdebug.log_level' => 10,
+	],
+	['timeout' => 1, 'env' => [ 'XDEBUG_IGNORE' => 'yes' ], 'auto_prepend' => '<?php $_POST["XDEBUG_IGNORE"] = "yes";']
+);
+
+echo file_get_contents( $xdebugLogFileName );
+@unlink( $xdebugLogFileName );
+?>
+--EXPECTF--
+Hi!
+
+
+
+
+[%d] Log opened at %s%A
+[%d] [Step Debug] DEBUG: Not activating because an 'XDEBUG_IGNORE' ENV variable is present, with value 'yes'.
+[%d] [Step Debug] DEBUG: Not activating because an 'XDEBUG_IGNORE' POST variable is present, with value 'yes'.
+[%d] Log closed at %s
diff --git a/xdebug-3.4.5/tests/debugger/start_upon_error_no_trigger_error.phpt b/xdebug-3.4.5/tests/debugger/start_upon_error_no_trigger_error.phpt
new file mode 100644
index 0000000..eb3493f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_upon_error_no_trigger_error.phpt
@@ -0,0 +1,15 @@
+--TEST--
+Starting Debugger: trigger, error, start_up_error=no
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/break-with-error.inc',
+	['stack_get', 'step_into', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger', 'xdebug.start_upon_error' => 'no'],
+	['timeout' => 1]
+);
+?>
+--EXPECTF--
+Not triggered!
diff --git a/xdebug-3.4.5/tests/debugger/start_upon_error_trigger_error.phpt b/xdebug-3.4.5/tests/debugger/start_upon_error_trigger_error.phpt
new file mode 100644
index 0000000..320c99d
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_upon_error_trigger_error.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Starting Debugger: trigger, error, start_up_error=yes
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/break-with-error.inc',
+	['stack_get', 'step_into', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger', 'xdebug.start_upon_error' => 'yes'],
+	['timeout' => 1]
+);
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://break-with-error.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> stack_get -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="1"><stack where="trigger_error" level="0" type="file" filename="file://break-with-error.inc" lineno="3"></stack><stack where="{main}" level="1" type="file" filename="file://break-with-error.inc" lineno="3"></stack></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://break-with-error.inc" lineno="4"></xdebug:message></response>
+
+-> detach -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="3" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_always_break.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_always_break.phpt
new file mode 100644
index 0000000..7d1df31
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_always_break.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Starting Debugger: always, break
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/break-echo.inc',
+	['stack_get', 'step_into', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'yes']
+);
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://break-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> stack_get -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="1"></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://break-echo.inc" lineno="2"></xdebug:message></response>
+
+-> detach -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="3" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_always_config.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_always_config.phpt
new file mode 100644
index 0000000..0dc4eb5
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_always_config.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Starting Debugger: always, XDEBUG_CONFIG=idekey=derickr
+--ENV--
+XDEBUG_CONFIG=idekey=derickr
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'yes']
+);
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" idekey="derickr"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="0" numchildren="0" page="0" pagesize="32"></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_always_no_env.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_always_no_env.phpt
new file mode 100644
index 0000000..ca6382a
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_always_no_env.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Starting Debugger: always, no environment
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'yes']
+);
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="0" numchildren="0" page="0" pagesize="32"></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_always_session.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_always_session.phpt
new file mode 100644
index 0000000..79d31d3
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_always_session.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Starting Debugger: always, XDEBUG_SESSION
+--ENV--
+XDEBUG_SESSION=yes
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'yes']
+);
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="0" numchildren="0" page="0" pagesize="32"></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_always_session_start.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_always_session_start.phpt
new file mode 100644
index 0000000..51dc044
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_always_session_start.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Starting Debugger: always, XDEBUG_SESSION_START
+--ENV--
+XDEBUG_SESSION_START=yes
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'yes']
+);
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="0" numchildren="0" page="0" pagesize="32"></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_default_break.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_default_break.phpt
new file mode 100644
index 0000000..8246db9
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_default_break.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Starting Debugger: default, break
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/break-echo.inc',
+	['stack_get', 'step_into', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'default']
+);
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://break-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> stack_get -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="1"><stack where="xdebug_break" level="0" type="file" filename="file://break-echo.inc" lineno="3"></stack><stack where="{main}" level="1" type="file" filename="file://break-echo.inc" lineno="3"></stack></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://break-echo.inc" lineno="4"></xdebug:message></response>
+
+-> detach -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="3" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_default_break_session_start.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_default_break_session_start.phpt
new file mode 100644
index 0000000..86656e5
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_default_break_session_start.phpt
@@ -0,0 +1,18 @@
+--TEST--
+Starting Debugger: default, break, XDEBUG_SESSION_START
+--SKIPIF--
+<?php print "skip Can only be tested manually"; ?>
+--ENV--
+XDEBUG_SESSION_START=foobar
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/break-echo.inc',
+	['stack_get', 'step_into', 'detach', 'stack_get', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'default'],
+	['timeout' => 1]
+);
+?>
+--EXPECTF--
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_default_config.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_default_config.phpt
new file mode 100644
index 0000000..6d8923a
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_default_config.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Starting Debugger: default, XDEBUG_CONFIG=idekey=foobar
+--ENV--
+XDEBUG_CONFIG=idekey=foobar
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'default']
+);
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" idekey="foobar"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="0" fullname="$e[0]" type="string" size="%d" encoding="base64"><![CDATA[U2V0LUNvb2tpZTogWERFQlVHX1NFU1NJT049Zm9vYmFyOyB%s]]></property></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_default_no_env.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_default_no_env.phpt
new file mode 100644
index 0000000..f773a79
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_default_no_env.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Starting Debugger: default, no environment
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'default'],
+	['timeout' => 1]
+);
+?>
+--EXPECT--
+Hi!
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_default_session-001.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_default_session-001.phpt
new file mode 100644
index 0000000..1b28e44
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_default_session-001.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Starting Debugger: default, XDEBUG_SESSION [1]
+--ENV--
+XDEBUG_SESSION=sessionName
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'default', 'variables_order' => 'PGCS']
+);
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" idekey="sessionName"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="0" numchildren="0" page="0" pagesize="32"></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_default_session-002.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_default_session-002.phpt
new file mode 100644
index 0000000..263ae7c
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_default_session-002.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Starting Debugger: default, XDEBUG_SESSION [2]
+--ENV--
+XDEBUG_SESSION=sessionName
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'default', 'variables_order' => 'EPGCS']
+);
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" idekey="sessionName"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="0" numchildren="0" page="0" pagesize="32"></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_default_session_start-001.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_default_session_start-001.phpt
new file mode 100644
index 0000000..50992f5
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_default_session_start-001.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Starting Debugger: default, XDEBUG_SESSION_START [1]
+--ENV--
+XDEBUG_SESSION_START=foobar
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'default', 'variables_order' => 'PGCS']
+);
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" idekey="foobar"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="0" fullname="$e[0]" type="string" size="%d" encoding="base64"><![CDATA[U2V0LUNvb2tpZTogWERFQlVHX1NFU1NJT049Zm9vYmFyOyB%s]]></property></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_default_session_start-002.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_default_session_start-002.phpt
new file mode 100644
index 0000000..890e636
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_default_session_start-002.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Starting Debugger: default, XDEBUG_SESSION_START [2]
+--ENV--
+XDEBUG_SESSION_START=foobar
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'default', 'variables_order' => 'EPGCS']
+);
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" idekey="foobar"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="0" fullname="$e[0]" type="string" size="%d" encoding="base64"><![CDATA[U2V0LUNvb2tpZTogWERFQlVHX1NFU1NJT049Zm9vYmFyOyB%s]]></property></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_never_break.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_never_break.phpt
new file mode 100644
index 0000000..744ba44
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_never_break.phpt
@@ -0,0 +1,15 @@
+--TEST--
+Starting Debugger: never, break
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/break-echo.inc',
+	['stack_get', 'step_into', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'no'],
+	['timeout' => 1]
+);
+?>
+--EXPECTF--
+Hi!
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_never_break_session_start.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_never_break_session_start.phpt
new file mode 100644
index 0000000..eb14906
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_never_break_session_start.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Starting Debugger: never, break, XDEBUG_SESSION_START
+--ENV--
+XDEBUG_SESSION_START=foobar
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/break-echo.inc',
+	['stack_get', 'step_into', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'no'],
+	['timeout' => 1]
+);
+?>
+--EXPECTF--
+Hi!
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_never_config.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_never_config.phpt
new file mode 100644
index 0000000..fe9cb1f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_never_config.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Starting Debugger: never, XDEBUG_CONFIG=idekey=derickr
+--ENV--
+XDEBUG_CONFIG=idekey=derickr
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'no'],
+	['timeout' => 1]
+);
+?>
+--EXPECTF--
+Hi!
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_never_no_env.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_never_no_env.phpt
new file mode 100644
index 0000000..a6d46fa
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_never_no_env.phpt
@@ -0,0 +1,15 @@
+--TEST--
+Starting Debugger: never, no environment
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'no'],
+	['timeout' => 1]
+);
+?>
+--EXPECT--
+Hi!
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_never_session.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_never_session.phpt
new file mode 100644
index 0000000..4adfcbf
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_never_session.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Starting Debugger: never, XDEBUG_SESSION
+--ENV--
+XDEBUG_SESSION=yes
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'no'],
+	['timeout' => 1]
+);
+?>
+--EXPECTF--
+Hi!
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_never_session_start.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_never_session_start.phpt
new file mode 100644
index 0000000..d2589d1
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_never_session_start.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Starting Debugger: never, XDEBUG_SESSION_START
+--ENV--
+XDEBUG_SESSION_START=yes
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'no'],
+	['timeout' => 1]
+);
+?>
+--EXPECTF--
+Hi!
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_break.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_break.phpt
new file mode 100644
index 0000000..ba75933
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_break.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Starting Debugger: trigger, break
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/break-echo.inc',
+	['stack_get', 'step_into', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger']
+);
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://break-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> stack_get -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="1"><stack where="xdebug_break" level="0" type="file" filename="file://break-echo.inc" lineno="3"></stack><stack where="{main}" level="1" type="file" filename="file://break-echo.inc" lineno="3"></stack></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://break-echo.inc" lineno="4"></xdebug:message></response>
+
+-> detach -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="3" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_break_session_start.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_break_session_start.phpt
new file mode 100644
index 0000000..5f12bc7
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_break_session_start.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Starting Debugger: trigger, break, XDEBUG_SESSION_START
+--SKIPIF--
+<?php print "skip Can only be tested manually, as two connections need to be made and the test harnass does not support that"; ?>
+--ENV--
+XDEBUG_SESSION_START=foobar
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/break-echo.inc',
+	['stack_get', 'step_into', 'detach', 'stack_get', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger']
+);
+?>
+--EXPECTF--
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_config.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_config.phpt
new file mode 100644
index 0000000..b1bc187
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_config.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Starting Debugger: trigger, XDEBUG_CONFIG=idekey=foobar
+--ENV--
+XDEBUG_CONFIG=idekey=foobar
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger']
+);
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" idekey="foobar"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="0" fullname="$e[0]" type="string" size="%d" encoding="base64"><![CDATA[U2V0LUNvb2tpZTogWERFQlVHX1NFU1NJT049Zm9vYmFyOyB%s]]></property></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-001.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-001.phpt
new file mode 100644
index 0000000..f0e8c19
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-001.phpt
@@ -0,0 +1,34 @@
+--TEST--
+Starting Debugger: trigger, trigger match [1]
+--ENV--
+XDEBUG_SESSION=sessionName
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger', 'xdebug.trigger_value' => 'sessionName', 'variables_order' => 'PGCS']
+);
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" idekey="sessionName"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="0" numchildren="0" page="0" pagesize="32"></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
+
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-002.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-002.phpt
new file mode 100644
index 0000000..da63181
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-002.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Starting Debugger: trigger, trigger does not match [2]
+--ENV--
+XDEBUG_SESSION=mySession
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger', 'xdebug.trigger_value' => 'yourSession', 'variables_order' => 'PGCS'],
+	['timeout' => 1]
+);
+?>
+--EXPECTF--
+Hi!
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-003.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-003.phpt
new file mode 100644
index 0000000..ec58d82
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-003.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Starting Debugger: trigger, trigger match, spaces [3]
+--ENV--
+XDEBUG_SESSION= sessionName
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger', 'xdebug.trigger_value' => 'sessionName', 'variables_order' => 'PGCS', 'xdebug.log' => '/tmp/match3.log'],
+	['timeout' => 1]
+);
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" idekey="sessionName"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="0" numchildren="0" page="0" pagesize="32"></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
+
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-004.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-004.phpt
new file mode 100644
index 0000000..952ca79
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-004.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Starting Debugger: trigger, trigger match, spaces [4]
+--ENV--
+XDEBUG_SESSION=sessionName 
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger', 'xdebug.trigger_value' => 'sessionName', 'variables_order' => 'PGCS'],
+	['timeout' => 1]
+);
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" idekey="sessionName"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="0" numchildren="0" page="0" pagesize="32"></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
+
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-005.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-005.phpt
new file mode 100644
index 0000000..318dc4a
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-005.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Starting Debugger: trigger, trigger match, spaces [5]
+--ENV--
+XDEBUG_SESSION=sessionName
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger', 'xdebug.trigger_value' => '" sessionName"', 'variables_order' => 'PGCS'],
+	['timeout' => 1]
+);
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" idekey="sessionName"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="0" numchildren="0" page="0" pagesize="32"></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
+
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-006.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-006.phpt
new file mode 100644
index 0000000..aafcb1d
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-006.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Starting Debugger: trigger, trigger match, spaces [6]
+--ENV--
+XDEBUG_SESSION=sessionName
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger', 'xdebug.trigger_value' => '"sessionName "', 'variables_order' => 'PGCS'],
+	['timeout' => 1]
+);
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" idekey="sessionName"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="0" numchildren="0" page="0" pagesize="32"></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
+
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-007.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-007.phpt
new file mode 100644
index 0000000..eea1320
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-007.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Starting Debugger: trigger, trigger match against multiple (XDEBUG_SESSION)
+--ENV--
+XDEBUG_SESSION=value2
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger', 'xdebug.trigger_value' => 'value1,value2', 'variables_order' => 'PGCS'],
+	['timeout' => 1]
+);
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" idekey="value2"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="0" numchildren="0" page="0" pagesize="32"></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
+
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-008.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-008.phpt
new file mode 100644
index 0000000..c416d87
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-008.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Starting Debugger: trigger, trigger match against multiple (XDEBUG_TRIGGER)
+--ENV--
+XDEBUG_TRIGGER=value1
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger', 'xdebug.trigger_value' => 'value1,value2', 'variables_order' => 'PGCS'],
+	['timeout' => 1]
+);
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" idekey="value1"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="0" numchildren="0" page="0" pagesize="32"></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
+
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-009.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-009.phpt
new file mode 100644
index 0000000..f7f04e8
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-009.phpt
@@ -0,0 +1,42 @@
+--TEST--
+Starting Debugger: trigger, trigger does not match against multiple (XDEBUG_TRIGGER)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; !win');
+?>
+--ENV--
+XDEBUG_TRIGGER=value3
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$xdebugLogFileName = sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'start_with_request_trigger_match-009.txt';
+@unlink( $xdebugLogFileName );
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	[
+		'xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger',
+		'xdebug.trigger_value' => 'value1,value2', 'variables_order' => 'PGCS',
+		'xdebug.log' => $xdebugLogFileName, 'xdebug.log_level' => 10,
+		'xdebug.control_socket' => 'off',
+	],
+	['timeout' => 1]
+);
+
+echo file_get_contents( $xdebugLogFileName );
+@unlink( $xdebugLogFileName );
+?>
+--EXPECTF--
+Hi!
+
+
+
+
+[%d] Log opened at %s
+[%d] [Config] DEBUG: Checking if trigger 'XDEBUG_TRIGGER' is enabled for mode 'debug'
+[%d] [Config] DEBUG: The shared secret (xdebug.trigger_value) is multi-value for mode 'debug'
+[%d] [Config] WARN: The trigger value 'value3', as set through 'XDEBUG_TRIGGER', did not match any of the shared secrets (xdebug.trigger_value) for mode 'debug'
+[%d] Log closed at %s
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-010.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-010.phpt
new file mode 100644
index 0000000..0f886e0
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_match-010.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Starting Debugger: trigger, trigger does not match against multiple (XDEBUG_SESSION)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp; !win');
+?>
+--ENV--
+XDEBUG_SESSION=value3
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$xdebugLogFileName = sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'start_with_request_trigger_match-009.txt';
+@unlink( $xdebugLogFileName );
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	[
+		'xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger',
+		'xdebug.trigger_value' => 'value1,value2', 'variables_order' => 'PGCS',
+		'xdebug.log' => $xdebugLogFileName, 'xdebug.log_level' => 10,
+		'xdebug.control_socket' => 'off',
+	],
+	['timeout' => 1]
+);
+
+echo file_get_contents( $xdebugLogFileName );
+@unlink( $xdebugLogFileName );
+?>
+--EXPECTF--
+Hi!
+
+
+
+
+[%d] Log opened at %s
+[%d] [Config] DEBUG: Checking if trigger 'XDEBUG_TRIGGER' is enabled for mode 'debug'
+[%d] [Config] INFO: Trigger value for 'XDEBUG_TRIGGER' not found, falling back to 'XDEBUG_SESSION'
+[%d] [Config] DEBUG: The shared secret (xdebug.trigger_value) is multi-value for mode 'debug'
+[%d] [Config] WARN: The trigger value 'value3', as set through 'XDEBUG_SESSION', did not match any of the shared secrets (xdebug.trigger_value) for mode 'debug'
+[%d] Log closed at %s
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_no_env.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_no_env.phpt
new file mode 100644
index 0000000..864a8c8
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_no_env.phpt
@@ -0,0 +1,15 @@
+--TEST--
+Starting Debugger: trigger, no environment
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger'],
+	['timeout' => 1]
+);
+?>
+--EXPECT--
+Hi!
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session-001.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session-001.phpt
new file mode 100644
index 0000000..b7e2929
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session-001.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Starting Debugger: trigger, XDEBUG_SESSION [1]
+--ENV--
+XDEBUG_SESSION=sessionName
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger', 'variables_order' => 'PGCS']
+);
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" idekey="sessionName"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="0" numchildren="0" page="0" pagesize="32"></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session-002.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session-002.phpt
new file mode 100644
index 0000000..6417113
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session-002.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Starting Debugger: trigger, XDEBUG_SESSION [2]
+--ENV--
+XDEBUG_SESSION=sessionName
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger', 'variables_order' => 'EPGCS']
+);
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" idekey="sessionName"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="0" numchildren="0" page="0" pagesize="32"></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session_start-001.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session_start-001.phpt
new file mode 100644
index 0000000..625e7fc
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session_start-001.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Starting Debugger: trigger, XDEBUG_SESSION_START [1]
+--ENV--
+XDEBUG_SESSION_START=foobar
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger', 'variables_order' => 'PGCS']
+);
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" idekey="foobar"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="0" fullname="$e[0]" type="string" size="%d" encoding="base64"><![CDATA[U2V0LUNvb2tpZTogWERFQlVHX1NFU1NJT049Zm9vYmFyOyB%s]]></property></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session_start-002.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session_start-002.phpt
new file mode 100644
index 0000000..4a0db20
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session_start-002.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Starting Debugger: trigger, XDEBUG_SESSION_START [2]
+--ENV--
+XDEBUG_SESSION_START=foobar
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger', 'variables_order' => 'EPGCS']
+);
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" idekey="foobar"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="0" fullname="$e[0]" type="string" size="%d" encoding="base64"><![CDATA[U2V0LUNvb2tpZTogWERFQlVHX1NFU1NJT049Zm9vYmFyOyB%s]]></property></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session_start_and_session-001.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session_start_and_session-001.phpt
new file mode 100644
index 0000000..f39fced
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session_start_and_session-001.phpt
@@ -0,0 +1,34 @@
+--TEST--
+Starting Debugger: trigger, XDEBUG_SESSION_START and XDEBUG_SESSION [1]
+--ENV--
+XDEBUG_SESSION=sessionName
+XDEBUG_SESSION_START=sessionStartName
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger', 'variables_order' => 'PGCS']
+);
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" idekey="sessionStartName"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="0" fullname="$e[0]" type="string" size="%d" encoding="base64"><![CDATA[U2V0LUNvb2tpZTogWERFQlVHX1NFU1NJT049c2Vzc2lvblN0YXJ0TmFtZTs%s]]></property></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session_start_and_session-002.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session_start_and_session-002.phpt
new file mode 100644
index 0000000..d32cc13
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session_start_and_session-002.phpt
@@ -0,0 +1,34 @@
+--TEST--
+Starting Debugger: trigger, XDEBUG_SESSION_START and XDEBUG_SESSION [2]
+--ENV--
+XDEBUG_SESSION=sessionName
+XDEBUG_SESSION_START=sessionStartName
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	['xdebug.mode' => 'debug', 'xdebug.start_with_request' => 'trigger', 'variables_order' => 'EPGCS']
+);
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://empty-echo.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid="" idekey="sessionStartName"><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> step_into -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="1" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="2"></xdebug:message></response>
+
+-> step_into -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="2" status="break" reason="ok"><xdebug:message filename="file://empty-echo.inc" lineno="3"></xdebug:message></response>
+
+-> property_get -i 3 -n $e
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="3"><property name="$e" fullname="$e" type="array" children="1" numchildren="1" page="0" pagesize="32"><property name="0" fullname="$e[0]" type="string" size="%d" encoding="base64"><![CDATA[U2V0LUNvb2tpZTogWERFQlVHX1NFU1NJT049c2Vzc2lvblN0YXJ0TmFtZTs%s]]></property></property></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session_start_shared_secret-001.phpt b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session_start_shared_secret-001.phpt
new file mode 100644
index 0000000..ac71478
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/start_with_request_trigger_session_start_shared_secret-001.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Starting Debugger: trigger with shared secret, XDEBUG_SESSION_START
+--ENV--
+XDEBUG_SESSION_START=foobar
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$xdebugLogFileName = sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'start_with_request_trigger_session_start_shared_secret-001.txt';
+@unlink( $xdebugLogFileName );
+
+dbgpRunFile(
+	dirname(__FILE__) . '/empty-echo.inc',
+	['step_into', 'step_into', 'property_get -n $e', 'detach'],
+	[
+		'xdebug.mode' => 'debug',
+		'xdebug.start_with_request' => 'trigger', 'xdebug.trigger_value' => 'not-foobar',
+		'variables_order' => 'PGCS',
+		'xdebug.log' => $xdebugLogFileName, 'xdebug.log_level' => 10,
+		'xdebug.control_socket' => 'off',
+	],
+	['timeout' => 1]
+);
+
+echo file_get_contents( $xdebugLogFileName );
+@unlink( $xdebugLogFileName );
+?>
+--EXPECTF--
+Hi!
+
+
+
+
+[%d] Log opened at %s
+[%d] [Step Debug] DEBUG: Found 'XDEBUG_SESSION_START' ENV variable, with value 'foobar'
+[%d] [Step Debug] INFO: Not activating through legacy method because xdebug.trigger_value is set
+[%d] [Config] DEBUG: Checking if trigger 'XDEBUG_TRIGGER' is enabled for mode 'debug'
+[%d] [Config] INFO: Trigger value for 'XDEBUG_TRIGGER' not found, falling back to 'XDEBUG_SESSION'
+[%d] [Config] INFO: Trigger value for 'XDEBUG_SESSION' not found, so not activating
+[%d] Log closed at %s
diff --git a/xdebug-3.4.5/tests/debugger/xdebug_connect_to_client.inc b/xdebug-3.4.5/tests/debugger/xdebug_connect_to_client.inc
new file mode 100644
index 0000000..f03c3bc
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/xdebug_connect_to_client.inc
@@ -0,0 +1,15 @@
+<?php
+function worker($i)
+{
+	if ($i == 1) {
+		xdebug_connect_to_client();
+	}
+
+	echo "$i\n";
+}
+
+for ($i = 0; $i < 5; $i++)
+{
+	worker($i);
+}
+?>
diff --git a/xdebug-3.4.5/tests/debugger/xdebug_connect_to_client.phpt b/xdebug-3.4.5/tests/debugger/xdebug_connect_to_client.phpt
new file mode 100644
index 0000000..edd0418
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/xdebug_connect_to_client.phpt
@@ -0,0 +1,61 @@
+--TEST--
+xdebug_connect_to_client()
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+
+$filename = dirname(__FILE__) . '/xdebug_connect_to_client.inc';
+
+$commands = array(
+	'stack_get',
+	'property_get -n $i',
+	'breakpoint_set -t line -n 8 -- ' . base64_encode('$i == 4'),
+	'run',
+	'stack_get',
+	'property_get -n $i',
+	'detach',
+);
+
+$settings = [
+	'xdebug.mode' => 'debug',
+	'xdebug.start_with_request' => 'trigger',
+];
+
+dbgpRunFile( $filename, $commands, $settings );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://xdebug_connect_to_client.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> stack_get -i 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="1"><stack where="worker" level="0" type="file" filename="file://xdebug_connect_to_client.inc" lineno="8"></stack><stack where="{main}" level="1" type="file" filename="file://xdebug_connect_to_client.inc" lineno="13"></stack></response>
+
+-> property_get -i 2 -n $i
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="2"><property name="$i" fullname="$i" type="int"><![CDATA[1]]></property></response>
+
+-> breakpoint_set -i 3 -t line -n 8 -- JGkgPT0gNA==
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="{{PID}}0001"></response>
+
+-> run -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="break" reason="ok"><xdebug:message filename="file://xdebug_connect_to_client.inc" lineno="8"></xdebug:message></response>
+
+-> stack_get -i 5
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="5"><stack where="worker" level="0" type="file" filename="file://xdebug_connect_to_client.inc" lineno="8"></stack><stack where="{main}" level="1" type="file" filename="file://xdebug_connect_to_client.inc" lineno="13"></stack></response>
+
+-> property_get -i 6 -n $i
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="6"><property name="$i" fullname="$i" type="int"><![CDATA[4]]></property></response>
+
+-> detach -i 7
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="7" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/xdebug_notify-001.phpt b/xdebug-3.4.5/tests/debugger/xdebug_notify-001.phpt
new file mode 100644
index 0000000..317a469
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/xdebug_notify-001.phpt
@@ -0,0 +1,49 @@
+--TEST--
+xdebug_notify()
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/xdebug_notify.inc';
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n extended_properties -v 1',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands, [ 'xdebug.var_display_max_children' => 32 ] );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://xdebug_notify.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n extended_properties -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="extended_properties" success="1"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="user"><xdebug:location filename="file://xdebug_notify.inc" lineno="2"></xdebug:location><property type="array" children="1" numchildren="24" page="0" pagesize="32"><property name="0" type="string" size="1" encoding="base64"><![CDATA[YQ==]]></property><property name="1" type="string" size="1" encoding="base64"><![CDATA[Yg==]]></property><property name="2" type="string" size="1" encoding="base64"><![CDATA[Yw==]]></property><property name="3" type="string" size="1" encoding="base64"><![CDATA[ZA==]]></property><property name="4" type="string" size="1" encoding="base64"><![CDATA[ZQ==]]></property><property name="5" type="string" size="1" encoding="base64"><![CDATA[Zg==]]></property><property name="6" type="string" size="1" encoding="base64"><![CDATA[Zw==]]></property><property name="7" type="string" size="1" encoding="base64"><![CDATA[aA==]]></property><property name="8" type="string" size="1" encoding="base64"><![CDATA[aQ==]]></property><property name="9" type="string" size="1" encoding="base64"><![CDATA[ag==]]></property><property name="10" type="string" size="1" encoding="base64"><![CDATA[aw==]]></property><property name="11" type="string" size="1" encoding="base64"><![CDATA[bA==]]></property><property name="12" type="string" size="1" encoding="base64"><![CDATA[bQ==]]></property><property name="13" type="string" size="1" encoding="base64"><![CDATA[bg==]]></property><property name="14" type="string" size="1" encoding="base64"><![CDATA[bw==]]></property><property name="15" type="string" size="1" encoding="base64"><![CDATA[cA==]]></property><property name="16" type="string" size="1" encoding="base64"><![CDATA[cQ==]]></property><property name="17" type="string" size="1" encoding="base64"><![CDATA[cg==]]></property><property name="18" type="string" size="1" encoding="base64"><![CDATA[cw==]]></property><property name="19" type="string" size="1" encoding="base64"><![CDATA[dA==]]></property><property name="20" type="string" size="1" encoding="base64"><![CDATA[dQ==]]></property><property name="21" type="string" size="1" encoding="base64"><![CDATA[dg==]]></property><property name="22" type="string" size="1" encoding="base64"><![CDATA[dw==]]></property><property name="23" type="string" size="1" encoding="base64"><![CDATA[eA==]]></property></property></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="user"><xdebug:location filename="file://xdebug_notify.inc" lineno="3"></xdebug:location><property type="array" children="1" numchildren="1" page="0" pagesize="32"><property type="int"><name encoding="base64"><![CDATA[dGVzdABiYXI=]]></name><value encoding="base64"><![CDATA[NDI=]]></value></property></property></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="user"><xdebug:location filename="file://xdebug_notify.inc" lineno="4"></xdebug:location><property type="array" children="1" numchildren="1" page="0" pagesize="32"><property type="string" size="7"><name encoding="base64"><![CDATA[dGVzdA==]]></name><value encoding="base64"><![CDATA[Zm9vAGJhcg==]]></value></property></property></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="stopping" reason="ok"></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/xdebug_notify-002.phpt b/xdebug-3.4.5/tests/debugger/xdebug_notify-002.phpt
new file mode 100644
index 0000000..07eab27
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/xdebug_notify-002.phpt
@@ -0,0 +1,10 @@
+--TEST--
+xdebug_notify() without a debugging session active
+--INI--
+xdebug.mode=debug
+--FILE--
+<?php
+var_dump( xdebug_notify( "no debug session" ) );
+?>
+--EXPECTF--
+bool(false)
diff --git a/xdebug-3.4.5/tests/debugger/xdebug_notify-003.phpt b/xdebug-3.4.5/tests/debugger/xdebug_notify-003.phpt
new file mode 100644
index 0000000..56a1404
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/xdebug_notify-003.phpt
@@ -0,0 +1,35 @@
+--TEST--
+xdebug_notify() without notifications enabled
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/xdebug_notify.inc';
+
+$commands = array(
+	'feature_set -n extended_properties -v 1',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://xdebug_notify.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n extended_properties -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="extended_properties" success="1"></response>
+
+-> run -i 2
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="2" status="stopping" reason="ok"></response>
+
+-> detach -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="3" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/xdebug_notify-004.phpt b/xdebug-3.4.5/tests/debugger/xdebug_notify-004.phpt
new file mode 100644
index 0000000..566b651
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/xdebug_notify-004.phpt
@@ -0,0 +1,52 @@
+--TEST--
+xdebug_notify() with custom settings
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('dbgp');
+?>
+--FILE--
+<?php
+require 'dbgp/dbgpclient.php';
+$filename = dirname(__FILE__) . '/xdebug_notify_complex.inc';
+
+$commands = array(
+	'feature_set -n notify_ok -v 1',
+	'feature_set -n extended_properties -v 1',
+	'run',
+	'detach',
+);
+
+dbgpRunFile( $filename, $commands, [ 'xdebug.var_display_max_depth' => 1, 'xdebug.var_display_max_children' => 4, 'xdebug.var_display_max_data' => 4 ] );
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file://xdebug_notify_complex.inc" language="PHP" xdebug:language_version="" protocol_version="1.0" appid=""><engine version=""><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2099 by Derick Rethans]]></copyright></init>
+
+-> feature_set -i 1 -n notify_ok -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="notify_ok" success="1"></response>
+
+-> feature_set -i 2 -n extended_properties -v 1
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="extended_properties" success="1"></response>
+
+-> run -i 3
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="user"><xdebug:location filename="file://xdebug_notify_complex.inc" lineno="20"></xdebug:location><property type="array" children="1" numchildren="3" page="0" pagesize="4"><property name="0" type="array" children="1" numchildren="1"></property><property name="1" type="array" children="1" numchildren="1"></property><property name="2" type="array" children="1" numchildren="1"></property></property></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="user"><xdebug:location filename="file://xdebug_notify_complex.inc" lineno="20"></xdebug:location><property type="array" children="1" numchildren="3" page="0" pagesize="2"><property name="0" type="array" children="1" numchildren="1" page="0" pagesize="2"><property name="two" fullname="[&quot;two&quot;]" type="array" children="1" numchildren="1"></property></property><property name="1" type="array" children="1" numchildren="1" page="0" pagesize="2"><property name="long_string" fullname="[&quot;long_string&quot;]" type="string" size="1024" encoding="base64"><![CDATA[YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWE=]]></property></property></property></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="user"><xdebug:location filename="file://xdebug_notify_complex.inc" lineno="20"></xdebug:location><property type="array" children="1" numchildren="3" page="0" pagesize="2"><property name="0" type="array" children="1" numchildren="1" page="0" pagesize="2"><property name="two" fullname="[&quot;two&quot;]" type="array" children="1" numchildren="1" page="0" pagesize="2"><property name="trois" fullname="[&quot;two&quot;][&quot;trois&quot;]" type="array" children="1" numchildren="1" page="0" pagesize="2"><property name="0" fullname="[&quot;two&quot;][&quot;trois&quot;][0]" type="string" size="3" encoding="base64"><![CDATA[YmFy]]></property></property></property></property><property name="1" type="array" children="1" numchildren="1" page="0" pagesize="2"><property name="long_string" fullname="[&quot;long_string&quot;]" type="string" size="1024" encoding="base64"><![CDATA[YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWE=]]></property></property></property></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" name="user"><xdebug:location filename="file://xdebug_notify_complex.inc" lineno="20"></xdebug:location><property type="array" children="1" numchildren="3" page="0" pagesize="16"><property name="0" type="array" children="1" numchildren="1" page="0" pagesize="16"><property name="two" fullname="[&quot;two&quot;]" type="array" children="1" numchildren="1" page="0" pagesize="16"><property name="trois" fullname="[&quot;two&quot;][&quot;trois&quot;]" type="array" children="1" numchildren="1" page="0" pagesize="16"><property name="0" fullname="[&quot;two&quot;][&quot;trois&quot;][0]" type="string" size="3" encoding="base64"><![CDATA[YmFy]]></property></property></property></property><property name="1" type="array" children="1" numchildren="1" page="0" pagesize="16"><property name="long_string" fullname="[&quot;long_string&quot;]" type="string" size="1024" encoding="base64"><![CDATA[YWFhYQ==]]></property></property><property name="2" type="array" children="1" numchildren="1" page="0" pagesize="16"><property name="letters" fullname="[&quot;letters&quot;]" type="array" children="1" numchildren="24" page="0" pagesize="16"><property name="0" fullname="[&quot;letters&quot;][0]" type="string" size="1" encoding="base64"><![CDATA[YQ==]]></property><property name="1" fullname="[&quot;letters&quot;][1]" type="string" size="1" encoding="base64"><![CDATA[Yg==]]></property><property name="2" fullname="[&quot;letters&quot;][2]" type="string" size="1" encoding="base64"><![CDATA[Yw==]]></property><property name="3" fullname="[&quot;letters&quot;][3]" type="string" size="1" encoding="base64"><![CDATA[ZA==]]></property><property name="4" fullname="[&quot;letters&quot;][4]" type="string" size="1" encoding="base64"><![CDATA[ZQ==]]></property><property name="5" fullname="[&quot;letters&quot;][5]" type="string" size="1" encoding="base64"><![CDATA[Zg==]]></property><property name="6" fullname="[&quot;letters&quot;][6]" type="string" size="1" encoding="base64"><![CDATA[Zw==]]></property><property name="7" fullname="[&quot;letters&quot;][7]" type="string" size="1" encoding="base64"><![CDATA[aA==]]></property><property name="8" fullname="[&quot;letters&quot;][8]" type="string" size="1" encoding="base64"><![CDATA[aQ==]]></property><property name="9" fullname="[&quot;letters&quot;][9]" type="string" size="1" encoding="base64"><![CDATA[ag==]]></property><property name="10" fullname="[&quot;letters&quot;][10]" type="string" size="1" encoding="base64"><![CDATA[aw==]]></property><property name="11" fullname="[&quot;letters&quot;][11]" type="string" size="1" encoding="base64"><![CDATA[bA==]]></property><property name="12" fullname="[&quot;letters&quot;][12]" type="string" size="1" encoding="base64"><![CDATA[bQ==]]></property><property name="13" fullname="[&quot;letters&quot;][13]" type="string" size="1" encoding="base64"><![CDATA[bg==]]></property><property name="14" fullname="[&quot;letters&quot;][14]" type="string" size="1" encoding="base64"><![CDATA[bw==]]></property><property name="15" fullname="[&quot;letters&quot;][15]" type="string" size="1" encoding="base64"><![CDATA[cA==]]></property></property></property></property></notify>
+
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="run" transaction_id="3" status="stopping" reason="ok"></response>
+
+-> detach -i 4
+<?xml version="1.0" encoding="iso-8859-1"?>
+<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="detach" transaction_id="4" status="stopping" reason="ok"></response>
diff --git a/xdebug-3.4.5/tests/debugger/xdebug_notify.inc b/xdebug-3.4.5/tests/debugger/xdebug_notify.inc
new file mode 100644
index 0000000..365e97f
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/xdebug_notify.inc
@@ -0,0 +1,4 @@
+<?php
+xdebug_notify( range( 'a', 'x' ) );
+xdebug_notify( [ "test\0bar" => 42 ] );
+xdebug_notify( [ "test" => "foo\0bar" ] );
diff --git a/xdebug-3.4.5/tests/debugger/xdebug_notify_complex.inc b/xdebug-3.4.5/tests/debugger/xdebug_notify_complex.inc
new file mode 100644
index 0000000..b341973
--- /dev/null
+++ b/xdebug-3.4.5/tests/debugger/xdebug_notify_complex.inc
@@ -0,0 +1,21 @@
+<?php
+$test = [
+	[ 'two' => [ 'trois' => [ 'bar' ] ] ],
+	[ 'long_string' => str_repeat( 'a', 1024 ) ],
+	[ 'letters' => range( 'a', 'x' ) ],
+];
+
+$settings = [
+	[], // use default passed on command line
+	[ 'xdebug.var_display_max_depth' => 2, 'xdebug.var_display_max_children' => 2, 'xdebug.var_display_max_data' => 32 ],
+	[ 'xdebug.var_display_max_depth' => -1, 'xdebug.var_display_max_children' => 2, 'xdebug.var_display_max_data' => 32 ],
+	[ 'xdebug.var_display_max_depth' => -1, 'xdebug.var_display_max_children' => 16, 'xdebug.var_display_max_data' => 4 ],
+];
+
+foreach ($settings as $setting_group) {
+	foreach ($setting_group as $setting => $value) {
+		ini_set($setting, $value);
+	}
+
+	xdebug_notify($test);
+}
diff --git a/xdebug-3.4.5/tests/develop/backtrace-args.phpt b/xdebug-3.4.5/tests/develop/backtrace-args.phpt
new file mode 100644
index 0000000..dca12e9
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/backtrace-args.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Test for complex parameters to a function
+--INI--
+xdebug.mode=develop
+xdebug.dump_globals=0
+xdebug.show_local_vars=1
+xdebug.var_display_max_depth=3
+xdebug.var_display_max_children=3
+xdebug.show_error_trace=0
+--FILE--
+<?php
+	function foo2 ($a, $b)
+	{
+		return foo();
+	}
+
+	foo2 (4, array(array('blaat', 5, FALSE)));
+?>
+--EXPECTF--
+Fatal error: Uncaught Error: Call to undefined function%sfoo() in %sbacktrace-args.php on line 4
+
+Error: Call to undefined function foo() in %sbacktrace-args.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbacktrace-args.php:0
+%w%f %w%d   2. foo2($a = 4, $b = [0 => [0 => 'blaat', 1 => 5, 2 => FALSE]]) %sbacktrace-args.php:7
+
+
+Variables in local scope (#2):
+  $a = 4
+  $b = [0 => [0 => 'blaat', 1 => 5, 2 => FALSE]]
diff --git a/xdebug-3.4.5/tests/develop/backtrace-complex.phpt b/xdebug-3.4.5/tests/develop/backtrace-complex.phpt
new file mode 100644
index 0000000..13e4325
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/backtrace-complex.phpt
@@ -0,0 +1,54 @@
+--TEST--
+Test for somewhat more complex backtrace
+--INI--
+xdebug.mode=develop
+xdebug.dump_globals=0
+xdebug.show_error_trace=0
+--FILE--
+<?php
+
+function fucking() {
+    deep();
+}
+
+function deep() {
+    nested();
+}
+
+function nested() {
+    error();
+}
+
+function error() {
+    in();
+}
+
+function in() {
+    func();
+}
+
+function func() {
+    blah();
+}
+
+function blah() {
+    funky_shit();
+}
+
+fucking();
+
+?>
+--EXPECTF--
+Fatal error: Uncaught Error: Call to undefined function%sfunky_shit() in %sbacktrace-complex.php on line 28
+
+Error: Call to undefined function funky_shit() in %sbacktrace-complex.php on line 28
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbacktrace-complex.php:0
+%w%f %w%d   2. fucking() %sbacktrace-complex.php:31
+%w%f %w%d   3. deep() %sbacktrace-complex.php:4
+%w%f %w%d   4. nested() %sbacktrace-complex.php:8
+%w%f %w%d   5. error() %sbacktrace-complex.php:12
+%w%f %w%d   6. in() %sbacktrace-complex.php:16
+%w%f %w%d   7. func() %sbacktrace-complex.php:20
+%w%f %w%d   8. blah() %sbacktrace-complex.php:24
diff --git a/xdebug-3.4.5/tests/develop/backtrace-simple.phpt b/xdebug-3.4.5/tests/develop/backtrace-simple.phpt
new file mode 100644
index 0000000..d074fa1
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/backtrace-simple.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Test for simple backtrace
+--INI--
+xdebug.mode=develop
+xdebug.dump_globals=0
+xdebug.trace_format=0
+xdebug.show_error_trace=0
+--FILE--
+<?php
+	function a () {
+		b();
+	}
+
+	function b () {
+		c();
+	}
+
+	a();
+?>
+--EXPECTF--
+Fatal error: Uncaught Error: Call to undefined function%sc() in %sbacktrace-simple.php on line 7
+
+Error: Call to undefined function c() in %sbacktrace-simple.php on line 7
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbacktrace-simple.php:0
+%w%f %w%d   2. a() %sbacktrace-simple.php:10
+%w%f %w%d   3. b() %sbacktrace-simple.php:3
diff --git a/xdebug-3.4.5/tests/develop/bug00022.phpt b/xdebug-3.4.5/tests/develop/bug00022.phpt
new file mode 100644
index 0000000..879b1f7
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00022.phpt
@@ -0,0 +1,52 @@
+--TEST--
+Test for segmentation fault with xdebug_get_function_stack() and collect_params=1
+--INI--
+xdebug.mode=develop
+xdebug.collect_assignments=0
+--FILE--
+<?php
+function foo($s) {
+	print $s;
+	var_dump(xdebug_get_function_stack());
+}
+ 
+foo('bar');
+?>
+--EXPECTF--
+bar%sbug00022.php:4:
+array(2) {
+  [0] =>
+  array(6) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(6) "{main}"
+    'file' =>
+    string(%d) "%sbug00022.php"
+    'line' =>
+    int(0)
+    'params' =>
+    array(0) {
+    }
+  }
+  [1] =>
+  array(6) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(3) "foo"
+    'file' =>
+    string(%d) "%sbug00022.php"
+    'line' =>
+    int(7)
+    'params' =>
+    array(1) {
+      's' =>
+      string(5) "'bar'"
+    }
+  }
+}
diff --git a/xdebug-3.4.5/tests/develop/bug00032.phpt b/xdebug-3.4.5/tests/develop/bug00032.phpt
new file mode 100644
index 0000000..68c1267
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00032.phpt
@@ -0,0 +1,37 @@
+--TEST--
+Test for segmentation fault with unusual variables
+--INI--
+xdebug.mode=develop
+xdebug.collect_assignments=0
+xdebug.show_local_vars=0
+xdebug.dump_globals=0
+--FILE--
+<?php
+	${1} = "foo";
+	echo ${1} . "\n";
+
+	${STDIN} = "foo";
+	echo ${STDIN} . "\n";
+
+	${array(1,2,3)} = "foo";
+	echo ${array(1,2,3)} . "\n";
+
+	${new stdclass} = "foo";
+	echo ${new stdclass} . "\n";
+?>
+--EXPECTF--
+%s: Array to string conversion in %sbug00032.php on line 8
+
+
+%s: Array to string conversion in %sbug00032.php on line 9
+
+foo
+foo
+foo
+
+Fatal error: Uncaught Error: Object of class stdClass could not be converted to string in %sbug00032.php on line 11
+
+Error: Object of class stdClass could not be converted to string in %sbug00032.php on line 11
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug00032.php:0
diff --git a/xdebug-3.4.5/tests/develop/bug00057.phpt b/xdebug-3.4.5/tests/develop/bug00057.phpt
new file mode 100644
index 0000000..97e583c
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00057.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Test for bug #57: Crash with overloading functions
+--INI--
+xdebug.mode=develop
+xdebug.collect_assignments=0
+error_reporting=2047
+--FILE--
+<?php
+class OO {
+	var $a = 111;
+	var $elem = array('b' => 9, 'c' => 42);
+
+	// Callback method for executing a method
+	function __call($function, $params)
+	{
+		echo strlen($params[0]);
+	}
+}
+
+$o = new OO;
+
+echo $o->foo('80');
+
+?> 
+--EXPECTF--
+2
diff --git a/xdebug-3.4.5/tests/develop/bug00089.phpt b/xdebug-3.4.5/tests/develop/bug00089.phpt
new file mode 100644
index 0000000..f6cc112
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00089.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Test for bug #89: var_dump shows empty strings garbled
+--INI--
+xdebug.mode=develop
+xdebug.show_local_vars=0
+html_errors=1
+xdebug.var_display_max_children=3
+xdebug.file_link_format=
+xdebug.filename_format=
+--FILE--
+<?php
+var_dump(array(4, array('', 2, 'node'), false));
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug00089.php:2:</small>
+<b>array</b> <i>(size=3)</i>
+  0 <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>4</font>
+  1 <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=3)</i>
+      0 <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>''</font> <i>(length=0)</i>
+      1 <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>2</font>
+      2 <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'node'</font> <i>(length=4)</i>
+  2 <font color='#888a85'>=&gt;</font> <small>boolean</small> <font color='#75507b'>false</font>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/bug00176.phpt b/xdebug-3.4.5/tests/develop/bug00176.phpt
new file mode 100644
index 0000000..d0f89e0
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00176.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Test for bug #176: Segfault using SplTempFileObject
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext SPL');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.trace_options=0
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+try {
+$crap = new SplTempFileObject(0);
+$crap->fwrite('give me a crash');
+}
+catch ( Exception $e )
+{
+}
+echo "DONE\n";
+?>
+--EXPECT--
+DONE
diff --git a/xdebug-3.4.5/tests/develop/bug00178.phpt b/xdebug-3.4.5/tests/develop/bug00178.phpt
new file mode 100644
index 0000000..9ff051d
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00178.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Test for bug #178: $php_errormsg and Track errors unavailable (< PHP 7.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 7.4');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.trace_options=0
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+track_errors=1
+display_errors=0
+xdebug.force_display_errors=0
+--FILE--
+<?php
+fsockopen();
+echo "> ", $php_errormsg, "\n";
+fsockopen( 'localhost', 5000, $errno, $errstr, 0.02 );
+echo "> ", str_replace( [ "\n", "\r" ], [ '', '' ], $php_errormsg ), "\n";
+?>
+DONE
+--EXPECTF--
+> fsockopen() expects at least 1 parameter, 0 given
+> %snable to connect to localhost:500%s
+DONE
diff --git a/xdebug-3.4.5/tests/develop/bug00265.phpt b/xdebug-3.4.5/tests/develop/bug00265.phpt
new file mode 100644
index 0000000..14f16fc
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00265.phpt
@@ -0,0 +1,89 @@
+--TEST--
+Test for bug #265: Xdebug's error handler breaks error_get_last()
+--INI--
+xdebug.mode=develop
+xdebug.dump_globals=0
+xdebug.trace_format=0
+xdebug.show_local_vars=0
+xdebug.show_error_trace=1
+--FILE--
+<?php
+register_shutdown_function( 'f' );
+function f(){
+	    var_dump(error_get_last());
+}
+$a = $b;
+var_dump(error_get_last());
+$a = $b['no'];
+var_dump(error_get_last());
+gabba();
+?>
+--EXPECTF--
+%s: Undefined variable%sb in %sbug00265.php on line 6
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug00265.php:0
+
+%sbug00265.php:7:
+array(4) {
+  'type' =>
+  int(%d)
+  'message' =>
+  string(21) "Undefined variable%sb"
+  'file' =>
+  string(%d) "%sbug00265.php"
+  'line' =>
+  int(6)
+}
+
+%s: Undefined variable%sb in %sbug00265.php on line 8
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug00265.php:0
+
+
+%s: Trying to access array offset on %Snull in %sbug00265.php on line 8
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug00265.php:0
+
+%sbug00265.php:9:
+array(4) {
+  'type' =>
+  int(%d)
+  'message' =>
+  string(%d) "Trying to access array offset on %Snull"
+  'file' =>
+  string(%d) "%sbug00265.php"
+  'line' =>
+  int(8)
+}
+
+
+Error: Call to undefined function gabba() in %sbug00265.php on line 10
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug00265.php:0
+
+
+Fatal error: Uncaught Error: Call to undefined function gabba() in %sbug00265.php on line 10
+
+Error: Call to undefined function gabba() in %sbug00265.php on line 10
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug00265.php:0
+
+%sbug00265.php:4:
+array(4) {
+  'type' =>
+  int(1)
+  'message' =>
+  string(%d) "Uncaught Error: Call to undefined function gabba() in %sbug00265.php:10
+Stack trace:
+#0 {main}
+  thrown"
+  'file' =>
+  string(%d) "%sbug00265.php"
+  'line' =>
+  int(10)
+}
diff --git a/xdebug-3.4.5/tests/develop/bug00280.phpt b/xdebug-3.4.5/tests/develop/bug00280.phpt
new file mode 100644
index 0000000..0267598
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00280.phpt
@@ -0,0 +1,18 @@
+--TEST--
+Test for bug #280: var_dump don't display key of array as expected
+--INI--
+xdebug.mode=develop
+xdebug.file_link_format=
+--FILE--
+<?php
+$var = "te\0st";
+$arr = array($var=>$var);
+ini_set('html_errors', '1');
+var_dump($arr);
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug00280.php:5:</small>
+<b>array</b> <i>(size=1)</i>
+  'te&#0;st' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'te&#0;st'</font> <i>(length=5)</i>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/bug00298.phpt b/xdebug-3.4.5/tests/develop/bug00298.phpt
new file mode 100644
index 0000000..3b1d6c5
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00298.phpt
@@ -0,0 +1,16 @@
+--TEST--
+Test for bug #298: xdebug_var_dump & multiline strings
+--INI--
+xdebug.mode=develop
+xdebug.file_link_format=
+xdebug.filename_format=
+--FILE--
+<?php
+ini_set('html_errors', '1');
+$sql = "select * \n table from \nwhere condition";
+xdebug_var_dump($sql);
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug00298.php:4:</small><small>string</small> <font color='#cc0000'>'select * &#10; table from &#10;where condition'</font> <i>(length=38)</i>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/bug00305.phpt b/xdebug-3.4.5/tests/develop/bug00305.phpt
new file mode 100644
index 0000000..7dcf84d
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00305.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Test for bug #305: xdebug exception handler doesn't properly handle special chars
+--INI--
+html_errors=1
+xdebug.mode=develop
+xdebug.file_link_format=xdebug://%f@%l
+xdebug.filename_format=
+--FILE--
+<?php
+throw new Exception("<MARK>");
+?>
+--EXPECTF--
+<br />
+<font size='1'><table class='xdebug-error xe-uncaught-exception' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Fatal error: Uncaught%sException%s&lt;MARK&gt;%sin <a style='color: black' href='xdebug://%sbug00305.php@2'>%sbug00305.php</a> on line <i>2</i></th></tr>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Exception: &lt;MARK&gt; in <a style='color: black' href='xdebug://%sbug00305.php@2'>%sbug00305.php</a> on line <i>2</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug00305.php' bgcolor='#eeeeec'><a style='color: black' href='xdebug://%sbug00305.php@0'>...%sbug00305.php<b>:</b>0</a></td></tr>
+</table></font>
diff --git a/xdebug-3.4.5/tests/develop/bug00314-win.phpt b/xdebug-3.4.5/tests/develop/bug00314-win.phpt
new file mode 100644
index 0000000..b0cee86
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00314-win.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test for bug #314: PHP CLI Error logging thwarted when Xdebug loaded (Windows)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('win');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.dump_globals=0
+xdebug.trace_format=0
+log_errors=1
+error_log=C:\Windows\Temp\bug314-win.log
+date.timezone=UTC
+--FILE--
+<?php
+@unlink('C:\Windows\Temp\bug314-win.log');
+trigger_error('Error', E_USER_WARNING);
+echo "FROM LOG\n";
+echo file_get_contents('C:\Windows\Temp\bug314-win.log');
+?>
+--EXPECTF--
+Warning: Error in %sbug00314-win.php on line 3
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug00314-win.php:0
+%w%f %w%d   2. trigger_error($message = 'Error', $error_%s = 512) %sbug00314-win.php:3
+
+FROM LOG
+[%d-%s-%d %d:%d:%d%s] PHP Warning:  Error in %sbug00314-win.php on line 3
+[%d-%s-%d %d:%d:%d%s] PHP Stack trace:
+[%d-%s-%d %d:%d:%d%s] PHP   1. {main}() %sbug00314-win.php:0
+[%d-%s-%d %d:%d:%d%s] PHP   2. trigger_error($message = 'Error', $error_%s = 512) %sbug00314-win.php:3
diff --git a/xdebug-3.4.5/tests/develop/bug00314.phpt b/xdebug-3.4.5/tests/develop/bug00314.phpt
new file mode 100644
index 0000000..3122b32
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00314.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test for bug #314: PHP CLI Error logging thwarted when Xdebug loaded
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!win; unparallel');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.dump_globals=0
+xdebug.trace_format=0
+log_errors=1
+error_log=/tmp/bug314.log
+date.timezone=UTC
+--FILE--
+<?php
+@unlink("/tmp/bug314.log");
+trigger_error('Error', E_USER_WARNING);
+echo "FROM LOG\n";
+echo file_get_contents("/tmp/bug314.log");
+?>
+--EXPECTF--
+Warning: Error in %sbug00314.php on line 3
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug00314.php:0
+%w%f %w%d   2. trigger_error($message = 'Error', $error_%s = 512) %sbug00314.php:3
+
+FROM LOG
+[%d-%s-%d %d:%d:%d%s] PHP Warning:  Error in %sbug00314.php on line 3
+[%d-%s-%d %d:%d:%d%s] PHP Stack trace:
+[%d-%s-%d %d:%d:%d%s] PHP   1. {main}() %sbug00314.php:0
+[%d-%s-%d %d:%d:%d%s] PHP   2. trigger_error($message = 'Error', $error_%s = 512) %sbug00314.php:3
diff --git a/xdebug-3.4.5/tests/develop/bug00315.phpt b/xdebug-3.4.5/tests/develop/bug00315.phpt
new file mode 100644
index 0000000..4dec162
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00315.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Test for bug #315: Xdebug crashes when including a file that doesn't exist
+--INI--
+xdebug.mode=develop
+xdebug.dump_globals=0
+xdebug.trace_format=0
+xdebug.force_error_reporting=0
+--FILE--
+<?php
+@include 'this-file-does-not-exist.php';
+echo "ALIVE\n";
+?>
+--EXPECT--
+ALIVE
diff --git a/xdebug-3.4.5/tests/develop/bug00328-php80.phpt b/xdebug-3.4.5/tests/develop/bug00328-php80.phpt
new file mode 100644
index 0000000..7db291d
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00328-php80.phpt
@@ -0,0 +1,38 @@
+--TEST--
+Test for bug #328: Private properties are incorrectly enumerated in case of extended classes (< PHP 8.1)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.1');
+?>
+--INI--
+html_errors=1
+xdebug.mode=develop
+xdebug.file_link_format=
+xdebug.filename_format=
+--FILE--
+<?php
+class Daddy
+{
+	private $bar = 42;
+	protected $pro = 242;
+	public    $pub = 342;
+}
+class Inherit extends Daddy
+{
+	private $bar = 43;
+	protected $pro = 243;
+	public    $pub = 343;
+}
+$a = new Inherit;
+var_dump( $a );
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug00328-php80.php:15:</small>
+<b>object</b>(<i>Inherit</i>)[<i>%d</i>]
+  <i>private</i> 'bar' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>43</font>
+  <i>protected</i> 'pro' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>243</font>
+  <i>public</i> 'pub' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>343</font>
+  <i>private</i> 'bar' <small>(Daddy)</small> <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>42</font>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/bug00328-php81.phpt b/xdebug-3.4.5/tests/develop/bug00328-php81.phpt
new file mode 100644
index 0000000..0019c75
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00328-php81.phpt
@@ -0,0 +1,38 @@
+--TEST--
+Test for bug #328: Private properties are incorrectly enumerated in case of extended classes (>= PHP 8.1)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1');
+?>
+--INI--
+html_errors=1
+xdebug.mode=develop
+xdebug.file_link_format=
+xdebug.filename_format=
+--FILE--
+<?php
+class Daddy
+{
+	private $bar = 42;
+	protected $pro = 242;
+	public    $pub = 342;
+}
+class Inherit extends Daddy
+{
+	private $bar = 43;
+	protected $pro = 243;
+	public    $pub = 343;
+}
+$a = new Inherit;
+var_dump( $a );
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug00328-php81.php:15:</small>
+<b>object</b>(<i>Inherit</i>)[<i>%d</i>]
+  <i>private</i> 'bar' <small>(Daddy)</small> <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>42</font>
+  <i>protected</i> 'pro' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>243</font>
+  <i>public</i> 'pub' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>343</font>
+  <i>private</i> 'bar' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>43</font>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/bug00340-001.phpt b/xdebug-3.4.5/tests/develop/bug00340-001.phpt
new file mode 100644
index 0000000..73e1af3
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00340-001.phpt
@@ -0,0 +1,38 @@
+--TEST--
+Test for bug #340: Segfault while throwing an Exception
+--INI--
+xdebug.mode=develop
+html_errors=1
+xdebug.file_link_format=
+xdebug.filename_format=
+xdebug.dump.GET=
+xdebug.dump.SERVER=
+--FILE--
+<?php
+class MyException extends Exception
+{
+	function __construct()
+	{
+		$this->message = array(1, 2, 3);
+	}
+}
+
+
+throw new MyException();
+?>
+--EXPECTF--
+<br />
+<font size='1'><table class='xdebug-error xe-%s' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> %s: Array to string conversion in Unknown on line <i>0</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'><a href='http://www.php.net/MyException.--toString.html' target='_new'>__toString</a>(  )</td><td title='Unknown' bgcolor='#eeeeec'>...%sUnknown<b>:</b>0</td></tr>
+</table></font>
+<br />
+<font size='1'><table class='xdebug-error xe-uncaught-exception' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Fatal error: Uncaught%sMyException%sArray%sin %sbug00340-001.php on line <i>11</i></th></tr>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> MyException:  in %sbug00340-001.php on line <i>11</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug00340-001.php' bgcolor='#eeeeec'>...%sbug00340-001.php<b>:</b>0</td></tr>
+</table></font>
diff --git a/xdebug-3.4.5/tests/develop/bug00340-002.phpt b/xdebug-3.4.5/tests/develop/bug00340-002.phpt
new file mode 100644
index 0000000..ad754fd
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00340-002.phpt
@@ -0,0 +1,38 @@
+--TEST--
+Test for bug #340: Segfault while throwing an Exception
+--INI--
+xdebug.mode=develop
+html_errors=1
+xdebug.file_link_format=[[%f:%l]]
+xdebug.filename_format=
+xdebug.dump.GET=
+xdebug.dump.SERVER=
+--FILE--
+<?php
+class MyException extends Exception
+{
+	function __construct()
+	{
+		$this->message = array(1, 2, 3);
+	}
+}
+
+
+throw new MyException();
+?>
+--EXPECTF--
+<br />
+<font size='1'><table class='xdebug-error xe-%s' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> %s: Array to string conversion in Unknown on line <i>0</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'><a href='http://www.php.net/MyException.--toString.html' target='_new'>__toString</a>(  )</td><td title='Unknown' bgcolor='#eeeeec'>...%sUnknown<b>:</b>0</td></tr>
+</table></font>
+<br />
+<font size='1'><table class='xdebug-error xe-uncaught-exception' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Fatal error: Uncaught%sMyException%sArray%sin <a style='color: black' href='[[%sbug00340-002.php:11]]'>%sbug00340-002.php</a> on line <i>11</i></th></tr>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> MyException:  in <a style='color: black' href='[[%sbug00340-002.php:11]]'>%sbug00340-002.php</a> on line <i>11</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug00340-002.php' bgcolor='#eeeeec'><a style='color: black' href='[[%sbug00340-002.php:0]]'>...%sbug00340-002.php<b>:</b>0</a></td></tr>
+</table></font>
diff --git a/xdebug-3.4.5/tests/develop/bug00389.phpt b/xdebug-3.4.5/tests/develop/bug00389.phpt
new file mode 100644
index 0000000..203ad2d
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00389.phpt
@@ -0,0 +1,44 @@
+--TEST--
+Test for bug #389: Destructors called on fatal error (PHP < 8.0)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.0');
+?>
+--INI--
+log_errors=0
+xdebug.mode=develop
+xdebug.dump.GET=
+xdebug.dump.SERVER=
+xdebug.show_local_vars=0
+xdebug.show_error_trace=1
+--FILE--
+<?php
+class Food {
+    public function __destruct() {
+        echo "__destruct called\n";
+    }
+  }
+
+$f = new Food();
+echo "forcing fatal error:\n";
+Abc::def();
+
+?>
+DONE
+--EXPECTF--
+forcing fatal error:
+
+
+Error: Class 'Abc' not found in %sbug00389.php on line 10
+
+Call Stack:
+%w%f%w%d   1. {main}() %sbug00389.php:0
+
+
+Fatal error: Uncaught Error: Class 'Abc' not found in %sbug00389.php on line 10
+
+Error: Class 'Abc' not found in %sbug00389.php on line 10
+
+Call Stack:
+%w%f%w%d   1. {main}() %sbug00389.php:0
diff --git a/xdebug-3.4.5/tests/develop/bug00391.phpt b/xdebug-3.4.5/tests/develop/bug00391.phpt
new file mode 100644
index 0000000..776e5d3
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00391.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for bug #391: When PHP runs with Xdebug it doesn't stop executing script when type hinting leads to fatal error
+--INI--
+log_errors=0
+xdebug.mode=develop
+xdebug.dump.GET=
+xdebug.dump.SERVER=
+xdebug.show_local_vars=0
+xdebug.show_error_trace=1
+--FILE--
+<?php
+
+class A
+{
+	public $x = 1;
+}
+
+class B
+{
+	public function myMethod(A $y)
+	{
+		echo $y, "\n";
+	}
+}
+
+$z = new B();
+$z->myMethod(123);
+echo "And going and going...\n";
+?>
+DONE
+--EXPECTF--
+TypeError: %SA, int%S given, called in %sbug00391.php on line 17 in %sbug00391.php on line 10
+
+Call Stack:
+%w%f%w%d   1. {main}() %sbug00391.php:0
+%w%f%w%d   2. B->myMethod($y = 123) %sbug00391.php:17
+
+
+Fatal error: %SA, int%S given, called in %sbug00391.php on line 17 and defined in %sbug00391.php on line 10
+
+TypeError: %SA, int%S given, called in %sbug00391.php on line 17 in %sbug00391.php on line 10
+
+Call Stack:
+%w%f%w%d   1. {main}() %sbug00391.php:0
+%w%f%w%d   2. B->myMethod($y = 123) %sbug00391.php:17
diff --git a/xdebug-3.4.5/tests/develop/bug00450-001.phpt b/xdebug-3.4.5/tests/develop/bug00450-001.phpt
new file mode 100644
index 0000000..7977e66
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00450-001.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test for bug #450: Incomplete backtraces when an exception gets rethrown (Text)
+--INI--
+xdebug.mode=develop
+xdebug.dump.GET=
+xdebug.dump.SERVER=
+xdebug.show_local_vars=0
+html_errors=0
+xdebug.cli_color=0
+display_errors=1
+error_reporting=E_ALL
+--FILE--
+<?php
+
+class test
+{
+	function f4() {
+		try {
+			$this->f5();
+		} catch(exception $e) {
+			throw $e;
+		}
+	}
+
+	function f5() {
+		$this->f6();
+	}
+
+	function f6() {
+		throw new exception('foo');
+	}
+}
+
+$test = new test();
+
+$test->f4();
+
+?>
+--EXPECTF--
+Fatal error: Uncaught Exception: foo in %s450-001.php on line 18
+
+Exception: foo in %s450-001.php on line 18
+
+Call Stack:
+%w%f %w%d   1. {main}() %s450-001.php:0
+%w%f %w%d   2. test->f4() %s450-001.php:24
+%w%f %w%d   3. test->f5() %s450-001.php:7
+%w%f %w%d   4. test->f6() %s450-001.php:14
diff --git a/xdebug-3.4.5/tests/develop/bug00450-002.phpt b/xdebug-3.4.5/tests/develop/bug00450-002.phpt
new file mode 100644
index 0000000..22c3222
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00450-002.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test for bug #450: Incomplete backtraces when an exception gets rethrown (Ansi)
+--INI--
+xdebug.mode=develop
+xdebug.dump.GET=
+xdebug.dump.SERVER=
+xdebug.show_local_vars=0
+html_errors=0
+xdebug.cli_color=2
+display_errors=1
+error_reporting=E_ALL
+--FILE--
+<?php
+
+class test
+{
+	function f4() {
+		try {
+			$this->f5();
+		} catch(exception $e) {
+			throw $e;
+		}
+	}
+
+	function f5() {
+		$this->f6();
+	}
+
+	function f6() {
+		throw new exception('foo');
+	}
+}
+
+$test = new test();
+
+$test->f4();
+
+?>
+--EXPECTF--
+[1m[31mFatal error[0m: Uncaught Exception: foo[22m in [31m%sbug00450-002.php[0m on line [32m18[0m[22m
+
+[1m[31mException[0m: foo[22m in [31m%sbug00450-002.php[0m on line [32m18[0m[22m
+
+[1mCall Stack:[22m
+%w%f %w%d   1. {main}() %sbug00450-002.php:0
+%w%f %w%d   2. test->f4() %sbug00450-002.php:24
+%w%f %w%d   3. test->f5() %sbug00450-002.php:7
+%w%f %w%d   4. test->f6() %sbug00450-002.php:14
diff --git a/xdebug-3.4.5/tests/develop/bug00450-003.phpt b/xdebug-3.4.5/tests/develop/bug00450-003.phpt
new file mode 100644
index 0000000..b8fe799
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00450-003.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #450: Incomplete backtraces when an exception gets rethrown (HTML)
+--INI--
+xdebug.mode=develop
+xdebug.dump.GET=
+xdebug.dump.SERVER=
+xdebug.show_local_vars=0
+html_errors=1
+xdebug.cli_color=0
+display_errors=1
+error_reporting=E_ALL
+--FILE--
+<?php
+
+class test
+{
+	function f4() {
+		try {
+			$this->f5();
+		} catch(exception $e) {
+			throw $e;
+		}
+	}
+
+	function f5() {
+		$this->f6();
+	}
+
+	function f6() {
+		throw new exception('foo');
+	}
+}
+
+$test = new test();
+
+$test->f4();
+
+?>
+--EXPECTF--
+<br />
+<font size='1'><table class='xdebug-error xe-uncaught-exception' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Fatal error: Uncaught Exception: foo in %sbug00450-003.php on line <i>18</i></th></tr>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Exception: foo in %sbug00450-003.php on line <i>18</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}()</td><td title='%sbug00450-003.php' bgcolor='#eeeeec'>%sbug00450-003.php<b>:</b>0</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>test->f4()</td><td title='%sbug00450-003.php' bgcolor='#eeeeec'>%sbug00450-003.php<b>:</b>24</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>3</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>test->f5()</td><td title='%sbug00450-003.php' bgcolor='#eeeeec'>%sbug00450-003.php<b>:</b>7</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>4</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>test->f6()</td><td title='%sbug00450-003.php' bgcolor='#eeeeec'>%sbug00450-003.php<b>:</b>14</td></tr>
+</table></font>
diff --git a/xdebug-3.4.5/tests/develop/bug00457-001.phpt b/xdebug-3.4.5/tests/develop/bug00457-001.phpt
new file mode 100644
index 0000000..1daf13c
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00457-001.phpt
@@ -0,0 +1,80 @@
+--TEST--
+Test for bug #457: var_dump() overloading from the command line
+--INI--
+html_errors=0
+xdebug.mode=develop
+xdebug.var_display_max_data=32
+xdebug.var_display_max_children=4
+xdebug.var_display_max_depth=2
+xdebug.cli_color=1
+xdebug.filename_format=
+--FILE--
+<?php
+$array = array(
+	"A very long string that should be cut off at 32 characters",
+	array(
+		"a test for the depth setting",
+		array(
+			"this should not show"
+		)
+	),
+	"third element",
+	"fourth element (still shows)",
+	"fifth element (should not show)"
+);
+var_dump($array);
+
+$object = new stdClass;
+$object->prop1 = "A very long string that should be cut off at 32 characters";
+$object->array = array(
+		"a test for the depth setting",
+		array(
+			"this should not show"
+		)
+	);
+$object->prop3 = "third element";
+$object->prop4 = "fourth element (still shows)";
+$object->prop5 = "fifth element (should not show)";
+var_dump($object);
+?>
+--EXPECTF--
+%sbug00457-001.php:14:
+array(5) {
+  [0] =>
+  string(58) "A very long string that should b"...
+  [1] =>
+  array(2) {
+    [0] =>
+    string(28) "a test for the depth setting"
+    [1] =>
+    array(1) {
+      ...
+    }
+  }
+  [2] =>
+  string(13) "third element"
+  [3] =>
+  string(28) "fourth element (still shows)"
+
+  (more elements)...
+}
+%sbug00457-001.php:27:
+class stdClass#%d (5) {
+  public $prop1 =>
+  string(58) "A very long string that should b"...
+  public $array =>
+  array(2) {
+    [0] =>
+    string(28) "a test for the depth setting"
+    [1] =>
+    array(1) {
+      ...
+    }
+  }
+  public $prop3 =>
+  string(13) "third element"
+  public $prop4 =>
+  string(28) "fourth element (still shows)"
+
+  (more elements)...
+}
diff --git a/xdebug-3.4.5/tests/develop/bug00457-002.phpt b/xdebug-3.4.5/tests/develop/bug00457-002.phpt
new file mode 100644
index 0000000..088f7e4
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00457-002.phpt
@@ -0,0 +1,80 @@
+--TEST--
+Test for bug #457: var_dump() overloading from the command line
+--INI--
+html_errors=0
+xdebug.mode=develop
+xdebug.var_display_max_data=32
+xdebug.var_display_max_children=4
+xdebug.var_display_max_depth=2
+xdebug.cli_color=2
+xdebug.filename_format=
+--FILE--
+<?php
+$array = array(
+	"A very long string that should be cut off at 32 characters",
+	array(
+		"a test for the depth setting",
+		array(
+			"this should not show"
+		)
+	),
+	"third element",
+	"fourth element (still shows)",
+	"fifth element (should not show)"
+);
+var_dump($array);
+
+$object = new stdClass;
+$object->prop1 = "A very long string that should be cut off at 32 characters";
+$object->array = array(
+		"a test for the depth setting",
+		array(
+			"this should not show"
+		)
+	);
+$object->prop3 = "third element";
+$object->prop4 = "fourth element (still shows)";
+$object->prop5 = "fifth element (should not show)";
+var_dump($object);
+?>
+--EXPECTF--
+[1m%sbug00457-002.php[22m:[1m14[22m:
+[1marray[22m([32m5[0m) {
+  [0] [0m=>[0m
+  [1mstring[22m([32m58[0m) "[31mA very long string that should b[0m"...
+  [1] [0m=>[0m
+  [1marray[22m([32m2[0m) {
+    [0] [0m=>[0m
+    [1mstring[22m([32m28[0m) "[31ma test for the depth setting[0m"
+    [1] [0m=>[0m
+    [1marray[22m([32m1[0m) {
+      ...
+    }
+  }
+  [2] [0m=>[0m
+  [1mstring[22m([32m13[0m) "[31mthird element[0m"
+  [3] [0m=>[0m
+  [1mstring[22m([32m28[0m) "[31mfourth element (still shows)[0m"
+
+  (more elements)...
+}
+[1m%sbug00457-002.php[22m:[1m27[22m:
+[1mclass[22m [31mstdClass[0m#%d ([32m5[0m) {
+  [32m[1mpublic[22m[0m $prop1 [0m=>[0m
+  [1mstring[22m([32m58[0m) "[31mA very long string that should b[0m"...
+  [32m[1mpublic[22m[0m $array [0m=>[0m
+  [1marray[22m([32m2[0m) {
+    [0] [0m=>[0m
+    [1mstring[22m([32m28[0m) "[31ma test for the depth setting[0m"
+    [1] [0m=>[0m
+    [1marray[22m([32m1[0m) {
+      ...
+    }
+  }
+  [32m[1mpublic[22m[0m $prop3 [0m=>[0m
+  [1mstring[22m([32m13[0m) "[31mthird element[0m"
+  [32m[1mpublic[22m[0m $prop4 [0m=>[0m
+  [1mstring[22m([32m28[0m) "[31mfourth element (still shows)[0m"
+
+  (more elements)...
+}
diff --git a/xdebug-3.4.5/tests/develop/bug00476-001.phpt b/xdebug-3.4.5/tests/develop/bug00476-001.phpt
new file mode 100644
index 0000000..90003ed
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00476-001.phpt
@@ -0,0 +1,74 @@
+--TEST--
+Test for bug #476: Exception chanining doesn't work (Text)
+--INI--
+xdebug.mode=develop
+xdebug.dump.GET=
+xdebug.dump.SERVER=
+xdebug.show_local_vars=0
+html_errors=0
+xdebug.cli_color=0
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+?>
+--FILE--
+<?php
+function throwSecondException( Exception $e )
+{
+   throw new Exception('Second exception', 0, $e);
+}
+
+class thrower
+{
+	function __construct( private Exception $e )
+	{
+	}
+
+	function throwMe()
+	{
+		throw new Exception('Third exception', 42, $this->e );
+	}
+}
+
+try {
+   throw new Exception('First exception');
+} catch(Exception $e) {
+	try {
+		throwSecondException( $e );
+	} catch(Exception $f) {
+		$t = new thrower($f);
+		$t->throwMe();
+	}
+}
+echo "DONE\n";
+?>
+--EXPECTF--
+Fatal error: Uncaught Exception: First exception in %sbug00476-001.php:20
+Stack trace:
+#0 {main}
+
+Next Exception: Second exception in %sbug00476-001.php:4
+Stack trace:
+#0 %sbug00476-001.php(23): throwSecondException(Object(Exception))
+#1 {main}
+
+Next Exception: Third exception in %sbug00476-001.php on line 15
+
+Exception: Third exception in %sbug00476-001.php on line 15
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug00476-001.php:0
+%w%f %w%d   2. thrower->throwMe() %sbug00476-001.php:26
+
+	Nested Exceptions:
+
+	Exception: Second exception in %sbug00476-001.php on line 4
+
+	Call Stack:
+	%w%f %w%d   1. {main}() %sbug00476-001.php:0
+	%w%f %w%d   2. throwSecondException() %sbug00476-001.php:23
+
+	Exception: First exception in %sbug00476-001.php on line 20
+
+	Call Stack:
+	%w%f %w%d   1. {main}() %sbug00476-001.php:0
diff --git a/xdebug-3.4.5/tests/develop/bug00476-002.phpt b/xdebug-3.4.5/tests/develop/bug00476-002.phpt
new file mode 100644
index 0000000..e64549f
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00476-002.phpt
@@ -0,0 +1,74 @@
+--TEST--
+Test for bug #476: Exception chanining doesn't work (CLI colour)
+--INI--
+xdebug.mode=develop
+xdebug.dump.GET=
+xdebug.dump.SERVER=
+xdebug.show_local_vars=0
+html_errors=0
+xdebug.cli_color=2
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+?>
+--FILE--
+<?php
+function throwSecondException( Exception $e )
+{
+   throw new Exception('Second exception', 0, $e);
+}
+
+class thrower
+{
+	function __construct( private Exception $e )
+	{
+	}
+
+	function throwMe()
+	{
+		throw new Exception('Third exception', 42, $this->e );
+	}
+}
+
+try {
+   throw new Exception('First exception');
+} catch(Exception $e) {
+	try {
+		throwSecondException( $e );
+	} catch(Exception $f) {
+		$t = new thrower($f);
+		$t->throwMe();
+	}
+}
+echo "DONE\n";
+?>
+--EXPECTF--
+[1m[31mFatal error[0m: Uncaught Exception: First exception in %sbug00476-002.php:20
+Stack trace:
+#0 {main}
+
+Next Exception: Second exception in %sbug00476-002.php:4
+Stack trace:
+#0 %sbug00476-002.php(23): throwSecondException(Object(Exception))
+#1 {main}
+
+Next Exception: Third exception[22m in [31m%sbug00476-002.php[0m on line [32m15[0m[22m
+
+[1m[31mException[0m: Third exception[22m in [31m%sbug00476-002.php[0m on line [32m15[0m[22m
+
+[1mCall Stack:[22m
+%w%f %w%d   1. {main}() %sbug00476-002.php:0
+%w%f %w%d   2. thrower->throwMe() %sbug00476-002.php:26
+
+	[1mNested Exceptions:[22m
+
+	[1m[31mException[0m: Second exception[22m in [31m%sbug00476-002.php[0m on line [32m4[0m[22m
+
+	[1mCall Stack:[22m
+	%w%f %w%d   1. {main}() %sbug00476-002.php:0
+	%w%f %w%d   2. throwSecondException() %sbug00476-002.php:23
+
+	[1m[31mException[0m: First exception[22m in [31m%sbug00476-002.php[0m on line [32m20[0m[22m
+
+	[1mCall Stack:[22m
+	%w%f %w%d   1. {main}() %sbug00476-002.php:0
diff --git a/xdebug-3.4.5/tests/develop/bug00476-003.phpt b/xdebug-3.4.5/tests/develop/bug00476-003.phpt
new file mode 100644
index 0000000..b4b2710
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00476-003.phpt
@@ -0,0 +1,76 @@
+--TEST--
+Test for bug #476: Exception chanining doesn't work (HTML)
+--INI--
+xdebug.mode=develop
+xdebug.dump.GET=
+xdebug.dump.SERVER=
+xdebug.show_local_vars=0
+html_errors=1
+xdebug.cli_color=0
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+?>
+--FILE--
+<?php
+function throwSecondException( Exception $e )
+{
+   throw new Exception('Second exception', 0, $e);
+}
+
+class thrower
+{
+	function __construct( private Exception $e )
+	{
+	}
+
+	function throwMe()
+	{
+		throw new Exception('Third exception', 42, $this->e );
+	}
+}
+
+try {
+   throw new Exception('First exception');
+} catch(Exception $e) {
+	try {
+		throwSecondException( $e );
+	} catch(Exception $f) {
+		$t = new thrower($f);
+		$t->throwMe();
+	}
+}
+echo "DONE\n";
+?>
+--EXPECTF--
+<br />
+<font size='1'><table class='xdebug-error xe-uncaught-exception' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Fatal error: Uncaught Exception: First exception in %sbug00476-003.php:20
+Stack trace:
+#0 {main}
+
+Next Exception: Second exception in %sbug00476-003.php:4
+Stack trace:
+#0 %sbug00476-003.php(23): throwSecondException(Object(Exception))
+#1 {main}
+
+Next Exception: Third exception in %sbug00476-003.php on line <i>15</i></th></tr>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Exception: Third exception in %sbug00476-003.php on line <i>15</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug00476-003.php' bgcolor='#eeeeec'>%sbug00476-003.php<b>:</b>0</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>thrower->throwMe(  )</td><td title='%sbug00476-003.php' bgcolor='#eeeeec'>%sbug00476-003.php<b>:</b>26</td></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Nested Exceptions</th></tr><tr><td colspan='5'>
+<table class='xdebug-error xe-nested' style='width: 80%; margin: 1em' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Exception: Second exception in %sbug00476-003.php on line <i>4</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}()</td><td title='%sbug00476-003.php' bgcolor='#eeeeec'>%sbug00476-003.php<b>:</b>0</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>throwSecondException()</td><td title='%sbug00476-003.php' bgcolor='#eeeeec'>%sbug00476-003.php<b>:</b>23</td></tr>
+<table class='xdebug-error xe-nested' style='width: 80%; margin: 1em' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Exception: First exception in %sbug00476-003.php on line <i>20</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}()</td><td title='%sbug00476-003.php' bgcolor='#eeeeec'>%sbug00476-003.php<b>:</b>0</td></tr>
+</table></tr>
+</table></font>
diff --git a/xdebug-3.4.5/tests/develop/bug00476-004.phpt b/xdebug-3.4.5/tests/develop/bug00476-004.phpt
new file mode 100644
index 0000000..4542a6b
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00476-004.phpt
@@ -0,0 +1,101 @@
+--TEST--
+Test for bug #476: Exception chanining doesn't work (Multiple)
+--INI--
+xdebug.mode=develop
+xdebug.dump.GET=
+xdebug.dump.SERVER=
+xdebug.show_local_vars=0
+--FILE--
+<?php
+
+function a()
+{
+   throw new Exception('First exception');
+}
+
+function b()
+{
+	try {
+		a();
+	} catch(Exception $e) {
+	   throw new Exception('Second exception', 0, $e);
+	}
+}
+
+function c()
+{
+	try {
+		b();
+	} catch(Exception $e) {
+	   throw new Exception('Third exception', 0, $e);
+	}
+}
+
+function d()
+{
+	try {
+		c();
+	} catch(Exception $e) {
+	   throw new Exception('Fourth exception', 0, $e);
+	}
+}
+
+d();
+
+echo "DONE\n";
+?>
+--EXPECTF--
+Fatal error: Uncaught Exception: First exception in %sbug00476-004.php:5
+Stack trace:
+#0 %sbug00476-004.php(11): a()
+#1 %sbug00476-004.php(20): b()
+#2 %sbug00476-004.php(29): c()
+#3 %sbug00476-004.php(35): d()
+#4 {main}
+
+Next Exception: Second exception in %sbug00476-004.php:13
+Stack trace:
+#0 %sbug00476-004.php(20): b()
+#1 %sbug00476-004.php(29): c()
+#2 %sbug00476-004.php(35): d()
+#3 {main}
+
+Next Exception: Third exception in %sbug00476-004.php:22
+Stack trace:
+#0 %sbug00476-004.php(29): c()
+#1 %sbug00476-004.php(35): d()
+#2 {main}
+
+Next Exception: Fourth exception in %sbug00476-004.php on line 31
+
+Exception: Fourth exception in %sbug00476-004.php on line 31
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug00476-004.php:0
+%w%f %w%d   2. d() %sbug00476-004.php:35
+
+	Nested Exceptions:
+
+	Exception: Third exception in %sbug00476-004.php on line 22
+
+	Call Stack:
+	%w%f %w%d   1. {main}() %sbug00476-004.php:0
+	%w%f %w%d   2. d() %sbug00476-004.php:35
+	%w%f %w%d   3. c() %sbug00476-004.php:29
+
+	Exception: Second exception in %sbug00476-004.php on line 13
+
+	Call Stack:
+	%w%f %w%d   1. {main}() %sbug00476-004.php:0
+	%w%f %w%d   2. d() %sbug00476-004.php:35
+	%w%f %w%d   3. c() %sbug00476-004.php:29
+	%w%f %w%d   4. b() %sbug00476-004.php:20
+
+	Exception: First exception in %sbug00476-004.php on line 5
+
+	Call Stack:
+	%w%f %w%d   1. {main}() %sbug00476-004.php:0
+	%w%f %w%d   2. d() %sbug00476-004.php:35
+	%w%f %w%d   3. c() %sbug00476-004.php:29
+	%w%f %w%d   4. b() %sbug00476-004.php:20
+	%w%f %w%d   5. a() %sbug00476-004.php:11
diff --git a/xdebug-3.4.5/tests/develop/bug00538-002.phpt b/xdebug-3.4.5/tests/develop/bug00538-002.phpt
new file mode 100644
index 0000000..1c6f8eb
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00538-002.phpt
@@ -0,0 +1,66 @@
+--TEST--
+Test for bug #538: Error in watches and call stack parameter with string containing '\\'
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+    function call($param1, $param2, $param3)
+    {
+        echo $param1, "\n";
+        echo $param2, "\n";
+        echo $param3, "\n";
+
+		var_dump(xdebug_get_function_stack());
+    }
+
+    $test=getcwd();
+	$value = 'candena\\a\nb';
+	echo $value, "\n";
+    call($test, $value, 'caneda \\\a \\\\b \\\\\c|');
+?>
+--EXPECTF--
+candena\a\nb
+%s
+candena\a\nb
+caneda \\a \\b \\\c|
+%sbug00538-002.php:8:
+array(2) {
+  [0] =>
+  array(6) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(6) "{main}"
+    'file' =>
+    string(%d) "%sbug00538-002.php"
+    'line' =>
+    int(0)
+    'params' =>
+    array(0) {
+    }
+  }
+  [1] =>
+  array(6) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(4) "call"
+    'file' =>
+    string(%d) "%sbug00538-002.php"
+    'line' =>
+    int(14)
+    'params' =>
+    array(3) {
+      'param1' =>
+      string(%d) "'%s'"
+      'param2' =>
+      string(16) "'candena\\a\\nb'"
+      'param3' =>
+      string(29) "'caneda \\\\a \\\\b \\\\\\c|'"
+    }
+  }
+}
diff --git a/xdebug-3.4.5/tests/develop/bug00565.phpt b/xdebug-3.4.5/tests/develop/bug00565.phpt
new file mode 100644
index 0000000..52cbb8b
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00565.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Test for bug #565: xdebug.show_local_vars setting does not work with php 5.3
+--INI--
+xdebug.mode=develop
+xdebug.show_local_vars=1
+xdebug.dump.GET=
+xdebug.dump.SERVER=
+--FILE--
+<?php
+function func(){
+	$a="hoge";
+	throw new Exception($a);
+}
+
+func();
+?>
+--EXPECTF--
+Fatal error: Uncaught%sException%sin %sbug00565.php on line 4
+
+Exception:%sin %sbug00565.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug00565.php:0
+%w%f %w%d   2. func() %sbug00565.php:7
+
+
+Variables in local scope (#2):
+  $a = 'hoge'
diff --git a/xdebug-3.4.5/tests/develop/bug00567-noopcache.phpt b/xdebug-3.4.5/tests/develop/bug00567-noopcache.phpt
new file mode 100644
index 0000000..54d9e4c
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00567-noopcache.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Test for bug #567: xdebug_debug_zval() and xdebug_debug_zval_stdout() don't work (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+function func(){
+	$a="hoge";
+	xdebug_debug_zval( 'a' );
+	xdebug_debug_zval_stdout( 'a' );
+}
+
+func();
+?>
+--EXPECTF--
+a: (%s, is_ref=0)='hoge'
+a: (%s, is_ref=0)='hoge'(%d)
diff --git a/xdebug-3.4.5/tests/develop/bug00567-opcache.phpt b/xdebug-3.4.5/tests/develop/bug00567-opcache.phpt
new file mode 100644
index 0000000..b227c32
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00567-opcache.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Test for bug #567: xdebug_debug_zval() and xdebug_debug_zval_stdout() don't work (opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('opcache');
+?>
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+function func(){
+	$a="hoge";
+	xdebug_debug_zval( 'a' );
+	xdebug_debug_zval_stdout( 'a' );
+}
+
+func();
+?>
+--EXPECTF--
+a: no such symbol
+a: no such symbol
diff --git a/xdebug-3.4.5/tests/develop/bug00570.phpt b/xdebug-3.4.5/tests/develop/bug00570.phpt
new file mode 100644
index 0000000..8517063
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00570.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Test for bug #570: undefined symbol: zend_memrchr
+--INI--
+xdebug.mode=develop
+xdebug.dump.GET=
+xdebug.dump.SERVER=
+--FILE--
+<?php
+function foo() {
+	throw new Exception();
+}
+foo();
+?>
+--EXPECTF--
+Fatal error: Uncaught%sException%sin %sbug00570.php on line 3
+
+Exception:  in %sbug00570.php on line 3
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug00570.php:0
+%w%f %w%d   2. foo() %sbug00570.php:5
diff --git a/xdebug-3.4.5/tests/develop/bug00575.phpt b/xdebug-3.4.5/tests/develop/bug00575.phpt
new file mode 100644
index 0000000..757e117
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00575.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test for bug #575: Dump super globals contents to error log
+--INI--
+xdebug.mode=develop
+display_errors=0
+log_errors=1
+error_log=
+xdebug.force_display_errors=0
+xdebug.force_error_reporting=E_ALL
+xdebug.dump.SERVER=*
+--FILE--
+<?php
+ini_set('error_reporting', 0);
+
+trigger_error('six', E_USER_WARNING);
+trigger_error('seven');
+?>
+--EXPECTF--
+PHP Warning:  six in %sbug00575.php on line 4
+PHP Stack trace:
+PHP   1. {main}() %sbug00575.php:0
+PHP   2. trigger_error($message = 'six', $error_level = 512) %sbug00575.php:4
+PHP%S
+PHP Dump $_SERVER%A
+PHP%S
+PHP Notice:  seven in %sbug00575.php on line 5
+PHP Stack trace:
+PHP   1. {main}() %sbug00575.php:0
+PHP   2. trigger_error($message = 'seven') %sbug00575.php:5
+PHP%S
+PHP Dump $_SERVER%A
+PHP%S
diff --git a/xdebug-3.4.5/tests/develop/bug00609.phpt b/xdebug-3.4.5/tests/develop/bug00609.phpt
new file mode 100644
index 0000000..52af588
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00609.phpt
@@ -0,0 +1,19 @@
+--TEST--
+Test for bug #609: Xdebug and SOAP error handler conflicts
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext SOAP');
+?>
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+try {
+	  $sc = new SoapClient("some-wrong.wsdl", array('exceptions' => true));
+} catch (Exception $e) {
+	  echo 'Error Caught';
+}
+?>
+--EXPECTF--
+Error Caught
diff --git a/xdebug-3.4.5/tests/develop/bug00625-001.phpt b/xdebug-3.4.5/tests/develop/bug00625-001.phpt
new file mode 100644
index 0000000..7190540
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00625-001.phpt
@@ -0,0 +1,19 @@
+--TEST--
+Test for bug #625: xdebug_get_headers() resets header list (1)
+--ENV--
+XDEBUG_CONFIG=
+--INI--
+xdebug.mode=develop
+xdebug.filename_format=
+--FILE--
+<?php
+header( 'Location: bar');
+header( 'HTTP/1.0 404 Not Found' );
+var_dump( xdebug_get_headers( ) );
+?>
+--EXPECTF--
+%sbug00625-001.php:4:
+array(1) {
+  [0] =>
+  string(13) "Location: bar"
+}
diff --git a/xdebug-3.4.5/tests/develop/bug00625-002.phpt b/xdebug-3.4.5/tests/develop/bug00625-002.phpt
new file mode 100644
index 0000000..0e7d5d4
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00625-002.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Test for bug #625: xdebug_get_headers() resets header list (2)
+--ENV--
+XDEBUG_CONFIG=
+--INI--
+xdebug.mode=develop
+default_charset=utf-8
+xdebug.filename_format=
+--FILE--
+<?php
+header('Content-type: text/plain');
+var_dump( xdebug_get_headers( ) );
+var_dump( xdebug_get_headers( ) );
+?>
+--EXPECTF--
+%sbug00625-002.php:3:
+array(1) {
+  [0] =>
+  string(38) "Content-type: text/plain;charset=utf-8"
+}
+%sbug00625-002.php:4:
+array(1) {
+  [0] =>
+  string(38) "Content-type: text/plain;charset=utf-8"
+}
diff --git a/xdebug-3.4.5/tests/develop/bug00635.phpt b/xdebug-3.4.5/tests/develop/bug00635.phpt
new file mode 100644
index 0000000..3fd9d1d
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00635.phpt
@@ -0,0 +1,44 @@
+--TEST--
+Test for bug #635: Browser output broken with xdebug.show_exception_trace = 1
+--INI--
+html_errors=1
+xdebug.show_exception_trace=1
+xdebug.mode=develop
+xdebug.file_link_format=
+xdebug.filename_format=
+xdebug.dump.SERVER=
+xdebug.show_local_vars=0
+--FILE--
+<?php
+
+try {
+    throw new Exception('Caught exception');
+} catch (Exception $e) {
+    
+}
+
+throw new Exception('Uncaught exception');
+?>
+--EXPECTF--
+<br />
+<font size='1'><table class='xdebug-error xe-exception' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Exception: Caught exception in %sbug00635.php on line <i>4</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug00635.php' bgcolor='#eeeeec'>...%sbug00635.php<b>:</b>0</td></tr>
+</table></font>
+<br />
+<font size='1'><table class='xdebug-error xe-exception' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Exception: Uncaught exception in %sbug00635.php on line <i>9</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug00635.php' bgcolor='#eeeeec'>...%sbug00635.php<b>:</b>0</td></tr>
+</table></font>
+<br />
+<font size='1'><table class='xdebug-error xe-uncaught-exception' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Fatal error: Uncaught%sException%sUncaught exception%sin %sbug00635.php on line <i>9</i></th></tr>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Exception: Uncaught exception in %sbug00635.php on line <i>9</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug00635.php' bgcolor='#eeeeec'>...%sbug00635.php<b>:</b>0</td></tr>
+</table></font>
diff --git a/xdebug-3.4.5/tests/develop/bug00654.phpt b/xdebug-3.4.5/tests/develop/bug00654.phpt
new file mode 100644
index 0000000..37a2dce
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00654.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Test for bug #654: Xdebug hides error message in CLI
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext session');
+?>
+--INI--
+error_reporting=-1
+xdebug.mode=develop
+xdebug.dump.SERVER=
+--FILE--
+<?php
+echo "FOO\n";
+session_start();
+?>
+--EXPECTF--
+FOO
+
+Warning: session_start(): %sheaders%ssent in %sbug00654.php on line 3
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug00654.php:0
+%w%f %w%d   2. session_start() %sbug00654.php:3
diff --git a/xdebug-3.4.5/tests/develop/bug00684.phpt b/xdebug-3.4.5/tests/develop/bug00684.phpt
new file mode 100644
index 0000000..519bd8a
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00684.phpt
@@ -0,0 +1,15 @@
+--TEST--
+Test for bug #684: xdebug_var_dump - IE does not support &amp;
+--INI--
+html_errors=1
+xdebug.mode=develop
+xdebug.file_link_format=
+xdebug.filename_format=
+--FILE--
+<?php
+xdebug_var_dump('Testing isn\'t fun');
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug00684.php:2:</small><small>string</small> <font color='#cc0000'>'Testing isn&#39;t fun'</font> <i>(length=17)</i>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/bug00709.phpt b/xdebug-3.4.5/tests/develop/bug00709.phpt
new file mode 100644
index 0000000..9ac307e
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00709.phpt
@@ -0,0 +1,15 @@
+--TEST--
+Test for bug #709: Xdebug doesn't understand E_USER_DEPRECATED
+--INI--
+xdebug.mode=develop
+xdebug.trace_format=0
+--FILE--
+<?php
+trigger_error('ZOMG', E_USER_DEPRECATED);
+?>
+--EXPECTF--
+Deprecated: ZOMG in %sbug00709.php on line 2
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug00709.php:0
+%w%f %w%d   2. trigger_error($message = 'ZOMG', $error_%s = 16384) %sbug00709.php:2
diff --git a/xdebug-3.4.5/tests/develop/bug00744.phpt b/xdebug-3.4.5/tests/develop/bug00744.phpt
new file mode 100644
index 0000000..5439201
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00744.phpt
@@ -0,0 +1,18 @@
+--TEST--
+Test for bug #744: new lines in a PHP file from Windows are displayed with an extra white line with var_dump().
+--INI--
+html_errors=1
+xdebug.mode=develop
+xdebug.file_link_format=
+xdebug.filename_format=
+--FILE--
+<?php
+$my_test_string = 'hello
+                    world';
+                    
+var_dump($my_test_string);
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug00744.php:5:</small><small>string</small> <font color='#cc0000'>'hello&#13;&#10;                    world'</font> <i>(length=32)</i>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/bug00747.phpt b/xdebug-3.4.5/tests/develop/bug00747.phpt
new file mode 100644
index 0000000..a858ee7
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00747.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Test for bug #747: Xdebug and SOAP Server conflict
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext soap');
+?>
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+try {
+	  $sc = new SoapServer("some-wrong.wsdl", array('exceptions' => true));
+} catch (Exception $e) {
+	  echo 'Error Caught';
+}
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>WSDL</faultcode><faultstring>SOAP-ERROR: Parsing WSDL: Couldn't load from 'some-wrong.wsdl' : failed to load external entity "some-wrong.wsdl"
+</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/xdebug-3.4.5/tests/develop/bug00800.phpt b/xdebug-3.4.5/tests/develop/bug00800.phpt
new file mode 100644
index 0000000..c55857e
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00800.phpt
@@ -0,0 +1,16 @@
+--TEST--
+Test for bug #800: var_dump(get_class(new foo\bar')) add an extra "\" in class name.
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+
+namespace foo;
+
+class bar {}
+
+var_dump(get_class(new bar));
+?>
+--EXPECTF--
+%sbug00800.php:7:
+string(7) "foo\bar"
diff --git a/xdebug-3.4.5/tests/develop/bug00811.phpt b/xdebug-3.4.5/tests/develop/bug00811.phpt
new file mode 100644
index 0000000..9ea475d
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00811.phpt
@@ -0,0 +1,52 @@
+--TEST--
+Test for bug #811: PHP Documentation Link (PHP < 8)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8');
+?>
+--INI--
+docref_root=http://www.php.net/
+docref_ext=.php
+html_errors=1
+xdebug.mode=develop
+xdebug.file_link_format=
+xdebug.filename_format=
+xdebug.show_error_trace=0
+--FILE--
+<?php
+// normal function
+date_create("hocuspocus", "fasdfasdf", "afsdfasdf");
+
+// static method
+DateTime::createFromFormat("fasdfdsaf", "fasdf", NULL, "fasdf");
+
+// ctor
+new ArrayObject("fasdfdsaf", "fasdf", "fasdf");
+?>
+--EXPECTF--
+<br />
+<font size='1'><table class='xdebug-error xe-warning' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Warning: date_create() expects at most 2 parameters, 3 given in %sbug00811.php on line <i>3</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug00811.php' bgcolor='#eeeeec'>...%sbug00811.php<b>:</b>0</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.date-create.php' target='_new'>date_create</a>(%s)</td><td title='%sbug00811.php' bgcolor='#eeeeec'>...%sbug00811.php<b>:</b>3</td></tr>
+</table></font>
+<br />
+<font size='1'><table class='xdebug-error xe-warning' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Warning: DateTime::createFromFormat() expects at most 3 parameters, 4 given in %sbug00811.php on line <i>6</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug00811.php' bgcolor='#eeeeec'>...%sbug00811.php<b>:</b>0</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'><a href='http://www.php.net/DateTime.createFromFormat.php' target='_new'>createFromFormat</a>(%s)</td><td title='%sbug00811.php' bgcolor='#eeeeec'>...%sbug00811.php<b>:</b>6</td></tr>
+</table></font>
+<br />
+<font size='1'><table class='xdebug-error xe-uncaught-exception' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Fatal error: Uncaught%sin %sbug00811.php on line <i>9</i></th></tr>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> %s: ArrayObject::__construct() expects parameter 2 to be %r(long|integer|int)%r, string given in %sbug00811.php on line <i>9</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug00811.php' bgcolor='#eeeeec'>...%sbug00811.php<b>:</b>0</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'><a href='http://www.php.net/ArrayObject.construct.php' target='_new'>__construct</a>(%s)</td><td title='%sbug00811.php' bgcolor='#eeeeec'>...%sbug00811.php<b>:</b>9</td></tr>
+</table></font>
diff --git a/xdebug-3.4.5/tests/develop/bug00885.phpt b/xdebug-3.4.5/tests/develop/bug00885.phpt
new file mode 100644
index 0000000..89267c1
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00885.phpt
@@ -0,0 +1,15 @@
+--TEST--
+Test for bug #885: missing validation point returned by strchr in xdebug_error_cb
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+throw new Exception("long message ".str_repeat('.', 10240));
+?>
+--EXPECTF--
+Fatal error: Uncaught%sException%slong message %s in %sbug00885.php on line 2
+
+Exception: long message %s in %sbug00885.php on line 2
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug00885.php:0
diff --git a/xdebug-3.4.5/tests/develop/bug00898.phpt b/xdebug-3.4.5/tests/develop/bug00898.phpt
new file mode 100644
index 0000000..f20175c
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00898.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Test for bug #898: Wrong works with empty string key in ArrayObject
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+$example = new ArrayObject;
+$example[""] = 'value';
+
+var_dump($example);
+?>
+--EXPECTF--
+%sbug00898.php:5:
+class ArrayObject#%d (1) {
+  private $storage =>
+  array(1) {
+    '' =>
+    string(5) "value"
+  }
+}
diff --git a/xdebug-3.4.5/tests/develop/bug00903.phpt b/xdebug-3.4.5/tests/develop/bug00903.phpt
new file mode 100644
index 0000000..0512581
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00903.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Test for bug #903: xdebug_get_headers() returns replaced headers
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+header('foo: bar');
+header('foo: baz');
+
+setcookie('test1', 'one');
+setcookie('test2', 'two');
+
+header('whoop: baz');
+
+header('Set-Cookie: remove');
+
+var_dump(xdebug_get_headers());
+?>
+--EXPECTF--
+%sbug00903.php:12:
+array(3) {
+  [0] =>
+  string(8) "foo: baz"
+  [1] =>
+  string(10) "whoop: baz"
+  [2] =>
+  string(18) "Set-Cookie: remove"
+}
diff --git a/xdebug-3.4.5/tests/develop/bug00947-001.phpt b/xdebug-3.4.5/tests/develop/bug00947-001.phpt
new file mode 100644
index 0000000..c6dc3bb
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00947-001.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Test for bug #947: Newlines converted when html_errors = 0 (ansi)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!win');
+?>
+--INI--
+html_errors=0
+xdebug.mode=develop
+xdebug.cli_color=2
+--FILE--
+<?php
+$t = "\0" . 'aze
+rty\r\nqwerty';
+var_dump($t, 4.34);
+?>
+--EXPECTF--
+[1m%sbug00947-001.php[22m:[1m4[22m:
+[1mstring[22m([32m18[0m) "[31m\000aze\nrty\\r\\nqwerty[0m"
+[1m%sbug00947-001.php[22m:[1m4[22m:
+[1mdouble[22m([33m4.34[0m)
diff --git a/xdebug-3.4.5/tests/develop/bug00947-002.phpt b/xdebug-3.4.5/tests/develop/bug00947-002.phpt
new file mode 100644
index 0000000..4b61ad0
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00947-002.phpt
@@ -0,0 +1,18 @@
+--TEST--
+Test for bug #947: Newlines converted when html_errors = 0 (plain)
+--INI--
+html_errors=0
+xdebug.mode=develop
+xdebug.cli_color=0
+--FILE--
+<?php
+$t = "\0" . 'aze
+rty\r\nqwerty';
+var_dump($t, 4.34);
+?>
+--EXPECTF--
+%sbug00947-002.php:4:
+string(%r(18|19)%r) "\000aze
+rty\r\nqwerty"
+%sbug00947-002.php:4:
+double(4.34)
diff --git a/xdebug-3.4.5/tests/develop/bug00987-001.phpt b/xdebug-3.4.5/tests/develop/bug00987-001.phpt
new file mode 100644
index 0000000..da1d0fa
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00987-001.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Test for bug #987: Hidden property names not shown with var_dump (CLI)
+--INI--
+html_errors=0
+xdebug.mode=develop
+xdebug.cli_color=0
+xdebug.filename_format=
+--FILE--
+<?php
+$object = (object) array('key' => 'value', 1 => 0, -4 => "foo", (int) 3.14 => false);
+
+var_dump($object);
+?>
+--EXPECTF--
+%sbug00987-001.php:4:
+class stdClass#%d (4) {
+  public $key =>
+  string(5) "value"
+  public $1 =>
+  int(0)
+  public $-4 =>
+  string(3) "foo"
+  public $3 =>
+  bool(false)
+}
diff --git a/xdebug-3.4.5/tests/develop/bug00987-002.phpt b/xdebug-3.4.5/tests/develop/bug00987-002.phpt
new file mode 100644
index 0000000..24489d6
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00987-002.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Test for bug #987: Hidden property names not shown with var_dump (HTML)
+--INI--
+html_errors=1
+xdebug.mode=develop
+xdebug.cli_color=0
+xdebug.file_link_format=
+xdebug.filename_format=
+--FILE--
+<?php
+$object = (object) array('key' => 'value', 1 => 0, -4 => "foo", (int) 3.14 => false);
+
+var_dump($object);
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug00987-002.php:4:</small>
+<b>object</b>(<i>stdClass</i>)[<i>%d</i>]
+  <i>public</i> 'key' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'value'</font> <i>(length=5)</i>
+  <i>public</i> '1' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>0</font>
+  <i>public</i> '-4' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'foo'</font> <i>(length=3)</i>
+  <i>public</i> '3' <font color='#888a85'>=&gt;</font> <small>boolean</small> <font color='#75507b'>false</font>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/bug00987-003.phpt b/xdebug-3.4.5/tests/develop/bug00987-003.phpt
new file mode 100644
index 0000000..303b620
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00987-003.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Test for bug #987: Hidden property names not shown with var_dump (CLI colours)
+--INI--
+html_errors=0
+xdebug.mode=develop
+xdebug.cli_color=2
+--FILE--
+<?php
+$object = (object) array('key' => 'value', 1 => 0, -4 => "foo", (int) 3.14 => false);
+
+var_dump($object);
+?>
+--EXPECTF--
+[1m%sbug00987-003.php[22m:[1m4[22m:
+[1mclass[22m [31mstdClass[0m#%d ([32m4[0m) {
+  [32m[1mpublic[22m[0m $key [0m=>[0m
+  [1mstring[22m([32m5[0m) "[31mvalue[0m"
+  [32m[1mpublic[22m[0m $1 [0m=>[0m
+  [1mint[22m([32m0[0m)
+  [32m[1mpublic[22m[0m $-4 [0m=>[0m
+  [1mstring[22m([32m3[0m) "[31mfoo[0m"
+  [32m[1mpublic[22m[0m $3 [0m=>[0m
+  [1mbool[22m([35mfalse[0m)
+}
diff --git a/xdebug-3.4.5/tests/develop/bug00987-006.phpt b/xdebug-3.4.5/tests/develop/bug00987-006.phpt
new file mode 100644
index 0000000..cb668c4
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug00987-006.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Test for bug #987: Hidden property names not shown with var_dump
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext simplexml');
+?>
+--INI--
+html_errors=0
+xdebug.mode=develop
+xdebug.cli_color=0
+error_reporting=-1
+xdebug.show_local_vars=0
+--FILE--
+<?php
+$xml = '<?xml version="1.0" encoding="UTF-8" ?>
+<root>
+Xdebug rocks
+</root>';
+$temp = simplexml_load_string($xml, "SimpleXMLElement", LIBXML_NOERROR);
+var_dump($temp);
+?>
+--EXPECTF--
+%sbug00987-006.php:7:
+class SimpleXMLElement#%d (1) {
+  public ${0} =>
+  string(14) "
+Xdebug rocks
+"
+}
diff --git a/xdebug-3.4.5/tests/develop/bug01004-001.phpt b/xdebug-3.4.5/tests/develop/bug01004-001.phpt
new file mode 100644
index 0000000..05bcd1c
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01004-001.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Test for xdebug.halt_level [1]
+--INI--
+error_level=-1
+xdebug.halt_level=0
+xdebug.mode=develop
+--FILE--
+<?php
+ini_set('xdebug.halt_level', 0);
+hex2bin("5");
+echo "Hi!\n";
+
+ini_set('xdebug.halt_level', E_WARNING);
+hex2bin("5");
+echo "Hi!\n";
+
+?>
+--EXPECTF--
+Warning: %s in %sbug01004-001.php on line 3
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug01004-001.php:0
+%w%f %w%d   2. hex2bin($%s = '5') %sbug01004-001.php:3
+
+Hi!
+
+Warning: %s in %sbug01004-001.php on line 7
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug01004-001.php:0
+%w%f %w%d   2. hex2bin($%s = '5') %sbug01004-001.php:7
diff --git a/xdebug-3.4.5/tests/develop/bug01004-002.phpt b/xdebug-3.4.5/tests/develop/bug01004-002.phpt
new file mode 100644
index 0000000..076f664
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01004-002.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Test for xdebug.halt_level [2]
+--INI--
+error_level=-1
+xdebug.halt_level=0
+xdebug.mode=develop
+--FILE--
+<?php
+ini_set('xdebug.halt_level', E_NOTICE);
+trigger_error("Testing");
+echo "Hi!\n";
+
+ini_set('xdebug.halt_level', E_USER_NOTICE | E_NOTICE);
+trigger_error("Testing");
+echo "Hi!\n";
+
+?>
+--EXPECTF--
+Notice: Testing in %sbug01004-002.php on line 3
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug01004-002.php:0
+%w%f %w%d   2. trigger_error($message = 'Testing') %sbug01004-002.php:3
+
+Hi!
+
+Notice: Testing in %sbug01004-002.php on line 7
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug01004-002.php:0
+%w%f %w%d   2. trigger_error($message = 'Testing') %sbug01004-002.php:7
diff --git a/xdebug-3.4.5/tests/develop/bug01106.phpt b/xdebug-3.4.5/tests/develop/bug01106.phpt
new file mode 100644
index 0000000..8953f83
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01106.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Test for bug #1106: A thrown Exception after a class with __debugInfo gives 2 errors
+--INI--
+xdebug.mode=develop
+xdebug.show_local_vars=1
+--FILE--
+<?php
+
+class A
+{
+    public function __debugInfo() { return array();}
+}
+
+$c = new A();
+try{
+    throw new \Exception("neee");
+}
+catch (\Exception $e) {
+    die("all fine");
+}
+?>
+--EXPECT--
+all fine
diff --git a/xdebug-3.4.5/tests/develop/bug01130.phpt b/xdebug-3.4.5/tests/develop/bug01130.phpt
new file mode 100644
index 0000000..b8f43e1
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01130.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Test for bug #1130: PHP documentation links to local manual reference are broken at title description
+--INI--
+docref_root=http://www.php.net/
+docref_ext=.php
+html_errors=1
+xdebug.mode=develop
+xdebug.file_link_format=
+xdebug.filename_format=
+--FILE--
+<?php
+html_entity_decode("&amp;", 0, "l<r");
+?>
+--EXPECTF--
+<br />
+<font size='1'><table class='xdebug-error xe-warning' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Warning: html_entity_decode() [<a href='http://www.php.net/function.html-entity-decode.php'>function.html-entity-decode.php</a>: %sharset %sl&amp;lt;r%s not supported, assuming %s8 in %sbug01130.php on line <i>2</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug01130.php' bgcolor='#eeeeec'>...%sbug01130.php<b>:</b>0</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.html-entity-decode.php' target='_new'>html_entity_decode</a>( <span>$string = </span><span>&#39;&amp;amp;&#39;</span>, <span>$%s = </span><span>0</span>, <span>$encoding = </span><span>&#39;l&lt;r&#39;</span> )</td><td title='%sbug01130.php' bgcolor='#eeeeec'>...%sbug01130.php<b>:</b>2</td></tr>
+</table></font>
diff --git a/xdebug-3.4.5/tests/develop/bug01166.phpt b/xdebug-3.4.5/tests/develop/bug01166.phpt
new file mode 100644
index 0000000..d09b954
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01166.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #1166: Using $this in __debugInfo() causes infinite recursion
+--INI--
+xdebug.mode=develop
+xdebug.trace_format=0
+xdebug.dump_globals=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.force_error_reporting=0
+--FILE--
+<?php
+class Foo extends IteratorIterator
+{
+	function __construct( $items )
+	{
+		if ( is_array( $items ) )
+		{
+			$items = new ArrayIterator( $items );
+		}
+	}
+	
+	function __debugInfo()
+	{
+		return [ "count" => iterator_count( $this ) ];
+	}
+}
+
+$a = new Foo( [ 1,2,3 ] );
+var_dump( $a );
+?>
+--EXPECTF--
+Warning: Uncaught%sThe object is in an invalid state as the parent constructor was not called%sin %sbug01166.php:14
+Stack trace:
+#0 [internal function]: IteratorIterator->rewind()
+#1 %sbug01166.php(%d): iterator_count(%S)
+#2 [internal function]: Foo->__debugInfo()
+#3 %sbug01166.php(%d): var_dump(%S)
+#4 {main}
+  thrown in %sbug01166.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug01166.php:0
+%w%f %w%d   2. var_dump(%s) %sbug01166.php:%d
+
+
+Fatal error: __debuginfo() must return an array in %sbug01166.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug01166.php:0
+%w%f %w%d   2. var_dump(%s) %sbug01166.php:%d
diff --git a/xdebug-3.4.5/tests/develop/bug01174.phpt b/xdebug-3.4.5/tests/develop/bug01174.phpt
new file mode 100644
index 0000000..581205d
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01174.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Test for bug #1174: SIGFPE in xdebug_get_monitored_functions()
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+xdebug_start_function_monitor([]);
+$functions = xdebug_get_monitored_functions();
+?>
+==DONE==
+--EXPECT--
+==DONE==
diff --git a/xdebug-3.4.5/tests/develop/bug01194.phpt b/xdebug-3.4.5/tests/develop/bug01194.phpt
new file mode 100644
index 0000000..fa35e26
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01194.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Test for bug #1194: The error message is doubly HTML-encoded with assert()
+--INI--
+assert.exception=0
+error_reporting=E_ALL & ~E_DEPRECATED
+html_errors=1
+xdebug.mode=develop
+xdebug.file_link_format=
+xdebug.filename_format=
+--FILE--
+<?php
+assert(0, "TEST&TEST");
+?>
+--EXPECTF--
+<br />
+<font size='1'><table class='xdebug-error xe-warning' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Warning: assert(): TEST&amp;TEST failed in %sbug01194.php on line <i>2</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug01194.php' bgcolor='#eeeeec'>...%sbug01194.php<b>:</b>0</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.assert.html' target='_new'>assert</a>( <span>$assertion = </span><span>%r(0|FALSE)%r</span>, <span>$description = </span><span>&#39;TEST&amp;TEST&#39;</span> )</td><td title='%sbug01194.php' bgcolor='#eeeeec'>...%sbug01194.php<b>:</b>2</td></tr>
+</table></font>
diff --git a/xdebug-3.4.5/tests/develop/bug01218-001.phpt b/xdebug-3.4.5/tests/develop/bug01218-001.phpt
new file mode 100644
index 0000000..b97b5a2
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01218-001.phpt
@@ -0,0 +1,19 @@
+--TEST--
+Test for bug #1218: Xdebug messes with the exception code, by casting it to int
+--INI--
+xdebug.mode=develop
+xdebug.show_exception_trace=1
+xdebug.show_local_vars=0
+--FILE--
+<?php
+include dirname(__FILE__) . '/bug01218.inc';
+?>
+--EXPECTF--
+StringCodeException: test in %sbug01218.inc on line 12
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug01218-001.php:0
+%w%f %w%d   2. include('%sbug01218.inc') %sbug01218-001.php:2
+
+%sbug01218.inc:17:
+string(10) "SomeString"
diff --git a/xdebug-3.4.5/tests/develop/bug01218.inc b/xdebug-3.4.5/tests/develop/bug01218.inc
new file mode 100644
index 0000000..b89c2f8
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01218.inc
@@ -0,0 +1,19 @@
+<?php
+
+class StringCodeException extends Exception
+{
+    public function __construct()
+    {
+        $this->code = 'SomeString';
+		$this->message = 'test';
+    }
+}
+
+$e = new StringCodeException;
+
+try {
+    throw $e;
+} catch (StringCodeException $e) {
+    var_dump($e->getCode());
+}
+?>
diff --git a/xdebug-3.4.5/tests/develop/bug01245.phpt b/xdebug-3.4.5/tests/develop/bug01245.phpt
new file mode 100644
index 0000000..9d186bd
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01245.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Test for bug #1245: xdebug_dump_superglobals dumps *uninitialized* with PHP 7
+--INI--
+xdebug.mode=develop
+html_errors=0
+xdebug.dump.GET=*
+xdebug.dump.POST=*
+--GET--
+getFoo=bar
+--POST--
+postBar=baz
+--FILE--
+<?php
+trigger_error("TEST");
+?>
+--EXPECTF--
+Notice: TEST in %sbug01245.php on line 2
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug01245.php:0
+%w%f %w%d   2. trigger_error($message = 'TEST') %sbug01245.php:2
+
+Dump $_GET
+   $_GET['getFoo'] = 'bar'
+Dump $_POST
+   $_POST['postBar'] = 'baz'
diff --git a/xdebug-3.4.5/tests/develop/bug01247-opcache.phpt b/xdebug-3.4.5/tests/develop/bug01247-opcache.phpt
new file mode 100644
index 0000000..202d220
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01247-opcache.phpt
@@ -0,0 +1,55 @@
+--TEST--
+Test for bug #1247: xdebug.show_local_vars dumps variables with *uninitialized* values (opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('opcache');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=0
+xdebug.dump.GET=
+xdebug.dump.POST=
+xdebug.show_local_vars=1
+--GET--
+getFoo=bar
+--POST--
+postBar=baz
+--FILE--
+<?php
+function test()
+{
+	$a = 42;
+	hex2bin('4');
+	$b = 4;
+
+	return $a + $b;
+}
+
+function testDirect()
+{
+	$c = 56;
+	trigger_error('test');
+	$d = 11;
+
+	return $c + $d;
+}
+
+test();
+testDirect();
+?>
+--EXPECTF--
+Warning: hex2bin(): %s in %sbug01247-opcache.php on line 5
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug01247-opcache.php:0
+%w%f %w%d   2. test() %sbug01247-opcache.php:20
+%w%f %w%d   3. hex2bin($%s = '4') %sbug01247-opcache.php:5
+
+
+Notice: test in %sbug01247-opcache.php on line 14
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug01247-opcache.php:0
+%w%f %w%d   2. testDirect() %sbug01247-opcache.php:21
+%w%f %w%d   3. trigger_error($message = 'test') %sbug01247-opcache.php:14
diff --git a/xdebug-3.4.5/tests/develop/bug01262.phpt b/xdebug-3.4.5/tests/develop/bug01262.phpt
new file mode 100644
index 0000000..a8d5670
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01262.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Test for bug #1262: overload_var_dump=0 messes with xdebug_var_dump()
+--INI--
+xdebug.mode=off
+html_errors=1
+xdebug.file_link_format=
+--FILE--
+<?php
+xdebug_var_dump("Anything");
+echo "\n";
+var_dump("Anything");
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01262.php:2:</small><small>string</small> <font color='#cc0000'>'Anything'</font> <i>(length=8)</i>
+</pre>
+string(8) "Anything"
diff --git a/xdebug-3.4.5/tests/develop/bug01282-32bit.phpt b/xdebug-3.4.5/tests/develop/bug01282-32bit.phpt
new file mode 100644
index 0000000..191fc65
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01282-32bit.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Test for bug #1282: var_dump() of integers > 32 bit is broken on Windows
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('32bit');
+?>
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+ini_set( 'html_errors', 0 );
+var_dump(PHP_INT_MAX);
+
+ini_set( 'html_errors', 1 );
+var_dump(PHP_INT_MAX);
+?>
+--EXPECTF--
+%sbug01282-32bit.php:3:
+int(2147483647)
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01282-32bit.php:6:</small><small>int</small> <font color='#4e9a06'>2147483647</font>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/bug01282-64bit.phpt b/xdebug-3.4.5/tests/develop/bug01282-64bit.phpt
new file mode 100644
index 0000000..ead0444
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01282-64bit.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Test for bug #1282: var_dump() of integers > 32 bit is broken on Windows
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('64bit');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.file_link_format=
+--FILE--
+<?php
+ini_set( 'html_errors', 0 );
+var_dump(PHP_INT_MAX);
+
+ini_set( 'html_errors', 1 );
+var_dump(PHP_INT_MAX);
+?>
+--EXPECTF--
+%sbug01282-64bit.php:3:
+int(9223372036854775807)
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01282-64bit.php:6:</small><small>int</small> <font color='#4e9a06'>9223372036854775807</font>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/bug01288.phpt b/xdebug-3.4.5/tests/develop/bug01288.phpt
new file mode 100644
index 0000000..89edc04
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01288.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Test for bug #1288: Segfault when uncaught exception message does not contain " in "
+--INI--
+xdebug.mode=develop
+html_errors=0
+--FILE--
+<?php
+
+class React_Exception extends Exception
+{
+    public function __toString()
+    {
+        return "Custom message";
+        return "Custom message in random"; // this does not segfault because of ' in '.
+    }
+}
+
+set_error_handler(function(){ throw new React_Exception('waa');});
+
+
+$_SERVER['SERVER_PROTOCOL'];
+?>
+--EXPECTF--
+Fatal error: Uncaught Custom message
+  thrown in %sbug01288.php on line 12
+
+React_Exception: waa in %sbug01288.php on line 12
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug01288.php:0
+%w%f %w%d   2. {closure:%sbug01288.php:12-12}(%d, 'Undefined %SSERVER_PROTOCOL%S', '%sbug01288.php', %s) %sbug01288.php:15
diff --git a/xdebug-3.4.5/tests/develop/bug01323-001.phpt b/xdebug-3.4.5/tests/develop/bug01323-001.phpt
new file mode 100644
index 0000000..5ade996
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01323-001.phpt
@@ -0,0 +1,73 @@
+--TEST--
+Test for bug #1323: Add config option to enable full paths in trace output
+--INI--
+html_errors=1
+xdebug.mode=develop
+xdebug.file_link_format=
+--FILE--
+<?php
+$formats = [
+	'...%s%n',
+	'%n',
+	'%p',
+	'%a',
+	'%f',
+	'',
+];
+
+
+foreach ( $formats as $format )
+{
+	ini_set( 'xdebug.filename_format', $format );
+	echo $i, "\n";
+}
+
+?>
+--EXPECTF--
+<br />
+<font size='1'><table class='xdebug-error xe-%s' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> %s: Undefined variable%si in %sbug01323-001.php on line <i>15</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug01323-001.php' bgcolor='#eeeeec'>...%ebug01323-001.php<b>:</b>0</td></tr>
+</table></font>
+
+<br />
+<font size='1'><table class='xdebug-error xe-%s' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> %s: Undefined variable%si in %sbug01323-001.php on line <i>15</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug01323-001.php' bgcolor='#eeeeec'>bug01323-001.php<b>:</b>0</td></tr>
+</table></font>
+
+<br />
+<font size='1'><table class='xdebug-error xe-%s' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> %s: Undefined variable%si in %sbug01323-001.php on line <i>15</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug01323-001.php' bgcolor='#eeeeec'>develop%ebug01323-001.php<b>:</b>0</td></tr>
+</table></font>
+
+<br />
+<font size='1'><table class='xdebug-error xe-%s' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> %s: Undefined variable%si in %sbug01323-001.php on line <i>15</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug01323-001.php' bgcolor='#eeeeec'>tests%edevelop%ebug01323-001.php<b>:</b>0</td></tr>
+</table></font>
+
+<br />
+<font size='1'><table class='xdebug-error xe-%s' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> %s: Undefined variable%si in %sbug01323-001.php on line <i>15</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug01323-001.php' bgcolor='#eeeeec'>%r(\/|\w:)%r%s%etests%edevelop%ebug01323-001.php<b>:</b>0</td></tr>
+</table></font>
+
+<br />
+<font size='1'><table class='xdebug-error xe-%s' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> %s: Undefined variable%si in %sbug01323-001.php on line <i>15</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug01323-001.php' bgcolor='#eeeeec'>...%ebug01323-001.php<b>:</b>0</td></tr>
+</table></font>
diff --git a/xdebug-3.4.5/tests/develop/bug01343-32bit.phpt b/xdebug-3.4.5/tests/develop/bug01343-32bit.phpt
new file mode 100644
index 0000000..74f801b
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01343-32bit.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Test for bug #1343: Wrong values of numerical keys outside 32bit range
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('32bit');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=0
+xdebug.filename_format=
+--FILE--
+<?php
+$ar = array();
+$id = (int)730022509303030;
+$ar[$id] = "test";
+var_dump($id, $ar);
+?>
+--EXPECTF--
+%sbug01343-32bit.php:5:
+int(-1671932682)
+%sbug01343-32bit.php:5:
+array(1) {
+  [-1671932682] =>
+  string(4) "test"
+}
diff --git a/xdebug-3.4.5/tests/develop/bug01343-64bit.phpt b/xdebug-3.4.5/tests/develop/bug01343-64bit.phpt
new file mode 100644
index 0000000..57dd9ca
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01343-64bit.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Test for bug #1343: Wrong values of numerical keys outside 32bit range
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('64bit');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=0
+xdebug.filename_format=
+--FILE--
+<?php
+$ar = array();
+$id = (int)730022509303030;
+$ar[$id] = "test";
+var_dump($id, $ar);
+?>
+--EXPECTF--
+%sbug01343-64bit.php:5:
+int(730022509303030)
+%sbug01343-64bit.php:5:
+array(1) {
+  [730022509303030] =>
+  string(4) "test"
+}
diff --git a/xdebug-3.4.5/tests/develop/bug01501-001-32bit.phpt b/xdebug-3.4.5/tests/develop/bug01501-001-32bit.phpt
new file mode 100644
index 0000000..ca561b3
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01501-001-32bit.phpt
@@ -0,0 +1,39 @@
+--TEST--
+Test for bug #1501: Xdebug var dump tries casting properties (text)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('32bit');
+?>
+--INI--
+html_errors=0
+xdebug.cli_color=0
+xdebug.mode=develop
+--FILE--
+<?php
+
+class h extends stdClass {
+    public $data = array();
+    
+    function __set($name, $val) {
+        $this->data[$name] = $val;
+    }
+    
+    function __debugInfo() {
+        return $this->data;
+    }
+}
+
+$cl = new h();
+
+$id = "373556941768884244";
+$cl->$id = 'hallo';
+
+var_dump($cl);
+?>
+--EXPECTF--
+%sbug01501-001-32bit.php:20:
+class h#%d (%d) {
+  public $373556941768884244 =>
+  string(5) "hallo"
+}
diff --git a/xdebug-3.4.5/tests/develop/bug01501-001-64bit.phpt b/xdebug-3.4.5/tests/develop/bug01501-001-64bit.phpt
new file mode 100644
index 0000000..c693894
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01501-001-64bit.phpt
@@ -0,0 +1,39 @@
+--TEST--
+Test for bug #1501: Xdebug var dump tries casting properties (text)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('64bit');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=0
+xdebug.cli_color=0
+--FILE--
+<?php
+
+class h extends stdClass {
+    public $data = array();
+    
+    function __set($name, $val) {
+        $this->data[$name] = $val;
+    }
+    
+    function __debugInfo() {
+        return $this->data;
+    }
+}
+
+$cl = new h();
+
+$id = "373556941768884244";
+$cl->$id = 'hallo';
+
+var_dump($cl);
+?>
+--EXPECTF--
+%sbug01501-001-64bit.php:20:
+class h#%d (%d) {
+  public ${373556941768884244} =>
+  string(5) "hallo"
+}
diff --git a/xdebug-3.4.5/tests/develop/bug01501-002-32bit.phpt b/xdebug-3.4.5/tests/develop/bug01501-002-32bit.phpt
new file mode 100644
index 0000000..7fb245a
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01501-002-32bit.phpt
@@ -0,0 +1,39 @@
+--TEST--
+Test for bug #1501: Xdebug var dump tries casting properties (HTML)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('32bit');
+?>
+--INI--
+html_errors=1
+xdebug.cli_color=0
+xdebug.mode=develop
+--FILE--
+<?php
+
+class h extends stdClass {
+    public $data = array();
+    
+    function __set($name, $val) {
+        $this->data[$name] = $val;
+    }
+    
+    function __debugInfo() {
+        return $this->data;
+    }
+}
+
+$cl = new h();
+
+$id = "373556941768884244";
+$cl->$id = 'hallo';
+
+var_dump($cl);
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01501-002-32bit.php:20:</small>
+<b>object</b>(<i>h</i>)[<i>%d</i>]
+  <i>public</i> '373556941768884244' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'hallo'</font> <i>(length=5)</i>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/bug01501-002-64bit.phpt b/xdebug-3.4.5/tests/develop/bug01501-002-64bit.phpt
new file mode 100644
index 0000000..cd431ed
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01501-002-64bit.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #1501: Xdebug var dump tries casting properties (HTML)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('64bit');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=1
+xdebug.cli_color=0
+xdebug.file_link_format=
+--FILE--
+<?php
+
+class h extends stdClass {
+    public $data = array();
+    
+    function __set($name, $val) {
+        $this->data[$name] = $val;
+    }
+    
+    function __debugInfo() {
+        return $this->data;
+    }
+}
+
+$cl = new h();
+
+$id = "373556941768884244";
+$cl->$id = 'hallo';
+
+var_dump($cl);
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01501-002-64bit.php:20:</small>
+<b>object</b>(<i>h</i>)[<i>%d</i>]
+  <i>public</i> 373556941768884244 <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'hallo'</font> <i>(length=5)</i>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/bug01501-003-32bit.phpt b/xdebug-3.4.5/tests/develop/bug01501-003-32bit.phpt
new file mode 100644
index 0000000..0fa931b
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01501-003-32bit.phpt
@@ -0,0 +1,39 @@
+--TEST--
+Test for bug #1501: Xdebug var dump tries casting properties (ANSI)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('32bit');
+?>
+--INI--
+html_errors=0
+xdebug.cli_color=2
+xdebug.mode=develop
+--FILE--
+<?php
+
+class h extends stdClass {
+    public $data = array();
+    
+    function __set($name, $val) {
+        $this->data[$name] = $val;
+    }
+    
+    function __debugInfo() {
+        return $this->data;
+    }
+}
+
+$cl = new h();
+
+$id = "373556941768884244";
+$cl->$id = 'hallo';
+
+var_dump($cl);
+?>
+--EXPECTF--
+[1m%sbug01501-003-32bit.php[22m:[1m20[22m:
+[1mclass[22m [31mh[0m#%d ([32m%d[0m) {
+  [32m[1mpublic[22m[0m $373556941768884244 [0m=>[0m
+  [1mstring[22m([32m5[0m) "[31mhallo[0m"
+}
diff --git a/xdebug-3.4.5/tests/develop/bug01501-003-64bit.phpt b/xdebug-3.4.5/tests/develop/bug01501-003-64bit.phpt
new file mode 100644
index 0000000..ecf4ccd
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01501-003-64bit.phpt
@@ -0,0 +1,39 @@
+--TEST--
+Test for bug #1501: Xdebug var dump tries casting properties (ANSI)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('64bit');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=0
+xdebug.cli_color=2
+--FILE--
+<?php
+
+class h extends stdClass {
+    public $data = array();
+    
+    function __set($name, $val) {
+        $this->data[$name] = $val;
+    }
+    
+    function __debugInfo() {
+        return $this->data;
+    }
+}
+
+$cl = new h();
+
+$id = "373556941768884244";
+$cl->$id = 'hallo';
+
+var_dump($cl);
+?>
+--EXPECTF--
+[1m%sbug01501-003-64bit.php[22m:[1m20[22m:
+[1mclass[22m [31mh[0m#%d ([32m%d[0m) {
+  [32m[1mpublic[22m[0m ${373556941768884244} [0m=>[0m
+  [1mstring[22m([32m5[0m) "[31mhallo[0m"
+}
diff --git a/xdebug-3.4.5/tests/develop/bug01534.phpt b/xdebug-3.4.5/tests/develop/bug01534.phpt
new file mode 100644
index 0000000..016e52b
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01534.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Test for bug #1534: Segfault when exception thrown in a closure bound to class scope
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+try {
+	class bug {
+		public function on(\Closure $closure) {
+			$closure = $closure->bindTo($this);
+			$closure();
+		}
+	}
+
+	$bug = new bug();
+	$bug->on(function() {
+		throw new \Exception("Exception thrown successfully");
+	});
+} catch (\Exception $ex) {
+	echo "Works!";
+}
+?>
+--EXPECTF--
+Works!
diff --git a/xdebug-3.4.5/tests/develop/bug01562-noopcache.phpt b/xdebug-3.4.5/tests/develop/bug01562-noopcache.phpt
new file mode 100644
index 0000000..0c0ed42
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01562-noopcache.phpt
@@ -0,0 +1,168 @@
+--TEST--
+Test for bug #1562: Variables with xdebug_get_function_stack (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.auto_profile=0
+xdebug.var_display_max_depth=4
+serialize_precision=-1
+--FILE--
+<?php
+class Elephpant
+{
+	function __construct(private string $title, private float $PIE) {}
+
+	function __toString()
+	{
+		return "{$this->title} loves {$this->PIE}";
+	}
+}
+
+class Error_Class
+{
+	public static function getBT()
+	{
+		$tmp = xdebug_get_function_stack( ['local_vars' => true ] );
+		var_dump($tmp);
+
+		echo $tmp[2]['variables']['elephpant'], "\n";
+	}
+
+	public static function newError($errno = false)
+	{
+		$elephpant = new Elephpant("Bluey", M_PI);
+		$randoVar = 42;
+		return self::getBT();
+	}
+
+}
+
+class Error_Entry
+{
+	public function __construct($base, $errno)
+	{
+		$return = Error_Class::newError(true);
+	}
+}
+
+$e = new Error_Entry(1, 2);
+?>
+--EXPECTF--
+%sbug01562-noopcache.php:17:
+array(4) {
+  [0] =>
+  array(6) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(6) "{main}"
+    'file' =>
+    string(%d) "%sbug01562-noopcache.php"
+    'line' =>
+    int(0)
+    'params' =>
+    array(0) {
+    }
+  }
+  [1] =>
+  array(9) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(11) "__construct"
+    'type' =>
+    string(7) "dynamic"
+    'class' =>
+    string(11) "Error_Entry"
+    'file' =>
+    string(%d) "%sbug01562-noopcache.php"
+    'line' =>
+    int(39)
+    'params' =>
+    array(2) {
+      'base' =>
+      string(1) "1"
+      'errno' =>
+      string(1) "2"
+    }
+    'variables' =>
+    array(3) {
+      'base' =>
+      int(1)
+      'errno' =>
+      int(2)
+      'return' =>
+      NULL
+    }
+  }
+  [2] =>
+  array(9) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(8) "newError"
+    'type' =>
+    string(6) "static"
+    'class' =>
+    string(11) "Error_Class"
+    'file' =>
+    string(%d) "%sbug01562-noopcache.php"
+    'line' =>
+    int(35)
+    'params' =>
+    array(1) {
+      'errno' =>
+      string(4) "TRUE"
+    }
+    'variables' =>
+    array(3) {
+      'errno' =>
+      bool(true)
+      'elephpant' =>
+      class Elephpant#2 (2) {
+        private string $title =>
+        string(5) "Bluey"
+        private float $PIE =>
+        double(3.141592653589793)
+      }
+      'randoVar' =>
+      int(42)
+    }
+  }
+  [3] =>
+  array(9) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(5) "getBT"
+    'type' =>
+    string(6) "static"
+    'class' =>
+    string(11) "Error_Class"
+    'file' =>
+    string(%d) "%sbug01562-noopcache.php"
+    'line' =>
+    int(26)
+    'params' =>
+    array(0) {
+    }
+    'variables' =>
+    array(1) {
+      'tmp' =>
+      NULL
+    }
+  }
+}
+Bluey loves 3.1415926535%s
diff --git a/xdebug-3.4.5/tests/develop/bug01562-opcache.phpt b/xdebug-3.4.5/tests/develop/bug01562-opcache.phpt
new file mode 100644
index 0000000..a358049
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01562-opcache.phpt
@@ -0,0 +1,164 @@
+--TEST--
+Test for bug #1562: Variables with xdebug_get_function_stack (opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('opcache');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.auto_profile=0
+xdebug.var_display_max_depth=4
+serialize_precision=-1
+--FILE--
+<?php
+class Elephpant
+{
+	function __construct(private string $title, private float $PIE) {}
+
+	function __toString()
+	{
+		return "{$this->title} loves {$this->PIE}";
+	}
+}
+
+class Error_Class
+{
+	public static function getBT()
+	{
+		$tmp = xdebug_get_function_stack( ['local_vars' => true ] );
+		var_dump($tmp);
+
+		echo $tmp[2]['variables']['elephpant'], "\n";
+	}
+
+	public static function newError($errno = false)
+	{
+		$elephpant = new Elephpant("Bluey", M_PI);
+		$randoVar = 42;
+		return self::getBT();
+	}
+
+}
+
+class Error_Entry
+{
+	public function __construct($base, $errno)
+	{
+		$return = Error_Class::newError(true);
+	}
+}
+
+$e = new Error_Entry(1, 2);
+?>
+--EXPECTF--
+%sbug01562-opcache.php:17:
+array(4) {
+  [0] =>
+  array(6) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(6) "{main}"
+    'file' =>
+    string(%d) "%sbug01562-opcache.php"
+    'line' =>
+    int(0)
+    'params' =>
+    array(0) {
+    }
+  }
+  [1] =>
+  array(9) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(11) "__construct"
+    'type' =>
+    string(7) "dynamic"
+    'class' =>
+    string(11) "Error_Entry"
+    'file' =>
+    string(%d) "%sbug01562-opcache.php"
+    'line' =>
+    int(39)
+    'params' =>
+    array(2) {
+      'base' =>
+      string(1) "1"
+      'errno' =>
+      string(1) "2"
+    }
+    'variables' =>
+    array(2) {
+      'base' =>
+      int(1)
+      'errno' =>
+      int(2)
+    }
+  }
+  [2] =>
+  array(9) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(8) "newError"
+    'type' =>
+    string(6) "static"
+    'class' =>
+    string(11) "Error_Class"
+    'file' =>
+    string(%d) "%sbug01562-opcache.php"
+    'line' =>
+    int(35)
+    'params' =>
+    array(1) {
+      'errno' =>
+      string(4) "TRUE"
+    }
+    'variables' =>
+    array(2) {
+      'errno' =>
+      bool(true)
+      'elephpant' =>
+      class Elephpant#2 (2) {
+        private string $title =>
+        string(5) "Bluey"
+        private float $PIE =>
+        double(3.141592653589793)
+      }
+    }
+  }
+  [3] =>
+  array(9) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(5) "getBT"
+    'type' =>
+    string(6) "static"
+    'class' =>
+    string(11) "Error_Class"
+    'file' =>
+    string(%d) "%sbug01562-opcache.php"
+    'line' =>
+    int(26)
+    'params' =>
+    array(0) {
+    }
+    'variables' =>
+    array(1) {
+      'tmp' =>
+      NULL
+    }
+  }
+}
+Bluey loves 3.1415926535%s
diff --git a/xdebug-3.4.5/tests/develop/bug01613-001.phpt b/xdebug-3.4.5/tests/develop/bug01613-001.phpt
new file mode 100644
index 0000000..850ae11
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01613-001.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Test for bug #1613: Wrong name displayed for Recoverable fatal error [text] (< PHP 7.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 7.4');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.collect_assignments=0
+xdebug.show_local_vars=0
+xdebug.dump_globals=0
+--FILE--
+<?php
+$v = new DateTime();
+$v = (string) $v;
+?>
+--EXPECTF--
+Recoverable fatal error: Object of class DateTime could not be converted to string in %sbug01613-001.php on line %d
+
+Call Stack:
+%w%f  %w%d   1. {main}() %sbug01613-001.php:%d
diff --git a/xdebug-3.4.5/tests/develop/bug01613-002.phpt b/xdebug-3.4.5/tests/develop/bug01613-002.phpt
new file mode 100644
index 0000000..084c886
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01613-002.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Test for bug #1613: Wrong name displayed for Recoverable fatal error [html] (< PHP 7.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 7.4');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.collect_assignments=0
+xdebug.show_local_vars=0
+xdebug.dump_globals=0
+html_errors=1
+--FILE--
+<?php
+$v = new DateTime();
+$v = (string) $v;
+?>
+--EXPECTF--
+<br />
+<font size='1'><table class='xdebug-error xe-recoverable-fatal-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Recoverable fatal error: Object of class DateTime could not be converted to string in %sbug01613-002.php on line <i>3</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug01613-002.php' bgcolor='#eeeeec'>%sbug01613-002.php<b>:</b>0</td></tr>
+</table></font>
diff --git a/xdebug-3.4.5/tests/develop/bug01665.phpt b/xdebug-3.4.5/tests/develop/bug01665.phpt
new file mode 100644
index 0000000..89423ea
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01665.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Test for bug #1665: Segfault when overriding a function object parameter
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+
+function query($var) {
+	try {
+		$var = "Country rooooooads"; // Rewriting an object var segfaults
+		throw new LogicException('I am broken');
+	} catch (Exception $ex) {
+	}
+}
+
+query(new stdClass());
+echo 'No segfault';
+?>
+--EXPECTF--
+No segfault
diff --git a/xdebug-3.4.5/tests/develop/bug01837-002.phpt b/xdebug-3.4.5/tests/develop/bug01837-002.phpt
new file mode 100644
index 0000000..9998fb6
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01837-002.phpt
@@ -0,0 +1,63 @@
+--TEST--
+Test for bug #1837: Support for associative variadic variable names in stack traces
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.0');
+?>
+--INI--
+html_errors=0
+xdebug.mode=develop
+serialize_precision=-1
+--FILE--
+<?php
+function takeThemAll(string $one, ...$args)
+{
+	xdebug_print_function_stack();
+}
+
+takeThemAll(one: "test", arg1: 42, arg2: M_PI);
+takeThemAll(arg1: 42, one: "test", arg2: M_PI);
+takeThemAll("test", arg1: 42, arg2: M_PI);
+takeThemAll("test", 42, M_PI);
+takeThemAll("test", 42, arg2: M_PI);
+?>
+--EXPECTF--
+Xdebug: user triggered in %sbug01837-002.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug01837-002.php:0
+%w%f %w%d   2. takeThemAll($one = 'test', ...$args = variadic($arg1 = 42, $arg2 = 3.141592653589793)) %sbug01837-002.php:7
+%w%f %w%d   3. xdebug_print_function_stack() %sbug01837-002.php:4
+
+
+Xdebug: user triggered in %sbug01837-002.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug01837-002.php:0
+%w%f %w%d   2. takeThemAll($one = 'test', ...$args = variadic($arg1 = 42, $arg2 = 3.141592653589793)) %sbug01837-002.php:8
+%w%f %w%d   3. xdebug_print_function_stack() %sbug01837-002.php:4
+
+
+Xdebug: user triggered in %sbug01837-002.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug01837-002.php:0
+%w%f %w%d   2. takeThemAll($one = 'test', ...$args = variadic($arg1 = 42, $arg2 = 3.141592653589793)) %sbug01837-002.php:9
+%w%f %w%d   3. xdebug_print_function_stack() %sbug01837-002.php:4
+
+
+Xdebug: user triggered in %sbug01837-002.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug01837-002.php:0
+%w%f %w%d   2. takeThemAll($one = 'test', ...$args = variadic(42, 3.141592653589793)) %sbug01837-002.php:10
+%w%f %w%d   3. xdebug_print_function_stack() %sbug01837-002.php:4
+
+
+Xdebug: user triggered in %sbug01837-002.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug01837-002.php:0
+%w%f %w%d   2. takeThemAll($one = 'test', ...$args = variadic(42, $arg2 = 3.141592653589793)) %sbug01837-002.php:11
+%w%f %w%d   3. xdebug_print_function_stack() %sbug01837-002.php:4
diff --git a/xdebug-3.4.5/tests/develop/bug01837-003.phpt b/xdebug-3.4.5/tests/develop/bug01837-003.phpt
new file mode 100644
index 0000000..d15a1dd
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01837-003.phpt
@@ -0,0 +1,70 @@
+--TEST--
+Test for bug #1837: Support for associative variadic variable names in HTML stack traces
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.0');
+?>
+--INI--
+html_errors=1
+xdebug.mode=develop
+serialize_precision=-1
+--FILE--
+<?php
+function takeThemAll(string $one, ...$args)
+{
+	xdebug_print_function_stack();
+}
+
+takeThemAll(one: "test", arg1: 42, arg2: M_PI);
+takeThemAll(arg1: 42, one: "test", arg2: M_PI);
+takeThemAll("test", arg1: 42, arg2: M_PI);
+takeThemAll("test", 42, M_PI);
+takeThemAll("test", 42, arg2: M_PI);
+?>
+--EXPECTF--
+<br />
+<font size='1'><table class='xdebug-error xe-xdebug' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Xdebug: user triggered in %sbug01837-003.php on line <i>4</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug01837-003.php' bgcolor='#eeeeec'>%sbug01837-003.php<b>:</b>0</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>takeThemAll( <span>$one = </span><span>&#39;test&#39;</span>, ...<span>$args = </span><i>variadic</i>(<span>$arg1 = </span><span>42</span>, <span>$arg2 = </span><span>3.141592653589793</span>) )</td><td title='%sbug01837-003.php' bgcolor='#eeeeec'>%sbug01837-003.php<b>:</b>7</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>3</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.xdebug-print-function-stack.html' target='_new'>xdebug_print_function_stack</a>(  )</td><td title='%sbug01837-003.php' bgcolor='#eeeeec'>%sbug01837-003.php<b>:</b>4</td></tr>
+</table></font>
+<br />
+<font size='1'><table class='xdebug-error xe-xdebug' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Xdebug: user triggered in %sbug01837-003.php on line <i>4</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug01837-003.php' bgcolor='#eeeeec'>%sbug01837-003.php<b>:</b>0</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>takeThemAll( <span>$one = </span><span>&#39;test&#39;</span>, ...<span>$args = </span><i>variadic</i>(<span>$arg1 = </span><span>42</span>, <span>$arg2 = </span><span>3.141592653589793</span>) )</td><td title='%sbug01837-003.php' bgcolor='#eeeeec'>%sbug01837-003.php<b>:</b>8</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>3</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.xdebug-print-function-stack.html' target='_new'>xdebug_print_function_stack</a>(  )</td><td title='%sbug01837-003.php' bgcolor='#eeeeec'>%sbug01837-003.php<b>:</b>4</td></tr>
+</table></font>
+<br />
+<font size='1'><table class='xdebug-error xe-xdebug' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Xdebug: user triggered in %sbug01837-003.php on line <i>4</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug01837-003.php' bgcolor='#eeeeec'>%sbug01837-003.php<b>:</b>0</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>takeThemAll( <span>$one = </span><span>&#39;test&#39;</span>, ...<span>$args = </span><i>variadic</i>(<span>$arg1 = </span><span>42</span>, <span>$arg2 = </span><span>3.141592653589793</span>) )</td><td title='%sbug01837-003.php' bgcolor='#eeeeec'>%sbug01837-003.php<b>:</b>9</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>3</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.xdebug-print-function-stack.html' target='_new'>xdebug_print_function_stack</a>(  )</td><td title='%sbug01837-003.php' bgcolor='#eeeeec'>%sbug01837-003.php<b>:</b>4</td></tr>
+</table></font>
+<br />
+<font size='1'><table class='xdebug-error xe-xdebug' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Xdebug: user triggered in %sbug01837-003.php on line <i>4</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug01837-003.php' bgcolor='#eeeeec'>%sbug01837-003.php<b>:</b>0</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>takeThemAll( <span>$one = </span><span>&#39;test&#39;</span>, ...<span>$args = </span><i>variadic</i>(<span>42</span>, <span>3.141592653589793</span>) )</td><td title='%sbug01837-003.php' bgcolor='#eeeeec'>%sbug01837-003.php<b>:</b>10</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>3</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.xdebug-print-function-stack.html' target='_new'>xdebug_print_function_stack</a>(  )</td><td title='%sbug01837-003.php' bgcolor='#eeeeec'>%sbug01837-003.php<b>:</b>4</td></tr>
+</table></font>
+<br />
+<font size='1'><table class='xdebug-error xe-xdebug' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Xdebug: user triggered in %sbug01837-003.php on line <i>4</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sbug01837-003.php' bgcolor='#eeeeec'>%sbug01837-003.php<b>:</b>0</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>takeThemAll( <span>$one = </span><span>&#39;test&#39;</span>, ...<span>$args = </span><i>variadic</i>(<span>42</span>, <span>$arg2 = </span><span>3.141592653589793</span>) )</td><td title='%sbug01837-003.php' bgcolor='#eeeeec'>%sbug01837-003.php<b>:</b>11</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>3</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.xdebug-print-function-stack.html' target='_new'>xdebug_print_function_stack</a>(  )</td><td title='%sbug01837-003.php' bgcolor='#eeeeec'>%sbug01837-003.php<b>:</b>4</td></tr>
+</table></font>
diff --git a/xdebug-3.4.5/tests/develop/bug01996-001-ansi-php81.phpt b/xdebug-3.4.5/tests/develop/bug01996-001-ansi-php81.phpt
new file mode 100644
index 0000000..463c27d
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01996-001-ansi-php81.phpt
@@ -0,0 +1,94 @@
+--TEST--
+Test for bug #1996: Show wrapped callable for closures (ansi) (< PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.2');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=0
+xdebug.cli_color=2
+date.timezone=UTC
+--FILE--
+<?php
+$closure = Closure::fromCallable('substr');
+var_dump($closure);
+
+
+function user_defined($a, $b)
+{
+	return substr($a, $b);
+}
+$closure = Closure::fromCallable('user_defined');
+var_dump($closure);
+
+
+$closure = Closure::fromCallable(['DateTimeImmutable', 'createFromFormat']);
+var_dump($closure);
+
+
+$dateTime = new DateTimeImmutable("2021-07-22");
+$closure = Closure::fromCallable([$dateTime, 'format']);
+var_dump($closure);
+?>
+--EXPECTF--
+[1m%sbug01996-001-ansi-php81.php[22m:[1m3[22m:
+[1mclass[22m [31mClosure[0m#1 ([32m1[0m) {
+  [32m[1mvirtual[0m $closure =>
+  "[31msubstr[0m"
+  [32m[1mpublic[22m[0m $parameter [0m=>[0m
+  [1marray[22m([32m3[0m) {
+    '$str%S' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+    '$%s' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+    '$length' =>
+    [1mstring[22m([32m10[0m) "[31m<optional>[0m"
+  }
+}
+[1m%sbug01996-001-ansi-php81.php[22m:[1m11[22m:
+[1mclass[22m [31mClosure[0m#2 ([32m1[0m) {
+  [32m[1mvirtual[0m $closure =>
+  "[31muser_defined[0m"
+  [32m[1mpublic[22m[0m $parameter [0m=>[0m
+  [1marray[22m([32m2[0m) {
+    '$a' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+    '$b' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+  }
+}
+[1m%sbug01996-001-ansi-php81.php[22m:[1m15[22m:
+[1mclass[22m [31mClosure[0m#1 ([32m1[0m) {
+  [32m[1mvirtual[0m $closure =>
+  "[31mDateTimeImmutable[0m::[31mcreateFromFormat[0m"
+  [32m[1mpublic[22m[0m $parameter [0m=>[0m
+  [1marray[22m([32m3[0m) {
+    '$format' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+    '$%Stime' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+    '$%s' =>
+    [1mstring[22m([32m10[0m) "[31m<optional>[0m"
+  }
+}
+[1m%sbug01996-001-ansi-php81.php[22m:[1m20[22m:
+[1mclass[22m [31mClosure[0m#3 ([32m2[0m) {
+  [32m[1mvirtual[0m $closure =>
+  "[31m$this[0m->[31mformat[0m"
+  [32m[1mpublic[22m[0m $this [0m=>[0m
+  [1mclass[22m [31mDateTimeImmutable[0m#2 ([32m3[0m) {
+    [32m[1mpublic[22m[0m $date [0m=>[0m
+    [1mstring[22m([32m26[0m) "[31m2021-07-22 00:00:00.000000[0m"
+    [32m[1mpublic[22m[0m $timezone_type [0m=>[0m
+    [1mint[22m([32m3[0m)
+    [32m[1mpublic[22m[0m $timezone [0m=>[0m
+    [1mstring[22m([32m3[0m) "[31mUTC[0m"
+  }
+  [32m[1mpublic[22m[0m $parameter [0m=>[0m
+  [1marray[22m([32m1[0m) {
+    '$format' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+  }
+}
diff --git a/xdebug-3.4.5/tests/develop/bug01996-001-ansi-php82.phpt b/xdebug-3.4.5/tests/develop/bug01996-001-ansi-php82.phpt
new file mode 100644
index 0000000..f4b24bd
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01996-001-ansi-php82.phpt
@@ -0,0 +1,94 @@
+--TEST--
+Test for bug #1996: Show wrapped callable for closures (ansi) (>= PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=0
+xdebug.cli_color=2
+date.timezone=UTC
+--FILE--
+<?php
+$closure = Closure::fromCallable('substr');
+var_dump($closure);
+
+
+function user_defined($a, $b)
+{
+	return substr($a, $b);
+}
+$closure = Closure::fromCallable('user_defined');
+var_dump($closure);
+
+
+$closure = Closure::fromCallable(['DateTimeImmutable', 'createFromFormat']);
+var_dump($closure);
+
+
+$dateTime = new DateTimeImmutable("2021-07-22");
+$closure = Closure::fromCallable([$dateTime, 'format']);
+var_dump($closure);
+?>
+--EXPECTF--
+[1m%sbug01996-001-ansi-php82.php[22m:[1m3[22m:
+[1mclass[22m [31mClosure[0m#1 ([32m2[0m) {
+  [32m[1mpublic[22m[0m $function [0m=>[0m
+  [1mstring[22m([32m6[0m) "[31msubstr[0m"
+  [32m[1mpublic[22m[0m $parameter [0m=>[0m
+  [1marray[22m([32m3[0m) {
+    '$string' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+    '$offset' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+    '$length' =>
+    [1mstring[22m([32m10[0m) "[31m<optional>[0m"
+  }
+}
+[1m%sbug01996-001-ansi-php82.php[22m:[1m11[22m:
+[1mclass[22m [31mClosure[0m#2 ([32m2[0m) {
+  [32m[1mpublic[22m[0m $function [0m=>[0m
+  [1mstring[22m([32m12[0m) "[31muser_defined[0m"
+  [32m[1mpublic[22m[0m $parameter [0m=>[0m
+  [1marray[22m([32m2[0m) {
+    '$a' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+    '$b' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+  }
+}
+[1m%sbug01996-001-ansi-php82.php[22m:[1m15[22m:
+[1mclass[22m [31mClosure[0m#1 ([32m2[0m) {
+  [32m[1mpublic[22m[0m $function [0m=>[0m
+  [1mstring[22m([32m35[0m) "[31mDateTimeImmutable::createFromFormat[0m"
+  [32m[1mpublic[22m[0m $parameter [0m=>[0m
+  [1marray[22m([32m3[0m) {
+    '$format' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+    '$datetime' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+    '$timezone' =>
+    [1mstring[22m([32m10[0m) "[31m<optional>[0m"
+  }
+}
+[1m%sbug01996-001-ansi-php82.php[22m:[1m20[22m:
+[1mclass[22m [31mClosure[0m#3 ([32m3[0m) {
+  [32m[1mpublic[22m[0m $function [0m=>[0m
+  [1mstring[22m([32m25[0m) "[31mDateTimeImmutable::format[0m"
+  [32m[1mpublic[22m[0m $this [0m=>[0m
+  [1mclass[22m [31mDateTimeImmutable[0m#2 ([32m3[0m) {
+    [32m[1mpublic[22m[0m $date [0m=>[0m
+    [1mstring[22m([32m26[0m) "[31m2021-07-22 00:00:00.000000[0m"
+    [32m[1mpublic[22m[0m $timezone_type [0m=>[0m
+    [1mint[22m([32m3[0m)
+    [32m[1mpublic[22m[0m $timezone [0m=>[0m
+    [1mstring[22m([32m3[0m) "[31mUTC[0m"
+  }
+  [32m[1mpublic[22m[0m $parameter [0m=>[0m
+  [1marray[22m([32m1[0m) {
+    '$format' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+  }
+}
diff --git a/xdebug-3.4.5/tests/develop/bug01996-001-html-php81.phpt b/xdebug-3.4.5/tests/develop/bug01996-001-html-php81.phpt
new file mode 100644
index 0000000..f3b7eff
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01996-001-html-php81.phpt
@@ -0,0 +1,73 @@
+--TEST--
+Test for bug #1996: Show wrapped callable for closures (html) (< PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.2');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=1
+date.timezone=UTC
+--FILE--
+<?php
+$closure = Closure::fromCallable('substr');
+var_dump($closure);
+
+
+function user_defined($a, $b)
+{
+	return substr($a, $b);
+}
+$closure = Closure::fromCallable('user_defined');
+var_dump($closure);
+
+
+$closure = Closure::fromCallable(['DateTimeImmutable', 'createFromFormat']);
+var_dump($closure);
+
+
+$dateTime = new DateTimeImmutable("2021-07-22");
+$closure = Closure::fromCallable([$dateTime, 'format']);
+var_dump($closure);
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01996-001-html-php81.php:3:</small>
+<b>object</b>(<i>Closure</i>)[<i>1</i>]
+  <i>virtual</i> 'closure' <font color='#cc0000'>'substr'</font>
+  <i>public</i> 'parameter' <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=3)</i>
+      '$%s' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+      '$%s' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+      '$length' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;optional&gt;'</font> <i>(length=10)</i>
+</pre><pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01996-001-html-php81.php:11:</small>
+<b>object</b>(<i>Closure</i>)[<i>2</i>]
+  <i>virtual</i> 'closure' <font color='#cc0000'>'user_defined'</font>
+  <i>public</i> 'parameter' <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=2)</i>
+      '$a' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+      '$b' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+</pre><pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01996-001-html-php81.php:15:</small>
+<b>object</b>(<i>Closure</i>)[<i>1</i>]
+  <i>virtual</i> 'closure' <font color='#cc0000'>'DateTimeImmutable::createFromFormat'</font>
+  <i>public</i> 'parameter' <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=3)</i>
+      '$format' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+      '$%s' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+      '$%s' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;optional&gt;'</font> <i>(length=10)</i>
+</pre><pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01996-001-html-php81.php:20:</small>
+<b>object</b>(<i>Closure</i>)[<i>3</i>]
+  <i>virtual</i> 'closure' <font color='#cc0000'>'$this->format'</font>
+  <i>public</i> 'this' <font color='#888a85'>=&gt;</font> 
+    <b>object</b>(<i>DateTimeImmutable</i>)[<i>2</i>]
+      <i>public</i> 'date' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'2021-07-22 00:00:00.000000'</font> <i>(length=26)</i>
+      <i>public</i> 'timezone_type' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>3</font>
+      <i>public</i> 'timezone' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'UTC'</font> <i>(length=3)</i>
+  <i>public</i> 'parameter' <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=1)</i>
+      '$format' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/bug01996-001-html-php82.phpt b/xdebug-3.4.5/tests/develop/bug01996-001-html-php82.phpt
new file mode 100644
index 0000000..a3b350a
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01996-001-html-php82.phpt
@@ -0,0 +1,77 @@
+--TEST--
+Test for bug #1996: Show wrapped callable for closures (html) (>= PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=1
+date.timezone=UTC
+--FILE--
+<?php
+$closure = Closure::fromCallable('substr');
+var_dump($closure);
+
+
+function user_defined($a, $b)
+{
+	return substr($a, $b);
+}
+$closure = Closure::fromCallable('user_defined');
+var_dump($closure);
+
+
+$closure = Closure::fromCallable(['DateTimeImmutable', 'createFromFormat']);
+var_dump($closure);
+
+
+$dateTime = new DateTimeImmutable("2021-07-22");
+$closure = Closure::fromCallable([$dateTime, 'format']);
+var_dump($closure);
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01996-001-html-php82.php:3:</small>
+<b>object</b>(<i>Closure</i>)[<i>1</i>]
+  <i>virtual</i> 'closure' <font color='#cc0000'>'substr'</font>
+  <i>public</i> 'function' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'substr'</font> <i>(length=6)</i>
+  <i>public</i> 'parameter' <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=3)</i>
+      '$string' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+      '$offset' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+      '$length' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;optional&gt;'</font> <i>(length=10)</i>
+</pre><pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01996-001-html-php82.php:11:</small>
+<b>object</b>(<i>Closure</i>)[<i>2</i>]
+  <i>virtual</i> 'closure' <font color='#cc0000'>'user_defined'</font>
+  <i>public</i> 'function' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'user_defined'</font> <i>(length=12)</i>
+  <i>public</i> 'parameter' <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=2)</i>
+      '$a' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+      '$b' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+</pre><pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01996-001-html-php82.php:15:</small>
+<b>object</b>(<i>Closure</i>)[<i>1</i>]
+  <i>virtual</i> 'closure' <font color='#cc0000'>'DateTimeImmutable::createFromFormat'</font>
+  <i>public</i> 'function' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'DateTimeImmutable::createFromFormat'</font> <i>(length=35)</i>
+  <i>public</i> 'parameter' <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=3)</i>
+      '$format' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+      '$datetime' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+      '$timezone' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;optional&gt;'</font> <i>(length=10)</i>
+</pre><pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01996-001-html-php82.php:20:</small>
+<b>object</b>(<i>Closure</i>)[<i>3</i>]
+  <i>virtual</i> 'closure' <font color='#cc0000'>'$this->format'</font>
+  <i>public</i> 'function' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'DateTimeImmutable::format'</font> <i>(length=25)</i>
+  <i>public</i> 'this' <font color='#888a85'>=&gt;</font> 
+    <b>object</b>(<i>DateTimeImmutable</i>)[<i>2</i>]
+      <i>public</i> 'date' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'2021-07-22 00:00:00.000000'</font> <i>(length=26)</i>
+      <i>public</i> 'timezone_type' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>3</font>
+      <i>public</i> 'timezone' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'UTC'</font> <i>(length=3)</i>
+  <i>public</i> 'parameter' <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=1)</i>
+      '$format' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/bug01996-001-text-php81.phpt b/xdebug-3.4.5/tests/develop/bug01996-001-text-php81.phpt
new file mode 100644
index 0000000..399acff
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01996-001-text-php81.phpt
@@ -0,0 +1,93 @@
+--TEST--
+Test for bug #1996: Show wrapped callable for closures (text) (< PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.2');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=0
+date.timezone=UTC
+--FILE--
+<?php
+$closure = Closure::fromCallable('substr');
+var_dump($closure);
+
+
+function user_defined($a, $b)
+{
+	return substr($a, $b);
+}
+$closure = Closure::fromCallable('user_defined');
+var_dump($closure);
+
+
+$closure = Closure::fromCallable(['DateTimeImmutable', 'createFromFormat']);
+var_dump($closure);
+
+
+$dateTime = new DateTimeImmutable("2021-07-22");
+$closure = Closure::fromCallable([$dateTime, 'format']);
+var_dump($closure);
+?>
+--EXPECTF--
+%sbug01996-001-text-php81.php:3:
+class Closure#1 (1) {
+  virtual $closure =>
+  "substr"
+  public $parameter =>
+  array(3) {
+    '$%s' =>
+    string(10) "<required>"
+    '$%s' =>
+    string(10) "<required>"
+    '$length' =>
+    string(10) "<optional>"
+  }
+}
+%sbug01996-001-text-php81.php:11:
+class Closure#2 (1) {
+  virtual $closure =>
+  "user_defined"
+  public $parameter =>
+  array(2) {
+    '$a' =>
+    string(10) "<required>"
+    '$b' =>
+    string(10) "<required>"
+  }
+}
+%sbug01996-001-text-php81.php:15:
+class Closure#1 (1) {
+  virtual $closure =>
+  "DateTimeImmutable::createFromFormat"
+  public $parameter =>
+  array(3) {
+    '$format' =>
+    string(10) "<required>"
+    '$%s' =>
+    string(10) "<required>"
+    '$%s' =>
+    string(10) "<optional>"
+  }
+}
+%sbug01996-001-text-php81.php:20:
+class Closure#3 (2) {
+  virtual $closure =>
+  "$this->format"
+  public $this =>
+  class DateTimeImmutable#2 (3) {
+    public $date =>
+    string(26) "2021-07-22 00:00:00.000000"
+    public $timezone_type =>
+    int(3)
+    public $timezone =>
+    string(3) "UTC"
+  }
+  public $parameter =>
+  array(1) {
+    '$format' =>
+    string(10) "<required>"
+  }
+}
diff --git a/xdebug-3.4.5/tests/develop/bug01996-001-text-php82.phpt b/xdebug-3.4.5/tests/develop/bug01996-001-text-php82.phpt
new file mode 100644
index 0000000..37c0d58
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01996-001-text-php82.phpt
@@ -0,0 +1,93 @@
+--TEST--
+Test for bug #1996: Show wrapped callable for closures (text) (>= PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=0
+date.timezone=UTC
+--FILE--
+<?php
+$closure = Closure::fromCallable('substr');
+var_dump($closure);
+
+
+function user_defined($a, $b)
+{
+	return substr($a, $b);
+}
+$closure = Closure::fromCallable('user_defined');
+var_dump($closure);
+
+
+$closure = Closure::fromCallable(['DateTimeImmutable', 'createFromFormat']);
+var_dump($closure);
+
+
+$dateTime = new DateTimeImmutable("2021-07-22");
+$closure = Closure::fromCallable([$dateTime, 'format']);
+var_dump($closure);
+?>
+--EXPECTF--
+%sbug01996-001-text-php82.php:3:
+class Closure#1 (2) {
+  public $function =>
+  string(6) "substr"
+  public $parameter =>
+  array(3) {
+    '$string' =>
+    string(10) "<required>"
+    '$offset' =>
+    string(10) "<required>"
+    '$length' =>
+    string(10) "<optional>"
+  }
+}
+%sbug01996-001-text-php82.php:11:
+class Closure#2 (2) {
+  public $function =>
+  string(12) "user_defined"
+  public $parameter =>
+  array(2) {
+    '$a' =>
+    string(10) "<required>"
+    '$b' =>
+    string(10) "<required>"
+  }
+}
+%sbug01996-001-text-php82.php:15:
+class Closure#1 (2) {
+  public $function =>
+  string(35) "DateTimeImmutable::createFromFormat"
+  public $parameter =>
+  array(3) {
+    '$format' =>
+    string(10) "<required>"
+    '$datetime' =>
+    string(10) "<required>"
+    '$timezone' =>
+    string(10) "<optional>"
+  }
+}
+%sbug01996-001-text-php82.php:20:
+class Closure#3 (3) {
+  public $function =>
+  string(25) "DateTimeImmutable::format"
+  public $this =>
+  class DateTimeImmutable#2 (3) {
+    public $date =>
+    string(26) "2021-07-22 00:00:00.000000"
+    public $timezone_type =>
+    int(3)
+    public $timezone =>
+    string(3) "UTC"
+  }
+  public $parameter =>
+  array(1) {
+    '$format' =>
+    string(10) "<required>"
+  }
+}
diff --git a/xdebug-3.4.5/tests/develop/bug01996-002-ansi-php81.phpt b/xdebug-3.4.5/tests/develop/bug01996-002-ansi-php81.phpt
new file mode 100644
index 0000000..b1c7d33
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01996-002-ansi-php81.phpt
@@ -0,0 +1,93 @@
+--TEST--
+Test for bug #1996: Show wrapped callable for first class callables (PHP 8.1, ansi)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1,< 8.2');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=0
+xdebug.cli_color=2
+--FILE--
+<?php
+$closure = substr(...);
+var_dump($closure);
+
+
+function user_defined($a, $b)
+{
+	return substr($a, $b);
+}
+$closure = user_defined(...);
+var_dump($closure);
+
+
+$closure = DateTimeImmutable::createFromFormat(...);
+var_dump($closure);
+
+
+$dateTime = new DateTimeImmutable("2021-07-22");
+$closure = $dateTime->format(...);
+var_dump($closure);
+?>
+--EXPECTF--
+[1m%sbug01996-002-ansi-php81.php[22m:[1m3[22m:
+[1mclass[22m [31mClosure[0m#1 ([32m1[0m) {
+  [32m[1mvirtual[0m $closure =>
+  "[31msubstr[0m"
+  [32m[1mpublic[22m[0m $parameter [0m=>[0m
+  [1marray[22m([32m3[0m) {
+    '$string' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+    '$offset' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+    '$length' =>
+    [1mstring[22m([32m10[0m) "[31m<optional>[0m"
+  }
+}
+[1m%sbug01996-002-ansi-php81.php[22m:[1m11[22m:
+[1mclass[22m [31mClosure[0m#2 ([32m1[0m) {
+  [32m[1mvirtual[0m $closure =>
+  "[31muser_defined[0m"
+  [32m[1mpublic[22m[0m $parameter [0m=>[0m
+  [1marray[22m([32m2[0m) {
+    '$a' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+    '$b' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+  }
+}
+[1m%sbug01996-002-ansi-php81.php[22m:[1m15[22m:
+[1mclass[22m [31mClosure[0m#1 ([32m1[0m) {
+  [32m[1mvirtual[0m $closure =>
+  "[31mDateTimeImmutable[0m::[31mcreateFromFormat[0m"
+  [32m[1mpublic[22m[0m $parameter [0m=>[0m
+  [1marray[22m([32m3[0m) {
+    '$format' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+    '$datetime' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+    '$timezone' =>
+    [1mstring[22m([32m10[0m) "[31m<optional>[0m"
+  }
+}
+[1m%sbug01996-002-ansi-php81.php[22m:[1m20[22m:
+[1mclass[22m [31mClosure[0m#3 ([32m2[0m) {
+  [32m[1mvirtual[0m $closure =>
+  "[31m$this[0m->[31mformat[0m"
+  [32m[1mpublic[22m[0m $this [0m=>[0m
+  [1mclass[22m [31mDateTimeImmutable[0m#2 ([32m3[0m) {
+    [32m[1mpublic[22m[0m $date [0m=>[0m
+    [1mstring[22m([32m26[0m) "[31m2021-07-22 00:00:00.000000[0m"
+    [32m[1mpublic[22m[0m $timezone_type [0m=>[0m
+    [1mint[22m([32m3[0m)
+    [32m[1mpublic[22m[0m $timezone [0m=>[0m
+    [1mstring[22m([32m3[0m) "[31mUTC[0m"
+  }
+  [32m[1mpublic[22m[0m $parameter [0m=>[0m
+  [1marray[22m([32m1[0m) {
+    '$format' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+  }
+}
diff --git a/xdebug-3.4.5/tests/develop/bug01996-002-ansi-php82.phpt b/xdebug-3.4.5/tests/develop/bug01996-002-ansi-php82.phpt
new file mode 100644
index 0000000..8ae817e
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01996-002-ansi-php82.phpt
@@ -0,0 +1,93 @@
+--TEST--
+Test for bug #1996: Show wrapped callable for first class callables (>= PHP 8.2, ansi)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=0
+xdebug.cli_color=2
+--FILE--
+<?php
+$closure = substr(...);
+var_dump($closure);
+
+
+function user_defined($a, $b)
+{
+	return substr($a, $b);
+}
+$closure = user_defined(...);
+var_dump($closure);
+
+
+$closure = DateTimeImmutable::createFromFormat(...);
+var_dump($closure);
+
+
+$dateTime = new DateTimeImmutable("2021-07-22");
+$closure = $dateTime->format(...);
+var_dump($closure);
+?>
+--EXPECTF--
+[1m%sbug01996-002-ansi-php82.php[22m:[1m3[22m:
+[1mclass[22m [31mClosure[0m#1 ([32m2[0m) {
+  [32m[1mpublic[22m[0m $function [0m=>[0m
+  [1mstring[22m([32m6[0m) "[31msubstr[0m"
+  [32m[1mpublic[22m[0m $parameter [0m=>[0m
+  [1marray[22m([32m3[0m) {
+    '$string' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+    '$offset' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+    '$length' =>
+    [1mstring[22m([32m10[0m) "[31m<optional>[0m"
+  }
+}
+[1m%sbug01996-002-ansi-php82.php[22m:[1m11[22m:
+[1mclass[22m [31mClosure[0m#2 ([32m2[0m) {
+  [32m[1mpublic[22m[0m $function [0m=>[0m
+  [1mstring[22m([32m12[0m) "[31muser_defined[0m"
+  [32m[1mpublic[22m[0m $parameter [0m=>[0m
+  [1marray[22m([32m2[0m) {
+    '$a' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+    '$b' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+  }
+}
+[1m%sbug01996-002-ansi-php82.php[22m:[1m15[22m:
+[1mclass[22m [31mClosure[0m#1 ([32m2[0m) {
+  [32m[1mpublic[22m[0m $function [0m=>[0m
+  [1mstring[22m([32m35[0m) "[31mDateTimeImmutable::createFromFormat[0m"
+  [32m[1mpublic[22m[0m $parameter [0m=>[0m
+  [1marray[22m([32m3[0m) {
+    '$format' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+    '$datetime' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+    '$timezone' =>
+    [1mstring[22m([32m10[0m) "[31m<optional>[0m"
+  }
+}
+[1m%sbug01996-002-ansi-php82.php[22m:[1m20[22m:
+[1mclass[22m [31mClosure[0m#3 ([32m3[0m) {
+  [32m[1mpublic[22m[0m $function [0m=>[0m
+  [1mstring[22m([32m25[0m) "[31mDateTimeImmutable::format[0m"
+  [32m[1mpublic[22m[0m $this [0m=>[0m
+  [1mclass[22m [31mDateTimeImmutable[0m#2 ([32m3[0m) {
+    [32m[1mpublic[22m[0m $date [0m=>[0m
+    [1mstring[22m([32m26[0m) "[31m2021-07-22 00:00:00.000000[0m"
+    [32m[1mpublic[22m[0m $timezone_type [0m=>[0m
+    [1mint[22m([32m3[0m)
+    [32m[1mpublic[22m[0m $timezone [0m=>[0m
+    [1mstring[22m([32m3[0m) "[31mUTC[0m"
+  }
+  [32m[1mpublic[22m[0m $parameter [0m=>[0m
+  [1marray[22m([32m1[0m) {
+    '$format' =>
+    [1mstring[22m([32m10[0m) "[31m<required>[0m"
+  }
+}
diff --git a/xdebug-3.4.5/tests/develop/bug01996-002-html-php81.phpt b/xdebug-3.4.5/tests/develop/bug01996-002-html-php81.phpt
new file mode 100644
index 0000000..eebb692
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01996-002-html-php81.phpt
@@ -0,0 +1,73 @@
+--TEST--
+Test for bug #1996: Show wrapped callable for first class callables (PHP 8.1, html)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1,< 8.2');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=1
+xdebug.cli_color=2
+--FILE--
+<?php
+$closure = substr(...);
+var_dump($closure);
+
+
+function user_defined($a, $b)
+{
+	return substr($a, $b);
+}
+$closure = user_defined(...);
+var_dump($closure);
+
+
+$closure = DateTimeImmutable::createFromFormat(...);
+var_dump($closure);
+
+
+$dateTime = new DateTimeImmutable("2021-07-22");
+$closure = $dateTime->format(...);
+var_dump($closure);
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01996-002-html-php81.php:3:</small>
+<b>object</b>(<i>Closure</i>)[<i>1</i>]
+  <i>virtual</i> 'closure' <font color='#cc0000'>'substr'</font>
+  <i>public</i> 'parameter' <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=3)</i>
+      '$string' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+      '$offset' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+      '$length' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;optional&gt;'</font> <i>(length=10)</i>
+</pre><pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01996-002-html-php81.php:11:</small>
+<b>object</b>(<i>Closure</i>)[<i>2</i>]
+  <i>virtual</i> 'closure' <font color='#cc0000'>'user_defined'</font>
+  <i>public</i> 'parameter' <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=2)</i>
+      '$a' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+      '$b' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+</pre><pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01996-002-html-php81.php:15:</small>
+<b>object</b>(<i>Closure</i>)[<i>1</i>]
+  <i>virtual</i> 'closure' <font color='#cc0000'>'DateTimeImmutable::createFromFormat'</font>
+  <i>public</i> 'parameter' <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=3)</i>
+      '$format' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+      '$datetime' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+      '$timezone' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;optional&gt;'</font> <i>(length=10)</i>
+</pre><pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01996-002-html-php81.php:20:</small>
+<b>object</b>(<i>Closure</i>)[<i>3</i>]
+  <i>virtual</i> 'closure' <font color='#cc0000'>'$this->format'</font>
+  <i>public</i> 'this' <font color='#888a85'>=&gt;</font> 
+    <b>object</b>(<i>DateTimeImmutable</i>)[<i>2</i>]
+      <i>public</i> 'date' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'2021-07-22 00:00:00.000000'</font> <i>(length=26)</i>
+      <i>public</i> 'timezone_type' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>3</font>
+      <i>public</i> 'timezone' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'UTC'</font> <i>(length=3)</i>
+  <i>public</i> 'parameter' <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=1)</i>
+      '$format' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/bug01996-002-html-php82.phpt b/xdebug-3.4.5/tests/develop/bug01996-002-html-php82.phpt
new file mode 100644
index 0000000..b12021c
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01996-002-html-php82.phpt
@@ -0,0 +1,77 @@
+--TEST--
+Test for bug #1996: Show wrapped callable for first class callables (>= PHP 8.2, html)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=1
+xdebug.cli_color=2
+--FILE--
+<?php
+$closure = substr(...);
+var_dump($closure);
+
+
+function user_defined($a, $b)
+{
+	return substr($a, $b);
+}
+$closure = user_defined(...);
+var_dump($closure);
+
+
+$closure = DateTimeImmutable::createFromFormat(...);
+var_dump($closure);
+
+
+$dateTime = new DateTimeImmutable("2021-07-22");
+$closure = $dateTime->format(...);
+var_dump($closure);
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01996-002-html-php82.php:3:</small>
+<b>object</b>(<i>Closure</i>)[<i>1</i>]
+  <i>virtual</i> 'closure' <font color='#cc0000'>'substr'</font>
+  <i>public</i> 'function' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'substr'</font> <i>(length=6)</i>
+  <i>public</i> 'parameter' <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=3)</i>
+      '$string' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+      '$offset' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+      '$length' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;optional&gt;'</font> <i>(length=10)</i>
+</pre><pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01996-002-html-php82.php:11:</small>
+<b>object</b>(<i>Closure</i>)[<i>2</i>]
+  <i>virtual</i> 'closure' <font color='#cc0000'>'user_defined'</font>
+  <i>public</i> 'function' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'user_defined'</font> <i>(length=12)</i>
+  <i>public</i> 'parameter' <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=2)</i>
+      '$a' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+      '$b' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+</pre><pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01996-002-html-php82.php:15:</small>
+<b>object</b>(<i>Closure</i>)[<i>1</i>]
+  <i>virtual</i> 'closure' <font color='#cc0000'>'DateTimeImmutable::createFromFormat'</font>
+  <i>public</i> 'function' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'DateTimeImmutable::createFromFormat'</font> <i>(length=35)</i>
+  <i>public</i> 'parameter' <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=3)</i>
+      '$format' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+      '$datetime' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+      '$timezone' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;optional&gt;'</font> <i>(length=10)</i>
+</pre><pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01996-002-html-php82.php:20:</small>
+<b>object</b>(<i>Closure</i>)[<i>3</i>]
+  <i>virtual</i> 'closure' <font color='#cc0000'>'$this->format'</font>
+  <i>public</i> 'function' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'DateTimeImmutable::format'</font> <i>(length=25)</i>
+  <i>public</i> 'this' <font color='#888a85'>=&gt;</font> 
+    <b>object</b>(<i>DateTimeImmutable</i>)[<i>2</i>]
+      <i>public</i> 'date' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'2021-07-22 00:00:00.000000'</font> <i>(length=26)</i>
+      <i>public</i> 'timezone_type' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>3</font>
+      <i>public</i> 'timezone' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'UTC'</font> <i>(length=3)</i>
+  <i>public</i> 'parameter' <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=1)</i>
+      '$format' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'&lt;required&gt;'</font> <i>(length=10)</i>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/bug01996-002-text-php81.phpt b/xdebug-3.4.5/tests/develop/bug01996-002-text-php81.phpt
new file mode 100644
index 0000000..edad631
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01996-002-text-php81.phpt
@@ -0,0 +1,93 @@
+--TEST--
+Test for bug #1996: Show wrapped callable for first class callables (PHP 8.1, text)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1,< 8.2');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=0
+xdebug.cli_color=0
+--FILE--
+<?php
+$closure = substr(...);
+var_dump($closure);
+
+
+function user_defined($a, $b)
+{
+	return substr($a, $b);
+}
+$closure = user_defined(...);
+var_dump($closure);
+
+
+$closure = DateTimeImmutable::createFromFormat(...);
+var_dump($closure);
+
+
+$dateTime = new DateTimeImmutable("2021-07-22");
+$closure = $dateTime->format(...);
+var_dump($closure);
+?>
+--EXPECTF--
+%sbug01996-002-text-php81.php:3:
+class Closure#1 (1) {
+  virtual $closure =>
+  "substr"
+  public $parameter =>
+  array(3) {
+    '$string' =>
+    string(10) "<required>"
+    '$offset' =>
+    string(10) "<required>"
+    '$length' =>
+    string(10) "<optional>"
+  }
+}
+%sbug01996-002-text-php81.php:11:
+class Closure#2 (1) {
+  virtual $closure =>
+  "user_defined"
+  public $parameter =>
+  array(2) {
+    '$a' =>
+    string(10) "<required>"
+    '$b' =>
+    string(10) "<required>"
+  }
+}
+%sbug01996-002-text-php81.php:15:
+class Closure#1 (1) {
+  virtual $closure =>
+  "DateTimeImmutable::createFromFormat"
+  public $parameter =>
+  array(3) {
+    '$format' =>
+    string(10) "<required>"
+    '$datetime' =>
+    string(10) "<required>"
+    '$timezone' =>
+    string(10) "<optional>"
+  }
+}
+%sbug01996-002-text-php81.php:20:
+class Closure#3 (2) {
+  virtual $closure =>
+  "$this->format"
+  public $this =>
+  class DateTimeImmutable#2 (3) {
+    public $date =>
+    string(26) "2021-07-22 00:00:00.000000"
+    public $timezone_type =>
+    int(3)
+    public $timezone =>
+    string(3) "UTC"
+  }
+  public $parameter =>
+  array(1) {
+    '$format' =>
+    string(10) "<required>"
+  }
+}
diff --git a/xdebug-3.4.5/tests/develop/bug01996-002-text-php82.phpt b/xdebug-3.4.5/tests/develop/bug01996-002-text-php82.phpt
new file mode 100644
index 0000000..5181c9b
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01996-002-text-php82.phpt
@@ -0,0 +1,93 @@
+--TEST--
+Test for bug #1996: Show wrapped callable for first class callables (>= PHP 8.2, text)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=0
+xdebug.cli_color=0
+--FILE--
+<?php
+$closure = substr(...);
+var_dump($closure);
+
+
+function user_defined($a, $b)
+{
+	return substr($a, $b);
+}
+$closure = user_defined(...);
+var_dump($closure);
+
+
+$closure = DateTimeImmutable::createFromFormat(...);
+var_dump($closure);
+
+
+$dateTime = new DateTimeImmutable("2021-07-22");
+$closure = $dateTime->format(...);
+var_dump($closure);
+?>
+--EXPECTF--
+%sbug01996-002-text-php82.php:3:
+class Closure#1 (2) {
+  public $function =>
+  string(6) "substr"
+  public $parameter =>
+  array(3) {
+    '$string' =>
+    string(10) "<required>"
+    '$offset' =>
+    string(10) "<required>"
+    '$length' =>
+    string(10) "<optional>"
+  }
+}
+%sbug01996-002-text-php82.php:11:
+class Closure#2 (2) {
+  public $function =>
+  string(12) "user_defined"
+  public $parameter =>
+  array(2) {
+    '$a' =>
+    string(10) "<required>"
+    '$b' =>
+    string(10) "<required>"
+  }
+}
+%sbug01996-002-text-php82.php:15:
+class Closure#1 (2) {
+  public $function =>
+  string(35) "DateTimeImmutable::createFromFormat"
+  public $parameter =>
+  array(3) {
+    '$format' =>
+    string(10) "<required>"
+    '$datetime' =>
+    string(10) "<required>"
+    '$timezone' =>
+    string(10) "<optional>"
+  }
+}
+%sbug01996-002-text-php82.php:20:
+class Closure#3 (3) {
+  public $function =>
+  string(25) "DateTimeImmutable::format"
+  public $this =>
+  class DateTimeImmutable#2 (3) {
+    public $date =>
+    string(26) "2021-07-22 00:00:00.000000"
+    public $timezone_type =>
+    int(3)
+    public $timezone =>
+    string(3) "UTC"
+  }
+  public $parameter =>
+  array(1) {
+    '$format' =>
+    string(10) "<required>"
+  }
+}
diff --git a/xdebug-3.4.5/tests/develop/bug01999-ansi.phpt b/xdebug-3.4.5/tests/develop/bug01999-ansi.phpt
new file mode 100644
index 0000000..6179844
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01999-ansi.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Test for bug #1999: Show readonly properties (PHP >= 8.1, ansi)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=0
+xdebug.cli_color=2
+--FILE--
+<?php
+class WithReadOnlyProps
+{
+	static int $static_int = 1;
+
+	function __construct(
+		public string $static_string = "two",
+		public readonly string $ro_string = "readonly-default",
+	) {}
+}
+
+$obj = new WithReadOnlyProps(ro_string: "New Value");
+
+var_dump($obj);
+?>
+--EXPECTF--
+[1m%sbug01999-ansi.php[22m:[1m14[22m:
+[1mclass[22m [31mWithReadOnlyProps[0m#1 ([32m2[0m) {
+  [32m[1mpublic[22m string[0m $static_string [0m=>[0m
+  [1mstring[22m([32m3[0m) "[31mtwo[0m"
+  [32m[1mpublic[22m readonly string[0m $ro_string [0m=>[0m
+  [1mstring[22m([32m9[0m) "[31mNew Value[0m"
+}
diff --git a/xdebug-3.4.5/tests/develop/bug01999-html.phpt b/xdebug-3.4.5/tests/develop/bug01999-html.phpt
new file mode 100644
index 0000000..b056f38
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01999-html.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test for bug #1999: Show readonly properties (PHP >= 8.1, html)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=1
+--FILE--
+<?php
+class WithReadOnlyProps
+{
+	static int $static_int = 1;
+
+	function __construct(
+		public string $static_string = "two",
+		public readonly string $ro_string = "readonly-default",
+	) {}
+}
+
+$obj = new WithReadOnlyProps(ro_string: "New Value");
+
+var_dump($obj);
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sbug01999-html.php:14:</small>
+<b>object</b>(<i>WithReadOnlyProps</i>)[<i>1</i>]
+  <i>public</i> <i>string</i> 'static_string' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'two'</font> <i>(length=3)</i>
+  <i>public</i> <i>readonly string</i> 'ro_string' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'New Value'</font> <i>(length=9)</i>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/bug01999-text.phpt b/xdebug-3.4.5/tests/develop/bug01999-text.phpt
new file mode 100644
index 0000000..b049496
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug01999-text.phpt
@@ -0,0 +1,34 @@
+--TEST--
+Test for bug #1999: Show readonly properties (PHP >= 8.1, text)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1');
+?>
+--INI--
+xdebug.mode=develop
+html_errors=0
+--FILE--
+<?php
+class WithReadOnlyProps
+{
+	static int $static_int = 1;
+
+	function __construct(
+		public string $static_string = "two",
+		public readonly string $ro_string = "readonly-default",
+	) {}
+}
+
+$obj = new WithReadOnlyProps(ro_string: "New Value");
+
+var_dump($obj);
+?>
+--EXPECTF--
+%sbug01999-text.php:14:
+class WithReadOnlyProps#1 (2) {
+  public string $static_string =>
+  string(3) "two"
+  public readonly string $ro_string =>
+  string(9) "New Value"
+}
diff --git a/xdebug-3.4.5/tests/develop/bug02041.phpt b/xdebug-3.4.5/tests/develop/bug02041.phpt
new file mode 100644
index 0000000..6d660ff
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug02041.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test for bug #2041: __debugInfo is not used for var_dump output
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+final class X
+{
+    private $secretValue;
+
+    public function __construct(string $secretValue)
+    {
+        $this->secretValue = $secretValue;
+    }
+
+    public function __debugInfo()
+    {
+        $properties = get_object_vars($this);
+        $properties['secretValue'] = empty($properties['secretValue']) ? '' : '********';
+        return $properties;
+    }
+}
+
+$a = new X('supersecret');
+var_dump($a);
+?>
+--EXPECTF--
+%sbug02041.php:%d:
+class X#%d (1) {
+  public $secretValue =>
+  string(8) "********"
+}
diff --git a/xdebug-3.4.5/tests/develop/bug02104-001.phpt b/xdebug-3.4.5/tests/develop/bug02104-001.phpt
new file mode 100644
index 0000000..bf6f9f6
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug02104-001.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #2104: SensitiveParameter attribute in stack traces
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2');
+?>
+--INI--
+html_errors=0
+xdebug.mode=develop
+--FILE--
+<?php
+function takeThemAll(#[SensitiveParameter] string $secret, string $notSecret)
+{
+	xdebug_print_function_stack();
+}
+
+function takeSplat(string $user, #[SensitiveParameter] string ...$secrets)
+{
+	xdebug_print_function_stack();
+}
+
+takeThemAll("secret password", "username");
+takeSplat("username", "hunter12", "tiger34");
+?>
+--EXPECTF--
+Xdebug: user triggered in %sbug02104-001.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug02104-001.php:0
+%w%f %w%d   2. takeThemAll($secret = '[Sensitive Parameter]', $notSecret = 'username') %sbug02104-001.php:12
+%w%f %w%d   3. xdebug_print_function_stack() %sbug02104-001.php:4
+
+
+Xdebug: user triggered in %sbug02104-001.php on line 9
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug02104-001.php:0
+%w%f %w%d   2. takeSplat($user = 'username', ...$secrets = variadic('[Sensitive Parameter]', '[Sensitive Parameter]')) %sbug02104-001.php:13
+%w%f %w%d   3. xdebug_print_function_stack() %sbug02104-001.php:9
diff --git a/xdebug-3.4.5/tests/develop/bug02104-002.phpt b/xdebug-3.4.5/tests/develop/bug02104-002.phpt
new file mode 100644
index 0000000..44a1eff
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug02104-002.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Test for bug #2104: SensitiveParameter attribute in stack traces for internal functions
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext hash; PHP >= 8.2');
+?>
+--INI--
+html_errors=0
+xdebug.mode=develop
+--FILE--
+<?php
+hash_hmac('foo', 'bar', 'baz');
+?>
+--EXPECTF--
+Fatal error: Uncaught ValueError: hash_hmac(): Argument #1 ($algo) must be a valid cryptographic hashing algorithm in %sbug02104-002.php on line 2
+
+ValueError: hash_hmac(): Argument #1 ($algo) must be a valid cryptographic hashing algorithm in %sbug02104-002.php on line 2
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug02104-002.php:0
+%w%f %w%d   2. hash_hmac($algo = 'foo', $data = 'bar', $key = '[Sensitive Parameter]') %sbug02104-002.php:2
diff --git a/xdebug-3.4.5/tests/develop/bug02121.phpt b/xdebug-3.4.5/tests/develop/bug02121.phpt
new file mode 100644
index 0000000..132a2b2
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug02121.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test for bug #2121: Xdebug does not use local independent float-to-string functions
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!win');
+if (false == setlocale(LC_ALL, "da_DK.utf8")) print "skip locale not found";
+?>
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+setlocale(LC_ALL, "da_DK.utf8");
+
+ini_set('html_errors', 0);
+
+ini_set('xdebug.cli_color', 0);
+var_dump(54.234);
+
+ini_set('xdebug.cli_color', 2);
+var_dump(54.234);
+
+ini_set('html_errors', 1);
+var_dump(54.234);
+?>
+--EXPECTF--
+%s:%d:
+double(54.234)
+[1m%s[22m:[1m%d[22m:
+[1mdouble[22m([33m54.234[0m)
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%s:%d:</small><small>float</small> <font color='#f57900'>54.234</font>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/bug02182.phpt b/xdebug-3.4.5/tests/develop/bug02182.phpt
new file mode 100644
index 0000000..fe59dc0
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug02182.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Test for bug #2182: Segfault with ArrayObject on stack
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+function z($obj) {
+throw new Exception();
+}
+
+class Z {
+public $prop = 42;
+}
+
+$obj = new ArrayObject(new Z());
+z($obj);
+?>
+--EXPECTF--
+Fatal error: Uncaught Exception in %sbug02182.php on line %d
+
+Exception:  in %sbug02182.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug02182.php:%d
+%w%f %w%d   2. z($obj = class ArrayObject { public $prop = 42 }) %sbug02182.php:%d
diff --git a/xdebug-3.4.5/tests/develop/bug02186.phpt b/xdebug-3.4.5/tests/develop/bug02186.phpt
new file mode 100644
index 0000000..35de493
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug02186.phpt
@@ -0,0 +1,38 @@
+--TEST--
+Test for bug #2186: Segfault with trampoline functions and debugger activation
+--INI--
+xdebug.mode=develop,debug
+--FILE--
+<?php
+$anon = new class() {
+	function execute() {
+		new ReflectionClass(null);
+	}
+};
+
+(new Wrapper($anon))->execute(
+	(new Wrapper($anon))->execute()
+);
+
+class Wrapper
+{
+	protected $wrapped;
+
+	function __construct($wrapped)
+	{
+		$this->wrapped = $wrapped;
+	}
+
+	public function __call($method, $arguments)
+	{
+		return call_user_func([$this->wrapped, $method]);
+	}
+}
+?>
+--AFTER--
+<?php
+echo "Done";
+?>
+--EXPECTF--
+%A
+Done
diff --git a/xdebug-3.4.5/tests/develop/bug02194-exception-warning.phpt b/xdebug-3.4.5/tests/develop/bug02194-exception-warning.phpt
new file mode 100644
index 0000000..36a38ee
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug02194-exception-warning.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Test for bug #2194: xdebug_get_function_stack(['from_exception']) warnings with incompatible options
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.auto_profile=0
+xdebug.var_display_max_depth=4
+--FILE--
+<?php
+$e = new Exception();
+
+xdebug_get_function_stack( [ 'from_exception' => $e, 'local_vars' => true ] );
+xdebug_get_function_stack( [ 'from_exception' => $e, 'params_as_values' => true ] );
+
+?>
+--EXPECTF--
+Warning: The 'local_vars' or 'params_as_values' options are ignored when used with the 'from_exception' option in %sbug02194-exception-warning.php on line 4
+
+Call Stack:%A
+
+Warning: The 'local_vars' or 'params_as_values' options are ignored when used with the 'from_exception' option in %sbug02194-exception-warning.php on line 5
+
+Call Stack:%A
diff --git a/xdebug-3.4.5/tests/develop/bug02194-noopcache.phpt b/xdebug-3.4.5/tests/develop/bug02194-noopcache.phpt
new file mode 100644
index 0000000..7c3c05c
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug02194-noopcache.phpt
@@ -0,0 +1,182 @@
+--TEST--
+Test for bug #2194: Variables with xdebug_get_function_stack (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.auto_profile=0
+xdebug.var_display_max_depth=4
+serialize_precision=-1
+--FILE--
+<?php
+class Elephpant
+{
+	function __construct(private string $title, private float $PIE) {}
+
+	function __toString()
+	{
+		return "{$this->title} loves {$this->PIE}";
+	}
+}
+
+class Error_Class
+{
+	public static function getBT($what)
+	{
+		$tmp = xdebug_get_function_stack( ['local_vars' => true, 'params_as_values' => true ] );
+		var_dump($tmp);
+
+		echo $tmp[3]['params']['what'], "\n";
+	}
+
+	public static function newError($errno = false)
+	{
+		$elephpant = new Elephpant("Bluey", M_PI);
+		$randoVar = 42;
+		return self::getBT($elephpant);
+	}
+
+}
+
+class Error_Entry
+{
+	public function __construct($base, $errno)
+	{
+		$return = Error_Class::newError(true);
+	}
+}
+
+$e = new Error_Entry(1, 2);
+?>
+--EXPECTF--
+%sbug02194-noopcache.php:17:
+array(4) {
+  [0] =>
+  array(6) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(6) "{main}"
+    'file' =>
+    string(%d) "%sbug02194-noopcache.php"
+    'line' =>
+    int(0)
+    'params' =>
+    array(0) {
+    }
+  }
+  [1] =>
+  array(9) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(11) "__construct"
+    'type' =>
+    string(7) "dynamic"
+    'class' =>
+    string(11) "Error_Entry"
+    'file' =>
+    string(%d) "%sbug02194-noopcache.php"
+    'line' =>
+    int(39)
+    'params' =>
+    array(2) {
+      'base' =>
+      int(1)
+      'errno' =>
+      int(2)
+    }
+    'variables' =>
+    array(3) {
+      'base' =>
+      int(1)
+      'errno' =>
+      int(2)
+      'return' =>
+      NULL
+    }
+  }
+  [2] =>
+  array(9) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(8) "newError"
+    'type' =>
+    string(6) "static"
+    'class' =>
+    string(11) "Error_Class"
+    'file' =>
+    string(%d) "%sbug02194-noopcache.php"
+    'line' =>
+    int(35)
+    'params' =>
+    array(1) {
+      'errno' =>
+      bool(true)
+    }
+    'variables' =>
+    array(3) {
+      'errno' =>
+      bool(true)
+      'elephpant' =>
+      class Elephpant#2 (2) {
+        private string $title =>
+        string(5) "Bluey"
+        private float $PIE =>
+        double(3.141592653589793)
+      }
+      'randoVar' =>
+      int(42)
+    }
+  }
+  [3] =>
+  array(9) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(5) "getBT"
+    'type' =>
+    string(6) "static"
+    'class' =>
+    string(11) "Error_Class"
+    'file' =>
+    string(%d) "%sbug02194-noopcache.php"
+    'line' =>
+    int(26)
+    'params' =>
+    array(1) {
+      'what' =>
+      class Elephpant#2 (2) {
+        private string $title =>
+        string(5) "Bluey"
+        private float $PIE =>
+        double(3.141592653589793)
+      }
+    }
+    'variables' =>
+    array(2) {
+      'what' =>
+      class Elephpant#2 (2) {
+        private string $title =>
+        string(5) "Bluey"
+        private float $PIE =>
+        double(3.141592653589793)
+      }
+      'tmp' =>
+      NULL
+    }
+  }
+}
+Bluey loves 3.1415926535%s
diff --git a/xdebug-3.4.5/tests/develop/bug02195-exception-noopcache.phpt b/xdebug-3.4.5/tests/develop/bug02195-exception-noopcache.phpt
new file mode 100644
index 0000000..c8b2b63
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug02195-exception-noopcache.phpt
@@ -0,0 +1,185 @@
+--TEST--
+Test for bug #2195: xdebug_get_function_stack(['from_exception']) (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.auto_profile=0
+xdebug.var_display_max_depth=4
+--FILE--
+<?php
+class Handlers
+{
+	function __construct(private string $title, private float $PIE) {}
+
+	static function exceptionHandler($exception)
+	{
+		var_dump( xdebug_get_function_stack( [ 'local_vars' => true ] ), xdebug_get_function_stack( [ 'from_exception' => $exception ] ) );
+	}
+}
+
+class Elephpant
+{
+	function __construct(private string $title, private string $PIE) {}
+}
+
+class Error_Class
+{
+	public static function newError($errno = false)
+	{
+		$elephpant = new Elephpant("Bluey", M_PI);
+		$randoVar = 42;
+
+		throw new Exception();
+	}
+
+}
+
+class Error_Entry
+{
+	public function __construct($base, $errno)
+	{
+		$return = Error_Class::newError(true);
+	}
+}
+
+set_exception_handler(['Handlers', 'exceptionHandler']);
+$e = new Error_Entry(1, 2);
+
+?>
+--EXPECTF--
+%sbug02195-exception-noopcache.php:8:
+array(1) {
+  [0] =>
+  array(9) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(16) "exceptionHandler"
+    'type' =>
+    string(6) "static"
+    'class' =>
+    string(8) "Handlers"
+    'file' =>
+    string(%d) "%sbug02195-exception-noopcache.php"
+    'line' =>
+    int(0)
+    'params' =>
+    array(1) {
+      'exception' =>
+      string(%d) "class Exception { %s
+    }
+    'variables' =>
+    array(1) {
+      'exception' =>
+      class Exception#3 (7) {
+        protected $message =>
+        string(0) ""
+        private %S$string =>
+        string(0) ""
+        protected $code =>
+        int(0)
+        protected %S$file =>
+        string(%d) "%sbug02195-exception-noopcache.php"
+        protected %S$line =>
+        int(24)
+        private array $trace =>%A
+        private ?Throwable $previous =>
+        NULL
+      }
+    }
+  }
+}
+%sbug02195-exception-noopcache.php:8:
+array(3) {
+  [0] =>
+  array(6) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(6) "{main}"
+    'file' =>
+    string(%d) "%sbug02195-exception-noopcache.php"
+    'line' =>
+    int(0)
+    'params' =>
+    array(0) {
+    }
+  }
+  [1] =>
+  array(9) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(11) "__construct"
+    'type' =>
+    string(7) "dynamic"
+    'class' =>
+    string(11) "Error_Entry"
+    'file' =>
+    string(%d) "%sbug02195-exception-noopcache.php"
+    'line' =>
+    int(38)
+    'params' =>
+    array(2) {
+      'base' =>
+      int(1)
+      'errno' =>
+      int(2)
+    }
+    'variables' =>
+    array(3) {
+      'base' =>
+      int(1)
+      'errno' =>
+      int(2)
+      'return' =>
+      NULL
+    }
+  }
+  [2] =>
+  array(9) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(8) "newError"
+    'type' =>
+    string(6) "static"
+    'class' =>
+    string(11) "Error_Class"
+    'file' =>
+    string(%d) "%sbug02195-exception-noopcache.php"
+    'line' =>
+    int(33)
+    'params' =>
+    array(1) {
+      'errno' =>
+      bool(true)
+    }
+    'variables' =>
+    array(3) {
+      'errno' =>
+      bool(true)
+      'elephpant' =>
+      class Elephpant#%d (2) {
+        private string $title =>
+        string(5) "Bluey"
+        private string $PIE =>
+        string(%d) "3.14159265%d"
+      }
+      'randoVar' =>
+      int(42)
+    }
+  }
+}
diff --git a/xdebug-3.4.5/tests/develop/bug02195-exception-opcache.phpt b/xdebug-3.4.5/tests/develop/bug02195-exception-opcache.phpt
new file mode 100644
index 0000000..bab10d6
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug02195-exception-opcache.phpt
@@ -0,0 +1,186 @@
+--TEST--
+Test for bug #2195: xdebug_get_function_stack(['from_exception']) (opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('opcache');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.auto_profile=0
+xdebug.var_display_max_depth=4
+--FILE--
+<?php
+class Handlers
+{
+	function __construct(private string $title, private float $PIE) {}
+
+	static function exceptionHandler($exception)
+	{
+		var_dump( xdebug_get_function_stack( [ 'local_vars' => true ] ), xdebug_get_function_stack( [ 'from_exception' => $exception ] ) );
+	}
+}
+
+class Elephpant
+{
+	function __construct(private string $title, private string $PIE) {}
+}
+
+class Error_Class
+{
+	public static function newError($errno = false)
+	{
+		$elephpant = new Elephpant("Bluey", M_PI);
+		$randoVar = 42;
+
+		throw new Exception();
+	}
+
+}
+
+class Error_Entry
+{
+	public function __construct($base, $errno)
+	{
+		$return = Error_Class::newError(true);
+	}
+}
+
+set_exception_handler(['Handlers', 'exceptionHandler']);
+$e = new Error_Entry(1, 2);
+
+?>
+--EXPECTF--
+%sbug02195-exception-opcache.php:8:
+array(1) {
+  [0] =>
+  array(9) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(16) "exceptionHandler"
+    'type' =>
+    string(6) "static"
+    'class' =>
+    string(8) "Handlers"
+    'file' =>
+    string(%d) "%sbug02195-exception-opcache.php"
+    'line' =>
+    int(0)
+    'params' =>
+    array(1) {
+      'exception' =>
+      string(%d) "class Exception { %s
+    }
+    'variables' =>
+    array(1) {
+      'exception' =>
+      class Exception#3 (7) {
+        protected $message =>
+        string(0) ""
+        private %S$string =>
+        string(0) ""
+        protected $code =>
+        int(0)
+        protected %S$file =>
+        string(%d) "%sbug02195-exception-opcache.php"
+        protected %S$line =>
+        int(24)
+        private array $trace =>
+        array(2) {
+          ...
+        }
+        private ?Throwable $previous =>
+        NULL
+      }
+    }
+  }
+}
+%sbug02195-exception-opcache.php:8:
+array(3) {
+  [0] =>
+  array(6) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(6) "{main}"
+    'file' =>
+    string(%d) "%sbug02195-exception-opcache.php"
+    'line' =>
+    int(0)
+    'params' =>
+    array(0) {
+    }
+  }
+  [1] =>
+  array(9) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(11) "__construct"
+    'type' =>
+    string(7) "dynamic"
+    'class' =>
+    string(11) "Error_Entry"
+    'file' =>
+    string(%d) "%sbug02195-exception-opcache.php"
+    'line' =>
+    int(38)
+    'params' =>
+    array(2) {
+      'base' =>
+      int(1)
+      'errno' =>
+      int(2)
+    }
+    'variables' =>
+    array(3) {
+      'base' =>
+      int(1)
+      'errno' =>
+      int(2)
+      'return' =>
+      NULL
+    }
+  }
+  [2] =>
+  array(9) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(8) "newError"
+    'type' =>
+    string(6) "static"
+    'class' =>
+    string(11) "Error_Class"
+    'file' =>
+    string(%d) "%sbug02195-exception-opcache.php"
+    'line' =>
+    int(33)
+    'params' =>
+    array(1) {
+      'errno' =>
+      bool(true)
+    }
+    'variables' =>
+    array(2) {
+      'errno' =>
+      bool(true)
+      'elephpant' =>
+      class Elephpant#%d (2) {
+        private string $title =>
+        string(5) "Bluey"
+        private string $PIE =>
+        string(%d) "3.14159265%d"
+      }
+    }
+  }
+}
diff --git a/xdebug-3.4.5/tests/develop/bug02208.phpt b/xdebug-3.4.5/tests/develop/bug02208.phpt
new file mode 100644
index 0000000..0b379cd
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug02208.phpt
@@ -0,0 +1,64 @@
+--TEST--
+Test for bug #2208: Superfluous ... (three omission dots) in var_dump()
+--INI--
+xdebug.mode=develop
+xdebug.var_display_max_depth=3
+--FILE--
+<?php
+$a = array(array(array(array())));
+
+$o = new StdClass;
+$o->one = new StdClass;
+$o->one->two = new StdClass;
+$o->one->two->three = new StdClass;
+
+ini_set('html_errors', 0);
+var_dump($a, $o);
+
+ini_set('html_errors', 1);
+var_dump($a, $o);
+?>
+--EXPECTF--
+%s:%d:
+array(1) {
+  [0] =>
+  array(1) {
+    [0] =>
+    array(1) {
+      [0] =>
+      array(0) {
+      }
+    }
+  }
+}
+%s:%d:
+class stdClass#1 (1) {
+  public $one =>
+  class stdClass#2 (1) {
+    public $two =>
+    class stdClass#3 (1) {
+      public $three =>
+      class stdClass#4 (0) {
+      }
+    }
+  }
+}
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%s:%d:</small>
+<b>array</b> <i>(size=1)</i>
+  0 <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=1)</i>
+      0 <font color='#888a85'>=&gt;</font> 
+        <b>array</b> <i>(size=1)</i>
+          0 <font color='#888a85'>=&gt;</font> 
+            <b>array</b> <i>(size=0)</i>
+</pre><pre class='xdebug-var-dump' dir='ltr'>
+<small>%s:%d:</small>
+<b>object</b>(<i>stdClass</i>)[<i>1</i>]
+  <i>public</i> 'one' <font color='#888a85'>=&gt;</font> 
+    <b>object</b>(<i>stdClass</i>)[<i>2</i>]
+      <i>public</i> 'two' <font color='#888a85'>=&gt;</font> 
+        <b>object</b>(<i>stdClass</i>)[<i>3</i>]
+          <i>public</i> 'three' <font color='#888a85'>=&gt;</font> 
+            <b>object</b>(<i>stdClass</i>)[<i>4</i>]
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/bug02226-exceptions.phpt b/xdebug-3.4.5/tests/develop/bug02226-exceptions.phpt
new file mode 100644
index 0000000..570b3df
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug02226-exceptions.phpt
@@ -0,0 +1,44 @@
+--TEST--
+Test for bug #2195: xdebug_get_function_stack(['from_exception']) (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.auto_profile=0
+xdebug.var_display_max_depth=4
+--FILE--
+<?php
+class Handlers
+{
+	function __construct(private string $title, private float $PIE) {}
+
+	static function exceptionHandler($exception)
+	{
+		echo "In exceptionHandler:\n";
+		$stack = xdebug_get_function_stack( [ 'from_exception' => $exception ] );
+		echo "\tThere are ", count( $stack ), " stack frames\n";
+	}
+}
+
+class Error_Entry
+{
+	public function __construct($base, $errno)
+	{
+		try {
+			throw new Exception("Numbers: {$base}/{$errno}\n");
+		} catch (Throwable $t) {
+		}
+		throw new Exception("Second: {$base}/{$errno}\n");
+	}
+}
+
+set_exception_handler(['Handlers', 'exceptionHandler']);
+$e = new Error_Entry(1, 2);
+
+?>
+--EXPECTF--
+In exceptionHandler:
+	There are 2 stack frames
diff --git a/xdebug-3.4.5/tests/develop/bug02264.phpt b/xdebug-3.4.5/tests/develop/bug02264.phpt
new file mode 100644
index 0000000..a53b94e
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug02264.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Test for bug #2264: Rounding of fractional numbers
+--INI--
+xdebug.mode=off
+--FILE--
+<?php
+$s = 342_500;
+$s *= 0.7;
+
+var_dump($s);
+
+xdebug_var_dump($s);
+?>
+--EXPECTF--
+float(239749.99999999997)
+%sbug02264.php:%d:
+double(239749.99999999997)
diff --git a/xdebug-3.4.5/tests/develop/bug02339-index.inc b/xdebug-3.4.5/tests/develop/bug02339-index.inc
new file mode 100644
index 0000000..d7d522c
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug02339-index.inc
@@ -0,0 +1,6 @@
+<?php
+$var_i  = "1234567890123456789012";
+$var_i .= "3";
+
+require_once __DIR__ . '/bug02339-second-file.inc';
+?>
diff --git a/xdebug-3.4.5/tests/develop/bug02339-second-file.inc b/xdebug-3.4.5/tests/develop/bug02339-second-file.inc
new file mode 100644
index 0000000..0cc0d82
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug02339-second-file.inc
@@ -0,0 +1,4 @@
+<?php
+$var_i = "4";
+throw new Exception();
+?>
diff --git a/xdebug-3.4.5/tests/develop/bug02339.phpt b/xdebug-3.4.5/tests/develop/bug02339.phpt
new file mode 100644
index 0000000..7b9d9c4
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug02339.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Test for bug #2339: Trying to throw an exception can cause a zend_mm_heap corrupted error under specific circumstances
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+require_once __DIR__ . '/bug02339-index.inc';
+?>
+--EXPECTF--
+Fatal error: Uncaught Exception in %s
+
+Exception:  in %sbug02339-second-file.inc on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug02339.php:0
+%w%f %w%d   2. require_once('%sbug02339-index.inc') %sbug02339.php:%d
+%w%f %w%d   3. require_once('%sbug02339-second-file.inc') %sbug02339-index.inc:%d
diff --git a/xdebug-3.4.5/tests/develop/bug02352-php80.phpt b/xdebug-3.4.5/tests/develop/bug02352-php80.phpt
new file mode 100644
index 0000000..6c2164c
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug02352-php80.phpt
@@ -0,0 +1,41 @@
+--TEST--
+Test for bug #2352: Crash with storing exception traces and __invoke (< PHP 8.1)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.1');
+?>
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+class RedisProxy {
+	function __construct(public Closure $c)
+	{
+	}
+
+	function __call($method, $args)
+	{
+		$this->c->__invoke($args);
+	}
+}
+
+$c = function(array $args)
+{
+	throw new Exception();
+};
+
+$rp = new RedisProxy($c);
+$rp->isConnected();
+?>
+--EXPECTF--
+Fatal error: Uncaught Exception in %sbug02352-php80.php on line 15
+
+Exception:  in %sbug02352-php80.php on line 15
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug02352-php80.php:0
+%w%f %w%d   2. RedisProxy->isConnected() %sbug02352-php80.php:19
+%w%f %w%d   3. RedisProxy->__call($method = 'isConnected', $args = []) %sbug02352-php80.php:19
+%w%f %w%d   4. Closure->__invoke(%s = []) %sbug02352-php80.php:9
+%w%f %w%d   5. {closure:%sbug02352-php80.php:13-16}($args = []) %sbug02352-php80.php:9
diff --git a/xdebug-3.4.5/tests/develop/bug02352-php81.phpt b/xdebug-3.4.5/tests/develop/bug02352-php81.phpt
new file mode 100644
index 0000000..feadb7c
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug02352-php81.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #2352: Crash with storing exception traces and __invoke (= PHP 8.1)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1, < 8.2');
+?>
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+class RedisProxy {
+	function __construct(public Closure $c)
+	{
+	}
+
+	function __call($method, $args)
+	{
+		$this->c->__invoke($args);
+	}
+}
+
+$c = function(array $args)
+{
+	throw new Exception();
+};
+
+$rp = new RedisProxy($c);
+$rp->isConnected();
+?>
+--EXPECTF--
+Fatal error: Uncaught Exception in %sbug02352-php81.php on line 15
+
+Exception:  in %sbug02352-php81.php on line 15
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug02352-php81.php:0
+%w%f %w%d   2. RedisProxy->__call($method = 'isConnected', $args = []) %sbug02352-php81.php:19
+%w%f %w%d   3. Closure->__invoke(%s = []) %sbug02352-php81.php:9
+%w%f %w%d   4. {closure:%sbug02352-php81.php:13-16}($args = []) %sbug02352-php81.php:9
diff --git a/xdebug-3.4.5/tests/develop/bug02352-php82.phpt b/xdebug-3.4.5/tests/develop/bug02352-php82.phpt
new file mode 100644
index 0000000..44813f4
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug02352-php82.phpt
@@ -0,0 +1,39 @@
+--TEST--
+Test for bug #2352: Crash with storing exception traces and __invoke (>= PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2');
+?>
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+class RedisProxy {
+	function __construct(public Closure $c)
+	{
+	}
+
+	function __call($method, $args)
+	{
+		$this->c->__invoke($args);
+	}
+}
+
+$c = function(array $args)
+{
+	throw new Exception();
+};
+
+$rp = new RedisProxy($c);
+$rp->isConnected();
+?>
+--EXPECTF--
+Fatal error: Uncaught Exception in %sbug02352-php82.php on line 15
+
+Exception:  in %sbug02352-php82.php on line 15
+
+Call Stack:
+%w%f %w%d   1. {main}() %sbug02352-php82.php:0
+%w%f %w%d   2. RedisProxy->__call($method = 'isConnected', $args = []) %sbug02352-php82.php:19
+%w%f %w%d   3. {closure:%sbug02352-php82.php:13-16}($args = []) %sbug02352-php82.php:9
diff --git a/xdebug-3.4.5/tests/develop/bug02354.phpt b/xdebug-3.4.5/tests/develop/bug02354.phpt
new file mode 100644
index 0000000..5760c5c
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/bug02354.phpt
@@ -0,0 +1,34 @@
+--TEST--
+Test for bug #2354: The __invoke frame in call stacks don't have the argument name in the trace (< PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.1');
+?>
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+class RedisProxy {
+	function __construct(public Closure $c)
+	{
+	}
+
+	function __call($method, $args)
+	{
+		$this->c->__invoke($args);
+	}
+}
+
+$c = function(array $args)
+{
+	throw new Exception();
+};
+
+$rp = new RedisProxy($c);
+$rp->isConnected();
+?>
+--EXPECTF--
+%A
+%w%f %w%d   %d. Closure->__invoke($args = []) %sbug02354.php:9
+%A
diff --git a/xdebug-3.4.5/tests/develop/dump-superglobal.phpt b/xdebug-3.4.5/tests/develop/dump-superglobal.phpt
new file mode 100644
index 0000000..45dc586
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/dump-superglobal.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test for dumping of super globals
+--INI--
+xdebug.mode=develop
+xdebug.dump_globals=1
+xdebug.dump_once=0
+xdebug.dump.SERVER=argc
+xdebug.dump.GET=
+--FILE--
+<?php
+trigger_error('foo');
+echo "-------------\n";
+
+ini_set('xdebug.dump.SERVER', '');
+trigger_error('foo');
+echo "-------------\n";
+
+ini_set('xdebug.dump.SERVER', 'argc,argv');
+trigger_error('foo');
+?>
+--EXPECTF--
+Notice: foo in %sdump-superglobal.php on line 2
+
+Call Stack:
+%w%f %w%d   1. {main}() %sdump-superglobal.php:0
+%w%f %w%d   2. trigger_error($message = 'foo') %sdump-superglobal.php:2
+
+Dump $_SERVER
+   $_SERVER['argc'] = 1
+-------------
+
+Notice: foo in %sdump-superglobal.php on line 6
+
+Call Stack:
+%w%f %w%d   1. {main}() %sdump-superglobal.php:0
+%w%f %w%d   2. trigger_error($message = 'foo') %sdump-superglobal.php:6
+
+-------------
+
+Notice: foo in %sdump-superglobal.php on line 10
+
+Call Stack:
+%w%f %w%d   1. {main}() %sdump-superglobal.php:0
+%w%f %w%d   2. trigger_error($message = 'foo') %sdump-superglobal.php:10
+
+Dump $_SERVER
+   $_SERVER['argc'] = 1
+   $_SERVER['argv'] = [0 => '%sdump-superglobal.php']
diff --git a/xdebug-3.4.5/tests/develop/error_collection-001.phpt b/xdebug-3.4.5/tests/develop/error_collection-001.phpt
new file mode 100644
index 0000000..c5b8128
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/error_collection-001.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Test for collection errors (1)
+--INI--
+display_errors=1
+xdebug.mode=develop
+html_errors=0
+--FILE--
+<?php
+xdebug_start_error_collection();
+
+trigger_error("An error", E_USER_WARNING);
+
+echo xdebug_get_collected_errors()[0];
+?>
+--EXPECTF--
+Warning: An error in %serror_collection-001.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %serror_collection-001.php:0
+%w%f %w%d   2. trigger_error($message = 'An error', $error_%s = 512) %A
diff --git a/xdebug-3.4.5/tests/develop/error_collection-002.phpt b/xdebug-3.4.5/tests/develop/error_collection-002.phpt
new file mode 100644
index 0000000..dd51abb
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/error_collection-002.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Test for collection errors (2) (fatal error)
+--INI--
+error_log=NULL
+xdebug.mode=develop
+--FILE--
+<?php
+xdebug_start_error_collection();
+
+trigger_error("An error", E_USER_ERROR);
+
+echo "Errors\n";
+var_dump( xdebug_get_collected_errors() );
+?>
+--EXPECTF--
+Fatal error: An error in %serror_collection-002.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %serror_collection-002.php:0
+%w%f %w%d   2. trigger_error($message = 'An error', $error_%s = 256) %serror_collection-002.php:4
diff --git a/xdebug-3.4.5/tests/develop/error_collection-003.phpt b/xdebug-3.4.5/tests/develop/error_collection-003.phpt
new file mode 100644
index 0000000..36866bf
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/error_collection-003.phpt
@@ -0,0 +1,36 @@
+--TEST--
+Test for collection errors (3) - HTML errors
+--INI--
+display_errors=1
+xdebug.mode=develop
+html_errors=1
+xdebug.file_link_format=xdebug://%f@%l
+xdebug.filename_format=
+xdebug.collect_assignments=1
+xdebug.collect_return=1
+xdebug.var_display_max_data=-1
+--FILE--
+<?php
+xdebug_start_error_collection();
+
+trigger_error("An error", E_USER_WARNING);
+
+echo "Errors\n";
+ini_set('html_errors', 0);
+var_dump( xdebug_get_collected_errors() );
+?>
+--EXPECTF--
+Errors
+%serror_collection-003.php:8:
+array(1) {
+  [0] =>
+  string(%d) "<br />
+<font size='1'><table class='xdebug-error xe-warning' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Warning: An error in <a style='color: black' href='xdebug://%serror_collection-003.php@4'>%serror_collection-003.php</a> on line <i>4</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%serror_collection-003.php' bgcolor='#eeeeec'><a style='color: black' href='xdebug://%serror_collection-003.php@0'>...%serror_collection-003.php<b>:</b>0</a></td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.trigger-error.html' target='_new'>trigger_error</a>( <span>$message = </span><span>&#39;An error&#39;</span>, <span>$error_%s = </span><span>512</span> )</td><td title='%serror_collection-003.php' bgcolor='#eeeeec'><a style='color: black' href='xdebug://%serror_collection-003.php@4'>...%serror_collection-003.php<b>:</b>4</a></td></tr>
+</table></font>
+"
+}
diff --git a/xdebug-3.4.5/tests/develop/errorlog_variadic.phpt b/xdebug-3.4.5/tests/develop/errorlog_variadic.phpt
new file mode 100644
index 0000000..6159b3f
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/errorlog_variadic.phpt
@@ -0,0 +1,39 @@
+--TEST--
+Test for stack traces with variadics (error_log)
+--INI--
+xdebug.mode=develop
+xdebug.trace_format=0
+xdebug.dump_globals=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.force_error_reporting=0
+log_errors=1
+error_log=
+display_errors=0
+--FILE--
+<?php
+function foo( $a, ...$b )
+{
+	trigger_error( 'notice' );
+}
+
+foo( 42 );
+foo( 1, false );
+foo( "foo", "bar", 3.1415 );
+?>
+--EXPECTF--
+PHP Notice:  notice in %serrorlog_variadic.php on line 4
+PHP Stack trace:
+PHP   1. {main}() %serrorlog_variadic.php:0
+PHP   2. foo($a = 42) %serrorlog_variadic.php:7
+PHP   3. trigger_error($message = 'notice') %serrorlog_variadic.php:4
+PHP Notice:  notice in %serrorlog_variadic.php on line 4
+PHP Stack trace:
+PHP   1. {main}() %serrorlog_variadic.php:0
+PHP   2. foo($a = 1, ...$b = variadic(FALSE)) %serrorlog_variadic.php:8
+PHP   3. trigger_error($message = 'notice') %serrorlog_variadic.php:4
+PHP Notice:  notice in %serrorlog_variadic.php on line 4
+PHP Stack trace:
+PHP   1. {main}() %serrorlog_variadic.php:0
+PHP   2. foo($a = 'foo', ...$b = variadic('bar', 3.1415)) %serrorlog_variadic.php:9
+PHP   3. trigger_error($message = 'notice') %serrorlog_variadic.php:4
diff --git a/xdebug-3.4.5/tests/develop/exception.phpt b/xdebug-3.4.5/tests/develop/exception.phpt
new file mode 100644
index 0000000..c72a9ed
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/exception.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Test to see if exceptions still work with Xdebug's hook enabled
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+
+class FooException extends Exception {
+}
+
+function a() {
+	try {
+		throw new FooException('foo');
+	} catch (Exception $e) {
+		echo "Caught\n";
+	}
+}
+
+a();
+?>
+--EXPECT--
+Caught
diff --git a/xdebug-3.4.5/tests/develop/force_display_errors.phpt b/xdebug-3.4.5/tests/develop/force_display_errors.phpt
new file mode 100644
index 0000000..ffc6daa
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/force_display_errors.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Test for xdebug.force_display_errors
+--INI--
+xdebug.mode=develop
+display_errors=0
+log_errors=0
+xdebug.force_display_errors=1
+error_reporting=-1
+--FILE--
+<?php
+ini_set('display_errors', 0);
+
+echo "Error:\n";
+trigger_error('two', E_USER_NOTICE);
+?>
+--EXPECTF--
+Error:
+
+Notice: two in %sforce_display_errors.php on line 5
+
+Call Stack:
+%w%f %w%d   1. {main}() %sforce_display_errors.php:0
+%w%f %w%d   2. trigger_error($message = 'two', $error_%s = 1024) %sforce_display_errors.php:5
diff --git a/xdebug-3.4.5/tests/develop/force_error_reporting-display_errors-001.phpt b/xdebug-3.4.5/tests/develop/force_error_reporting-display_errors-001.phpt
new file mode 100644
index 0000000..15df7c4
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/force_error_reporting-display_errors-001.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Test for xdebug.force_error_reporting (display_errors) [1]
+--INI--
+xdebug.mode=develop
+display_errors=1
+log_errors=0
+xdebug.force_error_reporting=E_USER_WARNING
+--FILE--
+<?php
+ini_set('error_reporting', 0);
+
+trigger_error('two', E_USER_WARNING);
+trigger_error('three');
+strlen();
+?>
+--EXPECTF--
+Warning: two in %sforce_error_reporting-display_errors-001.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %sforce_error_reporting-display_errors-001.php:0
+%w%f %w%d   2. trigger_error($message = 'two', $error_%s = 512) %sforce_error_reporting-display_errors-001.php:4
diff --git a/xdebug-3.4.5/tests/develop/force_error_reporting-display_errors-002.phpt b/xdebug-3.4.5/tests/develop/force_error_reporting-display_errors-002.phpt
new file mode 100644
index 0000000..77dcaac
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/force_error_reporting-display_errors-002.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Test for xdebug.force_error_reporting (display_errors) [2]
+--INI--
+xdebug.mode=develop
+display_errors=1
+log_errors=0
+xdebug.force_error_reporting=E_USER_WARNING|E_WARNING
+--FILE--
+<?php
+ini_set('error_reporting', 0);
+
+trigger_error('four', E_USER_WARNING);
+trigger_error('five');
+hex2bin('4');
+?>
+--EXPECTF--
+Warning: four in %sforce_error_reporting-display_errors-002.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %sforce_error_reporting-display_errors-002.php:0
+%w%f %w%d   2. trigger_error($message = 'four', $error_%s = 512) %sforce_error_reporting-display_errors-002.php:4
+
+
+Warning: %s in %sforce_error_reporting-display_errors-002.php on line 6
+
+Call Stack:
+%w%f %w%d   1. {main}() %sforce_error_reporting-display_errors-002.php:0
+%w%f %w%d   2. hex2bin($%s = '4') %sforce_error_reporting-display_errors-002.php:6
diff --git a/xdebug-3.4.5/tests/develop/force_error_reporting-display_errors-003.phpt b/xdebug-3.4.5/tests/develop/force_error_reporting-display_errors-003.phpt
new file mode 100644
index 0000000..4aae333
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/force_error_reporting-display_errors-003.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Test for xdebug.force_error_reporting (display_errors) [3]
+--INI--
+xdebug.mode=develop
+display_errors=1
+log_errors=0
+xdebug.force_error_reporting=E_ALL
+--FILE--
+<?php
+ini_set('error_reporting', 0);
+
+trigger_error('six', E_USER_WARNING);
+trigger_error('seven');
+hex2bin('4');
+?>
+--EXPECTF--
+Warning: six in %sforce_error_reporting-display_errors-003.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %sforce_error_reporting-display_errors-003.php:0
+%w%f %w%d   2. trigger_error($message = 'six', $error_%s = 512) %sforce_error_reporting-display_errors-003.php:4
+
+
+Notice: seven in %sforce_error_reporting-display_errors-003.php on line 5
+
+Call Stack:
+%w%f %w%d   1. {main}() %sforce_error_reporting-display_errors-003.php:0
+%w%f %w%d   2. trigger_error($message = 'seven') %sforce_error_reporting-display_errors-003.php:5
+
+
+Warning: %s in %sforce_error_reporting-display_errors-003.php on line 6
+
+Call Stack:
+%w%f %w%d   1. {main}() %sforce_error_reporting-display_errors-003.php:0
+%w%f %w%d   2. hex2bin($%s = '4') %sforce_error_reporting-display_errors-003.php:6
diff --git a/xdebug-3.4.5/tests/develop/force_error_reporting-log_errors-001.phpt b/xdebug-3.4.5/tests/develop/force_error_reporting-log_errors-001.phpt
new file mode 100644
index 0000000..e3f7d6c
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/force_error_reporting-log_errors-001.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Test for xdebug.force_error_reporting (log_errors) [1]
+--INI--
+xdebug.mode=develop
+display_errors=0
+log_errors=1
+error_log=
+xdebug.force_display_errors=0
+xdebug.force_error_reporting=E_USER_WARNING
+--FILE--
+<?php
+ini_set('error_reporting', 0);
+
+trigger_error('two', E_USER_WARNING);
+trigger_error('three');
+strlen();
+?>
+--EXPECTF--
+PHP Warning:  two in %sforce_error_reporting-log_errors-001.php on line 4
+PHP Stack trace:
+PHP   1. {main}() %sforce_error_reporting-log_errors-001.php:0
+PHP   2. trigger_error($message = 'two', $error_%s = 512) %sforce_error_reporting-log_errors-001.php:4
diff --git a/xdebug-3.4.5/tests/develop/force_error_reporting-log_errors-002.phpt b/xdebug-3.4.5/tests/develop/force_error_reporting-log_errors-002.phpt
new file mode 100644
index 0000000..f7a2e64
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/force_error_reporting-log_errors-002.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Test for xdebug.force_error_reporting (log_errors) [2]
+--INI--
+xdebug.mode=develop
+display_errors=0
+log_errors=1
+error_log=
+xdebug.force_display_errors=0
+xdebug.force_error_reporting=E_USER_WARNING|E_WARNING
+--FILE--
+<?php
+ini_set('error_reporting', 0);
+
+trigger_error('four', E_USER_WARNING);
+trigger_error('five');
+hex2bin('4');
+?>
+--EXPECTF--
+PHP Warning:  four in %sforce_error_reporting-log_errors-002.php on line 4
+PHP Stack trace:
+PHP   1. {main}() %sforce_error_reporting-log_errors-002.php:0
+PHP   2. trigger_error($message = 'four', $error_%s = 512) %sforce_error_reporting-log_errors-002.php:4
+PHP Warning:  %s in %sforce_error_reporting-log_errors-002.php on line 6
+PHP Stack trace:
+PHP   1. {main}() %sforce_error_reporting-log_errors-002.php:0
+PHP   2. hex2bin($%s = '4') %sforce_error_reporting-log_errors-002.php:6
diff --git a/xdebug-3.4.5/tests/develop/force_error_reporting-log_errors-003.phpt b/xdebug-3.4.5/tests/develop/force_error_reporting-log_errors-003.phpt
new file mode 100644
index 0000000..1ef4944
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/force_error_reporting-log_errors-003.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Test for xdebug.force_error_reporting (log_errors) [3]
+--INI--
+xdebug.mode=develop
+display_errors=0
+log_errors=1
+error_log=
+xdebug.force_display_errors=0
+xdebug.force_error_reporting=E_ALL
+--FILE--
+<?php
+ini_set('error_reporting', 0);
+
+trigger_error('six', E_USER_WARNING);
+trigger_error('seven');
+hex2bin('4');
+?>
+--EXPECTF--
+PHP Warning:  six in %sforce_error_reporting-log_errors-003.php on line 4
+PHP Stack trace:
+PHP   1. {main}() %sforce_error_reporting-log_errors-003.php:0
+PHP   2. trigger_error($message = 'six', $error_%s = 512) %sforce_error_reporting-log_errors-003.php:4
+PHP Notice:  seven in %sforce_error_reporting-log_errors-003.php on line 5
+PHP Stack trace:
+PHP   1. {main}() %sforce_error_reporting-log_errors-003.php:0
+PHP   2. trigger_error($message = 'seven') %sforce_error_reporting-log_errors-003.php:5
+PHP Warning:  %s in %sforce_error_reporting-log_errors-003.php on line 6
+PHP Stack trace:
+PHP   1. {main}() %sforce_error_reporting-log_errors-003.php:0
+PHP   2. hex2bin($%s = '4') %sforce_error_reporting-log_errors-003.php:6
diff --git a/xdebug-3.4.5/tests/develop/local_vars_in_error.phpt b/xdebug-3.4.5/tests/develop/local_vars_in_error.phpt
new file mode 100644
index 0000000..4a06159
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/local_vars_in_error.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test with showing local variables on errors
+--INI--
+xdebug.mode=develop
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.show_local_vars=1
+xdebug.show_error_trace=0
+--FILE--
+<?php
+	function a($a,$b) {
+		$c = array($a, $b * $b);
+		$d = new stdClass;
+		do_f($a, $b, $c, $d);
+	}
+
+	a(5, 6);
+?>
+--EXPECTF--
+Fatal error: Uncaught Error: Call to undefined function do_f() in %slocal_vars_in_error.php on line 5
+
+Error: Call to undefined function do_f() in %slocal_vars_in_error.php on line 5
+
+Call Stack:
+%w%f %w%d   1. {main}() %slocal_vars_in_error.php:0
+%w%f %w%d   2. a($a = 5, $b = 6) %slocal_vars_in_error.php:8
+
+
+Variables in local scope (#2):
+  $a = 5
+  $b = 6
+  $c = [0 => 5, 1 => 36]
+  $d = class stdClass {  }
diff --git a/xdebug-3.4.5/tests/develop/max_nesting_level-001.phpt b/xdebug-3.4.5/tests/develop/max_nesting_level-001.phpt
new file mode 100644
index 0000000..2295c5e
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/max_nesting_level-001.phpt
@@ -0,0 +1,149 @@
+--TEST--
+Test for xdebug.max_nesting_level (default) [1]
+--INI--
+xdebug.max_stack_frames=-1
+xdebug.mode=develop
+xdebug.show_local_vars=0
+xdebug.max_nesting_level=128
+--FILE--
+<?php
+function foo($a)
+{
+	foo($a+1);
+}
+foo(0);
+?>
+--EXPECTF--
+Fatal error: Uncaught Error: Xdebug has detected a possible infinite loop, and aborted your script with a stack depth of '128' frames in %smax_nesting_level-001.php on line 2
+
+Error: Xdebug has detected a possible infinite loop, and aborted your script with a stack depth of '128' frames in %smax_nesting_level-001.php on line 2
+
+Call Stack:
+%w%f %w%d   1. {main}() %smax_nesting_level-001.php:0
+%w%f %w%d   2. foo($a = 0) %smax_nesting_level-001.php:6
+%w%f %w%d   3. foo($a = 1) %smax_nesting_level-001.php:4
+%w%f %w%d   4. foo($a = 2) %smax_nesting_level-001.php:4
+%w%f %w%d   5. foo($a = 3) %smax_nesting_level-001.php:4
+%w%f %w%d   6. foo($a = 4) %smax_nesting_level-001.php:4
+%w%f %w%d   7. foo($a = 5) %smax_nesting_level-001.php:4
+%w%f %w%d   8. foo($a = 6) %smax_nesting_level-001.php:4
+%w%f %w%d   9. foo($a = 7) %smax_nesting_level-001.php:4
+%w%f %w%d  10. foo($a = 8) %smax_nesting_level-001.php:4
+%w%f %w%d  11. foo($a = 9) %smax_nesting_level-001.php:4
+%w%f %w%d  12. foo($a = 10) %smax_nesting_level-001.php:4
+%w%f %w%d  13. foo($a = 11) %smax_nesting_level-001.php:4
+%w%f %w%d  14. foo($a = 12) %smax_nesting_level-001.php:4
+%w%f %w%d  15. foo($a = 13) %smax_nesting_level-001.php:4
+%w%f %w%d  16. foo($a = 14) %smax_nesting_level-001.php:4
+%w%f %w%d  17. foo($a = 15) %smax_nesting_level-001.php:4
+%w%f %w%d  18. foo($a = 16) %smax_nesting_level-001.php:4
+%w%f %w%d  19. foo($a = 17) %smax_nesting_level-001.php:4
+%w%f %w%d  20. foo($a = 18) %smax_nesting_level-001.php:4
+%w%f %w%d  21. foo($a = 19) %smax_nesting_level-001.php:4
+%w%f %w%d  22. foo($a = 20) %smax_nesting_level-001.php:4
+%w%f %w%d  23. foo($a = 21) %smax_nesting_level-001.php:4
+%w%f %w%d  24. foo($a = 22) %smax_nesting_level-001.php:4
+%w%f %w%d  25. foo($a = 23) %smax_nesting_level-001.php:4
+%w%f %w%d  26. foo($a = 24) %smax_nesting_level-001.php:4
+%w%f %w%d  27. foo($a = 25) %smax_nesting_level-001.php:4
+%w%f %w%d  28. foo($a = 26) %smax_nesting_level-001.php:4
+%w%f %w%d  29. foo($a = 27) %smax_nesting_level-001.php:4
+%w%f %w%d  30. foo($a = 28) %smax_nesting_level-001.php:4
+%w%f %w%d  31. foo($a = 29) %smax_nesting_level-001.php:4
+%w%f %w%d  32. foo($a = 30) %smax_nesting_level-001.php:4
+%w%f %w%d  33. foo($a = 31) %smax_nesting_level-001.php:4
+%w%f %w%d  34. foo($a = 32) %smax_nesting_level-001.php:4
+%w%f %w%d  35. foo($a = 33) %smax_nesting_level-001.php:4
+%w%f %w%d  36. foo($a = 34) %smax_nesting_level-001.php:4
+%w%f %w%d  37. foo($a = 35) %smax_nesting_level-001.php:4
+%w%f %w%d  38. foo($a = 36) %smax_nesting_level-001.php:4
+%w%f %w%d  39. foo($a = 37) %smax_nesting_level-001.php:4
+%w%f %w%d  40. foo($a = 38) %smax_nesting_level-001.php:4
+%w%f %w%d  41. foo($a = 39) %smax_nesting_level-001.php:4
+%w%f %w%d  42. foo($a = 40) %smax_nesting_level-001.php:4
+%w%f %w%d  43. foo($a = 41) %smax_nesting_level-001.php:4
+%w%f %w%d  44. foo($a = 42) %smax_nesting_level-001.php:4
+%w%f %w%d  45. foo($a = 43) %smax_nesting_level-001.php:4
+%w%f %w%d  46. foo($a = 44) %smax_nesting_level-001.php:4
+%w%f %w%d  47. foo($a = 45) %smax_nesting_level-001.php:4
+%w%f %w%d  48. foo($a = 46) %smax_nesting_level-001.php:4
+%w%f %w%d  49. foo($a = 47) %smax_nesting_level-001.php:4
+%w%f %w%d  50. foo($a = 48) %smax_nesting_level-001.php:4
+%w%f %w%d  51. foo($a = 49) %smax_nesting_level-001.php:4
+%w%f %w%d  52. foo($a = 50) %smax_nesting_level-001.php:4
+%w%f %w%d  53. foo($a = 51) %smax_nesting_level-001.php:4
+%w%f %w%d  54. foo($a = 52) %smax_nesting_level-001.php:4
+%w%f %w%d  55. foo($a = 53) %smax_nesting_level-001.php:4
+%w%f %w%d  56. foo($a = 54) %smax_nesting_level-001.php:4
+%w%f %w%d  57. foo($a = 55) %smax_nesting_level-001.php:4
+%w%f %w%d  58. foo($a = 56) %smax_nesting_level-001.php:4
+%w%f %w%d  59. foo($a = 57) %smax_nesting_level-001.php:4
+%w%f %w%d  60. foo($a = 58) %smax_nesting_level-001.php:4
+%w%f %w%d  61. foo($a = 59) %smax_nesting_level-001.php:4
+%w%f %w%d  62. foo($a = 60) %smax_nesting_level-001.php:4
+%w%f %w%d  63. foo($a = 61) %smax_nesting_level-001.php:4
+%w%f %w%d  64. foo($a = 62) %smax_nesting_level-001.php:4
+%w%f %w%d  65. foo($a = 63) %smax_nesting_level-001.php:4
+%w%f %w%d  66. foo($a = 64) %smax_nesting_level-001.php:4
+%w%f %w%d  67. foo($a = 65) %smax_nesting_level-001.php:4
+%w%f %w%d  68. foo($a = 66) %smax_nesting_level-001.php:4
+%w%f %w%d  69. foo($a = 67) %smax_nesting_level-001.php:4
+%w%f %w%d  70. foo($a = 68) %smax_nesting_level-001.php:4
+%w%f %w%d  71. foo($a = 69) %smax_nesting_level-001.php:4
+%w%f %w%d  72. foo($a = 70) %smax_nesting_level-001.php:4
+%w%f %w%d  73. foo($a = 71) %smax_nesting_level-001.php:4
+%w%f %w%d  74. foo($a = 72) %smax_nesting_level-001.php:4
+%w%f %w%d  75. foo($a = 73) %smax_nesting_level-001.php:4
+%w%f %w%d  76. foo($a = 74) %smax_nesting_level-001.php:4
+%w%f %w%d  77. foo($a = 75) %smax_nesting_level-001.php:4
+%w%f %w%d  78. foo($a = 76) %smax_nesting_level-001.php:4
+%w%f %w%d  79. foo($a = 77) %smax_nesting_level-001.php:4
+%w%f %w%d  80. foo($a = 78) %smax_nesting_level-001.php:4
+%w%f %w%d  81. foo($a = 79) %smax_nesting_level-001.php:4
+%w%f %w%d  82. foo($a = 80) %smax_nesting_level-001.php:4
+%w%f %w%d  83. foo($a = 81) %smax_nesting_level-001.php:4
+%w%f %w%d  84. foo($a = 82) %smax_nesting_level-001.php:4
+%w%f %w%d  85. foo($a = 83) %smax_nesting_level-001.php:4
+%w%f %w%d  86. foo($a = 84) %smax_nesting_level-001.php:4
+%w%f %w%d  87. foo($a = 85) %smax_nesting_level-001.php:4
+%w%f %w%d  88. foo($a = 86) %smax_nesting_level-001.php:4
+%w%f %w%d  89. foo($a = 87) %smax_nesting_level-001.php:4
+%w%f %w%d  90. foo($a = 88) %smax_nesting_level-001.php:4
+%w%f %w%d  91. foo($a = 89) %smax_nesting_level-001.php:4
+%w%f %w%d  92. foo($a = 90) %smax_nesting_level-001.php:4
+%w%f %w%d  93. foo($a = 91) %smax_nesting_level-001.php:4
+%w%f %w%d  94. foo($a = 92) %smax_nesting_level-001.php:4
+%w%f %w%d  95. foo($a = 93) %smax_nesting_level-001.php:4
+%w%f %w%d  96. foo($a = 94) %smax_nesting_level-001.php:4
+%w%f %w%d  97. foo($a = 95) %smax_nesting_level-001.php:4
+%w%f %w%d  98. foo($a = 96) %smax_nesting_level-001.php:4
+%w%f %w%d  99. foo($a = 97) %smax_nesting_level-001.php:4
+%w%f %w%d 100. foo($a = 98) %smax_nesting_level-001.php:4
+%w%f %w%d 101. foo($a = 99) %smax_nesting_level-001.php:4
+%w%f %w%d 102. foo($a = 100) %smax_nesting_level-001.php:4
+%w%f %w%d 103. foo($a = 101) %smax_nesting_level-001.php:4
+%w%f %w%d 104. foo($a = 102) %smax_nesting_level-001.php:4
+%w%f %w%d 105. foo($a = 103) %smax_nesting_level-001.php:4
+%w%f %w%d 106. foo($a = 104) %smax_nesting_level-001.php:4
+%w%f %w%d 107. foo($a = 105) %smax_nesting_level-001.php:4
+%w%f %w%d 108. foo($a = 106) %smax_nesting_level-001.php:4
+%w%f %w%d 109. foo($a = 107) %smax_nesting_level-001.php:4
+%w%f %w%d 110. foo($a = 108) %smax_nesting_level-001.php:4
+%w%f %w%d 111. foo($a = 109) %smax_nesting_level-001.php:4
+%w%f %w%d 112. foo($a = 110) %smax_nesting_level-001.php:4
+%w%f %w%d 113. foo($a = 111) %smax_nesting_level-001.php:4
+%w%f %w%d 114. foo($a = 112) %smax_nesting_level-001.php:4
+%w%f %w%d 115. foo($a = 113) %smax_nesting_level-001.php:4
+%w%f %w%d 116. foo($a = 114) %smax_nesting_level-001.php:4
+%w%f %w%d 117. foo($a = 115) %smax_nesting_level-001.php:4
+%w%f %w%d 118. foo($a = 116) %smax_nesting_level-001.php:4
+%w%f %w%d 119. foo($a = 117) %smax_nesting_level-001.php:4
+%w%f %w%d 120. foo($a = 118) %smax_nesting_level-001.php:4
+%w%f %w%d 121. foo($a = 119) %smax_nesting_level-001.php:4
+%w%f %w%d 122. foo($a = 120) %smax_nesting_level-001.php:4
+%w%f %w%d 123. foo($a = 121) %smax_nesting_level-001.php:4
+%w%f %w%d 124. foo($a = 122) %smax_nesting_level-001.php:4
+%w%f %w%d 125. foo($a = 123) %smax_nesting_level-001.php:4
+%w%f %w%d 126. foo($a = 124) %smax_nesting_level-001.php:4
+%w%f %w%d 127. foo($a = 125) %smax_nesting_level-001.php:4
+%w%f %w%d 128. foo($a = 126) %smax_nesting_level-001.php:4
diff --git a/xdebug-3.4.5/tests/develop/max_nesting_level-002.phpt b/xdebug-3.4.5/tests/develop/max_nesting_level-002.phpt
new file mode 100644
index 0000000..8637125
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/max_nesting_level-002.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Test for xdebug.max_nesting_level (configured) [2]
+--INI--
+xdebug.max_stack_frames=-1
+xdebug.mode=develop
+xdebug.show_local_vars=0
+--FILE--
+<?php
+ini_set('xdebug.max_nesting_level', 5);
+
+function foo($a)
+{
+	foo($a+1);
+}
+foo(0);
+?>
+--EXPECTF--
+Fatal error: Uncaught Error: Xdebug has detected a possible infinite loop, and aborted your script with a stack depth of '5' frames in %smax_nesting_level-002.php on line 4
+
+Error: Xdebug has detected a possible infinite loop, and aborted your script with a stack depth of '5' frames in %smax_nesting_level-002.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %smax_nesting_level-002.php:0
+%w%f %w%d   2. foo($a = 0) %smax_nesting_level-002.php:8
+%w%f %w%d   3. foo($a = 1) %smax_nesting_level-002.php:6
+%w%f %w%d   4. foo($a = 2) %smax_nesting_level-002.php:6
+%w%f %w%d   5. foo($a = 3) %smax_nesting_level-002.php:6
diff --git a/xdebug-3.4.5/tests/develop/max_nesting_level-003.phpt b/xdebug-3.4.5/tests/develop/max_nesting_level-003.phpt
new file mode 100644
index 0000000..d63d89f
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/max_nesting_level-003.phpt
@@ -0,0 +1,29 @@
+--TEST--
+Test for xdebug.max_nesting_level (non develop mode)
+--INI--
+xdebug.max_stack_frames=-1
+xdebug.mode=trace
+xdebug.show_local_vars=0
+xdebug.max_nesting_level=128
+--FILE--
+<?php
+$a = 0;
+
+function foo()
+{
+	global $a;
+
+	$a++;
+
+	if ($a >= 500) {
+		return;
+	}
+
+	foo();
+}
+foo();
+
+echo $a, "\n";
+?>
+--EXPECTF--
+500
diff --git a/xdebug-3.4.5/tests/develop/max_stack_frames.phpt b/xdebug-3.4.5/tests/develop/max_stack_frames.phpt
new file mode 100644
index 0000000..d0cc849
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/max_stack_frames.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Test for xdebug.max_stack_frames
+--INI--
+xdebug.max_nesting_level=100
+xdebug.mode=develop
+xdebug.show_local_vars=0
+--FILE--
+<?php
+ini_set('xdebug.max_stack_frames', 5);
+
+function foo($a)
+{
+	foo($a+1);
+}
+foo(0);
+?>
+--EXPECTF--
+Fatal error: Uncaught Error: Xdebug has detected a possible infinite loop, and aborted your script with a stack depth of '100' frames in %smax_stack_frames.php on line 4
+
+Error: Xdebug has detected a possible infinite loop, and aborted your script with a stack depth of '100' frames in %smax_stack_frames.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %smax_stack_frames.php:0
+%w%f %w%d   2. foo($a = 0) %smax_stack_frames.php:8
+%w%f %w%d   3. foo($a = 1) %smax_stack_frames.php:6
+%w%f %w%d   4. foo($a = 2) %smax_stack_frames.php:6
+%w%f %w%d   5. foo($a = 3) %smax_stack_frames.php:6
diff --git a/xdebug-3.4.5/tests/develop/monitor-functions-001.phpt b/xdebug-3.4.5/tests/develop/monitor-functions-001.phpt
new file mode 100644
index 0000000..8fe51c0
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/monitor-functions-001.phpt
@@ -0,0 +1,11 @@
+--TEST--
+Function Monitor: Setting a list of functions to spy on
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+xdebug_start_function_monitor( [ 'strlen', 'array_push' ] );
+?>
+===DONE===
+--EXPECT--
+===DONE===
diff --git a/xdebug-3.4.5/tests/develop/monitor-functions-002.phpt b/xdebug-3.4.5/tests/develop/monitor-functions-002.phpt
new file mode 100644
index 0000000..433cdb9
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/monitor-functions-002.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Function Monitor: Setting a replacement list of functions to spy on
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+xdebug_start_function_monitor( [ 'strlen', 'array_push' ] );
+xdebug_stop_function_monitor();
+xdebug_start_function_monitor( [ 'strlen', 'array_pull' ] );
+?>
+===DONE===
+--EXPECT--
+===DONE===
diff --git a/xdebug-3.4.5/tests/develop/monitor-functions-003.inc b/xdebug-3.4.5/tests/develop/monitor-functions-003.inc
new file mode 100644
index 0000000..f0b553b
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/monitor-functions-003.inc
@@ -0,0 +1,7 @@
+<?php
+var_dump(xdebug_get_monitored_functions());
+echo strrev("yes!"), "\n";
+var_dump(xdebug_get_monitored_functions());
+echo strrev("yes!"), "\n";
+var_dump(xdebug_get_monitored_functions());
+?>
diff --git a/xdebug-3.4.5/tests/develop/monitor-functions-003.phpt b/xdebug-3.4.5/tests/develop/monitor-functions-003.phpt
new file mode 100644
index 0000000..08013c6
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/monitor-functions-003.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Function Monitor: Simple function name
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+xdebug_start_function_monitor( [ 'strrev', 'array_push' ] );
+
+include __DIR__ . '/monitor-functions-003.inc';
+
+xdebug_stop_function_monitor();
+?>
+--EXPECTF--
+%smonitor-functions-003.inc:2:
+array(0) {
+}
+!sey
+%smonitor-functions-003.inc:4:
+array(1) {
+  [0] =>
+  array(3) {
+    'function' =>
+    string(6) "strrev"
+    'filename' =>
+    string(%d) "%smonitor-functions-003.inc"
+    'lineno' =>
+    int(3)
+  }
+}
+!sey
+%smonitor-functions-003.inc:6:
+array(2) {
+  [0] =>
+  array(3) {
+    'function' =>
+    string(6) "strrev"
+    'filename' =>
+    string(%d) "%smonitor-functions-003.inc"
+    'lineno' =>
+    int(3)
+  }
+  [1] =>
+  array(3) {
+    'function' =>
+    string(6) "strrev"
+    'filename' =>
+    string(%d) "%smonitor-functions-003.inc"
+    'lineno' =>
+    int(5)
+  }
+}
diff --git a/xdebug-3.4.5/tests/develop/monitor-functions-004.phpt b/xdebug-3.4.5/tests/develop/monitor-functions-004.phpt
new file mode 100644
index 0000000..a4a9dd6
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/monitor-functions-004.phpt
@@ -0,0 +1,49 @@
+--TEST--
+Function Monitor: Method function name
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+class Foo
+{
+	static function doStuff()
+	{
+	}
+
+	public function doMethodStuff()
+	{
+	}
+}
+
+xdebug_start_function_monitor( [ 'Foo::doStuff', 'Foo->doMethodStuff' ] );
+
+Foo::doStuff();
+
+$f = new Foo;
+$f->doMethodStuff();
+
+var_dump(xdebug_get_monitored_functions());
+xdebug_stop_function_monitor();
+?>
+--EXPECTF--
+%smonitor-functions-004.php:20:
+array(2) {
+  [0] =>
+  array(3) {
+    'function' =>
+    string(12) "Foo::doStuff"
+    'filename' =>
+    string(%d) "%smonitor-functions-004.php"
+    'lineno' =>
+    int(15)
+  }
+  [1] =>
+  array(3) {
+    'function' =>
+    string(18) "Foo->doMethodStuff"
+    'filename' =>
+    string(%d) "%smonitor-functions-004.php"
+    'lineno' =>
+    int(18)
+  }
+}
diff --git a/xdebug-3.4.5/tests/develop/print_function_stack-no-description-001.phpt b/xdebug-3.4.5/tests/develop/print_function_stack-no-description-001.phpt
new file mode 100644
index 0000000..704c7b9
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/print_function_stack-no-description-001.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Test for xdebug_print_function_stack() without description
+--INI--
+xdebug.mode=develop
+xdebug.cli_color=0
+html_errors=0
+--FILE--
+<?php
+function foo()
+{
+	xdebug_print_function_stack("test message", XDEBUG_STACK_NO_DESC);
+}
+
+function bar()
+{
+	foo(1, 3, 'foo', 'bar' );
+}
+
+bar();
+?>
+--EXPECTF--
+Call Stack:
+%w%f %w%d   1. {main}() %sprint_function_stack-no-description-001.php:0
+%w%f %w%d   2. bar() %sprint_function_stack-no-description-001.php:12
+%w%f %w%d   3. foo(1, 3, 'foo', 'bar') %sprint_function_stack-no-description-001.php:9
+%w%f %w%d   4. xdebug_print_function_stack($message = 'test message', $options = 1) %sprint_function_stack-no-description-001.php:4
diff --git a/xdebug-3.4.5/tests/develop/print_function_stack-no-description-002.phpt b/xdebug-3.4.5/tests/develop/print_function_stack-no-description-002.phpt
new file mode 100644
index 0000000..9a9a1c0
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/print_function_stack-no-description-002.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Test for xdebug_print_function_stack() without description (CLI colour)
+--INI--
+xdebug.mode=develop
+xdebug.cli_color=2
+html_errors=0
+--FILE--
+<?php
+function foo()
+{
+	xdebug_print_function_stack("test message", XDEBUG_STACK_NO_DESC);
+}
+
+function bar()
+{
+	foo(1, 3, 'foo', 'bar' );
+}
+
+bar();
+?>
+--EXPECTF--
+[1mCall Stack:[22m
+%w%f %w%d   1. {main}() %sprint_function_stack-no-description-002.php:0
+%w%f %w%d   2. bar() %sprint_function_stack-no-description-002.php:12
+%w%f %w%d   3. foo(1, 3, 'foo', 'bar') %sprint_function_stack-no-description-002.php:9
+%w%f %w%d   4. xdebug_print_function_stack($message = 'test message', $options = 1) %sprint_function_stack-no-description-002.php:4
diff --git a/xdebug-3.4.5/tests/develop/print_function_stack-no-description-003.phpt b/xdebug-3.4.5/tests/develop/print_function_stack-no-description-003.phpt
new file mode 100644
index 0000000..795fb61
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/print_function_stack-no-description-003.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test for xdebug_print_function_stack() without description (HTML)
+--INI--
+xdebug.mode=develop
+xdebug.cli_color=0
+xdebug.file_link_format=
+xdebug.filename_format=
+html_errors=1
+--FILE--
+<?php
+function foo()
+{
+	xdebug_print_function_stack("test message", XDEBUG_STACK_NO_DESC);
+}
+
+function bar()
+{
+	foo(1, 3, 'foo', 'bar' );
+}
+
+bar();
+?>
+--EXPECTF--
+<br />
+<font size='1'><table class='xdebug-error xe-xdebug' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sprint_function_stack-no-description-003.php' bgcolor='#eeeeec'>...%sprint_function_stack-no-description-003.php<b>:</b>0</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>bar(  )</td><td title='%sprint_function_stack-no-description-003.php' bgcolor='#eeeeec'>...%sprint_function_stack-no-description-003.php<b>:</b>12</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>3</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>foo( <span>1</span>, <span>3</span>, <span>&#39;foo&#39;</span>, <span>&#39;bar&#39;</span> )</td><td title='%sprint_function_stack-no-description-003.php' bgcolor='#eeeeec'>...%sprint_function_stack-no-description-003.php<b>:</b>9</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>4</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.xdebug-print-function-stack.html' target='_new'>xdebug_print_function_stack</a>( <span>$message = </span><span>&#39;test message&#39;</span>, <span>$options = </span><span>1</span> )</td><td title='%sprint_function_stack-no-description-003.php' bgcolor='#eeeeec'>...%sprint_function_stack-no-description-003.php<b>:</b>4</td></tr>
+</table></font>
diff --git a/xdebug-3.4.5/tests/develop/print_function_stack.phpt b/xdebug-3.4.5/tests/develop/print_function_stack.phpt
new file mode 100644
index 0000000..71a6a0d
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/print_function_stack.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Test for xdebug_print_function_stack()
+--INI--
+xdebug.mode=develop
+xdebug.cli_color=0
+--FILE--
+<?php
+function foo()
+{
+	xdebug_print_function_stack();
+}
+
+function bar()
+{
+	foo(1, 3, 'foo', 'bar' );
+}
+
+bar();
+?>
+--EXPECTF--
+Xdebug: user triggered in %sprint_function_stack.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %sprint_function_stack.php:0
+%w%f %w%d   2. bar() %sprint_function_stack.php:12
+%w%f %w%d   3. foo(1, 3, 'foo', 'bar') %sprint_function_stack.php:9
+%w%f %w%d   4. xdebug_print_function_stack() %sprint_function_stack.php:4
diff --git a/xdebug-3.4.5/tests/develop/scream.phpt b/xdebug-3.4.5/tests/develop/scream.phpt
new file mode 100644
index 0000000..05221be
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/scream.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Test for scream support
+--INI--
+xdebug.mode=develop
+xdebug.scream=0
+error_reporting(E_ALL);
+xdebug.force_error_reporting=0
+--FILE--
+<?php
+echo @hex2bin('4'), "\n";
+ini_set('xdebug.scream', 1);
+echo @hex2bin('4'), "\n";
+ini_set('xdebug.scream', 0);
+echo @hex2bin('4'), "\n";
+?>
+--EXPECTF--
+SCREAM:  Error suppression ignored for
+Warning: %s in %sscream.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %sscream.php:0
+%w%f %w%d   2. hex2bin($%s = '4') %sscream.php:4
diff --git a/xdebug-3.4.5/tests/develop/scream_cli.phpt b/xdebug-3.4.5/tests/develop/scream_cli.phpt
new file mode 100644
index 0000000..1e4f478
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/scream_cli.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Test for scream support
+--INI--
+xdebug.mode=develop
+xdebug.scream=0
+error_reporting(E_ALL);
+xdebug.cli_color=2
+xdebug.force_error_reporting=0
+--FILE--
+<?php
+echo @hex2bin('4'), "\n";
+ini_set('xdebug.scream', 1);
+echo @hex2bin('4'), "\n";
+ini_set('xdebug.scream', 0);
+echo @hex2bin('4'), "\n";
+?>
+--EXPECTF--
+[1m[31mSCREAM[0m:  Error suppression ignored for
+[1m[31mWarning[0m: %s[22m in [31m%sscream_cli.php[0m on line [32m4[0m[22m
+
+[1mCall Stack:[22m
+%w%f %w%d   1. {main}() %sscream_cli.php:0
+%w%f %w%d   2. hex2bin($%s = '4') %sscream_cli.php:4
diff --git a/xdebug-3.4.5/tests/develop/scream_html.phpt b/xdebug-3.4.5/tests/develop/scream_html.phpt
new file mode 100644
index 0000000..3896a08
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/scream_html.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Test for scream support (HTML)
+--INI--
+xdebug.mode=develop
+xdebug.scream=0
+error_reporting(E_ALL);
+html_errors=1
+xdebug.file_link_format=xdebug://%f@%l
+xdebug.filename_format=
+xdebug.force_error_reporting=0
+--FILE--
+<?php
+echo @hex2bin('4'), "\n";
+ini_set('xdebug.scream', 1);
+echo @hex2bin('4'), "\n";
+ini_set('xdebug.scream', 0);
+echo @hex2bin('4'), "\n";
+?>
+--EXPECTF--
+<br />
+<font size='1'><table class='xdebug-error xe-warning xe-scream' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> SCREAM: Error suppression ignored for</th></tr>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Warning: %s in <a style='color: black' href='xdebug://%sscream_html.php@4'>%sscream_html.php</a> on line <i>4</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sscream_html.php' bgcolor='#eeeeec'><a style='color: black' href='xdebug://%sscream_html.php@0'>...%sscream_html.php<b>:</b>0</a></td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.hex2bin.html' target='_new'>hex2bin</a>( <span>$%s = </span><span>&#39;4&#39;</span> )</td><td title='%sscream_html.php' bgcolor='#eeeeec'><a style='color: black' href='xdebug://%sscream_html.php@4'>...%sscream_html.php<b>:</b>4</a></td></tr>
+</table></font>
diff --git a/xdebug-3.4.5/tests/develop/shutdown.phpt b/xdebug-3.4.5/tests/develop/shutdown.phpt
new file mode 100644
index 0000000..6c09dd4
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/shutdown.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Shutdown function
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+	register_shutdown_function('foo');
+
+	function foo() {
+		echo "I'm alive!";
+	}
+?>
+--EXPECTF--
+I'm alive!
diff --git a/xdebug-3.4.5/tests/develop/stack-filter-ns-exclude-001.phpt b/xdebug-3.4.5/tests/develop/stack-filter-ns-exclude-001.phpt
new file mode 100644
index 0000000..53efaaf
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/stack-filter-ns-exclude-001.phpt
@@ -0,0 +1,72 @@
+--TEST--
+Filtered stack traces: namespace exclude [1]
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+$includeDir = realpath( __DIR__ . '/..' );
+
+include "{$includeDir}/filter/stack/one.php";
+include "{$includeDir}/filter/stack/two.php";
+include "{$includeDir}/filter/stack/three.php";
+
+$three = new \Stack\Three( new stdClass );
+$two = new \Stack\Two( $three );
+$one = new \Stack\One( $two );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_NAMESPACE_EXCLUDE, [ 'Stack\One' ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_NAMESPACE_EXCLUDE, [ '\Stack\One' ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_NAMESPACE_EXCLUDE, [ '\Stack\One', 'Stack\Two' ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_NAMESPACE_EXCLUDE, [ 'Stack\Two', 'Stack\Three' ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_NAMESPACE_EXCLUDE, [ '', 'Stack\Two' ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+?>
+--EXPECTF--
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-ns-exclude-001.php:0
+%w%f %w%d   3. Stack\Two->callObj($name = 'error', ...$arguments = variadic('Error triggered!')) %sone.php:%d
+%w%f %w%d   4. Stack\Three->error($value = 'Error triggered!') %stwo.php:%d
+%w%f %w%d   5. trigger_error($message = 'Error triggered!', $error_%s = 512) %sthree.php:%d
+
+
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-ns-exclude-001.php:0
+%w%f %w%d   3. Stack\Two->callObj($name = 'error', ...$arguments = variadic('Error triggered!')) %sone.php:%d
+%w%f %w%d   4. Stack\Three->error($value = 'Error triggered!') %stwo.php:%d
+%w%f %w%d   5. trigger_error($message = 'Error triggered!', $error_%s = 512) %sthree.php:%d
+
+
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-ns-exclude-001.php:0
+%w%f %w%d   4. Stack\Three->error($value = 'Error triggered!') %stwo.php:%d
+%w%f %w%d   5. trigger_error($message = 'Error triggered!', $error_%s = 512) %sthree.php:%d
+
+
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-ns-exclude-001.php:0
+%w%f %w%d   2. Stack\One->callObj($name = 'callObj', ...$arguments = variadic('error', 'Error triggered!')) %sstack-filter-ns-exclude-001.php:22
+%w%f %w%d   5. trigger_error($message = 'Error triggered!', $error_%s = 512) %sthree.php:%d
+
+
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-ns-exclude-001.php:0
+%w%f %w%d   2. Stack\One->callObj($name = 'callObj', ...$arguments = variadic('error', 'Error triggered!')) %sstack-filter-ns-exclude-001.php:25
+%w%f %w%d   4. Stack\Three->error($value = 'Error triggered!') %stwo.php:%d
diff --git a/xdebug-3.4.5/tests/develop/stack-filter-ns-include-001.phpt b/xdebug-3.4.5/tests/develop/stack-filter-ns-include-001.phpt
new file mode 100644
index 0000000..a21155a
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/stack-filter-ns-include-001.phpt
@@ -0,0 +1,68 @@
+--TEST--
+Filtered stack traces: namespace include [1]
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+$includeDir = realpath(__DIR__ . '/..' );
+
+include "{$includeDir}/filter/stack/one.php";
+include "{$includeDir}/filter/stack/two.php";
+include "{$includeDir}/filter/stack/three.php";
+
+$three = new \Stack\Three( new stdClass );
+$two = new \Stack\Two( $three );
+$one = new \Stack\One( $two );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_NAMESPACE_INCLUDE, [ 'Stack\One' ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_NAMESPACE_INCLUDE, [ '\Stack\One' ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_NAMESPACE_INCLUDE, [ '\Stack\One', 'Stack\Two' ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_NAMESPACE_INCLUDE, [ 'Stack\Two', 'Stack\Three' ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_NAMESPACE_INCLUDE, [ '', 'Stack\Two' ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+?>
+--EXPECTF--
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-ns-include-001.php:0
+%w%f %w%d   2. Stack\One->callObj($name = 'callObj', ...$arguments = variadic('error', 'Error triggered!')) %sstack-filter-ns-include-001.php:%d
+
+
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-ns-include-001.php:0
+%w%f %w%d   2. Stack\One->callObj($name = 'callObj', ...$arguments = variadic('error', 'Error triggered!')) %sstack-filter-ns-include-001.php:16
+
+
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-ns-include-001.php:0
+%w%f %w%d   2. Stack\One->callObj($name = 'callObj', ...$arguments = variadic('error', 'Error triggered!')) %sstack-filter-ns-include-001.php:19
+%w%f %w%d   3. Stack\Two->callObj($name = 'error', ...$arguments = variadic('Error triggered!')) %sone.php:%d
+
+
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-ns-include-001.php:0
+%w%f %w%d   3. Stack\Two->callObj($name = 'error', ...$arguments = variadic('Error triggered!')) %sone.php:%d
+%w%f %w%d   4. Stack\Three->error($value = 'Error triggered!') %stwo.php:%d
+
+
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-ns-include-001.php:0
+%w%f %w%d   3. Stack\Two->callObj($name = 'error', ...$arguments = variadic('Error triggered!')) %sone.php:%d
+%w%f %w%d   5. trigger_error($message = 'Error triggered!', $error_%s = 512) %sthree.php:%d
diff --git a/xdebug-3.4.5/tests/develop/stack-filter-path-exclude-001.phpt b/xdebug-3.4.5/tests/develop/stack-filter-path-exclude-001.phpt
new file mode 100644
index 0000000..41e40e3
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/stack-filter-path-exclude-001.phpt
@@ -0,0 +1,92 @@
+--TEST--
+Filtered stack traces: path exclude [1]
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+$includeDir = realpath( __DIR__ . '/..' ); $s = DIRECTORY_SEPARATOR;
+
+include "{$includeDir}/filter/stack/one.php";
+include "{$includeDir}/filter/stack/two.php";
+include "{$includeDir}/filter/stack/three.php";
+
+$three = new \Stack\Three( new stdClass );
+$two = new \Stack\Two( $three );
+$one = new \Stack\One( $two );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_PATH_EXCLUDE, [ "{$includeDir}{$s}filter{$s}stack{$s}one" ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_PATH_EXCLUDE, [ "{$includeDir}{$s}filter{$s}stack{$s}one.php" ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_PATH_EXCLUDE, [ "{$includeDir}{$s}filter{$s}stack{$s}one.p", "{$includeDir}{$s}filter{$s}stack{$s}two.php" ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_PATH_EXCLUDE, [ "{$includeDir}{$s}filter{$s}stack{$s}t" ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_PATH_EXCLUDE, [ 'x' ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_PATH_EXCLUDE, [ "{$includeDir}" ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_PATH_EXCLUDE, [ '' ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+?>
+--EXPECTF--
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-path-exclude-001.php:0
+%w%f %w%d   2. Stack\One->callObj($name = 'callObj', ...$arguments = variadic('error', 'Error triggered!')) %sstack-filter-path-exclude-001.php:%d
+%w%f %w%d   4. Stack\Three->error($value = 'Error triggered!') %stwo.php:%d
+%w%f %w%d   5. trigger_error($message = 'Error triggered!', $error_%s = 512) %sthree.php:%d
+
+
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-path-exclude-001.php:0
+%w%f %w%d   2. Stack\One->callObj($name = 'callObj', ...$arguments = variadic('error', 'Error triggered!')) %sstack-filter-path-exclude-001.php:16
+%w%f %w%d   4. Stack\Three->error($value = 'Error triggered!') %stwo.php:%d
+%w%f %w%d   5. trigger_error($message = 'Error triggered!', $error_%s = 512) %sthree.php:%d
+
+
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-path-exclude-001.php:0
+%w%f %w%d   2. Stack\One->callObj($name = 'callObj', ...$arguments = variadic('error', 'Error triggered!')) %sstack-filter-path-exclude-001.php:19
+%w%f %w%d   5. trigger_error($message = 'Error triggered!', $error_%s = 512) %sthree.php:%d
+
+
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-path-exclude-001.php:0
+%w%f %w%d   2. Stack\One->callObj($name = 'callObj', ...$arguments = variadic('error', 'Error triggered!')) %sstack-filter-path-exclude-001.php:22
+%w%f %w%d   3. Stack\Two->callObj($name = 'error', ...$arguments = variadic('Error triggered!')) %sone.php:%d
+
+
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-path-exclude-001.php:0
+%w%f %w%d   2. Stack\One->callObj($name = 'callObj', ...$arguments = variadic('error', 'Error triggered!')) %sstack-filter-path-exclude-001.php:25
+%w%f %w%d   3. Stack\Two->callObj($name = 'error', ...$arguments = variadic('Error triggered!')) %sone.php:%d
+%w%f %w%d   4. Stack\Three->error($value = 'Error triggered!') %stwo.php:%d
+%w%f %w%d   5. trigger_error($message = 'Error triggered!', $error_%s = 512) %sthree.php:%d
+
+
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-path-exclude-001.php:0
+
+
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-path-exclude-001.php:0
diff --git a/xdebug-3.4.5/tests/develop/stack-filter-path-include-001.phpt b/xdebug-3.4.5/tests/develop/stack-filter-path-include-001.phpt
new file mode 100644
index 0000000..e07771a
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/stack-filter-path-include-001.phpt
@@ -0,0 +1,92 @@
+--TEST--
+Filtered stack traces: path include [1]
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+$includeDir = realpath( __DIR__ . '/..' ); $s = DIRECTORY_SEPARATOR;
+
+include "{$includeDir}/filter/stack/one.php";
+include "{$includeDir}/filter/stack/two.php";
+include "{$includeDir}/filter/stack/three.php";
+
+$three = new \Stack\Three( new stdClass );
+$two = new \Stack\Two( $three );
+$one = new \Stack\One( $two );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_PATH_INCLUDE, [ "{$includeDir}{$s}filter{$s}stack{$s}one" ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_PATH_INCLUDE, [ "{$includeDir}{$s}filter{$s}stack{$s}one.php" ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_PATH_INCLUDE, [ "{$includeDir}{$s}filter{$s}stack{$s}one.p", "{$includeDir}{$s}filter{$s}stack{$s}two.php" ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_PATH_INCLUDE, [ "{$includeDir}{$s}filter{$s}stack{$s}t" ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_PATH_INCLUDE, [ 'x' ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_PATH_INCLUDE, [ "{$includeDir}" ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+
+xdebug_set_filter(XDEBUG_FILTER_STACK, XDEBUG_PATH_INCLUDE, [ '' ] );
+$one->callObj( 'callObj', 'error', 'Error triggered!' );
+?>
+--EXPECTF--
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-path-include-001.php:0
+%w%f %w%d   3. Stack\Two->callObj($name = 'error', ...$arguments = variadic('Error triggered!')) %sone.php:%d
+
+
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-path-include-001.php:0
+%w%f %w%d   3. Stack\Two->callObj($name = 'error', ...$arguments = variadic('Error triggered!')) %sone.php:%d
+
+
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-path-include-001.php:0
+%w%f %w%d   3. Stack\Two->callObj($name = 'error', ...$arguments = variadic('Error triggered!')) %sone.php:%d
+%w%f %w%d   4. Stack\Three->error($value = 'Error triggered!') %stwo.php:%d
+
+
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-path-include-001.php:0
+%w%f %w%d   4. Stack\Three->error($value = 'Error triggered!') %stwo.php:%d
+%w%f %w%d   5. trigger_error($message = 'Error triggered!', $error_%s = 512) %sthree.php:%d
+
+
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-path-include-001.php:0
+
+
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-path-include-001.php:0
+%w%f %w%d   2. Stack\One->callObj($name = 'callObj', ...$arguments = variadic('error', 'Error triggered!')) %sstack-filter-path-include-001.php:28
+%w%f %w%d   3. Stack\Two->callObj($name = 'error', ...$arguments = variadic('Error triggered!')) %sone.php:%d
+%w%f %w%d   4. Stack\Three->error($value = 'Error triggered!') %stwo.php:%d
+%w%f %w%d   5. trigger_error($message = 'Error triggered!', $error_%s = 512) %sthree.php:%d
+
+
+Warning: Error triggered! in %sthree.php on line %d
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstack-filter-path-include-001.php:0
+%w%f %w%d   2. Stack\One->callObj($name = 'callObj', ...$arguments = variadic('error', 'Error triggered!')) %sstack-filter-path-include-001.php:31
+%w%f %w%d   3. Stack\Two->callObj($name = 'error', ...$arguments = variadic('Error triggered!')) %sone.php:%d
+%w%f %w%d   4. Stack\Three->error($value = 'Error triggered!') %stwo.php:%d
+%w%f %w%d   5. trigger_error($message = 'Error triggered!', $error_%s = 512) %sthree.php:%d
diff --git a/xdebug-3.4.5/tests/develop/stacktrace_html.phpt b/xdebug-3.4.5/tests/develop/stacktrace_html.phpt
new file mode 100644
index 0000000..0277d47
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/stacktrace_html.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test stack traces (html)
+--INI--
+xdebug.mode=develop
+xdebug.trace_format=0
+xdebug.dump_globals=0
+xdebug.var_display_max_children=50
+xdebug.var_display_max_depth=5
+xdebug.var_display_max_length=64
+xdebug.collect_return=0
+html_errors=1
+xdebug.file_link_format=
+xdebug.filename_format=
+xdebug.show_local_vars=0
+xdebug.show_error_trace=1
+--FILE--
+<?php
+function foo( $a ) {
+    for ($i = 1; $i < $a['foo']; $i++) {
+		poo();
+    }
+}
+
+$c = new stdClass;
+$c->bar = 100;
+$a = array(
+    42 => false, 'foo' => 912124,
+    $c, new stdClass, fopen( __FILE__, 'r' )
+);
+try { foo( $a ); } catch (Throwable $e) { /* ignore */ }
+?>
+--EXPECTF--
+<br />
+<font size='1'><table class='xdebug-error xe-%s' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> %srror: Call to undefined function poo() in %sstacktrace_html.php on line <i>4</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sstacktrace_html.php' bgcolor='#eeeeec'>...%sstacktrace_html.php<b>:</b>0</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>foo( <span>$a = </span><span>[42 =&gt; FALSE, &#39;foo&#39; =&gt; 912124, 43 =&gt; class stdClass { public $bar = 100 }, 44 =&gt; class stdClass {  }, 45 =&gt; resource(%d) of type (stream)]</span> )</td><td title='%sstacktrace_html.php' bgcolor='#eeeeec'>...%sstacktrace_html.php<b>:</b>14</td></tr>
+</table></font>
diff --git a/xdebug-3.4.5/tests/develop/stacktrace_text.phpt b/xdebug-3.4.5/tests/develop/stacktrace_text.phpt
new file mode 100644
index 0000000..6af5f28
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/stacktrace_text.phpt
@@ -0,0 +1,34 @@
+--TEST--
+Test stack traces (text)
+--INI--
+xdebug.mode=develop
+xdebug.trace_format=0
+xdebug.dump_globals=0
+xdebug.var_display_max_children=50
+xdebug.var_display_max_depth=5
+xdebug.var_display_max_length=64
+xdebug.collect_return=0
+xdebug.show_local_vars=0
+xdebug.show_error_trace=1
+--FILE--
+<?php
+function foo( $a ) {
+    for ($i = 1; $i < $a['foo']; $i++) {
+		poo();
+    }
+}
+
+$c = new stdClass;
+$c->bar = 100;
+$a = array(
+    42 => false, 'foo' => 912124,
+    $c, new stdClass, fopen( __FILE__, 'r' )
+);
+try { foo( $a ); } catch (Throwable $e) { /* ignore */ }
+?>
+--EXPECTF--
+%srror: Call to undefined function poo() in %sstacktrace%s.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstacktrace%s.php:0
+%w%f %w%d   2. foo($a = [42 => FALSE, 'foo' => 912124, 43 => class stdClass { public $bar = 100 }, 44 => class stdClass {  }, 45 => resource(%d) of type (stream)]) %sstacktrace%s.php:14
diff --git a/xdebug-3.4.5/tests/develop/stacktrace_variadic_html.phpt b/xdebug-3.4.5/tests/develop/stacktrace_variadic_html.phpt
new file mode 100644
index 0000000..b8dc220
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/stacktrace_variadic_html.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Test for stack traces with variadics (html)
+--INI--
+xdebug.mode=develop
+xdebug.trace_format=0
+xdebug.dump_globals=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.force_error_reporting=0
+html_errors=1
+xdebug.filename_format=
+xdebug.file_link_format=
+--FILE--
+<?php
+function foo( $a, ...$b )
+{
+	trigger_error( 'notice' );
+}
+
+foo( 42 );
+foo( 1, false );
+foo( "foo", "bar", 3.1415 );
+?>
+--EXPECTF--
+<br />
+<font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: notice in %sstacktrace_variadic_html.php on line <i>4</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sstacktrace_variadic_html.php' bgcolor='#eeeeec'>...%sstacktrace_variadic_html.php<b>:</b>0</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>foo( <span>$a = </span><span>42</span> )</td><td title='%sstacktrace_variadic_html.php' bgcolor='#eeeeec'>...%sstacktrace_variadic_html.php<b>:</b>7</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>3</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.trigger-error.html' target='_new'>trigger_error</a>( <span>$message = </span><span>&#39;notice&#39;</span> )</td><td title='%sstacktrace_variadic_html.php' bgcolor='#eeeeec'>...%sstacktrace_variadic_html.php<b>:</b>4</td></tr>
+</table></font>
+<br />
+<font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: notice in %sstacktrace_variadic_html.php on line <i>4</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sstacktrace_variadic_html.php' bgcolor='#eeeeec'>...%sstacktrace_variadic_html.php<b>:</b>0</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>foo( <span>$a = </span><span>1</span>, ...<span>$b = </span><i>variadic</i>(<span>FALSE</span>) )</td><td title='%sstacktrace_variadic_html.php' bgcolor='#eeeeec'>...%sstacktrace_variadic_html.php<b>:</b>8</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>3</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.trigger-error.html' target='_new'>trigger_error</a>( <span>$message = </span><span>&#39;notice&#39;</span> )</td><td title='%sstacktrace_variadic_html.php' bgcolor='#eeeeec'>...%sstacktrace_variadic_html.php<b>:</b>4</td></tr>
+</table></font>
+<br />
+<font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
+<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: notice in %sstacktrace_variadic_html.php on line <i>4</i></th></tr>
+<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
+<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
+<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='%sstacktrace_variadic_html.php' bgcolor='#eeeeec'>...%sstacktrace_variadic_html.php<b>:</b>0</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'>foo( <span>$a = </span><span>&#39;foo&#39;</span>, ...<span>$b = </span><i>variadic</i>(<span>&#39;bar&#39;</span>, <span>3.1415</span>) )</td><td title='%sstacktrace_variadic_html.php' bgcolor='#eeeeec'>...%sstacktrace_variadic_html.php<b>:</b>9</td></tr>
+<tr><td bgcolor='#eeeeec' align='center'>3</td><td bgcolor='#eeeeec' align='center'>%f</td><td bgcolor='#eeeeec' align='right'>%d</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.trigger-error.html' target='_new'>trigger_error</a>( <span>$message = </span><span>&#39;notice&#39;</span> )</td><td title='%sstacktrace_variadic_html.php' bgcolor='#eeeeec'>...%sstacktrace_variadic_html.php<b>:</b>4</td></tr>
+</table></font>
diff --git a/xdebug-3.4.5/tests/develop/stacktrace_variadic_text.phpt b/xdebug-3.4.5/tests/develop/stacktrace_variadic_text.phpt
new file mode 100644
index 0000000..1531f47
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/stacktrace_variadic_text.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Test for stack traces with variadics (text)
+--INI--
+xdebug.mode=develop
+xdebug.trace_format=0
+xdebug.dump_globals=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.force_error_reporting=0
+--FILE--
+<?php
+function foo( $a, ...$b )
+{
+	trigger_error( 'notice' );
+}
+
+foo( 42 );
+foo( 1, false );
+foo( "foo", "bar", 3.1415 );
+?>
+--EXPECTF--
+Notice: notice in %sstacktrace_variadic_text.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstacktrace_variadic_text.php:0
+%w%f %w%d   2. foo($a = 42) %sstacktrace_variadic_text.php:7
+%w%f %w%d   3. trigger_error($message = 'notice') %sstacktrace_variadic_text.php:4
+
+
+Notice: notice in %sstacktrace_variadic_text.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstacktrace_variadic_text.php:0
+%w%f %w%d   2. foo($a = 1, ...$b = variadic(FALSE)) %sstacktrace_variadic_text.php:8
+%w%f %w%d   3. trigger_error($message = 'notice') %sstacktrace_variadic_text.php:4
+
+
+Notice: notice in %sstacktrace_variadic_text.php on line 4
+
+Call Stack:
+%w%f %w%d   1. {main}() %sstacktrace_variadic_text.php:0
+%w%f %w%d   2. foo($a = 'foo', ...$b = variadic('bar', 3.1415)) %sstacktrace_variadic_text.php:9
+%w%f %w%d   3. trigger_error($message = 'notice') %sstacktrace_variadic_text.php:4
diff --git a/xdebug-3.4.5/tests/develop/vardump-overload-cli-001.phpt b/xdebug-3.4.5/tests/develop/vardump-overload-cli-001.phpt
new file mode 100644
index 0000000..7be9822
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/vardump-overload-cli-001.phpt
@@ -0,0 +1,94 @@
+--TEST--
+Test for overloaded var_dump() on the CLI
+--INI--
+xdebug.mode=develop
+html_errors=0
+xdebug.cli_color=0
+xdebug.var_display_max_data=32
+xdebug.var_display_max_depth=2
+xdebug.var_display_max_children=8
+--FILE--
+<?php
+$array = array(
+	"Hello, this is a very long string with some other useful info",
+	array(
+		"depth2" => array(
+			"depth3" => array(
+				"depth4" => false,
+			)
+		)
+	),
+	range(0, 16)
+);
+var_dump($array);
+
+ini_set('xdebug.cli_color', 2);
+var_dump($array);
+?>
+--EXPECTF--
+%svardump-overload-cli-001.php:13:
+array(3) {
+  [0] =>
+  string(61) "Hello, this is a very long strin"...
+  [1] =>
+  array(1) {
+    'depth2' =>
+    array(1) {
+      ...
+    }
+  }
+  [2] =>
+  array(17) {
+    [0] =>
+    int(0)
+    [1] =>
+    int(1)
+    [2] =>
+    int(2)
+    [3] =>
+    int(3)
+    [4] =>
+    int(4)
+    [5] =>
+    int(5)
+    [6] =>
+    int(6)
+    [7] =>
+    int(7)
+
+    (more elements)...
+  }
+}
+[1m%svardump-overload-cli-001.php[22m:[1m16[22m:
+[1marray[22m([32m3[0m) {
+  [0] [0m=>[0m
+  [1mstring[22m([32m61[0m) "[31mHello, this is a very long strin[0m"...
+  [1] [0m=>[0m
+  [1marray[22m([32m1[0m) {
+    'depth2' =>
+    [1marray[22m([32m1[0m) {
+      ...
+    }
+  }
+  [2] [0m=>[0m
+  [1marray[22m([32m17[0m) {
+    [0] [0m=>[0m
+    [1mint[22m([32m0[0m)
+    [1] [0m=>[0m
+    [1mint[22m([32m1[0m)
+    [2] [0m=>[0m
+    [1mint[22m([32m2[0m)
+    [3] [0m=>[0m
+    [1mint[22m([32m3[0m)
+    [4] [0m=>[0m
+    [1mint[22m([32m4[0m)
+    [5] [0m=>[0m
+    [1mint[22m([32m5[0m)
+    [6] [0m=>[0m
+    [1mint[22m([32m6[0m)
+    [7] [0m=>[0m
+    [1mint[22m([32m7[0m)
+
+    (more elements)...
+  }
+}
diff --git a/xdebug-3.4.5/tests/develop/vardump-overload-cli-002.phpt b/xdebug-3.4.5/tests/develop/vardump-overload-cli-002.phpt
new file mode 100644
index 0000000..32db99c
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/vardump-overload-cli-002.phpt
@@ -0,0 +1,94 @@
+--TEST--
+Test for overloaded var_dump() on the CLI with file
+--INI--
+xdebug.mode=develop
+html_errors=0
+xdebug.cli_color=0
+xdebug.var_display_max_data=32
+xdebug.var_display_max_depth=2
+xdebug.var_display_max_children=8
+xdebug.filename_format=
+--FILE--
+<?php
+$array = array(
+	"Hello, this is a very long string with some other useful info",
+	array(
+		"depth2" => array(
+			"depth3" => array(
+				"depth4" => false,
+			)
+		)
+	),
+	range(0, 16)
+);
+var_dump($array);
+
+ini_set('xdebug.cli_color', 2);
+var_dump($array);
+--EXPECTF--
+%svardump-overload-cli-002.php:%d:
+array(3) {
+  [0] =>
+  string(61) "Hello, this is a very long strin"...
+  [1] =>
+  array(1) {
+    'depth2' =>
+    array(1) {
+      ...
+    }
+  }
+  [2] =>
+  array(17) {
+    [0] =>
+    int(0)
+    [1] =>
+    int(1)
+    [2] =>
+    int(2)
+    [3] =>
+    int(3)
+    [4] =>
+    int(4)
+    [5] =>
+    int(5)
+    [6] =>
+    int(6)
+    [7] =>
+    int(7)
+
+    (more elements)...
+  }
+}
+[1m%svardump-overload-cli-002.php[22m:[1m%d[22m:
+[1marray[22m([32m3[0m) {
+  [0] [0m=>[0m
+  [1mstring[22m([32m61[0m) "[31mHello, this is a very long strin[0m"...
+  [1] [0m=>[0m
+  [1marray[22m([32m1[0m) {
+    'depth2' =>
+    [1marray[22m([32m1[0m) {
+      ...
+    }
+  }
+  [2] [0m=>[0m
+  [1marray[22m([32m17[0m) {
+    [0] [0m=>[0m
+    [1mint[22m([32m0[0m)
+    [1] [0m=>[0m
+    [1mint[22m([32m1[0m)
+    [2] [0m=>[0m
+    [1mint[22m([32m2[0m)
+    [3] [0m=>[0m
+    [1mint[22m([32m3[0m)
+    [4] [0m=>[0m
+    [1mint[22m([32m4[0m)
+    [5] [0m=>[0m
+    [1mint[22m([32m5[0m)
+    [6] [0m=>[0m
+    [1mint[22m([32m6[0m)
+    [7] [0m=>[0m
+    [1mint[22m([32m7[0m)
+
+    (more elements)...
+  }
+}
diff --git a/xdebug-3.4.5/tests/develop/xdebug_call.phpt b/xdebug-3.4.5/tests/develop/xdebug_call.phpt
new file mode 100644
index 0000000..2d4cdf9
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_call.phpt
@@ -0,0 +1,70 @@
+--TEST--
+Test for xdebug_call_*()
+--INI--
+xdebug.mode=develop
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+class a {
+	public function __construct( $var )
+	{
+		echo $var, ': ', xdebug_call_class(), '>', xdebug_call_function(), ' @ ', xdebug_call_file(), ':', xdebug_call_line(), "\n";
+		c( $var + 1);
+	}
+
+	public function aa( $var )
+	{
+		echo $var, ': ', xdebug_call_class(), '>', xdebug_call_function(), ' @ ', xdebug_call_file(), ':', xdebug_call_line(), "\n";
+		a::b( $var + 1 );
+	}
+
+	static public function b( $var )
+	{
+		echo $var, ': ', xdebug_call_class(), '>', xdebug_call_function(), ' @ ', xdebug_call_file(), ':', xdebug_call_line(), "\n";
+		c( $var + 1);
+	}
+}
+
+function c( $var )
+{
+	echo $var, ': ', xdebug_call_class(), '>', xdebug_call_function(), ' @ ', xdebug_call_file(), ':', xdebug_call_line(), "\n";
+	d( $var + 1 );
+}
+
+function d( $var )
+{
+	echo $var, ': ', xdebug_call_class(), '>', xdebug_call_function(), ' @ ', xdebug_call_file(), ':', xdebug_call_line(), "\n";
+}
+
+d( 1 );
+echo "\n";
+c( 1 );
+echo "\n";
+a::b( 1 );
+echo "\n";
+$a = new a( 1 );
+echo "\n";
+$a->aa( 1 );
+?>
+--EXPECTF--
+1: >{main} @ %sxdebug_call.php:0
+
+1: >{main} @ %sxdebug_call.php:0
+2: >c @ %sxdebug_call.php:35
+
+1: >{main} @ %sxdebug_call.php:0
+2: a>b @ %sxdebug_call.php:37
+3: >c @ %sxdebug_call.php:18
+
+1: >{main} @ %sxdebug_call.php:0
+2: a>__construct @ %sxdebug_call.php:39
+3: >c @ %sxdebug_call.php:6
+
+1: >{main} @ %sxdebug_call.php:0
+2: a>aa @ %sxdebug_call.php:41
+3: a>b @ %sxdebug_call.php:12
+4: >c @ %sxdebug_call.php:18
diff --git a/xdebug-3.4.5/tests/develop/xdebug_call_depth-1.phpt b/xdebug-3.4.5/tests/develop/xdebug_call_depth-1.phpt
new file mode 100644
index 0000000..a968ab5
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_call_depth-1.phpt
@@ -0,0 +1,70 @@
+--TEST--
+Test for xdebug_call_*(-1)
+--INI--
+xdebug.mode=develop
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+class a {
+	public function __construct( $var )
+	{
+		echo $var, ': ', xdebug_call_class(-1), '>', xdebug_call_function(-1), ' @ ', xdebug_call_file(-1), ':', xdebug_call_line(-1), "\n";
+		c( $var + 1);
+	}
+
+	public function aa( $var )
+	{
+		echo $var, ': ', xdebug_call_class(-1), '>', xdebug_call_function(-1), ' @ ', xdebug_call_file(-1), ':', xdebug_call_line(-1), "\n";
+		a::b( $var + 1 );
+	}
+
+	static public function b( $var )
+	{
+		echo $var, ': ', xdebug_call_class(-1), '>', xdebug_call_function(-1), ' @ ', xdebug_call_file(-1), ':', xdebug_call_line(-1), "\n";
+		c( $var + 1);
+	}
+}
+
+function c( $var )
+{
+	echo $var, ': ', xdebug_call_class(-1), '>', xdebug_call_function(-1), ' @ ', xdebug_call_file(-1), ':', xdebug_call_line(-1), "\n";
+	d( $var + 1 );
+}
+
+function d( $var )
+{
+	echo $var, ': ', xdebug_call_class(-1), '>', xdebug_call_function(-1), ' @ ', xdebug_call_file(-1), ':', xdebug_call_line(-1), "\n";
+}
+
+d( 1 );
+echo "\n";
+c( 1 );
+echo "\n";
+a::b( 1 );
+echo "\n";
+$a = new a( 1 );
+echo "\n";
+$a->aa( 1 );
+?>
+--EXPECTF--
+1: > @ :
+
+1: > @ :
+2: > @ :
+
+1: > @ :
+2: > @ :
+3: > @ :
+
+1: > @ :
+2: > @ :
+3: > @ :
+
+1: > @ :
+2: > @ :
+3: > @ :
+4: > @ :
diff --git a/xdebug-3.4.5/tests/develop/xdebug_call_depth0.phpt b/xdebug-3.4.5/tests/develop/xdebug_call_depth0.phpt
new file mode 100644
index 0000000..f2e8245
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_call_depth0.phpt
@@ -0,0 +1,70 @@
+--TEST--
+Test for xdebug_call_*(0)
+--INI--
+xdebug.mode=develop
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+class a {
+	public function __construct( $var )
+	{
+		echo $var, ': ', xdebug_call_class(0), '>', xdebug_call_function(0), ' @ ', xdebug_call_file(0), ':', xdebug_call_line(0), "\n";
+		c( $var + 1);
+	}
+
+	public function aa( $var )
+	{
+		echo $var, ': ', xdebug_call_class(0), '>', xdebug_call_function(0), ' @ ', xdebug_call_file(0), ':', xdebug_call_line(0), "\n";
+		a::b( $var + 1 );
+	}
+
+	static public function b( $var )
+	{
+		echo $var, ': ', xdebug_call_class(0), '>', xdebug_call_function(0), ' @ ', xdebug_call_file(0), ':', xdebug_call_line(0), "\n";
+		c( $var + 1);
+	}
+}
+
+function c( $var )
+{
+	echo $var, ': ', xdebug_call_class(0), '>', xdebug_call_function(0), ' @ ', xdebug_call_file(0), ':', xdebug_call_line(0), "\n";
+	d( $var + 1 );
+}
+
+function d( $var )
+{
+	echo $var, ': ', xdebug_call_class(0), '>', xdebug_call_function(0), ' @ ', xdebug_call_file(0), ':', xdebug_call_line(0), "\n";
+}
+
+d( 1 );
+echo "\n";
+c( 1 );
+echo "\n";
+a::b( 1 );
+echo "\n";
+$a = new a( 1 );
+echo "\n";
+$a->aa( 1 );
+?>
+--EXPECTF--
+1: >xdebug_call_function @ %sxdebug_call_depth0.php:30
+
+1: >xdebug_call_function @ %sxdebug_call_depth0.php:24
+2: >xdebug_call_function @ %sxdebug_call_depth0.php:30
+
+1: >xdebug_call_function @ %sxdebug_call_depth0.php:17
+2: >xdebug_call_function @ %sxdebug_call_depth0.php:24
+3: >xdebug_call_function @ %sxdebug_call_depth0.php:30
+
+1: >xdebug_call_function @ %sxdebug_call_depth0.php:5
+2: >xdebug_call_function @ %sxdebug_call_depth0.php:24
+3: >xdebug_call_function @ %sxdebug_call_depth0.php:30
+
+1: >xdebug_call_function @ %sxdebug_call_depth0.php:11
+2: >xdebug_call_function @ %sxdebug_call_depth0.php:17
+3: >xdebug_call_function @ %sxdebug_call_depth0.php:24
+4: >xdebug_call_function @ %sxdebug_call_depth0.php:30
diff --git a/xdebug-3.4.5/tests/develop/xdebug_call_depth1.phpt b/xdebug-3.4.5/tests/develop/xdebug_call_depth1.phpt
new file mode 100644
index 0000000..89aadbe
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_call_depth1.phpt
@@ -0,0 +1,70 @@
+--TEST--
+Test for xdebug_call_*(1)
+--INI--
+xdebug.mode=develop
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+class a {
+	public function __construct( $var )
+	{
+		echo $var, ': ', xdebug_call_class(1), '>', xdebug_call_function(1), ' @ ', xdebug_call_file(1), ':', xdebug_call_line(1), "\n";
+		c( $var + 1);
+	}
+
+	public function aa( $var )
+	{
+		echo $var, ': ', xdebug_call_class(1), '>', xdebug_call_function(1), ' @ ', xdebug_call_file(1), ':', xdebug_call_line(1), "\n";
+		a::b( $var + 1 );
+	}
+
+	static public function b( $var )
+	{
+		echo $var, ': ', xdebug_call_class(1), '>', xdebug_call_function(1), ' @ ', xdebug_call_file(1), ':', xdebug_call_line(1), "\n";
+		c( $var + 1);
+	}
+}
+
+function c( $var )
+{
+	echo $var, ': ', xdebug_call_class(1), '>', xdebug_call_function(1), ' @ ', xdebug_call_file(1), ':', xdebug_call_line(1), "\n";
+	d( $var + 1 );
+}
+
+function d( $var )
+{
+	echo $var, ': ', xdebug_call_class(1), '>', xdebug_call_function(1), ' @ ', xdebug_call_file(1), ':', xdebug_call_line(1), "\n";
+}
+
+d( 1 );
+echo "\n";
+c( 1 );
+echo "\n";
+a::b( 1 );
+echo "\n";
+$a = new a( 1 );
+echo "\n";
+$a->aa( 1 );
+?>
+--EXPECTF--
+1: >d @ %sxdebug_call_depth1.php:33
+
+1: >c @ %sxdebug_call_depth1.php:35
+2: >d @ %sxdebug_call_depth1.php:25
+
+1: a>b @ %sxdebug_call_depth1.php:37
+2: >c @ %sxdebug_call_depth1.php:18
+3: >d @ %sxdebug_call_depth1.php:25
+
+1: a>__construct @ %sxdebug_call_depth1.php:39
+2: >c @ %sxdebug_call_depth1.php:6
+3: >d @ %sxdebug_call_depth1.php:25
+
+1: a>aa @ %sxdebug_call_depth1.php:41
+2: a>b @ %sxdebug_call_depth1.php:12
+3: >c @ %sxdebug_call_depth1.php:18
+4: >d @ %sxdebug_call_depth1.php:25
diff --git a/xdebug-3.4.5/tests/develop/xdebug_call_depth2.phpt b/xdebug-3.4.5/tests/develop/xdebug_call_depth2.phpt
new file mode 100644
index 0000000..27b011b
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_call_depth2.phpt
@@ -0,0 +1,70 @@
+--TEST--
+Test for xdebug_call_*(2)
+--INI--
+xdebug.mode=develop
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+class a {
+	public function __construct( $var )
+	{
+		echo $var, ': ', xdebug_call_class(2), '>', xdebug_call_function(2), ' @ ', xdebug_call_file(2), ':', xdebug_call_line(2), "\n";
+		c( $var + 1);
+	}
+
+	public function aa( $var )
+	{
+		echo $var, ': ', xdebug_call_class(2), '>', xdebug_call_function(2), ' @ ', xdebug_call_file(2), ':', xdebug_call_line(2), "\n";
+		a::b( $var + 1 );
+	}
+
+	static public function b( $var )
+	{
+		echo $var, ': ', xdebug_call_class(2), '>', xdebug_call_function(2), ' @ ', xdebug_call_file(2), ':', xdebug_call_line(2), "\n";
+		c( $var + 1);
+	}
+}
+
+function c( $var )
+{
+	echo $var, ': ', xdebug_call_class(2), '>', xdebug_call_function(2), ' @ ', xdebug_call_file(2), ':', xdebug_call_line(2), "\n";
+	d( $var + 1 );
+}
+
+function d( $var )
+{
+	echo $var, ': ', xdebug_call_class(2), '>', xdebug_call_function(2), ' @ ', xdebug_call_file(2), ':', xdebug_call_line(2), "\n";
+}
+
+d( 1 );
+echo "\n";
+c( 1 );
+echo "\n";
+a::b( 1 );
+echo "\n";
+$a = new a( 1 );
+echo "\n";
+$a->aa( 1 );
+?>
+--EXPECTF--
+1: >{main} @ %sxdebug_call_depth2.php:0
+
+1: >{main} @ %sxdebug_call_depth2.php:0
+2: >c @ %sxdebug_call_depth2.php:35
+
+1: >{main} @ %sxdebug_call_depth2.php:0
+2: a>b @ %sxdebug_call_depth2.php:37
+3: >c @ %sxdebug_call_depth2.php:18
+
+1: >{main} @ %sxdebug_call_depth2.php:0
+2: a>__construct @ %sxdebug_call_depth2.php:39
+3: >c @ %sxdebug_call_depth2.php:6
+
+1: >{main} @ %sxdebug_call_depth2.php:0
+2: a>aa @ %sxdebug_call_depth2.php:41
+3: a>b @ %sxdebug_call_depth2.php:12
+4: >c @ %sxdebug_call_depth2.php:18
diff --git a/xdebug-3.4.5/tests/develop/xdebug_call_depth3.phpt b/xdebug-3.4.5/tests/develop/xdebug_call_depth3.phpt
new file mode 100644
index 0000000..5f5d726
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_call_depth3.phpt
@@ -0,0 +1,70 @@
+--TEST--
+Test for xdebug_call_*(3)
+--INI--
+xdebug.mode=develop
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.auto_profile=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+class a {
+	public function __construct( $var )
+	{
+		echo $var, ': ', xdebug_call_class(3), '>', xdebug_call_function(3), ' @ ', xdebug_call_file(3), ':', xdebug_call_line(3), "\n";
+		c( $var + 1);
+	}
+
+	public function aa( $var )
+	{
+		echo $var, ': ', xdebug_call_class(3), '>', xdebug_call_function(3), ' @ ', xdebug_call_file(3), ':', xdebug_call_line(3), "\n";
+		a::b( $var + 1 );
+	}
+
+	static public function b( $var )
+	{
+		echo $var, ': ', xdebug_call_class(3), '>', xdebug_call_function(3), ' @ ', xdebug_call_file(3), ':', xdebug_call_line(3), "\n";
+		c( $var + 1);
+	}
+}
+
+function c( $var )
+{
+	echo $var, ': ', xdebug_call_class(3), '>', xdebug_call_function(3), ' @ ', xdebug_call_file(3), ':', xdebug_call_line(3), "\n";
+	d( $var + 1 );
+}
+
+function d( $var )
+{
+	echo $var, ': ', xdebug_call_class(3), '>', xdebug_call_function(3), ' @ ', xdebug_call_file(3), ':', xdebug_call_line(3), "\n";
+}
+
+d( 1 );
+echo "\n";
+c( 1 );
+echo "\n";
+a::b( 1 );
+echo "\n";
+$a = new a( 1 );
+echo "\n";
+$a->aa( 1 );
+?>
+--EXPECTF--
+1: > @ :
+
+1: > @ :
+2: >{main} @ %sxdebug_call_depth3.php:0
+
+1: > @ :
+2: >{main} @ %sxdebug_call_depth3.php:0
+3: a>b @ %sxdebug_call_depth3.php:37
+
+1: > @ :
+2: >{main} @ %sxdebug_call_depth3.php:0
+3: a>__construct @ %sxdebug_call_depth3.php:39
+
+1: > @ :
+2: >{main} @ %sxdebug_call_depth3.php:0
+3: a>aa @ %sxdebug_call_depth3.php:41
+4: a>b @ %sxdebug_call_depth3.php:12
diff --git a/xdebug-3.4.5/tests/develop/xdebug_debug_zval-noopcache.phpt b/xdebug-3.4.5/tests/develop/xdebug_debug_zval-noopcache.phpt
new file mode 100644
index 0000000..e7ed02c
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_debug_zval-noopcache.phpt
@@ -0,0 +1,52 @@
+--TEST--
+Test for xdebug_debug_zval() (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.cli_color=0
+--FILE--
+<?php
+function func(){
+	$a="hoge";
+	$b = array('a' => 4, 'b' => 5, 'c' => 6, 8, 9);
+	$c =& $b['b'];
+	$d = $b['c'];
+	$e = new stdClass;
+	$e->foo = false;
+	$e->bar =& $e->foo;
+	$e->baz = array(4, 'b' => 42);
+	xdebug_debug_zval( 'a' );
+	xdebug_debug_zval( '$a' );
+	xdebug_debug_zval( '$b' );
+	xdebug_debug_zval( "\$b['a']" );
+	xdebug_debug_zval( "\$b['b']" );
+	xdebug_debug_zval( "b[1]" );
+	xdebug_debug_zval( "c" );
+	xdebug_debug_zval( "d" );
+	xdebug_debug_zval( "e" );
+	xdebug_debug_zval( "e->bar" );
+	xdebug_debug_zval( "e->bar['b']" );
+	xdebug_debug_zval( "e->baz[0]" );
+	xdebug_debug_zval( "e->baz['b']" );
+}
+
+func();
+?>
+--EXPECTF--
+a: (%s, is_ref=0)='hoge'
+$a: (%s, is_ref=0)='hoge'
+$b: (refcount=1, is_ref=0)=array ('a' => (refcount=0, is_ref=0)=4, 'b' => (refcount=2, is_ref=1)=5, 'c' => (refcount=0, is_ref=0)=6, 0 => (refcount=0, is_ref=0)=8, 1 => (refcount=0, is_ref=0)=9)
+$b['a']: (refcount=0, is_ref=0)=4
+$b['b']: (refcount=2, is_ref=1)=5
+b[1]: (refcount=0, is_ref=0)=9
+c: (refcount=2, is_ref=1)=5
+d: (refcount=0, is_ref=0)=6
+e: (refcount=1, is_ref=0)=class stdClass { public $foo = (refcount=2, is_ref=1)=FALSE; public $bar = (refcount=2, is_ref=1)=FALSE; public $baz = (%s, is_ref=0)=array (0 => (refcount=0, is_ref=0)=4, 'b' => (refcount=0, is_ref=0)=42) }
+e->bar: (refcount=2, is_ref=1)=FALSE
+e->bar['b']: no such symbol
+e->baz[0]: (refcount=0, is_ref=0)=4
+e->baz['b']: (refcount=0, is_ref=0)=42
diff --git a/xdebug-3.4.5/tests/develop/xdebug_debug_zval-opcache.phpt b/xdebug-3.4.5/tests/develop/xdebug_debug_zval-opcache.phpt
new file mode 100644
index 0000000..3146af1
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_debug_zval-opcache.phpt
@@ -0,0 +1,52 @@
+--TEST--
+Test for xdebug_debug_zval() (opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('opcache');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.cli_color=0
+--FILE--
+<?php
+function func(){
+	$a="hoge";
+	$b = array('a' => 4, 'b' => 5, 'c' => 6, 8, 9);
+	$c =& $b['b'];
+	$d = $b['c'];
+	$e = new stdClass;
+	$e->foo = false;
+	$e->bar =& $e->foo;
+	$e->baz = array(4, 'b' => 42);
+	xdebug_debug_zval( 'a' );
+	xdebug_debug_zval( '$a' );
+	xdebug_debug_zval( '$b' );
+	xdebug_debug_zval( "\$b['a']" );
+	xdebug_debug_zval( "\$b['b']" );
+	xdebug_debug_zval( "b[1]" );
+	xdebug_debug_zval( "c" );
+	xdebug_debug_zval( "d" );
+	xdebug_debug_zval( "e" );
+	xdebug_debug_zval( "e->bar" );
+	xdebug_debug_zval( "e->bar['b']" );
+	xdebug_debug_zval( "e->baz[0]" );
+	xdebug_debug_zval( "e->baz['b']" );
+}
+
+func();
+?>
+--EXPECT--
+a: no such symbol
+$a: no such symbol
+$b: (refcount=1, is_ref=0)=array ('a' => (refcount=0, is_ref=0)=4, 'b' => (refcount=2, is_ref=1)=5, 'c' => (refcount=0, is_ref=0)=6, 0 => (refcount=0, is_ref=0)=8, 1 => (refcount=0, is_ref=0)=9)
+$b['a']: (refcount=0, is_ref=0)=4
+$b['b']: (refcount=2, is_ref=1)=5
+b[1]: (refcount=0, is_ref=0)=9
+c: (refcount=2, is_ref=1)=5
+d: (refcount=0, is_ref=0)=6
+e: (refcount=1, is_ref=0)=class stdClass { public $foo = (refcount=2, is_ref=1)=FALSE; public $bar = (refcount=2, is_ref=1)=FALSE; public $baz = (immutable, is_ref=0)=array (0 => (refcount=0, is_ref=0)=4, 'b' => (refcount=0, is_ref=0)=42) }
+e->bar: (refcount=2, is_ref=1)=FALSE
+e->bar['b']: no such symbol
+e->baz[0]: (refcount=0, is_ref=0)=4
+e->baz['b']: (refcount=0, is_ref=0)=42
diff --git a/xdebug-3.4.5/tests/develop/xdebug_debug_zval_cli_color-noopcache-nts.phpt b/xdebug-3.4.5/tests/develop/xdebug_debug_zval_cli_color-noopcache-nts.phpt
new file mode 100644
index 0000000..9ec198f
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_debug_zval_cli_color-noopcache-nts.phpt
@@ -0,0 +1,86 @@
+--TEST--
+Test for xdebug_debug_zval() (CLI colours) (NTS, !opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('NTS; !opcache');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.cli_color=2
+--FILE--
+<?php
+function func(){
+	$a="hoge";
+	$b = array('a' => 4, 'b' => 5, 'c' => 6, 8, 9);
+	$c =& $b['b'];
+	$d = $b['c'];
+	$e = new stdClass;
+	$e->foo = false;
+	$e->bar =& $e->foo;
+	$e->baz = array(4, 'b' => 42);
+	xdebug_debug_zval( 'a' );
+	xdebug_debug_zval( '$a' );
+	xdebug_debug_zval( '$b' );
+	xdebug_debug_zval( "\$b['a']" );
+	xdebug_debug_zval( "\$b['b']" );
+	xdebug_debug_zval( "b[1]" );
+	xdebug_debug_zval( "c" );
+	xdebug_debug_zval( "d" );
+	xdebug_debug_zval( "e" );
+	xdebug_debug_zval( "e->bar" );
+	xdebug_debug_zval( "e->bar['b']" );
+	xdebug_debug_zval( "e->baz[0]" );
+	xdebug_debug_zval( "e->baz['b']" );
+}
+
+func();
+?>
+--EXPECTF--
+a: (%s, is_ref=0)=[1mstring[22m([32m4[0m) "[31mhoge[0m"
+
+$a: (%s, is_ref=0)=[1mstring[22m([32m4[0m) "[31mhoge[0m"
+
+$b: (refcount=1, is_ref=0)=[1marray[22m([32m5[0m) {
+  'a' =>
+  (refcount=0, is_ref=0)=[1mint[22m([32m4[0m)
+  'b' =>
+  (refcount=2, is_ref=1)=[1mint[22m([32m5[0m)
+  'c' =>
+  (refcount=0, is_ref=0)=[1mint[22m([32m6[0m)
+  [0] [0m=>[0m
+  (refcount=0, is_ref=0)=[1mint[22m([32m8[0m)
+  [1] [0m=>[0m
+  (refcount=0, is_ref=0)=[1mint[22m([32m9[0m)
+}
+
+$b['a']: (refcount=0, is_ref=0)=[1mint[22m([32m4[0m)
+
+$b['b']: (refcount=2, is_ref=1)=[1mint[22m([32m5[0m)
+
+b[1]: (refcount=0, is_ref=0)=[1mint[22m([32m9[0m)
+
+c: (refcount=2, is_ref=1)=[1mint[22m([32m5[0m)
+
+d: (refcount=0, is_ref=0)=[1mint[22m([32m6[0m)
+
+e: (refcount=1, is_ref=0)=[1mclass[22m [31mstdClass[0m#%d ([32m3[0m) {
+  [32m[1mpublic[22m[0m $foo [0m=>[0m
+  (refcount=2, is_ref=1)=[1mbool[22m([35mfalse[0m)
+  [32m[1mpublic[22m[0m $bar [0m=>[0m
+  (refcount=2, is_ref=1)=[1mbool[22m([35mfalse[0m)
+  [32m[1mpublic[22m[0m $baz [0m=>[0m
+  (%s, is_ref=0)=[1marray[22m([32m2[0m) {
+    [0] [0m=>[0m
+    (refcount=0, is_ref=0)=[1mint[22m([32m4[0m)
+    'b' =>
+    (refcount=0, is_ref=0)=[1mint[22m([32m42[0m)
+  }
+}
+
+e->bar: (refcount=2, is_ref=1)=[1mbool[22m([35mfalse[0m)
+
+e->bar['b']: no such symbol
+e->baz[0]: (refcount=0, is_ref=0)=[1mint[22m([32m4[0m)
+
+e->baz['b']: (refcount=0, is_ref=0)=[1mint[22m([32m42[0m)
diff --git a/xdebug-3.4.5/tests/develop/xdebug_debug_zval_cli_color-noopcache-zts.phpt b/xdebug-3.4.5/tests/develop/xdebug_debug_zval_cli_color-noopcache-zts.phpt
new file mode 100644
index 0000000..84ebb15
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_debug_zval_cli_color-noopcache-zts.phpt
@@ -0,0 +1,86 @@
+--TEST--
+Test for xdebug_debug_zval() (CLI colours) (ZTS, !opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ZTS; !opcache');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.cli_color=2
+--FILE--
+<?php
+function func(){
+	$a = "ho"; $a .= "ge";
+	$b = array('a' => 4, 'b' => 5, 'c' => 6, 8, 9);
+	$c =& $b['b'];
+	$d = $b['c'];
+	$e = new stdClass;
+	$e->foo = false;
+	$e->bar =& $e->foo;
+	$e->baz = array(4, $a => 42);
+	xdebug_debug_zval( 'a' );
+	xdebug_debug_zval( '$a' );
+	xdebug_debug_zval( '$b' );
+	xdebug_debug_zval( "\$b['a']" );
+	xdebug_debug_zval( "\$b['b']" );
+	xdebug_debug_zval( "b[1]" );
+	xdebug_debug_zval( "c" );
+	xdebug_debug_zval( "d" );
+	xdebug_debug_zval( "e" );
+	xdebug_debug_zval( "e->bar" );
+	xdebug_debug_zval( "e->bar['b']" );
+	xdebug_debug_zval( "e->baz[0]" );
+	xdebug_debug_zval( "e->baz['hoge']" );
+}
+
+func();
+?>
+--EXPECTF--
+a: (%s, is_ref=0)=[1mstring[22m([32m4[0m) "[31mhoge[0m"
+
+$a: (%s, is_ref=0)=[1mstring[22m([32m4[0m) "[31mhoge[0m"
+
+$b: (refcount=1, is_ref=0)=[1marray[22m([32m5[0m) {
+  'a' =>
+  (refcount=0, is_ref=0)=[1mint[22m([32m4[0m)
+  'b' =>
+  (refcount=%d, is_ref=1)=[1mint[22m([32m5[0m)
+  'c' =>
+  (refcount=0, is_ref=0)=[1mint[22m([32m6[0m)
+  [0] [0m=>[0m
+  (refcount=0, is_ref=0)=[1mint[22m([32m8[0m)
+  [1] [0m=>[0m
+  (refcount=0, is_ref=0)=[1mint[22m([32m9[0m)
+}
+
+$b['a']: (refcount=0, is_ref=0)=[1mint[22m([32m4[0m)
+
+$b['b']: (refcount=2, is_ref=1)=[1mint[22m([32m5[0m)
+
+b[1]: (refcount=0, is_ref=0)=[1mint[22m([32m9[0m)
+
+c: (refcount=2, is_ref=1)=[1mint[22m([32m5[0m)
+
+d: (refcount=0, is_ref=0)=[1mint[22m([32m6[0m)
+
+e: (refcount=1, is_ref=0)=[1mclass[22m [31mstdClass[0m#%d ([32m3[0m) {
+  [32m[1mpublic[22m[0m $foo [0m=>[0m
+  (refcount=2, is_ref=1)=[1mbool[22m([35mfalse[0m)
+  [32m[1mpublic[22m[0m $bar [0m=>[0m
+  (refcount=2, is_ref=1)=[1mbool[22m([35mfalse[0m)
+  [32m[1mpublic[22m[0m $baz [0m=>[0m
+  (refcount=%d, is_ref=0)=[1marray[22m([32m2[0m) {
+    [0] [0m=>[0m
+    (refcount=0, is_ref=0)=[1mint[22m([32m4[0m)
+    'hoge' =>
+    (refcount=0, is_ref=0)=[1mint[22m([32m42[0m)
+  }
+}
+
+e->bar: (refcount=2, is_ref=1)=[1mbool[22m([35mfalse[0m)
+
+e->bar['b']: no such symbol
+e->baz[0]: (refcount=0, is_ref=0)=[1mint[22m([32m4[0m)
+
+e->baz['hoge']: (refcount=0, is_ref=0)=[1mint[22m([32m42[0m)
diff --git a/xdebug-3.4.5/tests/develop/xdebug_debug_zval_cli_color-opcache.phpt b/xdebug-3.4.5/tests/develop/xdebug_debug_zval_cli_color-opcache.phpt
new file mode 100644
index 0000000..9f45ea3
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_debug_zval_cli_color-opcache.phpt
@@ -0,0 +1,84 @@
+--TEST--
+Test for xdebug_debug_zval() (CLI colours) (opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('opcache');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.cli_color=2
+--FILE--
+<?php
+function func(){
+	$a="hoge";
+	$b = array('a' => 4, 'b' => 5, 'c' => 6, 8, 9);
+	$c =& $b['b'];
+	$d = $b['c'];
+	$e = new stdClass;
+	$e->foo = false;
+	$e->bar =& $e->foo;
+	$e->baz = array(4, 'b' => 42);
+	xdebug_debug_zval( 'a' );
+	xdebug_debug_zval( '$a' );
+	xdebug_debug_zval( '$b' );
+	xdebug_debug_zval( "\$b['a']" );
+	xdebug_debug_zval( "\$b['b']" );
+	xdebug_debug_zval( "b[1]" );
+	xdebug_debug_zval( "c" );
+	xdebug_debug_zval( "d" );
+	xdebug_debug_zval( "e" );
+	xdebug_debug_zval( "e->bar" );
+	xdebug_debug_zval( "e->bar['b']" );
+	xdebug_debug_zval( "e->baz[0]" );
+	xdebug_debug_zval( "e->baz['b']" );
+}
+
+func();
+?>
+--EXPECT--
+a: no such symbol
+$a: no such symbol
+$b: (refcount=1, is_ref=0)=[1marray[22m([32m5[0m) {
+  'a' =>
+  (refcount=0, is_ref=0)=[1mint[22m([32m4[0m)
+  'b' =>
+  (refcount=2, is_ref=1)=[1mint[22m([32m5[0m)
+  'c' =>
+  (refcount=0, is_ref=0)=[1mint[22m([32m6[0m)
+  [0] [0m=>[0m
+  (refcount=0, is_ref=0)=[1mint[22m([32m8[0m)
+  [1] [0m=>[0m
+  (refcount=0, is_ref=0)=[1mint[22m([32m9[0m)
+}
+
+$b['a']: (refcount=0, is_ref=0)=[1mint[22m([32m4[0m)
+
+$b['b']: (refcount=2, is_ref=1)=[1mint[22m([32m5[0m)
+
+b[1]: (refcount=0, is_ref=0)=[1mint[22m([32m9[0m)
+
+c: (refcount=2, is_ref=1)=[1mint[22m([32m5[0m)
+
+d: (refcount=0, is_ref=0)=[1mint[22m([32m6[0m)
+
+e: (refcount=1, is_ref=0)=[1mclass[22m [31mstdClass[0m#1 ([32m3[0m) {
+  [32m[1mpublic[22m[0m $foo [0m=>[0m
+  (refcount=2, is_ref=1)=[1mbool[22m([35mfalse[0m)
+  [32m[1mpublic[22m[0m $bar [0m=>[0m
+  (refcount=2, is_ref=1)=[1mbool[22m([35mfalse[0m)
+  [32m[1mpublic[22m[0m $baz [0m=>[0m
+  (immutable, is_ref=0)=[1marray[22m([32m2[0m) {
+    [0] [0m=>[0m
+    (refcount=0, is_ref=0)=[1mint[22m([32m4[0m)
+    'b' =>
+    (refcount=0, is_ref=0)=[1mint[22m([32m42[0m)
+  }
+}
+
+e->bar: (refcount=2, is_ref=1)=[1mbool[22m([35mfalse[0m)
+
+e->bar['b']: no such symbol
+e->baz[0]: (refcount=0, is_ref=0)=[1mint[22m([32m4[0m)
+
+e->baz['b']: (refcount=0, is_ref=0)=[1mint[22m([32m42[0m)
diff --git a/xdebug-3.4.5/tests/develop/xdebug_debug_zval_stdout-noopcache.phpt b/xdebug-3.4.5/tests/develop/xdebug_debug_zval_stdout-noopcache.phpt
new file mode 100644
index 0000000..d771f38
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_debug_zval_stdout-noopcache.phpt
@@ -0,0 +1,52 @@
+--TEST--
+Test for xdebug_debug_zval_stdout() (!opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.cli_color=0
+--FILE--
+<?php
+function func(){
+	$a="hoge";
+	$b = array('a' => 4, 'b' => 5, 'c' => 6, 8, 9);
+	$c =& $b['b'];
+	$d = $b['c'];
+	$e = new stdClass;
+	$e->foo = false;
+	$e->bar =& $e->foo;
+	$e->baz = array(4, 'b' => 42);
+	xdebug_debug_zval( 'a' );
+	xdebug_debug_zval( '$a' );
+	xdebug_debug_zval( '$b' );
+	xdebug_debug_zval( "\$b['a']" );
+	xdebug_debug_zval( "\$b['b']" );
+	xdebug_debug_zval( "b[1]" );
+	xdebug_debug_zval( "c" );
+	xdebug_debug_zval( "d" );
+	xdebug_debug_zval( "e" );
+	xdebug_debug_zval( "e->bar" );
+	xdebug_debug_zval( "e->bar['b']" );
+	xdebug_debug_zval( "e->baz[0]" );
+	xdebug_debug_zval( "e->baz['b']" );
+}
+
+func();
+?>
+--EXPECTF--
+a: (%s, is_ref=0)='hoge'
+$a: (%s, is_ref=0)='hoge'
+$b: (refcount=1, is_ref=0)=array ('a' => (refcount=0, is_ref=0)=4, 'b' => (refcount=2, is_ref=1)=5, 'c' => (refcount=0, is_ref=0)=6, 0 => (refcount=0, is_ref=0)=8, 1 => (refcount=0, is_ref=0)=9)
+$b['a']: (refcount=0, is_ref=0)=4
+$b['b']: (refcount=2, is_ref=1)=5
+b[1]: (refcount=0, is_ref=0)=9
+c: (refcount=2, is_ref=1)=5
+d: (refcount=0, is_ref=0)=6
+e: (refcount=1, is_ref=0)=class stdClass { public $foo = (refcount=2, is_ref=1)=FALSE; public $bar = (refcount=2, is_ref=1)=FALSE; public $baz = (%s, is_ref=0)=array (0 => (refcount=0, is_ref=0)=4, 'b' => (refcount=0, is_ref=0)=42) }
+e->bar: (refcount=2, is_ref=1)=FALSE
+e->bar['b']: no such symbol
+e->baz[0]: (refcount=0, is_ref=0)=4
+e->baz['b']: (refcount=0, is_ref=0)=42
diff --git a/xdebug-3.4.5/tests/develop/xdebug_debug_zval_stdout-opcache.phpt b/xdebug-3.4.5/tests/develop/xdebug_debug_zval_stdout-opcache.phpt
new file mode 100644
index 0000000..707c13c
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_debug_zval_stdout-opcache.phpt
@@ -0,0 +1,52 @@
+--TEST--
+Test for xdebug_debug_zval_stdout() (opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('opcache');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.cli_color=0
+--FILE--
+<?php
+function func(){
+	$a="hoge";
+	$b = array('a' => 4, 'b' => 5, 'c' => 6, 8, 9);
+	$c =& $b['b'];
+	$d = $b['c'];
+	$e = new stdClass;
+	$e->foo = false;
+	$e->bar =& $e->foo;
+	$e->baz = array(4, 'b' => 42);
+	xdebug_debug_zval( 'a' );
+	xdebug_debug_zval( '$a' );
+	xdebug_debug_zval( '$b' );
+	xdebug_debug_zval( "\$b['a']" );
+	xdebug_debug_zval( "\$b['b']" );
+	xdebug_debug_zval( "b[1]" );
+	xdebug_debug_zval( "c" );
+	xdebug_debug_zval( "d" );
+	xdebug_debug_zval( "e" );
+	xdebug_debug_zval( "e->bar" );
+	xdebug_debug_zval( "e->bar['b']" );
+	xdebug_debug_zval( "e->baz[0]" );
+	xdebug_debug_zval( "e->baz['b']" );
+}
+
+func();
+?>
+--EXPECT--
+a: no such symbol
+$a: no such symbol
+$b: (refcount=1, is_ref=0)=array ('a' => (refcount=0, is_ref=0)=4, 'b' => (refcount=2, is_ref=1)=5, 'c' => (refcount=0, is_ref=0)=6, 0 => (refcount=0, is_ref=0)=8, 1 => (refcount=0, is_ref=0)=9)
+$b['a']: (refcount=0, is_ref=0)=4
+$b['b']: (refcount=2, is_ref=1)=5
+b[1]: (refcount=0, is_ref=0)=9
+c: (refcount=2, is_ref=1)=5
+d: (refcount=0, is_ref=0)=6
+e: (refcount=1, is_ref=0)=class stdClass { public $foo = (refcount=2, is_ref=1)=FALSE; public $bar = (refcount=2, is_ref=1)=FALSE; public $baz = (immutable, is_ref=0)=array (0 => (refcount=0, is_ref=0)=4, 'b' => (refcount=0, is_ref=0)=42) }
+e->bar: (refcount=2, is_ref=1)=FALSE
+e->bar['b']: no such symbol
+e->baz[0]: (refcount=0, is_ref=0)=4
+e->baz['b']: (refcount=0, is_ref=0)=42
diff --git a/xdebug-3.4.5/tests/develop/xdebug_get_function_stack_exception_handler.phpt b/xdebug-3.4.5/tests/develop/xdebug_get_function_stack_exception_handler.phpt
new file mode 100644
index 0000000..aa561b9
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_get_function_stack_exception_handler.phpt
@@ -0,0 +1,58 @@
+--TEST--
+xdebug_get_function_stack in exception handler
+--INI--
+xdebug.mode=develop
+xdebug.trace_format=0
+xdebug.dump_globals=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.force_error_reporting=0
+xdebug.var_display_max_data=256
+log_errors=1
+error_log=
+display_errors=0
+xdebug.filename_format=
+--FILE--
+<?php
+function custom_exception_handler()
+{
+	var_dump( xdebug_get_function_stack() );
+}
+
+function foo( $a )
+{
+	$g = new stdClass;
+	$g->fooBar = 42;
+
+	$pi = M_PI;
+
+	throw new Exception('Simple message');
+}
+
+set_exception_handler( 'custom_exception_handler' );
+
+foo( true );
+
+?>
+--EXPECTF--
+%sxdebug_get_function_stack_exception_handler.php:4:
+array(1) {
+  [0] =>
+  array(6) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(24) "custom_exception_handler"
+    'file' =>
+    string(%d) "%sxdebug_get_function_stack_exception_handler.php"
+    'line' =>
+    int(0)
+    'params' =>
+    array(1) {
+      [0] =>
+      string(%d) "class Exception { %s"...
+    }
+  }
+}
diff --git a/xdebug-3.4.5/tests/develop/xdebug_get_function_stack_local_vars.phpt b/xdebug-3.4.5/tests/develop/xdebug_get_function_stack_local_vars.phpt
new file mode 100644
index 0000000..81076d5
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_get_function_stack_local_vars.phpt
@@ -0,0 +1,58 @@
+--TEST--
+xdebug_get_function_stack in exception handler
+--INI--
+xdebug.mode=develop
+xdebug.trace_format=0
+xdebug.dump_globals=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.force_error_reporting=0
+xdebug.var_display_max_data=256
+log_errors=1
+error_log=
+display_errors=0
+xdebug.filename_format=
+--FILE--
+<?php
+function custom_exception_handler()
+{
+	var_dump( xdebug_get_function_stack() );
+}
+
+function foo( $a )
+{
+	$g = new stdClass;
+	$g->fooBar = 42;
+
+	$pi = M_PI;
+
+	throw new Exception('Simple message');
+}
+
+set_exception_handler( 'custom_exception_handler' );
+
+foo( true );
+
+?>
+--EXPECTF--
+%sxdebug_get_function_stack_local_vars.php:4:
+array(1) {
+  [0] =>
+  array(6) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(24) "custom_exception_handler"
+    'file' =>
+    string(%d) "%sxdebug_get_function_stack_local_vars.php"
+    'line' =>
+    int(0)
+    'params' =>
+    array(1) {
+      [0] =>
+      string(%d) "class Exception { %s"...
+    }
+  }
+}
diff --git a/xdebug-3.4.5/tests/develop/xdebug_get_function_stack_variadic.phpt b/xdebug-3.4.5/tests/develop/xdebug_get_function_stack_variadic.phpt
new file mode 100644
index 0000000..70fa64a
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_get_function_stack_variadic.phpt
@@ -0,0 +1,92 @@
+--TEST--
+xdebug_get_function_stack with variadics
+--INI--
+xdebug.mode=develop
+xdebug.trace_format=0
+xdebug.dump_globals=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.force_error_reporting=0
+log_errors=1
+error_log=
+display_errors=0
+xdebug.filename_format=
+--FILE--
+<?php
+function foo( $a, ...$b )
+{
+	$s = xdebug_get_function_stack();
+	var_dump( $s[1] );
+}
+
+foo( 42 );
+foo( 1, false );
+foo( "foo", "bar", 3.1415 );
+?>
+--EXPECTF--
+%sxdebug_get_function_stack_variadic.php:5:
+array(6) {
+  'time' =>
+  double(%f)
+  'memory' =>
+  int(%d)
+  'function' =>
+  string(3) "foo"
+  'file' =>
+  string(%d) "%sxdebug_get_function_stack_variadic.php"
+  'line' =>
+  int(8)
+  'params' =>
+  array(1) {
+    'a' =>
+    string(2) "42"
+  }
+}
+%sxdebug_get_function_stack_variadic.php:5:
+array(6) {
+  'time' =>
+  double(%f)
+  'memory' =>
+  int(%d)
+  'function' =>
+  string(3) "foo"
+  'file' =>
+  string(%d) "%sxdebug_get_function_stack_variadic.php"
+  'line' =>
+  int(9)
+  'params' =>
+  array(2) {
+    'a' =>
+    string(1) "1"
+    'b' =>
+    array(1) {
+      [1] =>
+      string(5) "FALSE"
+    }
+  }
+}
+%sxdebug_get_function_stack_variadic.php:5:
+array(6) {
+  'time' =>
+  double(%f)
+  'memory' =>
+  int(%d)
+  'function' =>
+  string(3) "foo"
+  'file' =>
+  string(%d) "%sxdebug_get_function_stack_variadic.php"
+  'line' =>
+  int(10)
+  'params' =>
+  array(2) {
+    'a' =>
+    string(5) "'foo'"
+    'b' =>
+    array(2) {
+      [1] =>
+      string(5) "'bar'"
+      [2] =>
+      string(6) "3.1415"
+    }
+  }
+}
diff --git a/xdebug-3.4.5/tests/develop/xdebug_time_index.phpt b/xdebug-3.4.5/tests/develop/xdebug_time_index.phpt
new file mode 100644
index 0000000..a1f593e
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_time_index.phpt
@@ -0,0 +1,28 @@
+--TEST--
+xdebug_time_index()
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+usleep( 250000 );
+
+$rq = $_SERVER['REQUEST_TIME_FLOAT'];
+$c  = microtime( true );
+$xt = xdebug_time_index();
+
+$d  = ($rq + $xt) - $c;
+
+echo "Request time (float): ", $rq, "\n";
+echo "Xdebug time index:    ", $xt, "\n";
+echo "Current microtime:    ", $c,  "\n";
+echo "Difference:           ", $d,  "\n";
+
+echo "The difference is ", abs($d) > 1e-2 ? "too high\n" : "fine\n";
+?>
+--EXPECTF--
+Request time (float): 1%s
+Xdebug time index:    0.%r(2|3|4)%r%d
+Current microtime:    1%s
+Difference:           %f
+The difference is fine
+
diff --git a/xdebug-3.4.5/tests/develop/xdebug_var_dump.phpt b/xdebug-3.4.5/tests/develop/xdebug_var_dump.phpt
new file mode 100644
index 0000000..07f5c46
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_var_dump.phpt
@@ -0,0 +1,54 @@
+--TEST--
+Test for correct display with xdebug_var_dump()
+--INI--
+xdebug.mode=develop
+html_errors=1
+date.timezone=Europe/Oslo
+xdebug.var_display_max_children=11
+xdebug.file_link_format=
+--FILE--
+<?php
+	class TimeStuff {
+		private $timestamp;
+		private $user_defined;
+		private $self;
+		protected $tm;
+		public $date;
+
+		function __construct($ts = null)
+		{
+			$this->self = &$this;
+			$this->timestamp = $ts === null ? time() : $ts;
+			$this->user_defined = ($ts !== null);
+			$this->date = date("Y-m-d H:i:s T", $this->timestamp);
+			$this->tm = getdate($this->timestamp);
+		}
+	}
+
+	$ts1 = new TimeStuff(1092515106);
+
+	var_dump($ts1);
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sxdebug_var_dump.php:21:</small>
+<b>object</b>(<i>TimeStuff</i>)[<i>%d</i>]
+  <i>private</i> 'timestamp' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>1092515106</font>
+  <i>private</i> 'user_defined' <font color='#888a85'>=&gt;</font> <small>boolean</small> <font color='#75507b'>true</font>
+  <i>private</i> 'self' <font color='#888a85'>=&gt;</font> 
+    <i>&amp;</i><b>object</b>(<i>TimeStuff</i>)[<i>%d</i>]
+  <i>protected</i> 'tm' <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=11)</i>
+      'seconds' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>6</font>
+      'minutes' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>25</font>
+      'hours' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>22</font>
+      'mday' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>14</font>
+      'wday' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>6</font>
+      'mon' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>8</font>
+      'year' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>2004</font>
+      'yday' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>226</font>
+      'weekday' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'Saturday'</font> <i>(length=8)</i>
+      'month' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'August'</font> <i>(length=6)</i>
+      0 <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>1092515106</font>
+  <i>public</i> 'date' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'2004-08-14 22:25:06 CEST'</font> <i>(length=24)</i>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/xdebug_var_dump_datetime.phpt b/xdebug-3.4.5/tests/develop/xdebug_var_dump_datetime.phpt
new file mode 100644
index 0000000..0ef07d4
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_var_dump_datetime.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Test output from xdebug_var_dump() with DateTimeImmutable
+--INI--
+xdebug.mode=develop
+html_errors=0
+date.timezone=Europe/Oslo
+xdebug.var_display_max_children=11
+xdebug.file_link_format=xdebug://%f@%l
+xdebug.filename_format=
+--FILE--
+<?php
+var_dump(new DateTimeImmutable('2019-12-20 13:00:00+0000'));
+?>
+--EXPECTF--
+%sxdebug_var_dump_datetime.php:%d:
+class DateTimeImmutable#%d (3) {
+  public $date =>
+  string(26) "2019-12-20 13:00:00.000000"
+  public $timezone_type =>
+  int(1)
+  public $timezone =>
+  string(6) "+00:00"
+}
diff --git a/xdebug-3.4.5/tests/develop/xdebug_var_dump_enum-ansi.phpt b/xdebug-3.4.5/tests/develop/xdebug_var_dump_enum-ansi.phpt
new file mode 100644
index 0000000..7f63b6d
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_var_dump_enum-ansi.phpt
@@ -0,0 +1,47 @@
+--TEST--
+xdebug_var_dump() with enums [ansi]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1');
+?>
+--INI--
+date.timezone=UTC
+xdebug.mode=develop
+html_errors=0
+xdebug.var_display_max_children=11
+xdebug.cli_color=2
+xdebug.file_link_format=
+xdebug.filename_format=
+--FILE--
+<?php
+enum Language {
+	case English;
+	case Cymru;
+	case Gàidhlig;
+}
+$lang = Language::Gàidhlig;
+
+enum Currency: string {
+	case EUR = "€";
+	case GBP = "£";
+}
+$eur = Currency::EUR;
+
+enum Unit: int {
+	case Second = 1;
+	case Minute = 60;
+	case Hour = 3600;
+	case Day = 86400;
+}
+$time = Unit::Hour;
+
+xdebug_var_dump( $lang, $eur, $time );
+?>
+--EXPECTF--
+[1m%sxdebug_var_dump_enum-ansi.php[22m:[1m23[22m:
+[1menum[22m [31mLanguage[0m::[31mGàidhlig[0m;
+[1m%sxdebug_var_dump_enum-ansi.php[22m:[1m23[22m:
+[1menum[22m [31mCurrency[0m::[31mEUR[0m : [1mstring[0m([31m"€"[0m);
+[1m%sxdebug_var_dump_enum-ansi.php[22m:[1m23[22m:
+[1menum[22m [31mUnit[0m::[31mHour[0m : [1mint[0m([32m3600[0m);
diff --git a/xdebug-3.4.5/tests/develop/xdebug_var_dump_enum-html.phpt b/xdebug-3.4.5/tests/develop/xdebug_var_dump_enum-html.phpt
new file mode 100644
index 0000000..e105fbe
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_var_dump_enum-html.phpt
@@ -0,0 +1,47 @@
+--TEST--
+xdebug_var_dump() with enums [html]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1');
+?>
+--INI--
+date.timezone=UTC
+xdebug.mode=develop
+html_errors=1
+xdebug.var_display_max_children=11
+xdebug.file_link_format=
+xdebug.filename_format=
+--FILE--
+<?php
+enum Language {
+	case English;
+	case Cymru;
+	case Gàidhlig;
+}
+$lang = Language::Gàidhlig;
+
+enum Currency: string {
+	case EUR = "€";
+	case GBP = "£";
+}
+$eur = Currency::EUR;
+
+enum Unit: int {
+	case Second = 1;
+	case Minute = 60;
+	case Hour = 3600;
+	case Day = 86400;
+}
+$time = Unit::Hour;
+
+xdebug_var_dump( $lang, $eur, $time );
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sxdebug_var_dump_enum-html.php:23:</small><b>enum</b>(<i>Language::Gàidhlig</i>)
+</pre><pre class='xdebug-var-dump' dir='ltr'>
+<small>%sxdebug_var_dump_enum-html.php:23:</small><b>enum</b>(<i>Currency::EUR</i>) : <small>string</small> <font color='#cc0000'>'€'</font> <i>(length=3)</i>
+</pre><pre class='xdebug-var-dump' dir='ltr'>
+<small>%sxdebug_var_dump_enum-html.php:23:</small><b>enum</b>(<i>Unit::Hour</i>) : <small>int</small> <font color='#4e9a06'>3600</font>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/xdebug_var_dump_enum-text.phpt b/xdebug-3.4.5/tests/develop/xdebug_var_dump_enum-text.phpt
new file mode 100644
index 0000000..818249a
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_var_dump_enum-text.phpt
@@ -0,0 +1,47 @@
+--TEST--
+xdebug_var_dump() with enums [text]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1');
+?>
+--INI--
+date.timezone=UTC
+xdebug.mode=develop
+html_errors=0
+xdebug.var_display_max_children=11
+xdebug.cli_color=0
+xdebug.file_link_format=
+xdebug.filename_format=
+--FILE--
+<?php
+enum Language {
+	case English;
+	case Cymru;
+	case Gàidhlig;
+}
+$lang = Language::Gàidhlig;
+
+enum Currency: string {
+	case EUR = "€";
+	case GBP = "£";
+}
+$eur = Currency::EUR;
+
+enum Unit: int {
+	case Second = 1;
+	case Minute = 60;
+	case Hour = 3600;
+	case Day = 86400;
+}
+$time = Unit::Hour;
+
+xdebug_var_dump( $lang, $eur, $time );
+?>
+--EXPECTF--
+%sxdebug_var_dump_enum-text.php:23:
+enum Language::Gàidhlig;
+%sxdebug_var_dump_enum-text.php:23:
+enum Currency::EUR : string("€");
+%sxdebug_var_dump_enum-text.php:23:
+enum Unit::Hour : int(3600);
diff --git a/xdebug-3.4.5/tests/develop/xdebug_var_dump_file.phpt b/xdebug-3.4.5/tests/develop/xdebug_var_dump_file.phpt
new file mode 100644
index 0000000..fa3b4f4
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_var_dump_file.phpt
@@ -0,0 +1,55 @@
+--TEST--
+Test for file display with xdebug_var_dump()
+--INI--
+xdebug.mode=develop
+html_errors=1
+date.timezone=Europe/Oslo
+xdebug.var_display_max_children=11
+xdebug.file_link_format=
+xdebug.filename_format=
+--FILE--
+<?php
+	class TimeStuff {
+		private $timestamp;
+		private $user_defined;
+		private $self;
+		protected $tm;
+		public $date;
+
+		function __construct($ts = null)
+		{
+			$this->self = &$this;
+			$this->timestamp = $ts === null ? time() : $ts;
+			$this->user_defined = ($ts !== null);
+			$this->date = date("Y-m-d H:i:s T", $this->timestamp);
+			$this->tm = getdate($this->timestamp);
+		}
+	}
+
+	$ts1 = new TimeStuff(1092515106);
+
+	var_dump($ts1);
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sxdebug_var_dump_file.php:%d:</small>
+<b>object</b>(<i>TimeStuff</i>)[<i>%d</i>]
+  <i>private</i> 'timestamp' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>1092515106</font>
+  <i>private</i> 'user_defined' <font color='#888a85'>=&gt;</font> <small>boolean</small> <font color='#75507b'>true</font>
+  <i>private</i> 'self' <font color='#888a85'>=&gt;</font> 
+    <i>&amp;</i><b>object</b>(<i>TimeStuff</i>)[<i>%d</i>]
+  <i>protected</i> 'tm' <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=11)</i>
+      'seconds' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>6</font>
+      'minutes' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>25</font>
+      'hours' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>22</font>
+      'mday' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>14</font>
+      'wday' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>6</font>
+      'mon' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>8</font>
+      'year' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>2004</font>
+      'yday' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>226</font>
+      'weekday' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'Saturday'</font> <i>(length=8)</i>
+      'month' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'August'</font> <i>(length=6)</i>
+      0 <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>1092515106</font>
+  <i>public</i> 'date' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'2004-08-14 22:25:06 CEST'</font> <i>(length=24)</i>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/xdebug_var_dump_file_link.phpt b/xdebug-3.4.5/tests/develop/xdebug_var_dump_file_link.phpt
new file mode 100644
index 0000000..cd7eca3
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_var_dump_file_link.phpt
@@ -0,0 +1,55 @@
+--TEST--
+Test for file and link display with xdebug_var_dump()
+--INI--
+xdebug.mode=develop
+html_errors=1
+date.timezone=Europe/Oslo
+xdebug.var_display_max_children=11
+xdebug.file_link_format=xdebug://%f@%l
+xdebug.filename_format=
+--FILE--
+<?php
+	class TimeStuff {
+		private $timestamp;
+		private $user_defined;
+		private $self;
+		protected $tm;
+		public $date;
+
+		function __construct($ts = null)
+		{
+			$this->self = &$this;
+			$this->timestamp = $ts === null ? time() : $ts;
+			$this->user_defined = ($ts !== null);
+			$this->date = date("Y-m-d H:i:s T", $this->timestamp);
+			$this->tm = getdate($this->timestamp);
+		}
+	}
+
+	$ts1 = new TimeStuff(1092515106);
+
+	var_dump($ts1);
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small><a href='xdebug://%sxdebug_var_dump_file_link.php@%d'>%sxdebug_var_dump_file_link.php:%d</a>:</small>
+<b>object</b>(<i>TimeStuff</i>)[<i>%d</i>]
+  <i>private</i> 'timestamp' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>1092515106</font>
+  <i>private</i> 'user_defined' <font color='#888a85'>=&gt;</font> <small>boolean</small> <font color='#75507b'>true</font>
+  <i>private</i> 'self' <font color='#888a85'>=&gt;</font> 
+    <i>&amp;</i><b>object</b>(<i>TimeStuff</i>)[<i>%d</i>]
+  <i>protected</i> 'tm' <font color='#888a85'>=&gt;</font> 
+    <b>array</b> <i>(size=11)</i>
+      'seconds' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>6</font>
+      'minutes' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>25</font>
+      'hours' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>22</font>
+      'mday' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>14</font>
+      'wday' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>6</font>
+      'mon' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>8</font>
+      'year' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>2004</font>
+      'yday' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>226</font>
+      'weekday' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'Saturday'</font> <i>(length=8)</i>
+      'month' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'August'</font> <i>(length=6)</i>
+      0 <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>1092515106</font>
+  <i>public</i> 'date' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'2004-08-14 22:25:06 CEST'</font> <i>(length=24)</i>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/xdebug_var_dump_fileformat-ansi.phpt b/xdebug-3.4.5/tests/develop/xdebug_var_dump_fileformat-ansi.phpt
new file mode 100644
index 0000000..5d7ea3e
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_var_dump_fileformat-ansi.phpt
@@ -0,0 +1,61 @@
+--TEST--
+Test for file display with xdebug_var_dump()
+--INI--
+xdebug.mode=develop
+html_errors=0
+xdebug.var_display_max_children=11
+xdebug.cli_color=2
+xdebug.file_link_format=
+xdebug.filename_format=
+--FILE--
+<?php
+class TimeStuff {
+	private $timestamp;
+
+	function __construct($ts = null)
+	{
+		$this->timestamp = $ts === null ? time() : $ts;
+	}
+}
+$ts1 = new TimeStuff(1092515106);
+
+ini_set('xdebug.filename_format', "%n");
+var_dump($ts1);
+echo "\n";
+
+ini_set('xdebug.filename_format', "…%s%p");
+var_dump($ts1);
+echo "\n";
+
+ini_set('xdebug.filename_format', "«%a»");
+var_dump($ts1);
+echo "\n";
+
+ini_set('xdebug.filename_format', "{%f}");
+var_dump($ts1);
+echo "\n";
+?>
+--EXPECTF--
+[1mxdebug_var_dump_fileformat-ansi.php[22m:[1m13[22m:
+[1mclass[22m [31mTimeStuff[0m#%d ([32m1[0m) {
+  [32m[1mprivate[22m[0m $timestamp [0m=>[0m
+  [1mint[22m([32m1092515106[0m)
+}
+
+[1m…%edevelop%exdebug_var_dump_fileformat-ansi.php[22m:[1m17[22m:
+[1mclass[22m [31mTimeStuff[0m#%d ([32m1[0m) {
+  [32m[1mprivate[22m[0m $timestamp [0m=>[0m
+  [1mint[22m([32m1092515106[0m)
+}
+
+[1m«tests%edevelop%exdebug_var_dump_fileformat-ansi.php»[22m:[1m21[22m:
+[1mclass[22m [31mTimeStuff[0m#%d ([32m1[0m) {
+  [32m[1mprivate[22m[0m $timestamp [0m=>[0m
+  [1mint[22m([32m1092515106[0m)
+}
+
+[1m{%s%etests%edevelop%exdebug_var_dump_fileformat-ansi.php}[22m:[1m25[22m:
+[1mclass[22m [31mTimeStuff[0m#%d ([32m1[0m) {
+  [32m[1mprivate[22m[0m $timestamp [0m=>[0m
+  [1mint[22m([32m1092515106[0m)
+}
diff --git a/xdebug-3.4.5/tests/develop/xdebug_var_dump_fileformat-html.phpt b/xdebug-3.4.5/tests/develop/xdebug_var_dump_fileformat-html.phpt
new file mode 100644
index 0000000..253b948
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_var_dump_fileformat-html.phpt
@@ -0,0 +1,57 @@
+--TEST--
+Test for file display with xdebug_var_dump()
+--INI--
+xdebug.mode=develop
+html_errors=1
+xdebug.var_display_max_children=11
+xdebug.file_link_format=
+xdebug.filename_format=
+--FILE--
+<?php
+class TimeStuff {
+	private $timestamp;
+
+	function __construct($ts = null)
+	{
+		$this->timestamp = $ts === null ? time() : $ts;
+	}
+}
+$ts1 = new TimeStuff(1092515106);
+
+ini_set('xdebug.filename_format', "%n");
+var_dump($ts1);
+echo "\n";
+
+ini_set('xdebug.filename_format', "…%s%p");
+var_dump($ts1);
+echo "\n";
+
+ini_set('xdebug.filename_format', "«%a»");
+var_dump($ts1);
+echo "\n";
+
+ini_set('xdebug.filename_format', "{%f}");
+var_dump($ts1);
+echo "\n";
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>xdebug_var_dump_fileformat-html.php:%d:</small>
+<b>object</b>(<i>TimeStuff</i>)[<i>%d</i>]
+  <i>private</i> 'timestamp' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>1092515106</font>
+</pre>
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>…%edevelop%exdebug_var_dump_fileformat-html.php:%d:</small>
+<b>object</b>(<i>TimeStuff</i>)[<i>%d</i>]
+  <i>private</i> 'timestamp' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>1092515106</font>
+</pre>
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>«tests%edevelop%exdebug_var_dump_fileformat-html.php»:%d:</small>
+<b>object</b>(<i>TimeStuff</i>)[<i>%d</i>]
+  <i>private</i> 'timestamp' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>1092515106</font>
+</pre>
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>{%stests%edevelop%exdebug_var_dump_fileformat-html.php}:%d:</small>
+<b>object</b>(<i>TimeStuff</i>)[<i>%d</i>]
+  <i>private</i> 'timestamp' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>1092515106</font>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/xdebug_var_dump_fileformat-text.phpt b/xdebug-3.4.5/tests/develop/xdebug_var_dump_fileformat-text.phpt
new file mode 100644
index 0000000..e61b7e4
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_var_dump_fileformat-text.phpt
@@ -0,0 +1,61 @@
+--TEST--
+Test for file display with xdebug_var_dump()
+--INI--
+xdebug.mode=develop
+html_errors=0
+xdebug.var_display_max_children=11
+xdebug.cli_color=0
+xdebug.file_link_format=
+xdebug.filename_format=
+--FILE--
+<?php
+class TimeStuff {
+	private $timestamp;
+
+	function __construct($ts = null)
+	{
+		$this->timestamp = $ts === null ? time() : $ts;
+	}
+}
+$ts1 = new TimeStuff(1092515106);
+
+ini_set('xdebug.filename_format', "%n");
+var_dump($ts1);
+echo "\n";
+
+ini_set('xdebug.filename_format', "…%s%p");
+var_dump($ts1);
+echo "\n";
+
+ini_set('xdebug.filename_format', "«%a»");
+var_dump($ts1);
+echo "\n";
+
+ini_set('xdebug.filename_format', "{%f}");
+var_dump($ts1);
+echo "\n";
+?>
+--EXPECTF--
+xdebug_var_dump_fileformat-text.php:13:
+class TimeStuff#%d (%d) {
+  private $timestamp =>
+  int(1092515106)
+}
+
+…%edevelop%exdebug_var_dump_fileformat-text.php:17:
+class TimeStuff#%d (%d) {
+  private $timestamp =>
+  int(1092515106)
+}
+
+«tests%edevelop%exdebug_var_dump_fileformat-text.php»:21:
+class TimeStuff#%d (%d) {
+  private $timestamp =>
+  int(1092515106)
+}
+
+{%s%etests%edevelop%exdebug_var_dump_fileformat-text.php}:25:
+class TimeStuff#%d (%d) {
+  private $timestamp =>
+  int(1092515106)
+}
diff --git a/xdebug-3.4.5/tests/develop/xdebug_var_dump_limitations.phpt b/xdebug-3.4.5/tests/develop/xdebug_var_dump_limitations.phpt
new file mode 100644
index 0000000..3d298c6
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_var_dump_limitations.phpt
@@ -0,0 +1,53 @@
+--TEST--
+Test for display limitations with xdebug_var_dump().
+--INI--
+xdebug.mode=develop
+xdebug.var_display_max_children=-1
+xdebug.var_display_max_data=-1
+xdebug.var_display_max_depth=-1
+html_errors=1
+xdebug.file_link_format=
+--FILE--
+<?php
+$array = array( 1, true, "string" );
+xdebug_var_dump( $array ); echo "\n\n";
+
+ini_set('xdebug.var_display_max_depth', 0);
+xdebug_var_dump( $array ); echo "\n\n";
+
+ini_set('xdebug.var_display_max_depth', -1);
+ini_set('xdebug.var_display_max_data', 0);
+xdebug_var_dump( $array ); echo "\n\n";
+
+ini_set('xdebug.var_display_max_children', 0);
+ini_set('xdebug.var_display_max_data', -1);
+xdebug_var_dump( $array ); echo "\n\n";
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sxdebug_var_dump_limitations.php:3:</small>
+<b>array</b> <i>(size=3)</i>
+  0 <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>1</font>
+  1 <font color='#888a85'>=&gt;</font> <small>boolean</small> <font color='#75507b'>true</font>
+  2 <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'string'</font> <i>(length=6)</i>
+</pre>
+
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sxdebug_var_dump_limitations.php:6:</small>
+<b>array</b> <i>(size=3)</i>
+  ...
+</pre>
+
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sxdebug_var_dump_limitations.php:10:</small>
+<b>array</b> <i>(size=3)</i>
+  0 <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>1</font>
+  1 <font color='#888a85'>=&gt;</font> <small>boolean</small> <font color='#75507b'>true</font>
+  2 <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>''...</font> <i>(length=6)</i>
+</pre>
+
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sxdebug_var_dump_limitations.php:14:</small>
+<b>array</b> <i>(size=3)</i>
+  <i>more elements...</i>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/xdebug_var_dump_limitations_cli.phpt b/xdebug-3.4.5/tests/develop/xdebug_var_dump_limitations_cli.phpt
new file mode 100644
index 0000000..e07d24f
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_var_dump_limitations_cli.phpt
@@ -0,0 +1,59 @@
+--TEST--
+Test for display limitations with xdebug_var_dump() on CLI.
+--INI--
+xdebug.mode=develop
+xdebug.var_display_max_children=-1
+xdebug.var_display_max_data=-1
+xdebug.var_display_max_depth=-1
+xdebug.cli_color=0
+html_errors=0
+--FILE--
+<?php
+$array = array( 1, true, "string" );
+xdebug_var_dump( $array ); echo "\n\n";
+
+ini_set('xdebug.var_display_max_depth', 0);
+xdebug_var_dump( $array ); echo "\n\n";
+
+ini_set('xdebug.var_display_max_depth', -1);
+ini_set('xdebug.var_display_max_data', 0);
+xdebug_var_dump( $array ); echo "\n\n";
+
+ini_set('xdebug.var_display_max_children', 0);
+ini_set('xdebug.var_display_max_data', -1);
+xdebug_var_dump( $array ); echo "\n\n";
+?>
+--EXPECTF--
+%sxdebug_var_dump_limitations_cli.php:3:
+array(3) {
+  [0] =>
+  int(1)
+  [1] =>
+  bool(true)
+  [2] =>
+  string(6) "string"
+}
+
+
+%sxdebug_var_dump_limitations_cli.php:6:
+array(3) {
+  ...
+}
+
+
+%sxdebug_var_dump_limitations_cli.php:10:
+array(3) {
+  [0] =>
+  int(1)
+  [1] =>
+  bool(true)
+  [2] =>
+  string(6) ""...
+}
+
+
+%sxdebug_var_dump_limitations_cli.php:14:
+array(3) {
+
+  (more elements)...
+}
diff --git a/xdebug-3.4.5/tests/develop/xdebug_var_dump_non_overload.phpt b/xdebug-3.4.5/tests/develop/xdebug_var_dump_non_overload.phpt
new file mode 100644
index 0000000..ecddf4a
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_var_dump_non_overload.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for correct display with non overloaded var_dump()
+--INI--
+xdebug.mode=off
+html_errors=1
+date.timezone=Europe/Oslo
+xdebug.var_display_max_children=11
+xdebug.file_link_format=
+--FILE--
+<?php
+class TimeStuff {
+	private $timestamp;
+
+	function __construct($ts = null)
+	{
+		$this->timestamp = $ts === null ? time() : $ts;
+	}
+}
+
+$ts1 = new TimeStuff(1092515106);
+
+var_dump($ts1);
+xdebug_var_dump($ts1);
+echo "\n";
+var_dump($ts1);
+?>
+--EXPECTF--
+object(TimeStuff)#%d (1) {
+  ["timestamp%sprivat%s]=>
+  int(1092515106)
+}
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sxdebug_var_dump_non_overload.php:14:</small>
+<b>object</b>(<i>TimeStuff</i>)[<i>%d</i>]
+  <i>private</i> 'timestamp' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>1092515106</font>
+</pre>
+object(TimeStuff)#%d (1) {
+  ["timestamp%sprivat%s]=>
+  int(1092515106)
+}
diff --git a/xdebug-3.4.5/tests/develop/xdebug_var_dump_typed_properties-ansi.phpt b/xdebug-3.4.5/tests/develop/xdebug_var_dump_typed_properties-ansi.phpt
new file mode 100644
index 0000000..0d089de
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_var_dump_typed_properties-ansi.phpt
@@ -0,0 +1,61 @@
+--TEST--
+xdebug_var_dump() with typed properties [ansi]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 7.4');
+?>
+--INI--
+date.timezone=UTC
+xdebug.mode=develop
+html_errors=0
+xdebug.var_display_max_children=11
+xdebug.cli_color=2
+xdebug.file_link_format=
+xdebug.filename_format=
+serialize_precision=-1
+--FILE--
+<?php
+class foo {
+	public $v = M_PI;
+	public $w;
+	private string $x;
+	protected int $y = 42;
+	public ?Fibble $z;
+	public \DateTime $a;
+}
+
+$f = new foo;
+$f->a = new \DateTime;
+
+var_dump($f);
+var_dump(new class{public string $x;});
+?>
+--EXPECTF--
+[1m%sxdebug_var_dump_typed_properties-ansi.php[22m:[1m14[22m:
+[1mclass[22m [31mfoo[0m#%d ([32m6[0m) {
+  [32m[1mpublic[22m[0m $v [0m=>[0m
+  [1mdouble[22m([33m3.141592653589793[0m)
+  [32m[1mpublic[22m[0m $w [0m=>[0m
+  [1m[34mNULL[0m[22m
+  [32m[1mprivate[22m string[0m $x [0m=>[0m
+  [34m*uninitialized*[0m
+  [32m[1mprotected[22m int[0m $y [0m=>[0m
+  [1mint[22m([32m42[0m)
+  [32m[1mpublic[22m ?Fibble[0m $z [0m=>[0m
+  [34m*uninitialized*[0m
+  [32m[1mpublic[22m DateTime[0m $a [0m=>[0m
+  [1mclass[22m [31mDateTime[0m#%d ([32m3[0m) {
+    [32m[1mpublic[22m[0m $date [0m=>[0m
+    [1mstring[22m([32m26[0m) "[31m%s[0m"
+    [32m[1mpublic[22m[0m $timezone_type [0m=>[0m
+    [1mint[22m([32m3[0m)
+    [32m[1mpublic[22m[0m $timezone [0m=>[0m
+    [1mstring[22m([32m3[0m) "[31mUTC[0m"
+  }
+}
+[1m%sxdebug_var_dump_typed_properties-ansi.php[22m:[1m15[22m:
+[1mclass[22m [31mclass@anonymous[0m#%d ([32m1[0m) {
+  [32m[1mpublic[22m string[0m $x [0m=>[0m
+  [34m*uninitialized*[0m
+}
diff --git a/xdebug-3.4.5/tests/develop/xdebug_var_dump_typed_properties-html.phpt b/xdebug-3.4.5/tests/develop/xdebug_var_dump_typed_properties-html.phpt
new file mode 100644
index 0000000..04510d5
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_var_dump_typed_properties-html.phpt
@@ -0,0 +1,51 @@
+--TEST--
+xdebug_var_dump() with typed properties [html]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 7.4');
+?>
+--INI--
+date.timezone=UTC
+xdebug.mode=develop
+html_errors=1
+xdebug.var_display_max_children=11
+xdebug.file_link_format=
+xdebug.filename_format=
+serialize_precision=-1
+--FILE--
+<?php
+class foo {
+	public $v = M_PI;
+	public $w;
+	private string $x;
+	protected int $y = 42;
+	public ?Fibble $z;
+	public \DateTime $a;
+}
+
+$f = new foo;
+$f->a = new \DateTime;
+
+var_dump($f);
+var_dump(new class{public string $x;});
+?>
+--EXPECTF--
+<pre class='xdebug-var-dump' dir='ltr'>
+<small>%sxdebug_var_dump_typed_properties-html.php:14:</small>
+<b>object</b>(<i>foo</i>)[<i>%d</i>]
+  <i>public</i> 'v' <font color='#888a85'>=&gt;</font> <small>float</small> <font color='#f57900'>3.141592653589793</font>
+  <i>public</i> 'w' <font color='#888a85'>=&gt;</font> <font color='#3465a4'>null</font>
+  <i>private</i> <i>string</i> 'x' <font color='#888a85'>=&gt;</font> <font color='#3465a4'>*uninitialized*</font>
+  <i>protected</i> <i>int</i> 'y' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>42</font>
+  <i>public</i> <i>?Fibble</i> 'z' <font color='#888a85'>=&gt;</font> <font color='#3465a4'>*uninitialized*</font>
+  <i>public</i> <i>DateTime</i> 'a' <font color='#888a85'>=&gt;</font> 
+    <b>object</b>(<i>DateTime</i>)[<i>%d</i>]
+      <i>public</i> 'date' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'%s'</font> <i>(length=26)</i>
+      <i>public</i> 'timezone_type' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>3</font>
+      <i>public</i> 'timezone' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'UTC'</font> <i>(length=3)</i>
+</pre><pre class='xdebug-var-dump' dir='ltr'>
+<small>%sxdebug_var_dump_typed_properties-html.php:15:</small>
+<b>object</b>(<i>class@anonymous</i>)[<i>%d</i>]
+  <i>public</i> <i>string</i> 'x' <font color='#888a85'>=&gt;</font> <font color='#3465a4'>*uninitialized*</font>
+</pre>
diff --git a/xdebug-3.4.5/tests/develop/xdebug_var_dump_typed_properties-text.phpt b/xdebug-3.4.5/tests/develop/xdebug_var_dump_typed_properties-text.phpt
new file mode 100644
index 0000000..dcb2254
--- /dev/null
+++ b/xdebug-3.4.5/tests/develop/xdebug_var_dump_typed_properties-text.phpt
@@ -0,0 +1,61 @@
+--TEST--
+xdebug_var_dump() with typed properties [text]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 7.4');
+?>
+--INI--
+date.timezone=UTC
+xdebug.mode=develop
+html_errors=0
+xdebug.var_display_max_children=11
+xdebug.cli_color=0
+xdebug.file_link_format=
+xdebug.filename_format=
+serialize_precision=-1
+--FILE--
+<?php
+class foo {
+	public $v = M_PI;
+	public $w;
+	private string $x;
+	protected int $y = 42;
+	public ?Fibble $z;
+	public \DateTime $a;
+}
+
+$f = new foo;
+$f->a = new \DateTime;
+
+var_dump($f);
+var_dump(new class{public string $x;});
+?>
+--EXPECTF--
+%sxdebug_var_dump_typed_properties-text.php:14:
+class foo#%d (6) {
+  public $v =>
+  double(3.141592653589793)
+  public $w =>
+  NULL
+  private string $x =>
+  *uninitialized*
+  protected int $y =>
+  int(42)
+  public ?Fibble $z =>
+  *uninitialized*
+  public DateTime $a =>
+  class DateTime#%d (%d) {
+    public $date =>
+    string(26) "%s"
+    public $timezone_type =>
+    int(3)
+    public $timezone =>
+    string(3) "UTC"
+  }
+}
+%sxdebug_var_dump_typed_properties-text.php:15:
+class class@anonymous#%d (1) {
+  public string $x =>
+  *uninitialized*
+}
diff --git a/xdebug-3.4.5/tests/filter/bug01508-exclude.phpt b/xdebug-3.4.5/tests/filter/bug01508-exclude.phpt
new file mode 100644
index 0000000..51b3821
--- /dev/null
+++ b/xdebug-3.4.5/tests/filter/bug01508-exclude.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Test for bug #1508: Code coverage filter not checked in xdebug_common_assign_dim handler (black list)
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+$cwd = __DIR__; $s = DIRECTORY_SEPARATOR;
+xdebug_set_filter(XDEBUG_FILTER_CODE_COVERAGE, XDEBUG_PATH_EXCLUDE, [ "{$cwd}{$s}bug01508.php" ] );
+
+$tf = xdebug_start_code_coverage( XDEBUG_CC_DEAD_CODE | XDEBUG_CC_UNUSED );
+
+$file = "{$cwd}/bug01508.php";
+include "{$file}";
+
+Filter::bug1508();
+	
+$result = xdebug_get_code_coverage();
+
+echo array_key_exists( $file, $result ) ? "File '{$file}' is present in code coverage" : "File is not present in code coverage", "\n";
+?>
+--EXPECTF--
+File is not present in code coverage
diff --git a/xdebug-3.4.5/tests/filter/bug01508-include.phpt b/xdebug-3.4.5/tests/filter/bug01508-include.phpt
new file mode 100644
index 0000000..4e1bf69
--- /dev/null
+++ b/xdebug-3.4.5/tests/filter/bug01508-include.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Test for bug #1508: Code coverage filter not checked in xdebug_common_assign_dim handler (white list)
+--INI--
+xdebug.mode=coverage
+--FILE--
+<?php
+$cwd = __DIR__; $s = DIRECTORY_SEPARATOR;
+xdebug_set_filter(XDEBUG_FILTER_CODE_COVERAGE, XDEBUG_PATH_INCLUDE, [] );
+
+$tf = xdebug_start_code_coverage( XDEBUG_CC_DEAD_CODE | XDEBUG_CC_UNUSED );
+
+$file = "{$cwd}/bug01508.php";
+include "{$file}";
+
+Filter::bug1508();
+	
+$result = xdebug_get_code_coverage();
+
+echo array_key_exists( $file, $result ) ? "File '{$file}' is present in code coverage" : "File is not present in code coverage", "\n";
+?>
+--EXPECTF--
+File is not present in code coverage
diff --git a/xdebug-3.4.5/tests/filter/bug01508.php b/xdebug-3.4.5/tests/filter/bug01508.php
new file mode 100644
index 0000000..94b8187
--- /dev/null
+++ b/xdebug-3.4.5/tests/filter/bug01508.php
@@ -0,0 +1,10 @@
+<?php
+class Filter
+{
+	static function bug1508()
+	{
+		/* Should not show up */
+		$foo = 1;	
+	}
+}
+
diff --git a/xdebug-3.4.5/tests/filter/bug01919-001.phpt b/xdebug-3.4.5/tests/filter/bug01919-001.phpt
new file mode 100644
index 0000000..e19686d
--- /dev/null
+++ b/xdebug-3.4.5/tests/filter/bug01919-001.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Test for bug #1919: Crash with XDEBUG_FILTER_CODE_COVERAGE without xdebug.mode=coverage
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!win');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.log={TMP}/{RUNID}{TEST_PHP_WORKER}issue1919-001.txt
+xdebug.control_socket=off
+--FILE--
+<?php
+xdebug_set_filter(XDEBUG_FILTER_CODE_COVERAGE, XDEBUG_PATH_INCLUDE, []);
+echo file_get_contents(sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'issue1919-001.txt' );
+@unlink (sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'issue1919-001.txt' );
+?>
+--EXPECTF--
+[%d] Log opened at %s
+[%d] [Base] WARN: Can not set a filter for code coverage, because Xdebug mode does not include 'coverage'
diff --git a/xdebug-3.4.5/tests/filter/bug01919-002.phpt b/xdebug-3.4.5/tests/filter/bug01919-002.phpt
new file mode 100644
index 0000000..270c208
--- /dev/null
+++ b/xdebug-3.4.5/tests/filter/bug01919-002.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Test for bug #1919: Crash with XDEBUG_FILTER_TRACING without xdebug.mode=trace
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!win');
+?>
+--INI--
+xdebug.mode=develop
+xdebug.log={TMP}/{RUNID}{TEST_PHP_WORKER}issue1919-002.txt
+xdebug.control_socket=off
+--FILE--
+<?php
+xdebug_set_filter(XDEBUG_FILTER_TRACING, XDEBUG_PATH_INCLUDE, []);
+echo file_get_contents(sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'issue1919-002.txt' );
+@unlink (sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'issue1919-002.txt' );
+?>
+--EXPECTF--
+[%d] Log opened at %s
+[%d] [Base] WARN: Can not set a filter for tracing, because Xdebug mode does not include 'trace'
diff --git a/xdebug-3.4.5/tests/filter/foobar/foobar.php b/xdebug-3.4.5/tests/filter/foobar/foobar.php
new file mode 100644
index 0000000..7d8c89c
--- /dev/null
+++ b/xdebug-3.4.5/tests/filter/foobar/foobar.php
@@ -0,0 +1,13 @@
+<?php
+class Foobar
+{
+	static function foo($s)
+	{
+		echo strstr("Hello!\n", "e");
+	}
+
+	static function not_used()
+	{
+		echo "this function does not get called\n";
+	}
+}
diff --git a/xdebug-3.4.5/tests/filter/stack/one.php b/xdebug-3.4.5/tests/filter/stack/one.php
new file mode 100644
index 0000000..99b8bb9
--- /dev/null
+++ b/xdebug-3.4.5/tests/filter/stack/one.php
@@ -0,0 +1,22 @@
+<?php
+namespace Stack;
+
+class One
+{
+	public $obj;
+
+	function __construct( $object )
+	{
+		$this->obj = $object;
+	}
+
+	function callObj( string $name, ...$arguments )
+	{
+		return $this->obj->$name( ...$arguments );
+	}
+
+	function error( $value )
+	{
+		trigger_error( $value, E_USER_WARNING );
+	}
+}
diff --git a/xdebug-3.4.5/tests/filter/stack/three.php b/xdebug-3.4.5/tests/filter/stack/three.php
new file mode 100644
index 0000000..eb90c13
--- /dev/null
+++ b/xdebug-3.4.5/tests/filter/stack/three.php
@@ -0,0 +1,22 @@
+<?php
+namespace Stack;
+
+class Three
+{
+	public $obj;
+
+	function __construct( $object )
+	{
+		$this->obj = $object;
+	}
+
+	function callObj( string $name, ...$arguments )
+	{
+		return $this->obj->$name( ...$arguments );
+	}
+
+	function error( $value )
+	{
+		trigger_error( $value, E_USER_WARNING );
+	}
+}
diff --git a/xdebug-3.4.5/tests/filter/stack/two.php b/xdebug-3.4.5/tests/filter/stack/two.php
new file mode 100644
index 0000000..1a78c3a
--- /dev/null
+++ b/xdebug-3.4.5/tests/filter/stack/two.php
@@ -0,0 +1,22 @@
+<?php
+namespace Stack;
+
+class Two
+{
+	public $obj;
+
+	function __construct( $object )
+	{
+		$this->obj = $object;
+	}
+
+	function callObj( string $name, ...$arguments )
+	{
+		return $this->obj->$name( ...$arguments );
+	}
+
+	function error( $value )
+	{
+		trigger_error( $value, E_USER_WARNING );
+	}
+}
diff --git a/xdebug-3.4.5/tests/filter/xdebug/trace/xdebug.php b/xdebug-3.4.5/tests/filter/xdebug/trace/xdebug.php
new file mode 100644
index 0000000..32887f2
--- /dev/null
+++ b/xdebug-3.4.5/tests/filter/xdebug/trace/xdebug.php
@@ -0,0 +1,15 @@
+<?php
+namespace Xdebug;
+
+class Trace
+{
+	static function foo($s)
+	{
+		echo strstr("Hello!\n", "e");
+	}
+
+	static function not_used()
+	{
+		echo "this function does not get called\n";
+	}
+}
diff --git a/xdebug-3.4.5/tests/filter/xdebug/xdebug.php b/xdebug-3.4.5/tests/filter/xdebug/xdebug.php
new file mode 100644
index 0000000..49325d6
--- /dev/null
+++ b/xdebug-3.4.5/tests/filter/xdebug/xdebug.php
@@ -0,0 +1,13 @@
+<?php
+class Xdebug
+{
+	static function foo($s)
+	{
+		echo strstr("Hello!\n", "e");
+	}
+
+	static function not_used()
+	{
+		echo "this function does not get called\n";
+	}
+}
diff --git a/xdebug-3.4.5/tests/gcstats/bug01928.phpt b/xdebug-3.4.5/tests/gcstats/bug01928.phpt
new file mode 100644
index 0000000..9678863
--- /dev/null
+++ b/xdebug-3.4.5/tests/gcstats/bug01928.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Test for bug #1928: xdebug_stop_gcstats() may return false as return type too
+--INI--
+xdebug.mode=gcstats
+xdebug.start_with_request=no
+--FILE--
+<?php
+var_dump(xdebug_stop_gcstats());
+?>
+--EXPECTF--
+%sGarbage Collection statistics was not started in %s
+bool(false)
diff --git a/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-001.phpt b/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-001.phpt
new file mode 100644
index 0000000..07860f8
--- /dev/null
+++ b/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-001.phpt
@@ -0,0 +1,19 @@
+--TEST--
+GC Stats: No memleak, return empty runs
+--INI--
+xdebug.mode=gcstats
+xdebug.start_with_request=yes
+zend.enable_gc=1
+--FILE--
+<?php
+echo file_get_contents(xdebug_get_gcstats_filename());
+xdebug_stop_gcstats();
+unlink(xdebug_get_gcstats_filename());
+?>
+--EXPECTF--
+Garbage Collection Report
+version: 1
+creator: xdebug %d.%s (PHP %s)
+
+Collected | Efficiency% | Duration | Memory Before | Memory After | Reduction% | Function
+----------+-------------+----------+---------------+--------------+------------+---------
diff --git a/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-002.phpt b/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-002.phpt
new file mode 100644
index 0000000..8f22e0b
--- /dev/null
+++ b/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-002.phpt
@@ -0,0 +1,32 @@
+--TEST--
+GC Stats: Run gc_collect_cyles(); and collect stats
+--INI--
+xdebug.mode=gcstats
+xdebug.start_with_request=yes
+zend.enable_gc=1
+--FILE--
+<?php
+var_dump(ini_get("xdebug.mode"));
+
+for ($i = 0; $i < 100; $i++) {
+	$a = new stdClass();
+	$b = new stdClass();
+	$b->a = $a;
+	$a->b = $b;
+	unset($a, $b);
+}
+gc_collect_cycles();
+
+echo file_get_contents(xdebug_get_gcstats_filename());
+xdebug_stop_gcstats();
+unlink(xdebug_get_gcstats_filename());
+?>
+--EXPECTF--
+string(7) "gcstats"
+Garbage Collection Report
+version: 1
+creator: xdebug %d.%s (PHP %s)
+
+Collected | Efficiency% | Duration | Memory Before | Memory After | Reduction% | Function
+----------+-------------+----------+---------------+--------------+------------+---------
+      200 |      2.00 % |  %s ms | %w%d | %w%d |   %s % | gc_collect_cycles
diff --git a/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-003.phpt b/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-003.phpt
new file mode 100644
index 0000000..6f3eb57
--- /dev/null
+++ b/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-003.phpt
@@ -0,0 +1,37 @@
+--TEST--
+GC Stats: Stats about trigger garbage collection automatically
+--INI--
+xdebug.mode=gcstats
+xdebug.start_with_request=yes
+zend.enable_gc=1
+--FILE--
+<?php
+
+gc_enable();
+
+function foo()
+{
+	bar();
+}
+
+function bar()
+{
+	for ($i = 0; $i < 20000; $i++) {
+		$a = new stdClass();
+		$b = new stdClass();
+		$b->a = $a;
+		$a->b = $b;
+		unset($a, $b);
+	}
+}
+
+foo();
+
+$lines = file(xdebug_get_gcstats_filename());
+xdebug_stop_gcstats();
+unlink(xdebug_get_gcstats_filename());
+
+var_dump(count($lines) >= 6);
+?>
+--EXPECTF--
+bool(true)
diff --git a/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-004.phpt b/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-004.phpt
new file mode 100644
index 0000000..c8e841f
--- /dev/null
+++ b/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-004.phpt
@@ -0,0 +1,62 @@
+--TEST--
+GC Stats: Class with garbage
+--INI--
+xdebug.mode=gcstats
+xdebug.start_with_request=yes
+zend.enable_gc=1
+--FILE--
+<?php
+
+function foo()
+{
+	bar();
+}
+
+function bar()
+{
+	for ($i = 0; $i < 20000; $i++)
+	{
+		$a = new stdClass();
+		$b = new stdClass();
+		$b->a = $a;
+		$a->b = $b;
+		unset($a, $b);
+	}
+}
+
+class Garbage
+{
+	public function produce()
+	{
+		$foo = new stdClass();
+
+		for ($i = 0; $i < 20000; $i++)
+		{
+			$a = new stdClass();
+			$b = new stdClass();
+			$b->foo = $foo;
+			$b->a = $a;
+			$a->b = $b;
+			unset($a, $b);
+		}
+
+		unset($foo);
+		gc_collect_cycles();
+	}
+}
+
+foo();
+(new Garbage())->produce();
+
+$data = file_get_contents(xdebug_get_gcstats_filename());
+xdebug_stop_gcstats();
+unlink(xdebug_get_gcstats_filename());
+
+var_dump(substr_count($data, "bar") >= 3);
+var_dump(substr_count($data, "Garbage::produce") >= 4);
+var_dump(substr_count($data, "gc_collect_cycles") == 1);
+?>
+--EXPECTF--
+bool(true)
+bool(true)
+bool(true)
diff --git a/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-005.phpt b/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-005.phpt
new file mode 100644
index 0000000..dad28f8
--- /dev/null
+++ b/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-005.phpt
@@ -0,0 +1,44 @@
+--TEST--
+GC Stats: Start with xdebug_start_gcstats()
+--INI--
+xdebug.mode=gcstats
+xdebug.start_with_request=default
+zend.enable_gc=1
+--FILE--
+<?php
+
+for ($i = 0; $i < 100; $i++)
+{
+	$a = new stdClass();
+	$b = new stdClass();
+	$b->a = $a;
+	$a->b = $b;
+	unset($a, $b);
+}
+gc_collect_cycles();
+
+xdebug_start_gcstats();
+
+for ($i = 0; $i < 100; $i++)
+{
+	$a = new stdClass();
+	$b = new stdClass();
+	$b->a = $a;
+	$a->b = $b;
+	unset($a, $b);
+}
+gc_collect_cycles();
+
+echo file_get_contents(xdebug_get_gcstats_filename());
+xdebug_stop_gcstats();
+unlink(xdebug_get_gcstats_filename());
+?>
+--EXPECTF--
+Garbage Collection Report
+version: 1
+creator: xdebug %d.%s (PHP %s)
+
+Collected | Efficiency% | Duration | Memory Before | Memory After | Reduction% | Function
+----------+-------------+----------+---------------+--------------+------------+---------
+      200 |      2.00 % |  %s ms | %w%d | %w%d |   %s % | gc_collect_cycles
+
diff --git a/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-006.phpt b/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-006.phpt
new file mode 100644
index 0000000..5f292cd
--- /dev/null
+++ b/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-006.phpt
@@ -0,0 +1,22 @@
+--TEST--
+GC Stats: Start with xdebug_start_gcstats() and filename
+--INI--
+xdebug.mode=gcstats
+xdebug.start_with_request=default
+zend.enable_gc=1
+--FILE--
+<?php
+var_dump(xdebug_get_gcstats_filename());
+
+$filename = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'gcstats.' . uniqid('', TRUE). '.txt';
+$actual = xdebug_start_gcstats($filename);
+
+var_dump($actual === $filename);
+var_dump(xdebug_get_gcstats_filename());
+xdebug_stop_gcstats();
+unlink(xdebug_get_gcstats_filename());
+?>
+--EXPECTF--
+bool(false)
+bool(true)
+string(%d) "%sgcstats.%s.%s.txt"
diff --git a/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-007.phpt b/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-007.phpt
new file mode 100644
index 0000000..4b5856b
--- /dev/null
+++ b/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-007.phpt
@@ -0,0 +1,24 @@
+--TEST--
+GC Stats: userland statistic functions
+--INI--
+xdebug.mode=gcstats
+xdebug.start_with_request=default
+zend.enable_gc=1
+--FILE--
+<?php
+
+for ($i = 0; $i < 100; $i++) {
+	$a = new stdClass();
+	$b = new stdClass();
+	$b->a = $a;
+	$a->b = $b;
+	unset($a, $b);
+}
+gc_collect_cycles();
+
+printf("runs: %d\n", xdebug_get_gc_run_count());
+printf("collected: %d\n", xdebug_get_gc_total_collected_roots());
+?>
+--EXPECTF--
+runs: 1
+collected: 200
diff --git a/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-008.phpt b/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-008.phpt
new file mode 100644
index 0000000..94f056c
--- /dev/null
+++ b/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-008.phpt
@@ -0,0 +1,60 @@
+--TEST--
+GC Stats: Closure with garbage
+--INI--
+xdebug.mode=gcstats
+xdebug.start_with_request=yes
+zend.enable_gc=1
+--FILE--
+<?php
+
+function foo()
+{
+	bar();
+}
+
+function bar()
+{
+	for ($i = 0; $i < 20000; $i++)
+	{
+		$a = new stdClass();
+		$b = new stdClass();
+		$b->a = $a;
+		$a->b = $b;
+		unset($a, $b);
+	}
+}
+
+$closure = function() {
+	$foo = new stdClass();
+
+	for ($i = 0; $i < 20000; $i++)
+	{
+		$a = new stdClass();
+		$b = new stdClass();
+		$b->foo = $foo;
+		$b->a = $a;
+		$a->b = $b;
+		unset($a, $b);
+	}
+
+	unset($foo);
+	gc_collect_cycles();
+};
+
+foo();
+$closure();
+
+$data = file_get_contents(xdebug_get_gcstats_filename());
+xdebug_stop_gcstats();
+unlink(xdebug_get_gcstats_filename());
+
+var_dump(substr_count($data, "bar") >= 3);
+var_dump(substr_count($data, "{closure:") >= 4);
+var_dump(substr_count($data, "xdebug_gc_stats-008.php:20-35}") >= 4);
+var_dump(substr_count($data, "gc_collect_cycles") == 1);
+?>
+--EXPECTF--
+bool(true)
+bool(true)
+bool(true)
+bool(true)
diff --git a/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-009.phpt b/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-009.phpt
new file mode 100644
index 0000000..a98b3a1
--- /dev/null
+++ b/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-009.phpt
@@ -0,0 +1,18 @@
+--TEST--
+GC Stats: Starting with Zend GC off
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 7.3');
+?>
+--INI--
+xdebug.mode=gcstats
+xdebug.start_with_request=yes
+zend.enable_gc=0
+xdebug.log=
+xdebug.log_level=10
+--FILE--
+<?php
+?>
+--EXPECTF--
+Xdebug: [GC Stats] PHP's Garbage Collection is disabled
diff --git a/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-010.phpt b/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-010.phpt
new file mode 100644
index 0000000..43384da
--- /dev/null
+++ b/xdebug-3.4.5/tests/gcstats/xdebug_gc_stats-010.phpt
@@ -0,0 +1,48 @@
+--TEST--
+GC Stats: Disabling Zend GC during the script
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 7.3');
+?>
+--INI--
+xdebug.mode=gcstats
+xdebug.start_with_request=yes
+zend.enable_gc=1
+report_memleaks=0
+xdebug.log=
+xdebug.log_level=10
+--FILE--
+<?php
+
+function foo()
+{
+	bar();
+}
+
+function bar()
+{
+	for ($i = 0; $i < 20000; $i++) {
+		$a = new stdClass();
+		$b = new stdClass();
+		$b->a = $a;
+		$a->b = $b;
+		unset($a, $b);
+	}
+}
+
+foo();
+
+gc_disable();
+
+xdebug_stop_gcstats();
+
+$lines = file(xdebug_get_gcstats_filename());
+
+unlink(xdebug_get_gcstats_filename());
+
+var_dump(count($lines) >= 6);
+?>
+--EXPECTF--
+Xdebug: [GC Stats] PHP's Garbage Collection is disabled at the end of the script
+bool(true)
diff --git a/xdebug-3.4.5/tests/library/xdebug_constants.phpt b/xdebug-3.4.5/tests/library/xdebug_constants.phpt
new file mode 100644
index 0000000..2a87bb4
--- /dev/null
+++ b/xdebug-3.4.5/tests/library/xdebug_constants.phpt
@@ -0,0 +1,15 @@
+--TEST--
+Test for bug #2223: Xdebug's constants are not available with xdebug.mode=off
+--INI--
+xdebug.mode=off
+--FILE--
+<?php
+$constants = get_defined_constants(true);
+
+echo "Constants: ", array_key_exists( 'xdebug', $constants ) ? "available: " : "not available\n";
+if (array_key_exists('xdebug', $constants)) {
+	echo count(array_keys($constants['xdebug'])), "\n";
+}
+?>
+--EXPECT--
+Constants: available: 17
diff --git a/xdebug-3.4.5/tests/library/xdebug_info-mode-001.phpt b/xdebug-3.4.5/tests/library/xdebug_info-mode-001.phpt
new file mode 100644
index 0000000..3c3192a
--- /dev/null
+++ b/xdebug-3.4.5/tests/library/xdebug_info-mode-001.phpt
@@ -0,0 +1,18 @@
+--TEST--
+xdebug_info("mode")
+--INI--
+display_errors=0
+error_log=
+xdebug.mode=develop,trace
+--FILE--
+<?php
+var_dump(xdebug_info('mode'));
+?>
+--EXPECTF--
+%sxdebug_info-mode-001.php:2:
+array(2) {
+  [0] =>
+  string(7) "develop"
+  [1] =>
+  string(5) "trace"
+}
diff --git a/xdebug-3.4.5/tests/library/xdebug_info-mode-002.phpt b/xdebug-3.4.5/tests/library/xdebug_info-mode-002.phpt
new file mode 100644
index 0000000..0e34c0c
--- /dev/null
+++ b/xdebug-3.4.5/tests/library/xdebug_info-mode-002.phpt
@@ -0,0 +1,13 @@
+--TEST--
+xdebug_info("mode") with xdebug.mode=off
+--INI--
+display_errors=0
+error_log=
+xdebug.mode=off
+--FILE--
+<?php
+var_dump(xdebug_info('mode'));
+?>
+--EXPECTF--
+array(0) {
+}
diff --git a/xdebug-3.4.5/tests/library/xdebug_info-mode-003.phpt b/xdebug-3.4.5/tests/library/xdebug_info-mode-003.phpt
new file mode 100644
index 0000000..ad6e497
--- /dev/null
+++ b/xdebug-3.4.5/tests/library/xdebug_info-mode-003.phpt
@@ -0,0 +1,19 @@
+--TEST--
+xdebug_info("mode") overriden by XDEBUG_MODE
+--INI--
+display_errors=0
+error_log=
+xdebug.mode=develop,trace
+--ENV--
+XDEBUG_MODE=profile,debug
+--FILE--
+<?php
+var_dump(xdebug_info('mode'));
+?>
+--EXPECTF--
+array(2) {
+  [0]=>
+  string(5) "debug"
+  [1]=>
+  string(7) "profile"
+}
diff --git a/xdebug-3.4.5/tests/library/xdebug_info-mode-004.phpt b/xdebug-3.4.5/tests/library/xdebug_info-mode-004.phpt
new file mode 100644
index 0000000..d3713ec
--- /dev/null
+++ b/xdebug-3.4.5/tests/library/xdebug_info-mode-004.phpt
@@ -0,0 +1,19 @@
+--TEST--
+xdebug_info("mode") with xdebug.mode=off, overridden by XDEBUG_MODE
+--INI--
+display_errors=0
+error_log=
+xdebug.mode=off
+--ENV--
+XDEBUG_MODE=gcstats,coverage
+--FILE--
+<?php
+var_dump(xdebug_info('mode'));
+?>
+--EXPECTF--
+array(2) {
+  [0]=>
+  string(8) "coverage"
+  [1]=>
+  string(7) "gcstats"
+}
diff --git a/xdebug-3.4.5/tests/library/xdebug_info-mode-005.phpt b/xdebug-3.4.5/tests/library/xdebug_info-mode-005.phpt
new file mode 100644
index 0000000..904a393
--- /dev/null
+++ b/xdebug-3.4.5/tests/library/xdebug_info-mode-005.phpt
@@ -0,0 +1,15 @@
+--TEST--
+xdebug_info("mode") overridden by XDEBUG_MODE=off
+--INI--
+display_errors=0
+error_log=
+xdebug.mode=gcstats,develop
+--ENV--
+XDEBUG_MODE=off
+--FILE--
+<?php
+var_dump(xdebug_info('mode'));
+?>
+--EXPECTF--
+array(0) {
+}
diff --git a/xdebug-3.4.5/tests/library/xdebug_mode_from_env-001.phpt b/xdebug-3.4.5/tests/library/xdebug_mode_from_env-001.phpt
new file mode 100644
index 0000000..c9095fb
--- /dev/null
+++ b/xdebug-3.4.5/tests/library/xdebug_mode_from_env-001.phpt
@@ -0,0 +1,17 @@
+--TEST--
+XDEBUG_MODE: Warning for invalid modes
+--INI--
+display_errors=0
+error_log=
+xdebug.mode=wrongmode
+--ENV--
+XDEBUG_MODE=develop,nonexisting
+--FILE--
+<?php
+echo join( ',', xdebug_info( 'mode' ) );
+?>
+--EXPECTF--
+Xdebug: [Config] Invalid mode 'develop,nonexisting' set for 'XDEBUG_MODE' environment variable, fall back to 'xdebug.mode' configuration setting (See: http%sdocs/errors#CFG-C-ENVMODE)
+Xdebug: [Config] Invalid mode 'wrongmode' set for 'xdebug.mode' configuration setting (See: http%sdocs/errors#CFG-C-MODE)
+Xdebug: [Config] Invalid mode 'develop,nonexisting' set for 'XDEBUG_MODE' environment variable, fall back to 'xdebug.mode' configuration setting (See: http%sdocs/errors#CFG-C-ENVMODE)
+develop
diff --git a/xdebug-3.4.5/tests/library/xdebug_mode_from_env-002.phpt b/xdebug-3.4.5/tests/library/xdebug_mode_from_env-002.phpt
new file mode 100644
index 0000000..da7b3ad
--- /dev/null
+++ b/xdebug-3.4.5/tests/library/xdebug_mode_from_env-002.phpt
@@ -0,0 +1,14 @@
+--TEST--
+XDEBUG_MODE overrides xdebug.mode
+--INI--
+display_errors=0
+error_log=
+xdebug.mode=develop
+--ENV--
+XDEBUG_MODE=develop,profile
+--FILE--
+<?php
+xdebug_info();
+?>
+--EXPECTF--
+%Athrough 'XDEBUG_MODE' env variable%ADevelopment Helpers => ✔ enabled%AProfiler => ✔ enabled%A
diff --git a/xdebug-3.4.5/tests/library/xdebug_mode_warning-001.phpt b/xdebug-3.4.5/tests/library/xdebug_mode_warning-001.phpt
new file mode 100644
index 0000000..86b520b
--- /dev/null
+++ b/xdebug-3.4.5/tests/library/xdebug_mode_warning-001.phpt
@@ -0,0 +1,11 @@
+--TEST--
+xdebug.mode: Warning for invalid modes
+--INI--
+display_errors=0
+error_log=
+xdebug.mode=develop,nonexisting
+--FILE--
+<?php
+?>
+--EXPECTF--
+Xdebug: [Config] Invalid mode 'develop,nonexisting' set for 'xdebug.mode' configuration setting (See: http%sdocs/errors#CFG-C-MODE)
diff --git a/xdebug-3.4.5/tests/library/xdebug_mode_warning-002.phpt b/xdebug-3.4.5/tests/library/xdebug_mode_warning-002.phpt
new file mode 100644
index 0000000..71ae0e8
--- /dev/null
+++ b/xdebug-3.4.5/tests/library/xdebug_mode_warning-002.phpt
@@ -0,0 +1,11 @@
+--TEST--
+xdebug.mode: Warning for invalid modes
+--INI--
+display_errors=0
+error_log=
+xdebug.mode=nonexisting,develop
+--FILE--
+<?php
+?>
+--EXPECTF--
+Xdebug: [Config] Invalid mode 'nonexisting,develop' set for 'xdebug.mode' configuration setting (See: http%sdocs/errors#CFG-C-MODE)
diff --git a/xdebug-3.4.5/tests/profiler/bug00360-php83.phpt b/xdebug-3.4.5/tests/profiler/bug00360-php83.phpt
new file mode 100644
index 0000000..6593672
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00360-php83.phpt
@@ -0,0 +1,68 @@
+--TEST--
+Test for bug #360: Function line number in profile not correct (< PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.4');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+
+function func(){
+	1+1;
+}
+
+func();
+
+exit();
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug00360-php83.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::xdebug_get_profiler_filename
+2 %d %d
+
+fl=(1)
+fn=(2) php::register_shutdown_function
+16 %d %d
+
+fl=(2) %scapture-profile.inc
+fn=(3) require_once::%scapture-profile.inc
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+16 %d %d
+
+fl=(3) %sbug00360-php83.php
+fn=(4) func
+4 %d %d
+
+fl=(3)
+fn=(5) {main}
+1 %d %d
+cfl=(2)
+cfn=(3)
+calls=1 0 0
+2 %d %d
+cfl=(3)
+cfn=(4)
+calls=1 0 0
+8 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug00360-php84.phpt b/xdebug-3.4.5/tests/profiler/bug00360-php84.phpt
new file mode 100644
index 0000000..39819f5
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00360-php84.phpt
@@ -0,0 +1,76 @@
+--TEST--
+Test for bug #360: Function line number in profile not correct (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+
+function func(){
+	1+1;
+}
+
+func();
+
+exit();
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug00360-php84.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::xdebug_get_profiler_filename
+2 %d %d
+
+fl=(1)
+fn=(2) php::register_shutdown_function
+16 %d %d
+
+fl=(2) %scapture-profile.inc
+fn=(3) require_once::%scapture-profile.inc
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+16 %d %d
+
+fl=(3) %sbug00360-php84.php
+fn=(4) func
+4 %d %d
+
+fl=(1)
+fn=(5) php::exit
+10 %d %d
+
+fl=(3)
+fn=(6) {main}
+1 %d %d
+cfl=(2)
+cfn=(3)
+calls=1 0 0
+2 %d %d
+cfl=(3)
+cfn=(4)
+calls=1 0 0
+8 %d %d
+cfl=(1)
+cfn=(5)
+calls=1 0 0
+10 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug00631-php83.phpt b/xdebug-3.4.5/tests/profiler/bug00631-php83.phpt
new file mode 100644
index 0000000..3ef3ad5
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00631-php83.phpt
@@ -0,0 +1,65 @@
+--TEST--
+Test for bug #631: Summary not written when script ended with "exit()" (< PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.4');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+xdebug.profiler_output_name=cachegrind.out.%p.%r
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+
+strrev("5");
+
+exit();
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug00631-php83.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::xdebug_get_profiler_filename
+2 %d %d
+
+fl=(1)
+fn=(2) php::register_shutdown_function
+16 %d %d
+
+fl=(2) %scapture-profile.inc
+fn=(3) require_once::%scapture-profile.inc
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+16 %d %d
+
+fl=(1)
+fn=(4) php::strrev
+4 %d %d
+
+fl=(3) %sbug00631-php83.php
+fn=(5) {main}
+1 %d %d
+cfl=(2)
+cfn=(3)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+4 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug00631-php84.phpt b/xdebug-3.4.5/tests/profiler/bug00631-php84.phpt
new file mode 100644
index 0000000..3d3da4a
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00631-php84.phpt
@@ -0,0 +1,73 @@
+--TEST--
+Test for bug #631: Summary not written when script ended with "exit()" (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+xdebug.profiler_output_name=cachegrind.out.%p.%r
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+
+strrev("5");
+
+exit();
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug00631-php84.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::xdebug_get_profiler_filename
+2 %d %d
+
+fl=(1)
+fn=(2) php::register_shutdown_function
+16 %d %d
+
+fl=(2) %scapture-profile.inc
+fn=(3) require_once::%scapture-profile.inc
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+16 %d %d
+
+fl=(1)
+fn=(4) php::strrev
+4 %d %d
+
+fl=(1)
+fn=(5) php::exit
+6 %d %d
+
+fl=(3) %sbug00631-php84.php
+fn=(6) {main}
+1 %d %d
+cfl=(2)
+cfn=(3)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+4 %d %d
+cfl=(1)
+cfn=(5)
+calls=1 0 0
+6 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug00639-php83.phpt b/xdebug-3.4.5/tests/profiler/bug00639-php83.phpt
new file mode 100644
index 0000000..497bf84
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00639-php83.phpt
@@ -0,0 +1,162 @@
+--TEST--
+Test for bug #639: Xdebug profiling: output not correct - missing 'cfl=' (< PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.4');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+require_once 'bug00639.inc';
+
+function func1()
+{
+	func2();
+	func2();
+}
+
+func1();
+func2();
+func2();
+func2();
+
+exit();
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug00639-php83.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::xdebug_get_profiler_filename
+2 %d %d
+
+fl=(1)
+fn=(2) php::register_shutdown_function
+16 %d %d
+
+fl=(2) %scapture-profile.inc
+fn=(3) require_once::%scapture-profile.inc
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+16 %d %d
+
+fl=(3) %sbug00639.inc
+fn=(4) require_once::%sbug00639.inc
+1 %d %d
+
+fl=(1)
+fn=(5) php::strrev
+4 %d %d
+
+fl=(3)
+fn=(6) func2
+2 %d %d
+cfl=(1)
+cfn=(5)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(5)
+4 %d %d
+
+fl=(3)
+fn=(6)
+2 %d %d
+cfl=(1)
+cfn=(5)
+calls=1 0 0
+4 %d %d
+
+fl=(4) %sbug00639-php83.php
+fn=(7) func1
+5 %d %d
+cfl=(3)
+cfn=(6)
+calls=1 0 0
+7 %d %d
+cfl=(3)
+cfn=(6)
+calls=1 0 0
+8 %d %d
+
+fl=(1)
+fn=(5)
+4 %d %d
+
+fl=(3)
+fn=(6)
+2 %d %d
+cfl=(1)
+cfn=(5)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(5)
+4 %d %d
+
+fl=(3)
+fn=(6)
+2 %d %d
+cfl=(1)
+cfn=(5)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(5)
+4 %d %d
+
+fl=(3)
+fn=(6)
+2 %d %d
+cfl=(1)
+cfn=(5)
+calls=1 0 0
+4 %d %d
+
+fl=(4)
+fn=(8) {main}
+1 %d %d
+cfl=(2)
+cfn=(3)
+calls=1 0 0
+2 %d %d
+cfl=(3)
+cfn=(4)
+calls=1 0 0
+3 %d %d
+cfl=(4)
+cfn=(7)
+calls=1 0 0
+11 %d %d
+cfl=(3)
+cfn=(6)
+calls=1 0 0
+12 %d %d
+cfl=(3)
+cfn=(6)
+calls=1 0 0
+13 %d %d
+cfl=(3)
+cfn=(6)
+calls=1 0 0
+14 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug00639-php84.phpt b/xdebug-3.4.5/tests/profiler/bug00639-php84.phpt
new file mode 100644
index 0000000..25f67d3
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00639-php84.phpt
@@ -0,0 +1,170 @@
+--TEST--
+Test for bug #639: Xdebug profiling: output not correct - missing 'cfl=' (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+require_once 'bug00639.inc';
+
+function func1()
+{
+	func2();
+	func2();
+}
+
+func1();
+func2();
+func2();
+func2();
+
+exit();
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug00639-php84.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::xdebug_get_profiler_filename
+2 %d %d
+
+fl=(1)
+fn=(2) php::register_shutdown_function
+16 %d %d
+
+fl=(2) %scapture-profile.inc
+fn=(3) require_once::%scapture-profile.inc
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+16 %d %d
+
+fl=(3) %sbug00639.inc
+fn=(4) require_once::%sbug00639.inc
+1 %d %d
+
+fl=(1)
+fn=(5) php::strrev
+4 %d %d
+
+fl=(3)
+fn=(6) func2
+2 %d %d
+cfl=(1)
+cfn=(5)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(5)
+4 %d %d
+
+fl=(3)
+fn=(6)
+2 %d %d
+cfl=(1)
+cfn=(5)
+calls=1 0 0
+4 %d %d
+
+fl=(4) %sbug00639-php84.php
+fn=(7) func1
+5 %d %d
+cfl=(3)
+cfn=(6)
+calls=1 0 0
+7 %d %d
+cfl=(3)
+cfn=(6)
+calls=1 0 0
+8 %d %d
+
+fl=(1)
+fn=(5)
+4 %d %d
+
+fl=(3)
+fn=(6)
+2 %d %d
+cfl=(1)
+cfn=(5)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(5)
+4 %d %d
+
+fl=(3)
+fn=(6)
+2 %d %d
+cfl=(1)
+cfn=(5)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(5)
+4 %d %d
+
+fl=(3)
+fn=(6)
+2 %d %d
+cfl=(1)
+cfn=(5)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(8) php::exit
+16 %d %d
+
+fl=(4)
+fn=(9) {main}
+1 %d %d
+cfl=(2)
+cfn=(3)
+calls=1 0 0
+2 %d %d
+cfl=(3)
+cfn=(4)
+calls=1 0 0
+3 %d %d
+cfl=(4)
+cfn=(7)
+calls=1 0 0
+11 %d %d
+cfl=(3)
+cfn=(6)
+calls=1 0 0
+12 %d %d
+cfl=(3)
+cfn=(6)
+calls=1 0 0
+13 %d %d
+cfl=(3)
+cfn=(6)
+calls=1 0 0
+14 %d %d
+cfl=(1)
+cfn=(8)
+calls=1 0 0
+16 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug00639.inc b/xdebug-3.4.5/tests/profiler/bug00639.inc
new file mode 100644
index 0000000..bcf92a9
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00639.inc
@@ -0,0 +1,6 @@
+<?php
+function func2()
+{
+	strrev("42");
+}
+?>
diff --git a/xdebug-3.4.5/tests/profiler/bug00643-php83.phpt b/xdebug-3.4.5/tests/profiler/bug00643-php83.phpt
new file mode 100644
index 0000000..8810b9f
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00643-php83.phpt
@@ -0,0 +1,116 @@
+--TEST--
+Test for bug #643: Profiler gets line numbers wrong (< PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.4');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+
+require_once 'bug00643-t1.inc';
+ 
+$a = array("testing");
+ 
+t1();
+
+exit();
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug00643-php83.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::xdebug_get_profiler_filename
+2 %d %d
+
+fl=(1)
+fn=(2) php::register_shutdown_function
+16 %d %d
+
+fl=(2) %scapture-profile.inc
+fn=(3) require_once::%scapture-profile.inc
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+16 %d %d
+
+fl=(3) %sbug00643-t2.inc
+fn=(4) require_once::%sbug00643-t2.inc
+1 %d %d
+
+fl=(4) %sbug00643-t1.inc
+fn=(5) require_once::%sbug00643-t1.inc
+1 %d %d
+cfl=(3)
+cfn=(4)
+calls=1 0 0
+2 %d %d
+
+fl=(1)
+fn=(6) php::array_count_values
+23 %d %d
+
+fl=(1)
+fn=(6)
+12 %d %d
+
+fl=(1)
+fn=(7) php::is_array
+12 %d %d
+
+fl=(3)
+fn=(8) errors_fatal
+10 %d %d
+cfl=(1)
+cfn=(6)
+calls=1 0 0
+12 %d %d
+cfl=(1)
+cfn=(7)
+calls=1 0 0
+12 %d %d
+
+fl=(4)
+fn=(9) t1
+20 %d %d
+cfl=(1)
+cfn=(6)
+calls=1 0 0
+23 %d %d
+cfl=(3)
+cfn=(8)
+calls=1 0 0
+23 %d %d
+
+fl=(5) %sbug00643-php83.php
+fn=(10) {main}
+1 %d %d
+cfl=(2)
+cfn=(3)
+calls=1 0 0
+2 %d %d
+cfl=(4)
+cfn=(5)
+calls=1 0 0
+4 %d %d
+cfl=(4)
+cfn=(9)
+calls=1 0 0
+8 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug00643-php84.phpt b/xdebug-3.4.5/tests/profiler/bug00643-php84.phpt
new file mode 100644
index 0000000..1d80d66
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00643-php84.phpt
@@ -0,0 +1,124 @@
+--TEST--
+Test for bug #643: Profiler gets line numbers wrong (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+
+require_once 'bug00643-t1.inc';
+ 
+$a = array("testing");
+ 
+t1();
+
+exit();
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug00643-php84.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::xdebug_get_profiler_filename
+2 %d %d
+
+fl=(1)
+fn=(2) php::register_shutdown_function
+16 %d %d
+
+fl=(2) %scapture-profile.inc
+fn=(3) require_once::%scapture-profile.inc
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+16 %d %d
+
+fl=(3) %sbug00643-t2.inc
+fn=(4) require_once::%sbug00643-t2.inc
+1 %d %d
+
+fl=(4) %sbug00643-t1.inc
+fn=(5) require_once::%sbug00643-t1.inc
+1 %d %d
+cfl=(3)
+cfn=(4)
+calls=1 0 0
+2 %d %d
+
+fl=(1)
+fn=(6) php::array_count_values
+23 %d %d
+
+fl=(1)
+fn=(6)
+12 %d %d
+
+fl=(1)
+fn=(7) php::is_array
+12 %d %d
+
+fl=(3)
+fn=(8) errors_fatal
+10 %d %d
+cfl=(1)
+cfn=(6)
+calls=1 0 0
+12 %d %d
+cfl=(1)
+cfn=(7)
+calls=1 0 0
+12 %d %d
+
+fl=(4)
+fn=(9) t1
+20 %d %d
+cfl=(1)
+cfn=(6)
+calls=1 0 0
+23 %d %d
+cfl=(3)
+cfn=(8)
+calls=1 0 0
+23 %d %d
+
+fl=(1)
+fn=(10) php::exit
+10 %d %d
+
+fl=(5) %sbug00643-php84.php
+fn=(11) {main}
+1 %d %d
+cfl=(2)
+cfn=(3)
+calls=1 0 0
+2 %d %d
+cfl=(4)
+cfn=(5)
+calls=1 0 0
+4 %d %d
+cfl=(4)
+cfn=(9)
+calls=1 0 0
+8 %d %d
+cfl=(1)
+cfn=(10)
+calls=1 0 0
+10 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug00643-t1.inc b/xdebug-3.4.5/tests/profiler/bug00643-t1.inc
new file mode 100644
index 0000000..81a92ec
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00643-t1.inc
@@ -0,0 +1,29 @@
+<?php
+require_once('bug00643-t2.inc');
+ 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 
+function t1()
+{
+	global $a;
+	if (array_count_values($a) && errors_fatal($a))
+	{
+		echo "ok";
+	}
+	return TRUE;
+}
+?>
diff --git a/xdebug-3.4.5/tests/profiler/bug00643-t2.inc b/xdebug-3.4.5/tests/profiler/bug00643-t2.inc
new file mode 100644
index 0000000..a74c2db
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00643-t2.inc
@@ -0,0 +1,15 @@
+<?php
+
+
+
+
+
+
+
+
+function errors_fatal($a) {
+	$ia = 'is_array';
+	array_count_values($a) && $ia($a);
+	return FALSE;
+}
+?>
diff --git a/xdebug-3.4.5/tests/profiler/bug00693.phpt b/xdebug-3.4.5/tests/profiler/bug00693.phpt
new file mode 100644
index 0000000..c0fbb2c
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00693.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Test for bug #693: Cachegrind files not written when filename is very long
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!win');
+if (getenv('CIRCLECI') !== false) die("skip on CircleCI");
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+xdebug.output_dir=/tmp
+xdebug.profiler_output_name=cachegrind.01-%r.02-%r.03-%r.04-%r.05-%r.06-%r.07-%r.08-%r.09-%r.10-%r.11-%r.12-%r.13-%r.14-%r.15-%r.16-%r.17-%r.18-%r.19-%r.20-%r.21-%r.22-%r.23-%r.24-%r.25-%r.26-%r.27-%r.28-%r.29-%r.30
+--FILE--
+<?php
+$file = xdebug_get_profiler_filename();
+var_dump($file === false);
+var_dump(file_exists($file));
+var_dump($file);
+if ($file) {
+	unlink($file);
+}
+?>
+--EXPECTF--
+bool(false)
+bool(true)
+string(%d) "%scachegrind.01-%s.02-%s.03-%s.04-%s.05-%s.06-%s.07-%s.08-%s.09-%s.10-%s.11-%s.12-%s.13-%s.14-%s.15-%s.16-%s.17-%s.18-%s.19-%s.20-%s.21-%s.22-%s.23-%s.24-%s"
diff --git a/xdebug-3.4.5/tests/profiler/bug00714-php83.phpt b/xdebug-3.4.5/tests/profiler/bug00714-php83.phpt
new file mode 100644
index 0000000..326e021
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00714-php83.phpt
@@ -0,0 +1,119 @@
+--TEST--
+Test for bug #714: Cachegrind files have huge (wrong) numbers in some lines (< PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.4; slow');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+
+function sleep1() { sleep(1); }
+function sleep10() { sleep(1); }
+function sleep20() { sleep(2); }
+
+echo "Sleeping 1\n";
+sleep1();
+echo "Sleeping 10\n";
+sleep10();
+echo "Sleeping 20\n";
+sleep20();
+echo "DONE\n\n";
+
+exit();
+?>
+--EXPECTF--
+Sleeping 1
+Sleeping 10
+Sleeping 20
+DONE
+
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug00714-php83.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::xdebug_get_profiler_filename
+2 %d %d
+
+fl=(1)
+fn=(2) php::register_shutdown_function
+16 %d %d
+
+fl=(2) %scapture-profile.inc
+fn=(3) require_once::%scapture-profile.inc
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+16 %d %d
+
+fl=(1)
+fn=(4) php::sleep
+4 %r(1\d{8}|9\d{7})%r %d
+
+fl=(3) %sbug00714-php83.php
+fn=(5) sleep1
+4 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+4 %r(1\d{8}|9\d{7})%r %d
+
+fl=(1)
+fn=(4)
+5 1%r(\d{8})%r %d
+
+fl=(3)
+fn=(6) sleep10
+5 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+5 1%r(\d{8})%r 0
+
+fl=(1)
+fn=(4)
+6 2%r(\d{8})%r 0
+
+fl=(3)
+fn=(7) sleep20
+6 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+6 2%r(\d{8})%r 0
+
+fl=(3)
+fn=(8) {main}
+1 %d %d
+cfl=(2)
+cfn=(3)
+calls=1 0 0
+2 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+9 1%r(\d{8})%r %d
+cfl=(3)
+cfn=(6)
+calls=1 0 0
+11 1%r(\d{8})%r %d
+cfl=(3)
+cfn=(7)
+calls=1 0 0
+13 2%r(\d{8})%r %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug00714-php84.phpt b/xdebug-3.4.5/tests/profiler/bug00714-php84.phpt
new file mode 100644
index 0000000..cb35099
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00714-php84.phpt
@@ -0,0 +1,127 @@
+--TEST--
+Test for bug #714: Cachegrind files have huge (wrong) numbers in some lines (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4; slow');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+
+function sleep1() { sleep(1); }
+function sleep10() { sleep(1); }
+function sleep20() { sleep(2); }
+
+echo "Sleeping 1\n";
+sleep1();
+echo "Sleeping 10\n";
+sleep10();
+echo "Sleeping 20\n";
+sleep20();
+echo "DONE\n\n";
+
+exit();
+?>
+--EXPECTF--
+Sleeping 1
+Sleeping 10
+Sleeping 20
+DONE
+
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug00714-php84.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::xdebug_get_profiler_filename
+2 %d %d
+
+fl=(1)
+fn=(2) php::register_shutdown_function
+16 %d %d
+
+fl=(2) %scapture-profile.inc
+fn=(3) require_once::%scapture-profile.inc
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+16 %d %d
+
+fl=(1)
+fn=(4) php::sleep
+4 %r(1\d{8}|9\d{7})%r %d
+
+fl=(3) %sbug00714-php84.php
+fn=(5) sleep1
+4 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+4 %r(1\d{8}|9\d{7})%r %d
+
+fl=(1)
+fn=(4)
+5 1%r(\d{8})%r %d
+
+fl=(3)
+fn=(6) sleep10
+5 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+5 1%r(\d{8})%r 0
+
+fl=(1)
+fn=(4)
+6 2%r(\d{8})%r 0
+
+fl=(3)
+fn=(7) sleep20
+6 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+6 2%r(\d{8})%r 0
+
+fl=(1)
+fn=(8) php::exit
+16 %d %d
+
+fl=(3)
+fn=(9) {main}
+1 %d %d
+cfl=(2)
+cfn=(3)
+calls=1 0 0
+2 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+9 1%r(\d{8})%r %d
+cfl=(3)
+cfn=(6)
+calls=1 0 0
+11 1%r(\d{8})%r %d
+cfl=(3)
+cfn=(7)
+calls=1 0 0
+13 2%r(\d{8})%r %d
+cfl=(1)
+cfn=(8)
+calls=1 0 0
+16 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug00728-php83.phpt b/xdebug-3.4.5/tests/profiler/bug00728-php83.phpt
new file mode 100644
index 0000000..b39257e
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00728-php83.phpt
@@ -0,0 +1,84 @@
+--TEST--
+Test for bug #728: Profiler reports __call() invocations confusingly/wrongly (>= PHP 8.1, < PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1, < 8.4');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+
+class bankaccount
+{
+	function __call( $foo, $bar )
+	{
+		var_dump( $foo, $bar );
+	}
+}
+
+$b = new bankaccount;
+$b->bar();
+
+exit();
+?>
+--EXPECTF--
+string(3) "bar"
+array(0) {
+}
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug00728-php83.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::xdebug_get_profiler_filename
+2 %d %d
+
+fl=(1)
+fn=(2) php::register_shutdown_function
+16 %d %d
+
+fl=(2) %scapture-profile.inc
+fn=(3) require_once::%scapture-profile.inc
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+16 %d %d
+
+fl=(1)
+fn=(4) php::var_dump
+8 %d %d
+
+fl=(3) %sbug00728-php83.php
+fn=(5) bankaccount->__call
+6 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+8 %d %d
+
+fl=(3)
+fn=(6) {main}
+1 %d %d
+cfl=(2)
+cfn=(3)
+calls=1 0 0
+2 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+13 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug00728-php84.phpt b/xdebug-3.4.5/tests/profiler/bug00728-php84.phpt
new file mode 100644
index 0000000..685a5c9
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00728-php84.phpt
@@ -0,0 +1,92 @@
+--TEST--
+Test for bug #728: Profiler reports __call() invocations confusingly/wrongly (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+
+class bankaccount
+{
+	function __call( $foo, $bar )
+	{
+		var_dump( $foo, $bar );
+	}
+}
+
+$b = new bankaccount;
+$b->bar();
+
+exit();
+?>
+--EXPECTF--
+string(3) "bar"
+array(0) {
+}
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug00728-php84.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::xdebug_get_profiler_filename
+2 %d %d
+
+fl=(1)
+fn=(2) php::register_shutdown_function
+16 %d %d
+
+fl=(2) %scapture-profile.inc
+fn=(3) require_once::%scapture-profile.inc
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+16 %d %d
+
+fl=(1)
+fn=(4) php::var_dump
+8 %d %d
+
+fl=(3) %sbug00728-php84.php
+fn=(5) bankaccount->__call
+6 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+8 %d %d
+
+fl=(1)
+fn=(6) php::exit
+15 %d %d
+
+fl=(3)
+fn=(7) {main}
+1 %d %d
+cfl=(2)
+cfn=(3)
+calls=1 0 0
+2 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+13 %d %d
+cfl=(1)
+cfn=(6)
+calls=1 0 0
+15 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug00785-001-php83.phpt b/xdebug-3.4.5/tests/profiler/bug00785-001-php83.phpt
new file mode 100644
index 0000000..34a6d64
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00785-001-php83.phpt
@@ -0,0 +1,201 @@
+--TEST--
+Test for bug #785: Profiler does not handle closures well (< PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.4');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+
+require_once 'bug00785-001.inc';
+
+exit();
+?>
+--EXPECTF--
+int(21)
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug00785-001-php83.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::xdebug_get_profiler_filename
+2 %d %d
+
+fl=(1)
+fn=(2) php::register_shutdown_function
+16 %d %d
+
+fl=(2) %scapture-profile.inc
+fn=(3) require_once::%scapture-profile.inc
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+16 %d %d
+
+fl=(1)
+fn=(4) php::usleep
+5 %d %d
+
+fl=(3) %sbug00785-001.inc
+fn=(5) {closure:%sbug00785-001.inc:5-5}
+5 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+5 %d %d
+
+fl=(1)
+fn=(4)
+5 %d %d
+
+fl=(3)
+fn=(5)
+5 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+5 %d %d
+
+fl=(1)
+fn=(4)
+5 %d %d
+
+fl=(3)
+fn=(5)
+5 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+5 %d %d
+
+fl=(1)
+fn=(4)
+5 %d %d
+
+fl=(3)
+fn=(5)
+5 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+5 %d %d
+
+fl=(1)
+fn=(4)
+5 %d %d
+
+fl=(3)
+fn=(5)
+5 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+5 %d %d
+
+fl=(1)
+fn=(4)
+5 %d %d
+
+fl=(3)
+fn=(5)
+5 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+5 %d %d
+
+fl=(1)
+fn=(6) php::array_walk
+7 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+7 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+7 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+7 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+7 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+7 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+7 %d %d
+
+fl=(1)
+fn=(4)
+5 %d %d
+
+fl=(3)
+fn=(5)
+5 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+5 %d %d
+
+fl=(1)
+fn=(7) php::var_dump
+9 %d %d
+
+fl=(3)
+fn=(8) foo
+2 %d %d
+cfl=(1)
+cfn=(6)
+calls=1 0 0
+7 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+9 %d %d
+cfl=(1)
+cfn=(7)
+calls=1 0 0
+9 %d %d
+
+fl=(3)
+fn=(9) require_once::%sbug00785-001.inc
+1 %d %d
+cfl=(3)
+cfn=(8)
+calls=1 0 0
+12 %d %d
+
+fl=(4) %sbug00785-001-php83.php
+fn=(10) {main}
+1 %d %d
+cfl=(2)
+cfn=(3)
+calls=1 0 0
+2 %d %d
+cfl=(3)
+cfn=(9)
+calls=1 0 0
+4 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug00785-001-php84.phpt b/xdebug-3.4.5/tests/profiler/bug00785-001-php84.phpt
new file mode 100644
index 0000000..d22a2d5
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00785-001-php84.phpt
@@ -0,0 +1,209 @@
+--TEST--
+Test for bug #785: Profiler does not handle closures well (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+
+require_once 'bug00785-001.inc';
+
+exit();
+?>
+--EXPECTF--
+int(21)
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug00785-001-php84.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::xdebug_get_profiler_filename
+2 %d %d
+
+fl=(1)
+fn=(2) php::register_shutdown_function
+16 %d %d
+
+fl=(2) %scapture-profile.inc
+fn=(3) require_once::%scapture-profile.inc
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+16 %d %d
+
+fl=(1)
+fn=(4) php::usleep
+5 %d %d
+
+fl=(3) %sbug00785-001.inc
+fn=(5) {closure:%sbug00785-001.inc:5-5}
+5 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+5 %d %d
+
+fl=(1)
+fn=(4)
+5 %d %d
+
+fl=(3)
+fn=(5)
+5 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+5 %d %d
+
+fl=(1)
+fn=(4)
+5 %d %d
+
+fl=(3)
+fn=(5)
+5 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+5 %d %d
+
+fl=(1)
+fn=(4)
+5 %d %d
+
+fl=(3)
+fn=(5)
+5 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+5 %d %d
+
+fl=(1)
+fn=(4)
+5 %d %d
+
+fl=(3)
+fn=(5)
+5 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+5 %d %d
+
+fl=(1)
+fn=(4)
+5 %d %d
+
+fl=(3)
+fn=(5)
+5 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+5 %d %d
+
+fl=(1)
+fn=(6) php::array_walk
+7 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+7 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+7 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+7 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+7 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+7 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+7 %d %d
+
+fl=(1)
+fn=(4)
+5 %d %d
+
+fl=(3)
+fn=(5)
+5 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+5 %d %d
+
+fl=(1)
+fn=(7) php::var_dump
+9 %d %d
+
+fl=(3)
+fn=(8) foo
+2 %d %d
+cfl=(1)
+cfn=(6)
+calls=1 0 0
+7 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+9 %d %d
+cfl=(1)
+cfn=(7)
+calls=1 0 0
+9 %d %d
+
+fl=(3)
+fn=(9) require_once::%sbug00785-001.inc
+1 %d %d
+cfl=(3)
+cfn=(8)
+calls=1 0 0
+12 %d %d
+
+fl=(1)
+fn=(10) php::exit
+6 %d %d
+
+fl=(4) %sbug00785-001-php84.php
+fn=(11) {main}
+1 %d %d
+cfl=(2)
+cfn=(3)
+calls=1 0 0
+2 %d %d
+cfl=(3)
+cfn=(9)
+calls=1 0 0
+4 %d %d
+cfl=(1)
+cfn=(10)
+calls=1 0 0
+6 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug00785-001.inc b/xdebug-3.4.5/tests/profiler/bug00785-001.inc
new file mode 100644
index 0000000..c82e248
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00785-001.inc
@@ -0,0 +1,13 @@
+<?php
+function foo() {
+	$array = array( 1, 2, 3, 4, 5, 6 );
+
+	$cb = function($a) { usleep(500); return $a * 3; };
+
+	array_walk( $array, $cb );
+
+	var_dump( $cb(7) );
+}
+
+foo();
+?>
diff --git a/xdebug-3.4.5/tests/profiler/bug00785-002-php83.phpt b/xdebug-3.4.5/tests/profiler/bug00785-002-php83.phpt
new file mode 100644
index 0000000..7657460
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00785-002-php83.phpt
@@ -0,0 +1,264 @@
+--TEST--
+Test for bug #785: Profiler does not handle call_user_func_array well (< PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.4');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+
+require_once 'bug00785-002.inc';
+
+exit();
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug00785-002-php83.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::xdebug_get_profiler_filename
+2 %d %d
+
+fl=(1)
+fn=(2) php::register_shutdown_function
+16 %d %d
+
+fl=(2) %scapture-profile.inc
+fn=(3) require_once::%scapture-profile.inc
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+16 %d %d
+
+fl=(1)
+fn=(4) php::usleep
+10 %d %d
+
+fl=(3) %sbug00785-002.inc
+fn=(5) nested2
+8 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+10 %d %d
+
+fl=(1)
+fn=(6) php::call_user_func_array:{%sbug00785-002.inc:24}
+24 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+24 %d %d
+
+fl=(1)
+fn=(4)
+4 %d %d
+
+fl=(3)
+fn=(7) nested
+2 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(8) php::call_user_func_array:{%sbug00785-002.inc:20}
+20 %d %d
+cfl=(3)
+cfn=(7)
+calls=1 0 0
+20 %d %d
+
+fl=(1)
+fn=(4)
+4 %d %d
+
+fl=(3)
+fn=(7)
+2 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(8)
+20 %d %d
+cfl=(3)
+cfn=(7)
+calls=1 0 0
+20 %d %d
+
+fl=(1)
+fn=(4)
+4 %d %d
+
+fl=(3)
+fn=(7)
+2 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(8)
+20 %d %d
+cfl=(3)
+cfn=(7)
+calls=1 0 0
+20 %d %d
+
+fl=(1)
+fn=(4)
+4 %d %d
+
+fl=(3)
+fn=(7)
+2 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(8)
+20 %d %d
+cfl=(3)
+cfn=(7)
+calls=1 0 0
+20 %d %d
+
+fl=(1)
+fn=(4)
+4 %d %d
+
+fl=(3)
+fn=(7)
+2 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(8)
+20 %d %d
+cfl=(3)
+cfn=(7)
+calls=1 0 0
+20 %d %d
+
+fl=(1)
+fn=(4)
+4 %d %d
+
+fl=(3)
+fn=(7)
+2 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(8)
+20 %d %d
+cfl=(3)
+cfn=(7)
+calls=1 0 0
+20 %d %d
+
+fl=(3)
+fn=(9) foo
+15 %d %d
+cfl=(1)
+cfn=(8)
+calls=1 0 0
+20 %d %d
+cfl=(1)
+cfn=(8)
+calls=1 0 0
+20 %d %d
+cfl=(1)
+cfn=(8)
+calls=1 0 0
+20 %d %d
+cfl=(1)
+cfn=(8)
+calls=1 0 0
+20 %d %d
+cfl=(1)
+cfn=(8)
+calls=1 0 0
+20 %d %d
+cfl=(1)
+cfn=(8)
+calls=1 0 0
+20 %d %d
+
+fl=(1)
+fn=(4)
+4 %d %d
+
+fl=(3)
+fn=(7)
+2 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(10) php::call_user_func:{%sbug00785-002.inc:26}
+26 %d %d
+cfl=(3)
+cfn=(7)
+calls=1 0 0
+26 %d %d
+
+fl=(3)
+fn=(11) require_once::%sbug00785-002.inc
+1 %d %d
+cfl=(1)
+cfn=(6)
+calls=1 0 0
+24 %d %d
+cfl=(3)
+cfn=(9)
+calls=1 0 0
+25 %d %d
+cfl=(1)
+cfn=(10)
+calls=1 0 0
+26 %d %d
+
+fl=(4) %sbug00785-002-php83.php
+fn=(12) {main}
+1 %d %d
+cfl=(2)
+cfn=(3)
+calls=1 0 0
+2 %d %d
+cfl=(3)
+cfn=(11)
+calls=1 0 0
+4 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug00785-002-php84.phpt b/xdebug-3.4.5/tests/profiler/bug00785-002-php84.phpt
new file mode 100644
index 0000000..95b857c
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00785-002-php84.phpt
@@ -0,0 +1,272 @@
+--TEST--
+Test for bug #785: Profiler does not handle call_user_func_array well (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+
+require_once 'bug00785-002.inc';
+
+exit();
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug00785-002-php84.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::xdebug_get_profiler_filename
+2 %d %d
+
+fl=(1)
+fn=(2) php::register_shutdown_function
+16 %d %d
+
+fl=(2) %scapture-profile.inc
+fn=(3) require_once::%scapture-profile.inc
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+16 %d %d
+
+fl=(1)
+fn=(4) php::usleep
+10 %d %d
+
+fl=(3) %sbug00785-002.inc
+fn=(5) nested2
+8 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+10 %d %d
+
+fl=(1)
+fn=(6) php::call_user_func_array:{%sbug00785-002.inc:24}
+24 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+24 %d %d
+
+fl=(1)
+fn=(4)
+4 %d %d
+
+fl=(3)
+fn=(7) nested
+2 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(8) php::call_user_func_array:{%sbug00785-002.inc:20}
+20 %d %d
+cfl=(3)
+cfn=(7)
+calls=1 0 0
+20 %d %d
+
+fl=(1)
+fn=(4)
+4 %d %d
+
+fl=(3)
+fn=(7)
+2 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(8)
+20 %d %d
+cfl=(3)
+cfn=(7)
+calls=1 0 0
+20 %d %d
+
+fl=(1)
+fn=(4)
+4 %d %d
+
+fl=(3)
+fn=(7)
+2 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(8)
+20 %d %d
+cfl=(3)
+cfn=(7)
+calls=1 0 0
+20 %d %d
+
+fl=(1)
+fn=(4)
+4 %d %d
+
+fl=(3)
+fn=(7)
+2 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(8)
+20 %d %d
+cfl=(3)
+cfn=(7)
+calls=1 0 0
+20 %d %d
+
+fl=(1)
+fn=(4)
+4 %d %d
+
+fl=(3)
+fn=(7)
+2 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(8)
+20 %d %d
+cfl=(3)
+cfn=(7)
+calls=1 0 0
+20 %d %d
+
+fl=(1)
+fn=(4)
+4 %d %d
+
+fl=(3)
+fn=(7)
+2 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(8)
+20 %d %d
+cfl=(3)
+cfn=(7)
+calls=1 0 0
+20 %d %d
+
+fl=(3)
+fn=(9) foo
+15 %d %d
+cfl=(1)
+cfn=(8)
+calls=1 0 0
+20 %d %d
+cfl=(1)
+cfn=(8)
+calls=1 0 0
+20 %d %d
+cfl=(1)
+cfn=(8)
+calls=1 0 0
+20 %d %d
+cfl=(1)
+cfn=(8)
+calls=1 0 0
+20 %d %d
+cfl=(1)
+cfn=(8)
+calls=1 0 0
+20 %d %d
+cfl=(1)
+cfn=(8)
+calls=1 0 0
+20 %d %d
+
+fl=(1)
+fn=(4)
+4 %d %d
+
+fl=(3)
+fn=(7)
+2 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+4 %d %d
+
+fl=(1)
+fn=(10) php::call_user_func:{%sbug00785-002.inc:26}
+26 %d %d
+cfl=(3)
+cfn=(7)
+calls=1 0 0
+26 %d %d
+
+fl=(3)
+fn=(11) require_once::%sbug00785-002.inc
+1 %d %d
+cfl=(1)
+cfn=(6)
+calls=1 0 0
+24 %d %d
+cfl=(3)
+cfn=(9)
+calls=1 0 0
+25 %d %d
+cfl=(1)
+cfn=(10)
+calls=1 0 0
+26 %d %d
+
+fl=(1)
+fn=(12) php::exit
+6 %d %d
+
+fl=(4) %sbug00785-002-php84.php
+fn=(13) {main}
+1 %d %d
+cfl=(2)
+cfn=(3)
+calls=1 0 0
+2 %d %d
+cfl=(3)
+cfn=(11)
+calls=1 0 0
+4 %d %d
+cfl=(1)
+cfn=(12)
+calls=1 0 0
+6 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug00785-002.inc b/xdebug-3.4.5/tests/profiler/bug00785-002.inc
new file mode 100644
index 0000000..770d22f
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug00785-002.inc
@@ -0,0 +1,27 @@
+<?php
+function nested($a)
+{
+	usleep(500);
+	return $a * 3;
+}
+
+function nested2($a)
+{
+	usleep(500);
+	return $a * M_PI;
+}
+
+
+function foo() {
+	$array = array( 1, 2, 3, 4, 5, 6 );
+
+	foreach ( $array as $nr ) {
+		$c = 'call_user_func_array';
+		$c( 'nested', array( $nr ) );
+	}
+}
+$cufa = 'call_user_func_array'; $cuf = 'call_user_func';
+$cufa( 'nested2', array( 7 ) );
+foo();
+$cuf( 'nested', 8 );
+?>
diff --git a/xdebug-3.4.5/tests/profiler/bug01437.phpt b/xdebug-3.4.5/tests/profiler/bug01437.phpt
new file mode 100644
index 0000000..903fa4d
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug01437.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Test for bug #1437: Add X-Xdebug-Profile-Filename header
+--ENV--
+XDEBUG_CONFIG=
+--INI--
+xdebug.mode=profile,develop
+xdebug.start_with_request=default
+xdebug.filename_format=
+xdebug.profiler_output_name=XDEBUG-PROFILE.%p
+--FILE--
+<?php
+header( 'Location: bar');
+header( 'HTTP/1.0 404 Not Found' );
+var_dump( xdebug_get_headers( ) );
+@unlink( xdebug_get_profiler_filename() );
+?>
+--EXPECTF--
+%sbug01437.php:4:
+array(2) {
+  [0] =>
+  string(%d) "X-Xdebug-Profile-Filename: %sXDEBUG-PROFILE%s"
+  [1] =>
+  string(13) "Location: bar"
+}
diff --git a/xdebug-3.4.5/tests/profiler/bug01571-002-php82.phpt b/xdebug-3.4.5/tests/profiler/bug01571-002-php82.phpt
new file mode 100644
index 0000000..6bb563a
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug01571-002-php82.phpt
@@ -0,0 +1,80 @@
+--TEST--
+Test for bug #1571: Profiler doesn't show file/line for closures in namespaces (< PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.4');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+
+require_once 'bug01571-002.inc';
+
+exit();
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug01571-002-php82.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::xdebug_get_profiler_filename
+2 %d %d
+
+fl=(1)
+fn=(2) php::register_shutdown_function
+16 %d %d
+
+fl=(2) %scapture-profile.inc
+fn=(3) require_once::%scapture-profile.inc
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+16 %d %d
+
+fl=(1)
+fn=(4) php::usleep
+4 %d %d
+
+fl=(3) %sbug01571-002.inc
+fn=(5) Testing\{closure:%sbug01571-002.inc:4-4}
+4 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+4 %d %d
+
+fl=(3)
+fn=(6) require_once::%sbug01571-002.inc
+1 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+5 %d %d
+
+fl=(4) %sbug01571-002-php82.php
+fn=(7) {main}
+1 %d %d
+cfl=(2)
+cfn=(3)
+calls=1 0 0
+2 %d %d
+cfl=(3)
+cfn=(6)
+calls=1 0 0
+4 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug01571-002-php84.phpt b/xdebug-3.4.5/tests/profiler/bug01571-002-php84.phpt
new file mode 100644
index 0000000..acc5e84
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug01571-002-php84.phpt
@@ -0,0 +1,88 @@
+--TEST--
+Test for bug #1571: Profiler doesn't show file/line for closures in namespaces (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+
+require_once 'bug01571-002.inc';
+
+exit();
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug01571-002-php84.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::xdebug_get_profiler_filename
+2 %d %d
+
+fl=(1)
+fn=(2) php::register_shutdown_function
+16 %d %d
+
+fl=(2) %scapture-profile.inc
+fn=(3) require_once::%scapture-profile.inc
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+16 %d %d
+
+fl=(1)
+fn=(4) php::usleep
+4 %d %d
+
+fl=(3) %sbug01571-002.inc
+fn=(5) {closure:%sbug01571-002.inc:4-4}
+4 %d %d
+cfl=(1)
+cfn=(4)
+calls=1 0 0
+4 %d %d
+
+fl=(3)
+fn=(6) require_once::%sbug01571-002.inc
+1 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+5 %d %d
+
+fl=(1)
+fn=(7) php::exit
+6 %d %d
+
+fl=(4) %sbug01571-002-php84.php
+fn=(8) {main}
+1 %d %d
+cfl=(2)
+cfn=(3)
+calls=1 0 0
+2 %d %d
+cfl=(3)
+cfn=(6)
+calls=1 0 0
+4 %d %d
+cfl=(1)
+cfn=(7)
+calls=1 0 0
+6 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug01571-002.inc b/xdebug-3.4.5/tests/profiler/bug01571-002.inc
new file mode 100644
index 0000000..20bd03e
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug01571-002.inc
@@ -0,0 +1,6 @@
+<?php
+namespace Testing;
+
+$cb = function($a) { usleep(500); return $a * 3; };
+$cb(4);
+?>
diff --git a/xdebug-3.4.5/tests/profiler/bug01589-append.inc b/xdebug-3.4.5/tests/profiler/bug01589-append.inc
new file mode 100644
index 0000000..619a1ba
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug01589-append.inc
@@ -0,0 +1,10 @@
+<?php
+if (strlen('foobar')>1) {
+	$foobar=substr('foobar', 1);
+}
+else {
+	$foobar='';
+}
+
+exit();
+?>
diff --git a/xdebug-3.4.5/tests/profiler/bug01589-php83.phpt b/xdebug-3.4.5/tests/profiler/bug01589-php83.phpt
new file mode 100644
index 0000000..f2123c0
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug01589-php83.phpt
@@ -0,0 +1,85 @@
+--TEST--
+Test for bug #1589: function names used in auto_prepend_file missing (< PHP 8.4; !opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.4; !win; !opcache');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+auto_prepend_file=tests/profiler/bug01589-prepend.inc
+auto_append_file=tests/profiler/bug01589-append.inc
+--FILE--
+<?php
+if (strlen($foobar)>0) {
+}
+else {
+}
+
+$abc = substr('abc', 1);
+
+
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug01589-prepend.inc
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::substr
+17 %d %d
+
+fl=(1)
+fn=(2) php::xdebug_get_profiler_filename
+23 %d %d
+
+fl=(1)
+fn=(3) php::register_shutdown_function
+24 %d %d
+
+fl=(2) %sbug01589-prepend.inc
+fn=(4) {main}
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+17 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+23 %d %d
+cfl=(1)
+cfn=(3)
+calls=1 0 0
+24 %d %d
+
+fl=(1)
+fn=(1)
+7 %d %d
+
+fl=(3) %sbug01589-php83.php
+fn=(4)
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+7 %d %d
+
+fl=(1)
+fn=(1)
+3 %d %d
+
+fl=(4) %sbug01589-append.inc
+fn=(4)
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+3 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug01589-php84.phpt b/xdebug-3.4.5/tests/profiler/bug01589-php84.phpt
new file mode 100644
index 0000000..b8c87ca
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug01589-php84.phpt
@@ -0,0 +1,93 @@
+--TEST--
+Test for bug #1589: function names used in auto_prepend_file missing (>= PHP 8.4; !opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4; !win; !opcache');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+auto_prepend_file=tests/profiler/bug01589-prepend.inc
+auto_append_file=tests/profiler/bug01589-append.inc
+--FILE--
+<?php
+if (strlen($foobar)>0) {
+}
+else {
+}
+
+$abc = substr('abc', 1);
+
+
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug01589-prepend.inc
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::substr
+17 %d %d
+
+fl=(1)
+fn=(2) php::xdebug_get_profiler_filename
+23 %d %d
+
+fl=(1)
+fn=(3) php::register_shutdown_function
+24 %d %d
+
+fl=(2) %sbug01589-prepend.inc
+fn=(4) {main}
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+17 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+23 %d %d
+cfl=(1)
+cfn=(3)
+calls=1 0 0
+24 %d %d
+
+fl=(1)
+fn=(1)
+7 %d %d
+
+fl=(3) %sbug01589-php84.php
+fn=(4)
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+7 %d %d
+
+fl=(1)
+fn=(1)
+3 %d %d
+
+fl=(1)
+fn=(5) php::exit
+9 %d %d
+
+fl=(4) %sbug01589-append.inc
+fn=(4)
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+3 %d %d
+cfl=(1)
+cfn=(5)
+calls=1 0 0
+9 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug01589-prepend.inc b/xdebug-3.4.5/tests/profiler/bug01589-prepend.inc
new file mode 100644
index 0000000..6098f97
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug01589-prepend.inc
@@ -0,0 +1,25 @@
+<?php
+function capture()
+{
+	global $filename;
+
+	if (preg_match('@gz$@', $filename)) {
+		$fp = gzopen($filename, 'r');
+		echo stream_get_contents($fp);
+	} else {
+		echo file_get_contents($filename);
+	}
+
+	@unlink($filename);
+}
+
+if (strlen('foobar')>1) {
+	$foobar=substr('foobar', 1);
+}
+else {
+	$foobar='';
+}
+
+$filename = xdebug_get_profiler_filename();
+register_shutdown_function('capture');
+?>
diff --git a/xdebug-3.4.5/tests/profiler/bug01989-php83.phpt b/xdebug-3.4.5/tests/profiler/bug01989-php83.phpt
new file mode 100644
index 0000000..8521805
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug01989-php83.phpt
@@ -0,0 +1,80 @@
+--TEST--
+Test for bug #1989: Profiling shows wrong class when parent keyword is used (< PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.4');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+
+require_once 'bug01989.inc';
+
+exit();
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug01989-php83.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::xdebug_get_profiler_filename
+2 %d %d
+
+fl=(1)
+fn=(2) php::register_shutdown_function
+16 %d %d
+
+fl=(2) %scapture-profile.inc
+fn=(3) require_once::%scapture-profile.inc
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+16 %d %d
+
+fl=(3) %sbug01989.inc
+fn=(4) A->__construct
+5 %d %d
+
+fl=(3)
+fn=(5) B->__construct
+12 %d %d
+cfl=(3)
+cfn=(4)
+calls=1 0 0
+14 %d %d
+
+fl=(3)
+fn=(6) require_once::%sbug01989.inc
+1 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+18 %d %d
+
+fl=(4) %sbug01989-php83.php
+fn=(7) {main}
+1 %d %d
+cfl=(2)
+cfn=(3)
+calls=1 0 0
+2 %d %d
+cfl=(3)
+cfn=(6)
+calls=1 0 0
+4 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug01989-php84.phpt b/xdebug-3.4.5/tests/profiler/bug01989-php84.phpt
new file mode 100644
index 0000000..8496d44
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug01989-php84.phpt
@@ -0,0 +1,88 @@
+--TEST--
+Test for bug #1989: Profiling shows wrong class when parent keyword is used (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+
+require_once 'bug01989.inc';
+
+exit();
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sbug01989-php84.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
+
+fl=(1) php:internal
+fn=(1) php::xdebug_get_profiler_filename
+2 %d %d
+
+fl=(1)
+fn=(2) php::register_shutdown_function
+16 %d %d
+
+fl=(2) %scapture-profile.inc
+fn=(3) require_once::%scapture-profile.inc
+1 %d %d
+cfl=(1)
+cfn=(1)
+calls=1 0 0
+2 %d %d
+cfl=(1)
+cfn=(2)
+calls=1 0 0
+16 %d %d
+
+fl=(3) %sbug01989.inc
+fn=(4) A->__construct
+5 %d %d
+
+fl=(3)
+fn=(5) B->__construct
+12 %d %d
+cfl=(3)
+cfn=(4)
+calls=1 0 0
+14 %d %d
+
+fl=(3)
+fn=(6) require_once::%sbug01989.inc
+1 %d %d
+cfl=(3)
+cfn=(5)
+calls=1 0 0
+18 %d %d
+
+fl=(1)
+fn=(7) php::exit
+6 %d %d
+
+fl=(4) %sbug01989-php84.php
+fn=(8) {main}
+1 %d %d
+cfl=(2)
+cfn=(3)
+calls=1 0 0
+2 %d %d
+cfl=(3)
+cfn=(6)
+calls=1 0 0
+4 %d %d
+cfl=(1)
+cfn=(7)
+calls=1 0 0
+6 %d %d
+
+summary: %d %d
diff --git a/xdebug-3.4.5/tests/profiler/bug01989.inc b/xdebug-3.4.5/tests/profiler/bug01989.inc
new file mode 100644
index 0000000..94de4a0
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug01989.inc
@@ -0,0 +1,18 @@
+<?php
+
+class A
+{
+    public function __construct()
+    {
+    }
+}
+
+class B extends A
+{
+    public function __construct()
+    {
+        parent::__construct();
+    }
+}
+
+new B();
diff --git a/xdebug-3.4.5/tests/profiler/bug02001-no-zlib-compression.phpt b/xdebug-3.4.5/tests/profiler/bug02001-no-zlib-compression.phpt
new file mode 100644
index 0000000..6ccf7cb
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug02001-no-zlib-compression.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Test for bug #2001: no zlib, use_compression=1
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!ext-flag compression');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+xdebug.use_compression=1
+xdebug.profiler_output_name=cachegrind.out
+xdebug.log={TMP}/{RUNID}{TEST_PHP_WORKER}bug2001-no-zlib-compression.txt
+xdebug.control_socket=off
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+
+echo file_get_contents(sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'bug2001-no-zlib-compression.txt' );
+unlink (sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'bug2001-no-zlib-compression.txt' );
+?>
+--EXPECTF--
+[%d] Log opened at %s
+[%d] [Config] WARN: Cannot create the compressed file '%s.out.gz', because support for zlib has not been compiled in. Falling back to '%s.out'
+%A
diff --git a/xdebug-3.4.5/tests/profiler/bug02001-no-zlib-no-compression.phpt b/xdebug-3.4.5/tests/profiler/bug02001-no-zlib-no-compression.phpt
new file mode 100644
index 0000000..6c83cc5
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug02001-no-zlib-no-compression.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Test for bug #2001: no zlib, use_compression=0
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!ext-flag compression');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+xdebug.use_compression=0
+xdebug.profiler_output_name=cachegrind.out.%R.end
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+$file = xdebug_get_profiler_filename();
+var_dump($file);
+?>
+--EXPECTF--
+string(%d) "%send"
+%A
diff --git a/xdebug-3.4.5/tests/profiler/bug02001-zlib-compression.phpt b/xdebug-3.4.5/tests/profiler/bug02001-zlib-compression.phpt
new file mode 100644
index 0000000..f2b2482
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug02001-zlib-compression.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Test for bug #2001: zlib, use_compression=1
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext-flag compression');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+xdebug.use_compression=1
+xdebug.profiler_output_name=cachegrind.out.%R.end
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+$file = xdebug_get_profiler_filename();
+var_dump($file);
+?>
+--EXPECTF--
+string(%d) "%send.gz"
+%A
diff --git a/xdebug-3.4.5/tests/profiler/bug02001-zlib-no-compression.phpt b/xdebug-3.4.5/tests/profiler/bug02001-zlib-no-compression.phpt
new file mode 100644
index 0000000..fb0e1d3
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug02001-zlib-no-compression.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Test for bug #2001: zlib, use_compression=0
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!ext-flag compression');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+xdebug.use_compression=0
+xdebug.profiler_output_name=cachegrind.out.%R.end
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+$file = xdebug_get_profiler_filename();
+var_dump($file);
+?>
+--EXPECTF--
+string(%d) "%send"
+%A
diff --git a/xdebug-3.4.5/tests/profiler/bug02037.phpt b/xdebug-3.4.5/tests/profiler/bug02037.phpt
new file mode 100644
index 0000000..8ba6a82
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug02037.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Test for bug #2037: Crash when profile file can not be created
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!win');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.log={TMP}/{RUNID}{TEST_PHP_WORKER}issue2037.txt
+xdebug.output_dir=/tmp/un-writable
+xdebug.control_socket=off
+--FILE--
+<?php
+echo "==DONE==\n";
+echo file_get_contents(sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'issue2037.txt' );
+@unlink (sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'issue2037.txt' );
+?>
+--EXPECTF--
+==DONE==
+[%d] Log opened at %s
+[%d] [Profiler] ERR: File '/tmp/un-writable/%s' could not be opened.
+[%d] [Profiler] WARN: /tmp/un-writable: %s
diff --git a/xdebug-3.4.5/tests/profiler/bug02069-zlib-compression-append.phpt b/xdebug-3.4.5/tests/profiler/bug02069-zlib-compression-append.phpt
new file mode 100644
index 0000000..f659c59
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/bug02069-zlib-compression-append.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Test for bug #2069: zlib, use_compression=1, append=1
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext-flag compression');
+?>
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+xdebug.use_compression=1
+xdebug.profiler_append=1
+xdebug.profiler_output_name=cachegrind.out.%R.end
+xdebug.log={TMP}/{RUNID}{TEST_PHP_WORKER}issue2069-001.txt
+xdebug.control_socket=off
+--FILE--
+<?php
+require_once 'capture-profile.inc';
+$file = xdebug_get_profiler_filename();
+var_dump( $file );
+
+echo "\n", file_get_contents(sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'issue2069-001.txt' );
+@unlink (sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'issue2069-001.txt' );
+?>
+--EXPECTF--
+string(%d) "%send"
+
+[%d] Log opened at %s
+[%d] [Config] WARN: Cannot append to profiling file while file compression is turned on. Falling back to creating an uncompressed file
+%A
diff --git a/xdebug-3.4.5/tests/profiler/capture-profile.inc b/xdebug-3.4.5/tests/profiler/capture-profile.inc
new file mode 100644
index 0000000..e1cf9b1
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/capture-profile.inc
@@ -0,0 +1,17 @@
+<?php
+$filename = xdebug_get_profiler_filename();
+
+function capture() {
+	global $filename;
+
+	if (preg_match('@\.gz$@', $filename)) {
+		$fp = gzopen($filename, 'r');
+		echo stream_get_contents($fp);
+	} else {
+		echo file_get_contents($filename);
+	}
+	unlink($filename);
+	@unlink(xdebug_get_profiler_filename());
+}
+register_shutdown_function('capture');
+?>
diff --git a/xdebug-3.4.5/tests/profiler/start_with_request_always_no_env.phpt b/xdebug-3.4.5/tests/profiler/start_with_request_always_no_env.phpt
new file mode 100644
index 0000000..ec1fe6f
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/start_with_request_always_no_env.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Starting Profiler: always, no environment
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=yes
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+$fileName = xdebug_get_profiler_filename();
+
+$fp = preg_match( '@gz$@', $fileName ) ? gzopen( $fileName, 'r' ) : fopen( $fileName, 'r' );
+echo stream_get_contents( $fp );
+
+@unlink($fileName);
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sstart_with_request_always_no_env.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
diff --git a/xdebug-3.4.5/tests/profiler/start_with_request_always_no_match.phpt b/xdebug-3.4.5/tests/profiler/start_with_request_always_no_match.phpt
new file mode 100644
index 0000000..2169edd
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/start_with_request_always_no_match.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Starting Profiler: always, no match
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=yes
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+$fileName = xdebug_get_profiler_filename();
+
+$fp = preg_match( '@gz$@', $fileName ) ? gzopen( $fileName, 'r' ) : fopen( $fileName, 'r' );
+echo stream_get_contents( $fp );
+
+@unlink($fileName);
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sstart_with_request_always_no_match.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
diff --git a/xdebug-3.4.5/tests/profiler/start_with_request_default_no_env.phpt b/xdebug-3.4.5/tests/profiler/start_with_request_default_no_env.phpt
new file mode 100644
index 0000000..ba6b420
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/start_with_request_default_no_env.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Starting Profiler: default, no environment
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+$fileName = xdebug_get_profiler_filename();
+
+$fp = preg_match( '@gz$@', $fileName ) ? gzopen( $fileName, 'r' ) : fopen( $fileName, 'r' );
+echo stream_get_contents( $fp );
+
+@unlink($fileName);
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sstart_with_request_default_no_env.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
diff --git a/xdebug-3.4.5/tests/profiler/start_with_request_default_no_match.phpt b/xdebug-3.4.5/tests/profiler/start_with_request_default_no_match.phpt
new file mode 100644
index 0000000..a8fe8ec
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/start_with_request_default_no_match.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Starting Profiler: default, no match
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=default
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+$fileName = xdebug_get_profiler_filename();
+
+$fp = preg_match( '@gz$@', $fileName ) ? gzopen( $fileName, 'r' ) : fopen( $fileName, 'r' );
+echo stream_get_contents( $fp );
+
+@unlink($fileName);
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sstart_with_request_default_no_match.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
diff --git a/xdebug-3.4.5/tests/profiler/start_with_request_never_match.phpt b/xdebug-3.4.5/tests/profiler/start_with_request_never_match.phpt
new file mode 100644
index 0000000..119a7cf
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/start_with_request_never_match.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Starting Profiler: never, trigger match
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=no
+xdebug.trigger_value=something
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--ENV--
+XDEBUG_PROFILE=something
+--FILE--
+<?php
+$fileName = xdebug_get_profiler_filename();
+var_dump($fileName);
+?>
+--EXPECT--
+bool(false)
diff --git a/xdebug-3.4.5/tests/profiler/start_with_request_never_no_env.phpt b/xdebug-3.4.5/tests/profiler/start_with_request_never_no_env.phpt
new file mode 100644
index 0000000..078ce4e
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/start_with_request_never_no_env.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Starting Profiler: never, no environment
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=trigger
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+$fileName = xdebug_get_profiler_filename();
+var_dump($fileName);
+?>
+--EXPECT--
+bool(false)
diff --git a/xdebug-3.4.5/tests/profiler/start_with_request_trigger_env-001.phpt b/xdebug-3.4.5/tests/profiler/start_with_request_trigger_env-001.phpt
new file mode 100644
index 0000000..970a51b
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/start_with_request_trigger_env-001.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Starting Profiler: trigger, environment [1]
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=trigger
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+variables_order=PGCS
+--ENV--
+XDEBUG_PROFILE=anything
+--FILE--
+<?php
+$fileName = xdebug_get_profiler_filename();
+
+$fp = preg_match( '@gz$@', $fileName ) ? gzopen( $fileName, 'r' ) : fopen( $fileName, 'r' );
+echo stream_get_contents( $fp );
+
+@unlink($fileName);
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sstart_with_request_trigger_env-001.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
diff --git a/xdebug-3.4.5/tests/profiler/start_with_request_trigger_env-002.phpt b/xdebug-3.4.5/tests/profiler/start_with_request_trigger_env-002.phpt
new file mode 100644
index 0000000..cfa8a13
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/start_with_request_trigger_env-002.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Starting Profiler: trigger, environment [2]
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=trigger
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+variables_order=EPGCS
+--ENV--
+XDEBUG_PROFILE=anything
+--FILE--
+<?php
+$fileName = xdebug_get_profiler_filename();
+
+$fp = preg_match( '@gz$@', $fileName ) ? gzopen( $fileName, 'r' ) : fopen( $fileName, 'r' );
+echo stream_get_contents( $fp );
+
+@unlink($fileName);
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sstart_with_request_trigger_env-002.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
diff --git a/xdebug-3.4.5/tests/profiler/start_with_request_trigger_match-001.phpt b/xdebug-3.4.5/tests/profiler/start_with_request_trigger_match-001.phpt
new file mode 100644
index 0000000..b43c024
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/start_with_request_trigger_match-001.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Starting Profiler: trigger, trigger match [1]
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=trigger
+xdebug.trigger_value=something
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+variables_order=PGCS
+--ENV--
+XDEBUG_PROFILE=something
+--FILE--
+<?php
+$fileName = xdebug_get_profiler_filename();
+
+$fp = preg_match( '@gz$@', $fileName ) ? gzopen( $fileName, 'r' ) : fopen( $fileName, 'r' );
+echo stream_get_contents( $fp );
+
+@unlink($fileName);
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sstart_with_request_trigger_match-001.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
diff --git a/xdebug-3.4.5/tests/profiler/start_with_request_trigger_match-002.phpt b/xdebug-3.4.5/tests/profiler/start_with_request_trigger_match-002.phpt
new file mode 100644
index 0000000..8ec049f
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/start_with_request_trigger_match-002.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Starting Profiler: trigger, trigger match [2]
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=trigger
+xdebug.trigger_value=something
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+variables_order=EPGCS
+--ENV--
+XDEBUG_PROFILE=something
+--FILE--
+<?php
+$fileName = xdebug_get_profiler_filename();
+
+$fp = preg_match( '@gz$@', $fileName ) ? gzopen( $fileName, 'r' ) : fopen( $fileName, 'r' );
+echo stream_get_contents( $fp );
+
+@unlink($fileName);
+?>
+--EXPECTF--
+version: 1
+creator: xdebug %d.%s (PHP %s)
+cmd: %sstart_with_request_trigger_match-002.php
+part: 1
+positions: line
+
+events: Time_(10ns) Memory_(bytes)
diff --git a/xdebug-3.4.5/tests/profiler/start_with_request_trigger_no_env.phpt b/xdebug-3.4.5/tests/profiler/start_with_request_trigger_no_env.phpt
new file mode 100644
index 0000000..b4991c2
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/start_with_request_trigger_no_env.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Starting Profiler: trigger, no environment
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=trigger
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+$fileName = xdebug_get_profiler_filename();
+var_dump($fileName);
+?>
+--EXPECT--
+bool(false)
diff --git a/xdebug-3.4.5/tests/profiler/start_with_request_trigger_no_match.phpt b/xdebug-3.4.5/tests/profiler/start_with_request_trigger_no_match.phpt
new file mode 100644
index 0000000..94f905f
--- /dev/null
+++ b/xdebug-3.4.5/tests/profiler/start_with_request_trigger_no_match.phpt
@@ -0,0 +1,15 @@
+--TEST--
+Starting Profiler: trigger, no match
+--INI--
+xdebug.mode=profile
+xdebug.start_with_request=trigger
+xdebug.trigger_value=something
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+$fileName = xdebug_get_profiler_filename();
+var_dump($fileName);
+?>
+--EXPECT--
+bool(false)
diff --git a/xdebug-3.4.5/tests/tracing/array_map.phpt b/xdebug-3.4.5/tests/tracing/array_map.phpt
new file mode 100644
index 0000000..596aa23
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/array_map.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Test with internal callbacks
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+xdebug.var_display_max_depth=2
+xdebug.var_display_max_children=3
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$ar = array('a', 'bb', 'ccc');
+$r = array_map('strlen', $ar);
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> array_map($callback = 'strlen', $array = [0 => 'a', 1 => 'bb', 2 => 'ccc']) %sarray_map.php:5
+%w%f %w%d       -> strlen($string = 'a') %sarray_map.php:5
+%w%f %w%d       -> strlen($string = 'bb') %sarray_map.php:5
+%w%f %w%d       -> strlen($string = 'ccc') %sarray_map.php:5
+%w%f %w%d     -> xdebug_stop_trace() %s:%d
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assert_test-001-php83.phpt b/xdebug-3.4.5/tests/tracing/assert_test-001-php83.phpt
new file mode 100644
index 0000000..d2a88f0
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assert_test-001-php83.phpt
@@ -0,0 +1,54 @@
+--TEST--
+Test for assertion callbacks (< PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.4');
+?>
+--INI--
+assert.exception=0
+error_reporting=E_ALL & ~E_DEPRECATED
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+// Active assert and make it quiet
+assert_options (ASSERT_ACTIVE, 1);
+assert_options (ASSERT_WARNING, 0);
+
+// Create a handler function
+function my_assert_handler ($file, $line, $dummy, $code) {
+    echo "Assertion Failed:
+        File '$file'
+        Line '$line'
+        Code '$code'";
+}
+
+// Set up the callback
+assert_options (ASSERT_CALLBACK, 'my_assert_handler');
+
+// Make an assertion that should fail
+@assert (1 == 2);
+echo "\n";
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+Assertion Failed:
+        File '%sassert_test-001-php83.php'
+        Line '20'
+        Code 'assert(1 == 2)'
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> assert_options($option = 1, $value = 1) %sassert_test-001-php83.php:5
+%w%f %w%d     -> assert_options($option = 4, $value = 0) %sassert_test-001-php83.php:6
+%w%f %w%d     -> assert_options($option = 2, $value = 'my_assert_handler') %sassert_test-001-php83.php:17
+%w%f %w%d     -> assert($assertion = FALSE, $description = 'assert(1 == 2)') %sassert_test-001-php83.php:20
+%w%f %w%d       -> my_assert_handler($file = '%sassert_test-001-php83.php', $line = 20, $dummy = NULL, $code = 'assert(1 == 2)') %sassert_test-001-php83.php:20
+%w%f %w%d     -> xdebug_stop_trace() %s:%d
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assert_test-002-php83.phpt b/xdebug-3.4.5/tests/tracing/assert_test-002-php83.phpt
new file mode 100644
index 0000000..23c6fff
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assert_test-002-php83.phpt
@@ -0,0 +1,53 @@
+--TEST--
+Test for assertion callbacks and description (< PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.4');
+?>
+--INI--
+assert.exception=0
+error_reporting=E_ALL & ~E_DEPRECATED
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+// Active assert and make it quiet
+assert_options (ASSERT_ACTIVE, 1);
+assert_options (ASSERT_WARNING, 0);
+
+// Create a handler function
+function my_assert_handler ($file, $line, $code, $desc) {
+    echo "Assertion Failed:
+        File '$file'
+        Line '$line'
+        Desc '$desc'";
+}
+// Set up the callback
+assert_options (ASSERT_CALLBACK, 'my_assert_handler');
+
+// Make an assertion that should fail
+@assert (1 == 2, "One is not two");
+echo "\n";
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+Assertion Failed:
+        File '%sassert_test-002-php83.php'
+        Line '19'
+        Desc 'One is not two'
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> assert_options($option = 1, $value = 1) %sassert_test-002-php83.php:5
+%w%f %w%d     -> assert_options($option = 4, $value = 0) %sassert_test-002-php83.php:6
+%w%f %w%d     -> assert_options($option = 2, $value = 'my_assert_handler') %sassert_test-002-php83.php:16
+%w%f %w%d     -> assert($assertion = FALSE, $description = 'One is not two') %sassert_test-002-php83.php:19
+%w%f %w%d       -> my_assert_handler($file = '%sassert_test-002-php83.php', $line = 19, $code = NULL, $desc = 'One is not two') %sassert_test-002-php83.php:19
+%w%f %w%d     -> xdebug_stop_trace() %s:%d
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assert_test-003-php83.phpt b/xdebug-3.4.5/tests/tracing/assert_test-003-php83.phpt
new file mode 100644
index 0000000..5759b9d
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assert_test-003-php83.phpt
@@ -0,0 +1,63 @@
+--TEST--
+Test for assertion callbacks and exception (< PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.4');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+zend.assertions=1
+assert.exception=1
+error_reporting=E_ALL & ~E_DEPRECATED
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+// Active assert and make it quiet
+assert_options (ASSERT_ACTIVE, 1);
+assert_options (ASSERT_WARNING, 0);
+
+// Create a handler function
+function my_assert_handler ($file, $line, $code, $desc) {
+    echo "Assertion Failed:
+        File '$file'
+        Line '$line'
+        Desc '$desc'";
+}
+// Set up the callback
+assert_options (ASSERT_CALLBACK, 'my_assert_handler');
+
+// Make an assertion that should fail
+try
+{
+	@assert (1 ==2, "One is not two");
+} catch (AssertionError $e )
+{
+	echo "\n", $e->getMessage(), "\n";
+}
+echo "\n";
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+Assertion Failed:
+        File '%sassert_test-003-php83.php'
+        Line '21'
+        Desc 'One is not two'
+One is not two
+
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> assert_options($option = 1, $value = 1) %sassert_test-003-php83.php:5
+%w%f %w%d     -> assert_options($option = 4, $value = 0) %sassert_test-003-php83.php:6
+%w%f %w%d     -> assert_options($option = 2, $value = 'my_assert_handler') %sassert_test-003-php83.php:16
+%w%f %w%d     -> assert($assertion = FALSE, $description = 'One is not two') %sassert_test-003-php83.php:21
+%w%f %w%d       -> my_assert_handler($file = '%sassert_test-003-php83.php', $line = 21, $code = NULL, $desc = 'One is not two') %sassert_test-003-php83.php:21
+%w%f %w%d     -> Error->getMessage() %sassert_test-003-php83.php:24
+%w%f %w%d     -> xdebug_stop_trace() %s:%d
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assert_test-004-php83.phpt b/xdebug-3.4.5/tests/tracing/assert_test-004-php83.phpt
new file mode 100644
index 0000000..dc66002
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assert_test-004-php83.phpt
@@ -0,0 +1,66 @@
+--TEST--
+Test for assertion callbacks and exception (< PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.4');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+zend.assertions=1
+assert.exception=1
+error_reporting=E_ALL & ~E_DEPRECATED
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+// Active assert and make it quiet
+assert_options (ASSERT_ACTIVE, 1);
+assert_options (ASSERT_WARNING, 0);
+
+
+// Create a handler function
+function my_assert_handler ($file, $line, $code, $desc) {
+    echo "Assertion Failed:
+        File '$file'
+        Line '$line'
+        Code '$code'
+        Desc '$desc'";
+}
+// Set up the callback
+assert_options (ASSERT_CALLBACK, 'my_assert_handler');
+
+// Make an assertion that should fail
+try
+{
+	assert (1 == 2, "One is not two");
+} catch (AssertionError $e )
+{
+	echo "\n", $e->getMessage(), "\n";
+}
+echo "\n";
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+Assertion Failed:
+        File '%sassert_test-004-php83.php'
+        Line '23'
+        Code ''
+        Desc 'One is not two'
+One is not two
+
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> assert_options($%s = 1, $value = 1) %sassert_test-004-php83.php:5
+%w%f %w%d     -> assert_options($%s = 4, $value = 0) %sassert_test-004-php83.php:6
+%w%f %w%d     -> assert_options($%s = 2, $value = 'my_assert_handler') %sassert_test-004-php83.php:18
+%w%f %w%d     -> assert($assertion = FALSE, $description = 'One is not two') %sassert_test-004-php83.php:23
+%w%f %w%d       -> my_assert_handler($file = '%sassert_test-004-php83.php', $line = 23, $code = %r(''|NULL)%r, $desc = 'One is not two') %sassert_test-004-php83.php:23
+%w%f %w%d     -> Error->getMessage() %sassert_test-004-php83.php:26
+%w%f %w%d     -> xdebug_stop_trace() %s:%d
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assignment-trace-001.phpt b/xdebug-3.4.5/tests/tracing/assignment-trace-001.phpt
new file mode 100644
index 0000000..7c8ee65
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assignment-trace-001.phpt
@@ -0,0 +1,64 @@
+--TEST--
+Test for tracing property assignments in user-readable function traces
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+?>
+--INI--
+xdebug.mode=trace
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function test($a, $b, $c)
+{
+	$d = 89;
+	$a += $b;
+	$c /= 7;
+	$b *= 9;
+}
+
+class testClass
+{
+	public $a;
+	private $b;
+	protected $c;
+
+	function __construct()
+	{
+		$this->a = 98;
+		$this->b = 4;
+		$this->b -= 8;
+		$this->b *= -0.5;
+		$this->b <<= 1;
+		$this->c = $this->b / 32;
+	}
+}
+
+test(1, 2, 3);
+$a = new testClass;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+%w%f %w%d     -> test($a = 1, $b = 2, $c = 3) %sassignment-trace-001.php:29
+                             => $d = 89 %sassignment-trace-001.php:6
+                             => $a += 2 %sassignment-trace-001.php:7
+                             => $c /= 7 %sassignment-trace-001.php:8
+                             => $b *= 9 %sassignment-trace-001.php:9
+%w%f %w%d     -> testClass->__construct() %sassignment-trace-001.php:30
+                             => $this->a = 98 %sassignment-trace-001.php:20
+                             => $this->b = 4 %sassignment-trace-001.php:21
+                             => $this->b -= 8 %sassignment-trace-001.php:22
+                             => $this->b *= -0.5 %sassignment-trace-001.php:23
+                             => $this->b <<= 1 %sassignment-trace-001.php:24
+                             => $this->c = 0.125 %sassignment-trace-001.php:25
+                           => $a = class testClass { public $a = 98; private $b = 4; protected $c = 0.125 } %sassignment-trace-001.php:30
+%w%f %w%d     -> xdebug_stop_trace() %s:%d
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assignment-trace-002.phpt b/xdebug-3.4.5/tests/tracing/assignment-trace-002.phpt
new file mode 100644
index 0000000..cf4acee
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assignment-trace-002.phpt
@@ -0,0 +1,68 @@
+--TEST--
+Test for tracing array assignments in user-readable function traces
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!opcache');
+?>
+--INI--
+xdebug.mode=trace,develop
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+xdebug.dump.GET=
+xdebug.dump.SERVER=
+xdebug.show_local_vars=0
+xdebug.force_error_reporting=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function test()
+{
+	$t = array( 'a' => 4, 'b' => 9, 'c' => 13 );
+	$t['d'] = 89;
+	$t['a'] += $b;
+	@$t['a'] += $b;
+	$t['c'] /= 7;
+	$t['b'] *= 9;
+}
+$t = array();
+$t['a'] = 98;
+$t['b'] = 4;
+$t['b'] -= 8;
+$t['b'] *= -0.5;
+$t['b'] <<= 1;
+$t['c'] = $t['b'] / 32;
+
+test(1, 2, 3);
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+%s: Undefined variable%sb in %sassignment-trace-002.php on line 8
+
+Call Stack:
+%w%f %w%d   1. {main}() %sassignment-trace-002.php:0
+%w%f %w%d   2. test(1, 2, 3) %sassignment-trace-002.php:21
+
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+                           => $t = [] %sassignment-trace-002.php:13
+                           => $t['a'] = 98 %sassignment-trace-002.php:14
+                           => $t['b'] = 4 %sassignment-trace-002.php:15
+                           => $t['b'] -= 8 %sassignment-trace-002.php:16
+                           => $t['b'] *= -0.5 %sassignment-trace-002.php:17
+                           => $t['b'] <<= 1 %sassignment-trace-002.php:18
+                           => $t['c'] = 0.125 %sassignment-trace-002.php:19
+%w%f %w%d     -> test(1, 2, 3) %sassignment-trace-002.php:21
+                             => $t = ['a' => 4, 'b' => 9, 'c' => 13] %sassignment-trace-002.php:6
+                             => $t['d'] = 89 %sassignment-trace-002.php:7
+                             => $t['a'] += %r(NULL|\*uninitialized\*)%r %sassignment-trace-002.php:8
+                             => $t['a'] += %r(NULL|\*uninitialized\*)%r %sassignment-trace-002.php:9
+                             => $t['c'] /= 7 %sassignment-trace-002.php:10
+                             => $t['b'] *= 9 %sassignment-trace-002.php:11
+%w%f %w%d     -> xdebug_stop_trace() %s:%d
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assignment-trace-003.phpt b/xdebug-3.4.5/tests/tracing/assignment-trace-003.phpt
new file mode 100644
index 0000000..8a0c38c
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assignment-trace-003.phpt
@@ -0,0 +1,36 @@
+--TEST--
+Test for tracing array assignments in user-readable function traces
+--INI--
+xdebug.mode=trace,develop
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+xdebug.dump.GET=
+xdebug.dump.SERVER=
+xdebug.show_local_vars=0
+xdebug.force_error_reporting=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$t = array( 'a' => 4, 'b' => 9, 'c' => 13 );
+$t['a'] += $b;
+@$t['a'] += $b;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+%s: Undefined variable%sb in %sassignment-trace-003.php on line 5
+
+Call Stack:
+%w%f %w%d   1. {main}() %sassignment-trace-003.php:0
+
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+                           => $t = ['a' => 4, 'b' => 9, 'c' => 13] %sassignment-trace-003.php:4
+                           => $t['a'] += %r(NULL|\*uninitialized\*)%r %sassignment-trace-003.php:5
+                           => $t['a'] += %r(NULL|\*uninitialized\*)%r %sassignment-trace-003.php:6
+%w%f %w%d     -> xdebug_stop_trace() %sassignment-trace-003.php:8
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assignment-trace-004.phpt b/xdebug-3.4.5/tests/tracing/assignment-trace-004.phpt
new file mode 100644
index 0000000..81bc3d3
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assignment-trace-004.phpt
@@ -0,0 +1,36 @@
+--TEST--
+Test for tracing assignments in user-readable function traces
+--INI--
+xdebug.mode=trace,develop
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+xdebug.dump.GET=
+xdebug.dump.SERVER=
+xdebug.show_local_vars=0
+xdebug.force_error_reporting=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$t = 42;
+$t += $b;
+@$t += $b;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+%s: Undefined variable%sb in %sassignment-trace-004.php on line 5
+
+Call Stack:
+%w%f %w%d   1. {main}() %sassignment-trace-004.php:0
+
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+                           => $t = 42 %sassignment-trace-004.php:4
+                           => $t += %r(NULL|\*uninitialized\*)%r %sassignment-trace-004.php:5
+                           => $t += %r(NULL|\*uninitialized\*)%r %sassignment-trace-004.php:6
+%w%f %w%d     -> xdebug_stop_trace() %sassignment-trace-004.php:8
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assignment-trace-005.phpt b/xdebug-3.4.5/tests/tracing/assignment-trace-005.phpt
new file mode 100644
index 0000000..9a2d6e4
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assignment-trace-005.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Test for tracing assignments in user-readable function traces
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$t = array();
+$t[] = 42;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+                           => $t = [] %sassignment-trace-005.php:4
+                           => $t[] = 42 %sassignment-trace-005.php:5
+%w%f %w%d     -> xdebug_stop_trace() %sassignment-trace-005.php:7
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assignment-trace-006.phpt b/xdebug-3.4.5/tests/tracing/assignment-trace-006.phpt
new file mode 100644
index 0000000..5fe3d28
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assignment-trace-006.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Test for tracing assignments in user-readable function traces
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+class foo {
+	static public $foo;
+	static private $var;
+	static public $var2;
+	static public $bar;
+	static function test()
+	{
+		self::$foo = array();
+		self::$foo[] = 42;
+		self::$var = 'var';
+		self::$var2 = self::$var;
+		$id = 42;
+		self::$foo[$id] = 44;
+
+		self::$bar['test'] = array();
+		$id = 'test';
+		self::$bar[$id][] = 55;
+	}
+}
+foo::test();
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+%w%f %w%d     -> foo::test() %sassignment-trace-006.php:23
+                             => self::foo = [] %sassignment-trace-006.php:11
+                             => self::foo[] = 42 %sassignment-trace-006.php:12
+                             => self::var = 'var' %sassignment-trace-006.php:13
+                             => self::var2 = 'var' %sassignment-trace-006.php:14
+                             => $id = 42 %sassignment-trace-006.php:15
+                             => self::foo[42] = 44 %sassignment-trace-006.php:16
+                             => self::bar['test'] = [] %sassignment-trace-006.php:18
+                             => $id = 'test' %sassignment-trace-006.php:19
+                             => self::bar['test'][] = 55 %sassignment-trace-006.php:20
+%w%f %w%d     -> xdebug_stop_trace() %sassignment-trace-006.php:25
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assignment-trace-007.phpt b/xdebug-3.4.5/tests/tracing/assignment-trace-007.phpt
new file mode 100644
index 0000000..41058a0
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assignment-trace-007.phpt
@@ -0,0 +1,61 @@
+--TEST--
+Test for tracing property assignments in user-readable function traces
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function test($a, $b, $c)
+{
+	$d = 89;
+	$a += $b;
+	$c /= 7;
+	$b *= 9;
+}
+
+class testClass
+{
+	public $a;
+	private $b;
+	protected $c;
+
+	function __construct( $obj )
+	{
+		$obj->a = 98;
+		$obj->b = 4;
+		$obj->b -= 8;
+		$obj->b *= -0.5;
+		$obj->b <<= 1;
+		$obj->c = $obj->b / 32;
+	}
+}
+
+test(1, 2, 3);
+$a = new testClass( new StdClass );
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+%w%f %w%d     -> test($a = 1, $b = 2, $c = 3) %sassignment-trace-007.php:29
+                             => $d = 89 %sassignment-trace-007.php:6
+                             => $a += 2 %sassignment-trace-007.php:7
+                             => $c /= 7 %sassignment-trace-007.php:8
+                             => $b *= 9 %sassignment-trace-007.php:9
+%w%f %w%d     -> testClass->__construct($obj = class stdClass {  }) %sassignment-trace-007.php:30
+                             => $obj->a = 98 %sassignment-trace-007.php:20
+                             => $obj->b = 4 %sassignment-trace-007.php:21
+                             => $obj->b -= 8 %sassignment-trace-007.php:22
+                             => $obj->b *= -0.5 %sassignment-trace-007.php:23
+                             => $obj->b <<= 1 %sassignment-trace-007.php:24
+                             => $obj->c = 0.125 %sassignment-trace-007.php:25
+                           => $a = class testClass { public $a = NULL; private $b = NULL; protected $c = NULL } %sassignment-trace-007.php:30
+%w%f %w%d     -> xdebug_stop_trace() %sassignment-trace-007.php:32
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assignment-trace-008.phpt b/xdebug-3.4.5/tests/tracing/assignment-trace-008.phpt
new file mode 100644
index 0000000..548670d
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assignment-trace-008.phpt
@@ -0,0 +1,70 @@
+--TEST--
+Test for tracing multi-dimensional property assignments in user-readable function traces
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+xdebug.var_display_max_depth=9
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+class testClass
+{
+	public $a;
+	static public $b;
+
+	function __construct( $obj )
+	{
+		$obj->a = new StdClass;
+		$obj->a->bar = 52;
+		$obj->a->foo = new StdClass;
+		$obj->a->foo->bar = 52;
+
+		$this->a = new StdClass;
+		$this->a->bar = 52;
+		$this->a->foo = new StdClass;
+		$this->a->foo->bar = 52;
+
+		self::$b = new StdClass;
+		self::$b->bar = 52;
+		self::$b->foo = new StdClass;
+		self::$b->foo->bar = 52;
+
+		static::$b = new StdClass;
+		static::$b->bar = 52;
+		static::$b->foo = new StdClass;
+		static::$b->foo->bar = 52;
+	}
+}
+
+$a = new testClass( new StdClass );
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+%w%f %w%d     -> testClass->__construct($obj = class stdClass {  }) %sassignment-trace-008.php:33
+                             => $obj->a = class stdClass {  } %sassignment-trace-008.php:11
+                             => $obj->a->bar = 52 %sassignment-trace-008.php:12
+                             => $obj->a->foo = class stdClass {  } %sassignment-trace-008.php:13
+                             => $obj->a->foo->bar = 52 %sassignment-trace-008.php:14
+                             => $this->a = class stdClass {  } %sassignment-trace-008.php:16
+                             => $this->a->bar = 52 %sassignment-trace-008.php:17
+                             => $this->a->foo = class stdClass {  } %sassignment-trace-008.php:18
+                             => $this->a->foo->bar = 52 %sassignment-trace-008.php:19
+                             => self::b = class stdClass {  } %sassignment-trace-008.php:21
+                             => self::b->bar = 52 %sassignment-trace-008.php:22
+                             => self::b->foo = class stdClass {  } %sassignment-trace-008.php:23
+                             => self::b->foo->bar = 52 %sassignment-trace-008.php:24
+                             => self::b = class stdClass {  } %sassignment-trace-008.php:26
+                             => self::b->bar = 52 %sassignment-trace-008.php:27
+                             => self::b->foo = class stdClass {  } %sassignment-trace-008.php:28
+                             => self::b->foo->bar = 52 %sassignment-trace-008.php:29
+                           => $a = class testClass { public $a = class stdClass { public $bar = 52; public $foo = class stdClass { public $bar = 52 } } } %sassignment-trace-008.php:33
+%w%f %w%d     -> xdebug_stop_trace() %sassignment-trace-008.php:35
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assignment-trace-009.phpt b/xdebug-3.4.5/tests/tracing/assignment-trace-009.phpt
new file mode 100644
index 0000000..2d84ef2
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assignment-trace-009.phpt
@@ -0,0 +1,70 @@
+--TEST--
+Test for tracing mixed array element and property assignments in user-readable function traces
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+xdebug.var_display_max_depth=9
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+class testClass
+{
+	public $a;
+	static public $b;
+
+	function __construct( $obj )
+	{
+		$obj->a = array();
+		$obj->a['bar'] = 52;
+		$obj->a['foo'] = new StdClass;
+		$obj->a['foo']->bar = 52;
+
+		$this->a = array();
+		$this->a['bar'] = 52;
+		$this->a['foo'] = new StdClass;
+		$this->a['foo']->bar = 52;
+
+		self::$b = array();
+		self::$b['bar'] = array();
+		self::$b['foo'] = new StdClass;
+		self::$b['foo']->bar = 52;
+
+		static::$b = array();
+		static::$b['bar'] = array();
+		static::$b['foo'] = new StdClass;
+		static::$b['foo']->bar = 52;
+	}
+}
+
+$a = new testClass( new StdClass );
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+%w%f %w%d     -> testClass->__construct($obj = class stdClass {  }) %sassignment-trace-009.php:33
+                             => $obj->a = [] %sassignment-trace-009.php:11
+                             => $obj->a['bar'] = 52 %sassignment-trace-009.php:12
+                             => $obj->a['foo'] = class stdClass {  } %sassignment-trace-009.php:13
+                             => $obj->a['foo']->bar = 52 %sassignment-trace-009.php:14
+                             => $this->a = [] %sassignment-trace-009.php:16
+                             => $this->a['bar'] = 52 %sassignment-trace-009.php:17
+                             => $this->a['foo'] = class stdClass {  } %sassignment-trace-009.php:18
+                             => $this->a['foo']->bar = 52 %sassignment-trace-009.php:19
+                             => self::b = [] %sassignment-trace-009.php:21
+                             => self::b['bar'] = [] %sassignment-trace-009.php:22
+                             => self::b['foo'] = class stdClass {  } %sassignment-trace-009.php:23
+                             => self::b['foo']->bar = 52 %sassignment-trace-009.php:24
+                             => self::b = [] %sassignment-trace-009.php:26
+                             => self::b['bar'] = [] %sassignment-trace-009.php:27
+                             => self::b['foo'] = class stdClass {  } %sassignment-trace-009.php:28
+                             => self::b['foo']->bar = 52 %sassignment-trace-009.php:29
+                           => $a = class testClass { public $a = ['bar' => 52, 'foo' => class stdClass { public $bar = 52 }] } %sassignment-trace-009.php:33
+%w%f %w%d     -> xdebug_stop_trace() %sassignment-trace-009.php:35
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assignment-trace-010.phpt b/xdebug-3.4.5/tests/tracing/assignment-trace-010.phpt
new file mode 100644
index 0000000..cb16608
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assignment-trace-010.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test for tracing assign pow
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function test($a, $b)
+{
+	$a **= $b;
+}
+
+class testClass
+{
+	public $a;
+	private $b;
+
+	function __construct()
+	{
+		$this->a = 98;
+		$this->b = 4;
+		$this->a **= $this->b;
+	}
+}
+
+test(7, 3);
+$a = new testClass;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+%w%f %w%d     -> test($a = 7, $b = 3) %sassignment-trace-010.php:22
+                             => $a **= 3 %sassignment-trace-010.php:6
+%w%f %w%d     -> testClass->__construct() %sassignment-trace-010.php:23
+                             => $this->a = 98 %sassignment-trace-010.php:16
+                             => $this->b = 4 %sassignment-trace-010.php:17
+                             => $this->a **= 4 %sassignment-trace-010.php:18
+                           => $a = class testClass { public $a = 92236816; private $b = 4 } %sassignment-trace-010.php:23
+%w%f %w%d     -> xdebug_stop_trace() %sassignment-trace-010.php:25
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assignment-trace-011.phpt b/xdebug-3.4.5/tests/tracing/assignment-trace-011.phpt
new file mode 100644
index 0000000..9da381d
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assignment-trace-011.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Test for tracing property assignments in user-readable function traces
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$a = new StdClass;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+                           => $a = class stdClass {  } %sassignment-trace-011.php:4
+%w%f %w%d     -> xdebug_stop_trace() %sassignment-trace-011.php:6
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assignment-trace-dim-op.phpt b/xdebug-3.4.5/tests/tracing/assignment-trace-dim-op.phpt
new file mode 100644
index 0000000..9d7ce27
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assignment-trace-dim-op.phpt
@@ -0,0 +1,46 @@
+--TEST--
+Test for tracing array assign ops
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$a['foo'][3]['test'] = 0;
+
+$a['foo'][3]['test'] += 42;
+$a['foo'][3]['test'] -= 2;
+$a['foo'][3]['test'] *= 2;
+$a['foo'][3]['test'] /= 5;
+$a['foo'][3]['test'] %= 4;
+$a['foo'][3]['test'] <<= 1;
+$a['foo'][3]['test'] >>= 3;
+$a['foo'][3]['test'] |= 0xffff;
+$a['foo'][3]['test'] &= 0xff0f;
+$a['foo'][3]['test'] ^= 0xf00f;
+$a['foo'][3]['test'] **= 2;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+                           => $a['foo'][3]['test'] = 0 %sassignment-trace-dim-op.php:4
+                           => $a['foo'][3]['test'] += 42 %sassignment-trace-dim-op.php:6
+                           => $a['foo'][3]['test'] -= 2 %sassignment-trace-dim-op.php:7
+                           => $a['foo'][3]['test'] *= 2 %sassignment-trace-dim-op.php:8
+                           => $a['foo'][3]['test'] /= 5 %sassignment-trace-dim-op.php:9
+                           => $a['foo'][3]['test'] %= 4 %sassignment-trace-dim-op.php:10
+                           => $a['foo'][3]['test'] <<= 1 %sassignment-trace-dim-op.php:11
+                           => $a['foo'][3]['test'] >>= 3 %sassignment-trace-dim-op.php:12
+                           => $a['foo'][3]['test'] |= 65535 %sassignment-trace-dim-op.php:13
+                           => $a['foo'][3]['test'] &= 65295 %sassignment-trace-dim-op.php:14
+                           => $a['foo'][3]['test'] ^= 61455 %sassignment-trace-dim-op.php:15
+                           => $a['foo'][3]['test'] **= 2 %sassignment-trace-dim-op.php:16
+%w%f %w%d     -> xdebug_stop_trace() %sassignment-trace-dim-op.php:18
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assignment-trace-obj-op-001.phpt b/xdebug-3.4.5/tests/tracing/assignment-trace-obj-op-001.phpt
new file mode 100644
index 0000000..348695c
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assignment-trace-obj-op-001.phpt
@@ -0,0 +1,47 @@
+--TEST--
+Test for tracing property assign ops [1]
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$a = new stdClass;
+$a->test = 0;
+$a->test += 42;
+$a->test -= 2;
+$a->test *= 2;
+$a->test /= 5;
+$a->test %= 4;
+$a->test <<= 1;
+$a->test >>= 3;
+$a->test |= 0xffff;
+$a->test &= 0xff0f;
+$a->test ^= 0xf00f;
+$a->test **= 2;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+                           => $a = class stdClass {  } %sassignment-trace-obj-op-001.php:4
+                           => $a->test = 0 %sassignment-trace-obj-op-001.php:5
+                           => $a->test += 42 %sassignment-trace-obj-op-001.php:6
+                           => $a->test -= 2 %sassignment-trace-obj-op-001.php:7
+                           => $a->test *= 2 %sassignment-trace-obj-op-001.php:8
+                           => $a->test /= 5 %sassignment-trace-obj-op-001.php:9
+                           => $a->test %= 4 %sassignment-trace-obj-op-001.php:10
+                           => $a->test <<= 1 %sassignment-trace-obj-op-001.php:11
+                           => $a->test >>= 3 %sassignment-trace-obj-op-001.php:12
+                           => $a->test |= 65535 %sassignment-trace-obj-op-001.php:13
+                           => $a->test &= 65295 %sassignment-trace-obj-op-001.php:14
+                           => $a->test ^= 61455 %sassignment-trace-obj-op-001.php:15
+                           => $a->test **= 2 %sassignment-trace-obj-op-001.php:16
+%w%f %w%d     -> xdebug_stop_trace() %sassignment-trace-obj-op-001.php:18
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assignment-trace-obj-op-002.phpt b/xdebug-3.4.5/tests/tracing/assignment-trace-obj-op-002.phpt
new file mode 100644
index 0000000..45e6475
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assignment-trace-obj-op-002.phpt
@@ -0,0 +1,47 @@
+--TEST--
+Test for tracing property assign ops [2]
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$a = new stdClass;
+$a->test = ['foo' => 0];
+$a->test['foo'] += 42;
+$a->test['foo'] -= 2;
+$a->test['foo'] *= 2;
+$a->test['foo'] /= 5;
+$a->test['foo'] %= 4;
+$a->test['foo'] <<= 1;
+$a->test['foo'] >>= 3;
+$a->test['foo'] |= 0xffff;
+$a->test['foo'] &= 0xff0f;
+$a->test['foo'] ^= 0xf00f;
+$a->test['foo'] **= 2;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+                           => $a = class stdClass {  } %sassignment-trace-obj-op-002.php:4
+                           => $a->test = ['foo' => 0] %sassignment-trace-obj-op-002.php:5
+                           => $a->test['foo'] += 42 %sassignment-trace-obj-op-002.php:6
+                           => $a->test['foo'] -= 2 %sassignment-trace-obj-op-002.php:7
+                           => $a->test['foo'] *= 2 %sassignment-trace-obj-op-002.php:8
+                           => $a->test['foo'] /= 5 %sassignment-trace-obj-op-002.php:9
+                           => $a->test['foo'] %= 4 %sassignment-trace-obj-op-002.php:10
+                           => $a->test['foo'] <<= 1 %sassignment-trace-obj-op-002.php:11
+                           => $a->test['foo'] >>= 3 %sassignment-trace-obj-op-002.php:12
+                           => $a->test['foo'] |= 65535 %sassignment-trace-obj-op-002.php:13
+                           => $a->test['foo'] &= 65295 %sassignment-trace-obj-op-002.php:14
+                           => $a->test['foo'] ^= 61455 %sassignment-trace-obj-op-002.php:15
+                           => $a->test['foo'] **= 2 %sassignment-trace-obj-op-002.php:16
+%w%f %w%d     -> xdebug_stop_trace() %sassignment-trace-obj-op-002.php:18
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assignment-trace-obj-op-003.phpt b/xdebug-3.4.5/tests/tracing/assignment-trace-obj-op-003.phpt
new file mode 100644
index 0000000..0404546
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assignment-trace-obj-op-003.phpt
@@ -0,0 +1,47 @@
+--TEST--
+Test for tracing property assign ops [3]
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$a = ['foo' => new stdClass];
+$a['foo']->test = 0;
+$a['foo']->test += 42;
+$a['foo']->test -= 2;
+$a['foo']->test *= 2;
+$a['foo']->test /= 5;
+$a['foo']->test %= 4;
+$a['foo']->test <<= 1;
+$a['foo']->test >>= 3;
+$a['foo']->test |= 0xffff;
+$a['foo']->test &= 0xff0f;
+$a['foo']->test ^= 0xf00f;
+$a['foo']->test **= 2;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+                           => $a = ['foo' => class stdClass {  }] %sassignment-trace-obj-op-003.php:4
+                           => $a['foo']->test = 0 %sassignment-trace-obj-op-003.php:5
+                           => $a['foo']->test += 42 %sassignment-trace-obj-op-003.php:6
+                           => $a['foo']->test -= 2 %sassignment-trace-obj-op-003.php:7
+                           => $a['foo']->test *= 2 %sassignment-trace-obj-op-003.php:8
+                           => $a['foo']->test /= 5 %sassignment-trace-obj-op-003.php:9
+                           => $a['foo']->test %= 4 %sassignment-trace-obj-op-003.php:10
+                           => $a['foo']->test <<= 1 %sassignment-trace-obj-op-003.php:11
+                           => $a['foo']->test >>= 3 %sassignment-trace-obj-op-003.php:12
+                           => $a['foo']->test |= 65535 %sassignment-trace-obj-op-003.php:13
+                           => $a['foo']->test &= 65295 %sassignment-trace-obj-op-003.php:14
+                           => $a['foo']->test ^= 61455 %sassignment-trace-obj-op-003.php:15
+                           => $a['foo']->test **= 2 %sassignment-trace-obj-op-003.php:16
+%w%f %w%d     -> xdebug_stop_trace() %sassignment-trace-obj-op-003.php:18
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assignment-trace-op.phpt b/xdebug-3.4.5/tests/tracing/assignment-trace-op.phpt
new file mode 100644
index 0000000..7305697
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assignment-trace-op.phpt
@@ -0,0 +1,46 @@
+--TEST--
+Test for tracing assign ops
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$a = 0;
+
+$a += 42;
+$a -= 2;
+$a *= 2;
+$a /= 5;
+$a %= 4;
+$a <<= 1;
+$a >>= 3;
+$a |= 0xffff;
+$a &= 0xff0f;
+$a ^= 0xf00f;
+$a **= 2;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+                           => $a = 0 %sassignment-trace-op.php:4
+                           => $a += 42 %sassignment-trace-op.php:6
+                           => $a -= 2 %sassignment-trace-op.php:7
+                           => $a *= 2 %sassignment-trace-op.php:8
+                           => $a /= 5 %sassignment-trace-op.php:9
+                           => $a %= 4 %sassignment-trace-op.php:10
+                           => $a <<= 1 %sassignment-trace-op.php:11
+                           => $a >>= 3 %sassignment-trace-op.php:12
+                           => $a |= 65535 %sassignment-trace-op.php:13
+                           => $a &= 65295 %sassignment-trace-op.php:14
+                           => $a ^= 61455 %sassignment-trace-op.php:15
+                           => $a **= 2 %sassignment-trace-op.php:16
+%w%f %w%d     -> xdebug_stop_trace() %sassignment-trace-op.php:18
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assignment-trace-static-prop-op-001.phpt b/xdebug-3.4.5/tests/tracing/assignment-trace-static-prop-op-001.phpt
new file mode 100644
index 0000000..8fcdba3
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assignment-trace-static-prop-op-001.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Test for tracing $static-prop property assign ops [1]
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+$a = new test;
+class test { static $test; function assign() {
+	self::$test = 0;
+	self::$test += 42;
+	self::$test -= 2;
+	self::$test *= 2;
+	self::$test /= 5;
+	self::$test %= 4;
+	self::$test <<= 1;
+	self::$test >>= 3;
+	self::$test |= 0xffff;
+	self::$test &= 0xff0f;
+	self::$test ^= 0xf00f;
+	self::$test **= 2;
+} }
+
+$a->assign();
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+                           => $a = class test {  } %sassignment-trace-static-prop-op-001.php:3
+%w%f %w%d     -> test->assign() %sassignment-trace-static-prop-op-001.php:19
+                             => self::test = 0 %sassignment-trace-static-prop-op-001.php:5
+                             => self::test += 42 %sassignment-trace-static-prop-op-001.php:6
+                             => self::test -= 2 %sassignment-trace-static-prop-op-001.php:7
+                             => self::test *= 2 %sassignment-trace-static-prop-op-001.php:8
+                             => self::test /= 5 %sassignment-trace-static-prop-op-001.php:9
+                             => self::test %= 4 %sassignment-trace-static-prop-op-001.php:10
+                             => self::test <<= 1 %sassignment-trace-static-prop-op-001.php:11
+                             => self::test >>= 3 %sassignment-trace-static-prop-op-001.php:12
+                             => self::test |= 65535 %sassignment-trace-static-prop-op-001.php:13
+                             => self::test &= 65295 %sassignment-trace-static-prop-op-001.php:14
+                             => self::test ^= 61455 %sassignment-trace-static-prop-op-001.php:15
+                             => self::test **= 2 %sassignment-trace-static-prop-op-001.php:16
+%w%f %w%d     -> xdebug_stop_trace() %sassignment-trace-static-prop-op-001.php:21
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assignment-trace-static-prop-op-002.phpt b/xdebug-3.4.5/tests/tracing/assignment-trace-static-prop-op-002.phpt
new file mode 100644
index 0000000..9b9043a
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assignment-trace-static-prop-op-002.phpt
@@ -0,0 +1,52 @@
+--TEST--
+Test for tracing $static-prop property assign ops [2]
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+$a = new test;
+class test { static $test; function assign() { self::$test = ['foo' => 0];
+	self::$test['foo'] = 0;
+	self::$test['foo'] += 42;
+	self::$test['foo'] -= 2;
+	self::$test['foo'] *= 2;
+	self::$test['foo'] /= 5;
+	self::$test['foo'] %= 4;
+	self::$test['foo'] <<= 1;
+	self::$test['foo'] >>= 3;
+	self::$test['foo'] |= 0xffff;
+	self::$test['foo'] &= 0xff0f;
+	self::$test['foo'] ^= 0xf00f;
+	self::$test['foo'] **= 2;
+} }
+
+$a->assign();
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+                           => $a = class test {  } %sassignment-trace-static-prop-op-002.php:3
+%w%f %w%d     -> test->assign() %sassignment-trace-static-prop-op-002.php:19
+                             => self::test = ['foo' => 0] %sassignment-trace-static-prop-op-002.php:4
+                             => self::test['foo'] = 0 %sassignment-trace-static-prop-op-002.php:5
+                             => self::test['foo'] += 42 %sassignment-trace-static-prop-op-002.php:6
+                             => self::test['foo'] -= 2 %sassignment-trace-static-prop-op-002.php:7
+                             => self::test['foo'] *= 2 %sassignment-trace-static-prop-op-002.php:8
+                             => self::test['foo'] /= 5 %sassignment-trace-static-prop-op-002.php:9
+                             => self::test['foo'] %= 4 %sassignment-trace-static-prop-op-002.php:10
+                             => self::test['foo'] <<= 1 %sassignment-trace-static-prop-op-002.php:11
+                             => self::test['foo'] >>= 3 %sassignment-trace-static-prop-op-002.php:12
+                             => self::test['foo'] |= 65535 %sassignment-trace-static-prop-op-002.php:13
+                             => self::test['foo'] &= 65295 %sassignment-trace-static-prop-op-002.php:14
+                             => self::test['foo'] ^= 61455 %sassignment-trace-static-prop-op-002.php:15
+                             => self::test['foo'] **= 2 %sassignment-trace-static-prop-op-002.php:16
+%w%f %w%d     -> xdebug_stop_trace() %sassignment-trace-static-prop-op-002.php:21
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assignment-trace-this-op-001.phpt b/xdebug-3.4.5/tests/tracing/assignment-trace-this-op-001.phpt
new file mode 100644
index 0000000..8a4ef2d
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assignment-trace-this-op-001.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Test for tracing $this property assign ops [1]
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+$a = new test;
+class test { public $test; function assign() {
+	$this->test = 0;
+	$this->test += 42;
+	$this->test -= 2;
+	$this->test *= 2;
+	$this->test /= 5;
+	$this->test %= 4;
+	$this->test <<= 1;
+	$this->test >>= 3;
+	$this->test |= 0xffff;
+	$this->test &= 0xff0f;
+	$this->test ^= 0xf00f;
+	$this->test **= 2;
+} }
+
+$a->assign();
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+                           => $a = class test { public $test = NULL } %sassignment-trace-this-op-001.php:3
+%w%f %w%d     -> test->assign() %sassignment-trace-this-op-001.php:19
+                             => $this->test = 0 %sassignment-trace-this-op-001.php:5
+                             => $this->test += 42 %sassignment-trace-this-op-001.php:6
+                             => $this->test -= 2 %sassignment-trace-this-op-001.php:7
+                             => $this->test *= 2 %sassignment-trace-this-op-001.php:8
+                             => $this->test /= 5 %sassignment-trace-this-op-001.php:9
+                             => $this->test %= 4 %sassignment-trace-this-op-001.php:10
+                             => $this->test <<= 1 %sassignment-trace-this-op-001.php:11
+                             => $this->test >>= 3 %sassignment-trace-this-op-001.php:12
+                             => $this->test |= 65535 %sassignment-trace-this-op-001.php:13
+                             => $this->test &= 65295 %sassignment-trace-this-op-001.php:14
+                             => $this->test ^= 61455 %sassignment-trace-this-op-001.php:15
+                             => $this->test **= 2 %sassignment-trace-this-op-001.php:16
+%w%f %w%d     -> xdebug_stop_trace() %sassignment-trace-this-op-001.php:21
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/assignment-trace-this-op-002.phpt b/xdebug-3.4.5/tests/tracing/assignment-trace-this-op-002.phpt
new file mode 100644
index 0000000..90dabe3
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/assignment-trace-this-op-002.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Test for tracing $this property assign ops [2]
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+$a = new test;
+class test { public $test; function assign() {
+	$this->test = ['foo' => 0];
+	$this->test['foo'] += 42;
+	$this->test['foo'] -= 2;
+	$this->test['foo'] *= 2;
+	$this->test['foo'] /= 5;
+	$this->test['foo'] %= 4;
+	$this->test['foo'] <<= 1;
+	$this->test['foo'] >>= 3;
+	$this->test['foo'] |= 0xffff;
+	$this->test['foo'] &= 0xff0f;
+	$this->test['foo'] ^= 0xf00f;
+	$this->test['foo'] **= 2;
+} }
+
+$a->assign();
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+                           => $a = class test { public $test = NULL } %sassignment-trace-this-op-002.php:3
+%w%f %w%d     -> test->assign() %sassignment-trace-this-op-002.php:19
+                             => $this->test = ['foo' => 0] %sassignment-trace-this-op-002.php:5
+                             => $this->test['foo'] += 42 %sassignment-trace-this-op-002.php:6
+                             => $this->test['foo'] -= 2 %sassignment-trace-this-op-002.php:7
+                             => $this->test['foo'] *= 2 %sassignment-trace-this-op-002.php:8
+                             => $this->test['foo'] /= 5 %sassignment-trace-this-op-002.php:9
+                             => $this->test['foo'] %= 4 %sassignment-trace-this-op-002.php:10
+                             => $this->test['foo'] <<= 1 %sassignment-trace-this-op-002.php:11
+                             => $this->test['foo'] >>= 3 %sassignment-trace-this-op-002.php:12
+                             => $this->test['foo'] |= 65535 %sassignment-trace-this-op-002.php:13
+                             => $this->test['foo'] &= 65295 %sassignment-trace-this-op-002.php:14
+                             => $this->test['foo'] ^= 61455 %sassignment-trace-this-op-002.php:15
+                             => $this->test['foo'] **= 2 %sassignment-trace-this-op-002.php:16
+%w%f %w%d     -> xdebug_stop_trace() %sassignment-trace-this-op-002.php:21
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug00002.inc b/xdebug-3.4.5/tests/tracing/bug00002.inc
new file mode 100644
index 0000000..28ac69f
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00002.inc
@@ -0,0 +1,5 @@
+<?php
+	function do_stuff() {
+		return 1;
+	}
+?>
diff --git a/xdebug-3.4.5/tests/tracing/bug00002.phpt b/xdebug-3.4.5/tests/tracing/bug00002.phpt
new file mode 100644
index 0000000..2a4a097
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00002.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Test for traces to file
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require 'bug00002.inc';
+require_once 'capture-trace.inc';
+
+$action = 'do_stuff';
+$action();
+xdebug_stop_trace();
+?>
+--EXPECTF--
+
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+    %f%w%d     -> do_stuff() %sbug00002.php:6
+    %f%w%d     -> xdebug_stop_trace() %sbug00002.php:7
+    %f%w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug00003.phpt b/xdebug-3.4.5/tests/tracing/bug00003.phpt
new file mode 100644
index 0000000..cc3ed7b
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00003.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Test for bug #3: Crash tracing to file
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+date.timezone=Europe/Oslo
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+@printf('%d %d %d %d:%d:%d', 1061728888, 1061728888, 1061728888, 1061728888, 1061728888, 1061728888);
+xdebug_stop_trace();
+?>
+--EXPECTF--
+%ATRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f%w%d     -> printf($format = '%s', ...$values = variadic(%s)) %sbug00003.php:3
+%w%f%w%d     -> xdebug_stop_trace() %sbug00003.php:4
+%w%f%w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug00146.phpt b/xdebug-3.4.5/tests/tracing/bug00146.phpt
new file mode 100644
index 0000000..d7c2dc8
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00146.phpt
@@ -0,0 +1,29 @@
+--TEST--
+Test for bug #146: Array key names with quotes in traces are not escaped
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function foo($a)
+{
+	return $a;
+}
+
+$array = array("te\"st's" => 42);
+$a = foo($array);
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> foo($a = ['te"st\'s' => 42]) %sbug00146.php:10
+%w%f %w%d      >=> ['te"st\'s' => 42]
+%w%f %w%d     -> xdebug_stop_trace() %sbug00146.php:12
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug00173.phpt b/xdebug-3.4.5/tests/tracing/bug00173.phpt
new file mode 100644
index 0000000..1d6f69f
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00173.phpt
@@ -0,0 +1,37 @@
+--TEST--
+Test for bug #173: Xdebug segfaults using SPL ArrayIterator
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext SPL');
+?>
+--INI--
+xdebug.mode=trace,develop
+xdebug.start_with_request=yes
+xdebug.trace_output_name=trace.%p.%r
+xdebug.trace_options=0
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+xdebug.show_local_vars=1
+--FILE--
+<?php
+$trace_file = xdebug_get_tracefile_name();
+new ArrayIterator(NULL);
+echo file_get_contents($trace_file);
+unlink($trace_file);
+echo "DONE\n";
+?>
+--EXPECTF--
+Fatal error: Uncaught%sarray%sin %sbug00173.php on line 3
+
+%s: %sarray%sin %sbug00173.php on line 3
+
+Call Stack:
+%w%f%w%d   1. {main}() %sbug00173.php:0
+%w%f%w%d   2. ArrayIterator->__construct($array = NULL) %sbug00173.php:3
+
+
+Variables in local scope (#1):
+  $trace_file = '%s.%d.%s.xt%S'
diff --git a/xdebug-3.4.5/tests/tracing/bug00184.phpt b/xdebug-3.4.5/tests/tracing/bug00184.phpt
new file mode 100644
index 0000000..eed695d
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00184.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Test for bug #184: problem with control chars in code traces
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=yes
+xdebug.trace_output_name=trace.%p.%r
+xdebug.trace_options=0
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+xdebug.var_display_max_depth=2
+xdebug.var_display_max_children=33
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+str_replace(range("\0", " "), ' ', 'foobar');
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d   -> {main}() %sbug00184.php:0
+%A
+%w%f %w%d     -> range($%s = '\000', $%s = ' ') %sbug00184.php:3
+%w%f %w%d      >=> [0 => '\000', 1 => '\001', 2 => '\002', 3 => '\003', 4 => '\004', 5 => '\005', 6 => '\006', 7 => '\a', 8 => '\b', 9 => '\t', 10 => '\n', 11 => '\v', 12 => '\f', 13 => '\r', 14 => '\016', 15 => '\017', 16 => '\020', 17 => '\021', 18 => '\022', 19 => '\023', 20 => '\024', 21 => '\025', 22 => '\026', 23 => '\027', 24 => '\030', 25 => '\031', 26 => '\032', 27 => '\033', 28 => '\034', 29 => '\035', 30 => '\036', 31 => '\037', 32 => ' ']
+%w%f %w%d     -> str_replace($search = [0 => '\000', 1 => '\001', 2 => '\002', 3 => '\003', 4 => '\004', 5 => '\005', 6 => '\006', 7 => '\a', 8 => '\b', 9 => '\t', 10 => '\n', 11 => '\v', 12 => '\f', 13 => '\r', 14 => '\016', 15 => '\017', 16 => '\020', 17 => '\021', 18 => '\022', 19 => '\023', 20 => '\024', 21 => '\025', 22 => '\026', 23 => '\027', 24 => '\030', 25 => '\031', 26 => '\032', 27 => '\033', 28 => '\034', 29 => '\035', 30 => '\036', 31 => '\037', 32 => ' '], $replace = ' ', $subject = 'foobar') %sbug00184.php:3
+%w%f %w%d      >=> 'foobar'
+%A
diff --git a/xdebug-3.4.5/tests/tracing/bug00355.phpt b/xdebug-3.4.5/tests/tracing/bug00355.phpt
new file mode 100644
index 0000000..a8a42f5
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00355.phpt
@@ -0,0 +1,49 @@
+--TEST--
+Test for bug #355: Non-unique functions numbers in function traces
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=1
+xdebug.dump_globals=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function foo()
+{
+    echo "Hi";
+	echo strrev( "Hi" ), "\n";
+}
+
+function bar()
+{
+    echo "There\n";
+	echo strrev( "There" ), "\n";
+}
+
+register_shutdown_function("bar");
+
+foo();
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+HiiH
+Version: %d.%s
+File format: %d
+TRACE START [%s]
+2	1	1	%f	%d
+2	7	0	%f	%d	register_shutdown_function	0		%sbug00355.php	16	1	'bar'
+2	7	1	%f	%d
+2	8	0	%f	%d	foo	1		%sbug00355.php	18	0
+3	9	0	%f	%d	strrev	0		%sbug00355.php	7	1	'Hi'
+3	9	1	%f	%d
+2	8	1	%f	%d
+2	10	0	%f	%d	xdebug_stop_trace	0		%sbug00355.php	20	0
+			%f	%d
+TRACE END   [%s]
+
+There
+erehT
diff --git a/xdebug-3.4.5/tests/tracing/bug00501.phpt b/xdebug-3.4.5/tests/tracing/bug00501.phpt
new file mode 100644
index 0000000..dadf3d9
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00501.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Test for bug #501: Xdebug's variable tracing misses POST_INC and variants
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$i = 10;
+$i +=
+    ++$i
+    + $i
+    + $i++;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+                           => $i = 10 %sbug00501.php:4
+                           => ++$i %sbug00501.php:%r(7|6)%r
+                           => $i++ %sbug00501.php:8
+                           => $i += 33 %sbug00501.php:8
+%w%f %w%d     -> xdebug_stop_trace() %s:%d
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
+
diff --git a/xdebug-3.4.5/tests/tracing/bug00558-002.phpt b/xdebug-3.4.5/tests/tracing/bug00558-002.phpt
new file mode 100644
index 0000000..4f18c49
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00558-002.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Test for bug #558: PHP segfaults when running a nested eval while tracing.
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_assignments=0
+xdebug.collect_return=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$any = 'printf("foo\n");';
+eval('eval($any);');
+
+xdebug_stop_trace();
+?>
+DONE
+--EXPECTF--
+foo
+DONE
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f  %w%d     -> eval('eval($any);') %sbug00558-002.php:5
+%w%f  %w%d       -> eval('printf("foo\\n");') %sbug00558-002.php(5) : eval()'d code:1
+%w%f  %w%d         -> printf($format = 'foo\n') %sbug00558-002.php(5) : eval()'d code(1) : eval()'d code:1
+%w%f  %w%d     -> xdebug_stop_trace() %sbug00558-002.php:7
+%w%f  %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug00566-001.phpt b/xdebug-3.4.5/tests/tracing/bug00566-001.phpt
new file mode 100644
index 0000000..eedcbb4
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00566-001.phpt
@@ -0,0 +1,54 @@
+--TEST--
+Test for bug #566: Xdebug crashes when using conditional breakpoints (1)
+--INI--
+xdebug.mode=trace
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+xdebug.start_with_request=no
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+function loadMod( $module )
+{
+	strrev( $module );
+	$module .= 's';
+	strrev( $module );
+}
+
+function loadFoo( $test )
+{
+	strrev( $test );
+	$test .= 's';
+	strrev( $test );
+}
+
+$a = loadFoo( 'view' );
+$a = loadMod( 'test' );
+$a = loadMod( 'view' );
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> loadFoo($test = 'view') %sbug00566-001.php:17
+%w%f %w%d       -> strrev($str%S = 'view') %sbug00566-001.php:12
+%w%f %w%d        >=> 'weiv'
+%w%f %w%d       -> strrev($str%S = 'views') %sbug00566-001.php:14
+%w%f %w%d        >=> 'sweiv'
+%w%f %w%d      >=> NULL
+%w%f %w%d     -> loadMod($module = 'test') %sbug00566-001.php:18
+%w%f %w%d       -> strrev($str%S = 'test') %sbug00566-001.php:5
+%w%f %w%d        >=> 'tset'
+%w%f %w%d       -> strrev($str%S = 'tests') %sbug00566-001.php:7
+%w%f %w%d        >=> 'stset'
+%w%f %w%d      >=> NULL
+%w%f %w%d     -> loadMod($module = 'view') %sbug00566-001.php:19
+%w%f %w%d       -> strrev($str%S = 'view') %sbug00566-001.php:5
+%w%f %w%d        >=> 'weiv'
+%w%f %w%d       -> strrev($str%S = 'views') %sbug00566-001.php:7
+%w%f %w%d        >=> 'sweiv'
+%w%f %w%d      >=> NULL
+%w%f %w%d     -> xdebug_stop_trace() %sbug00566-001.php:21
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug00642.phpt b/xdebug-3.4.5/tests/tracing/bug00642.phpt
new file mode 100644
index 0000000..8916400
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00642.phpt
@@ -0,0 +1,46 @@
+--TEST--
+Test for bug #642: No line number for offsetGet and offsetSet
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+class Test implements ArrayAccess {
+    private $container = array();
+
+    public function offsetSet($offset, $value) : void {
+        $this->container[$offset] = $value;
+    }
+    public function offsetExists($offset) : bool {
+        return isset($this->container[$offset]);
+    }
+    public function offsetUnset($offset) : void {
+        unset($this->container[$offset]);
+    }
+    public function offsetGet($offset) : mixed {
+        return isset($this->container[$offset]) ? $this->container[$offset] : null;
+    }
+}
+
+$test = new Test();
+$test['test'] = 'test';
+$foo = $test['test'];
+isset($test['test']);
+unset($test['test']);
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> Test->offsetSet($offset = 'test', $value = 'test') %sbug00642.php:22
+%w%f %w%d     -> Test->offsetGet($offset = 'test') %sbug00642.php:23
+%w%f %w%d     -> Test->offsetExists($offset = 'test') %sbug00642.php:24
+%w%f %w%d     -> Test->offsetUnset($offset = 'test') %sbug00642.php:25
+%w%f %w%d     -> xdebug_stop_trace() %sbug00642.php:27
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug00690-001.phpt b/xdebug-3.4.5/tests/tracing/bug00690-001.phpt
new file mode 100644
index 0000000..c769fc0
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00690-001.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Test for bug #690: Function traces are not appended to file when xdebug_start_trace() is used with xdebug.trace_options=1 (step 1 of 2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('unparallel');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.trace_output_name=trace.bug690
+xdebug.trace_options=1
+xdebug.start_with_request=no
+xdebug.use_compression=0
+--FILE--
+<?php
+xdebug_start_trace();
+$trace_file = xdebug_get_tracefile_name();
+echo $trace_file, "\n";
+xdebug_stop_trace();
+unlink($trace_file);
+file_put_contents($trace_file, "DONE\n");
+?>
+--EXPECTF--
+%strace.bug690.xt%S
diff --git a/xdebug-3.4.5/tests/tracing/bug00690-002.phpt b/xdebug-3.4.5/tests/tracing/bug00690-002.phpt
new file mode 100644
index 0000000..c8dcfaa
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00690-002.phpt
@@ -0,0 +1,34 @@
+--TEST--
+Test for bug #690: Function traces are not appended to file when xdebug_start_trace() is used with xdebug.trace_options=1 (step 2 of 2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('unparallel');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_output_name=trace.bug690
+xdebug.trace_options=1
+xdebug.trace_format=0
+xdebug.collect_assignments=1
+xdebug.collect_return=1
+xdebug.use_compression=0
+--FILE--
+<?php
+xdebug_start_trace();
+$trace_file = xdebug_get_tracefile_name();
+echo $trace_file, "\n";
+echo file_get_contents($trace_file);
+xdebug_stop_trace();
+unlink($trace_file);
+?>
+--EXPECTF--
+%strace.bug690.xt
+DONE
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> xdebug_get_tracefile_name() %sbug00690-002.php:3
+%w%f %w%d      >=> '%strace.bug690.xt'
+                           => $trace_file = '%strace.bug690.xt' %sbug00690-002.php:3
+%w%f %w%d     -> file_get_contents($filename = '%strace.bug690.xt') %sbug00690-002.php:5
+
diff --git a/xdebug-3.4.5/tests/tracing/bug00699.inc b/xdebug-3.4.5/tests/tracing/bug00699.inc
new file mode 100644
index 0000000..7fab579
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00699.inc
@@ -0,0 +1,20 @@
+<?php
+class SomeClass implements Countable {
+    private $data = array();
+
+    public function addData($var) {
+        $this->data[] = $var;
+    }
+
+
+
+
+
+
+
+
+    public function count() : int {
+        return count($this->data);
+    }
+}
+?>
diff --git a/xdebug-3.4.5/tests/tracing/bug00699.phpt b/xdebug-3.4.5/tests/tracing/bug00699.phpt
new file mode 100644
index 0000000..322be21
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00699.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test for bug #699: Xdebug gets the filename wrong for the countable interface
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+require dirname( __FILE__ ) . '/bug00699.inc';
+$n = new SomeClass;
+$n->addData('foobar');
+
+
+
+count($n);
+
+
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> dirname($path = '%s') %sbug00699.php:4
+%w%f %w%d     -> require(%sbug00699.inc) %sbug00699.php:4
+%w%f %w%d     -> SomeClass->addData($var = 'foobar') %sbug00699.php:6
+%w%f %w%d     -> SomeClass->count(%S) %sbug00699.php:10
+%w%f %w%d     -> xdebug_stop_trace() %sbug00699.php:14
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug00701.phpt b/xdebug-3.4.5/tests/tracing/bug00701.phpt
new file mode 100644
index 0000000..341478c
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00701.phpt
@@ -0,0 +1,29 @@
+--TEST--
+Test for bug #701: Functions as array indexes
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=1
+xdebug.collect_assignments=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$class = "class";
+$method = "methodName";
+$action_ids[ucfirst($class)][$method] = $method;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+                           => $class = 'class' %sbug00701.php:4
+                           => $method = 'methodName' %sbug00701.php:5
+%w%f %w%d     -> ucfirst($str%S = 'class') %sbug00701.php:6
+%w%f %w%d      >=> 'Class'
+                           => $action_ids['Class']['methodName'] = 'methodName' %sbug00701.php:6
+%w%f %w%d     -> xdebug_stop_trace() %sbug00701.php:8
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug00702-001.phpt b/xdebug-3.4.5/tests/tracing/bug00702-001.phpt
new file mode 100644
index 0000000..3473a9b
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00702-001.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Test for bug #702: Check whether variables tracing also works with =&
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.dump_globals=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+xdebug.force_error_reporting=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$a = 42;
+$b =& $a;
+$b = 43;
+
+$array = [ 1, 2 ];
+$array[] = 3;
+$array[] =& $array[2];
+
+$array = [ 1, 2, [ 3, 4, 6 ] ];
+$array[] = $array[2][1];
+$array[] =& $array[2][1];
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+                           => $a = 42 %sbug00702-001.php:4
+                           => $b =& $a %sbug00702-001.php:5
+                           => $b = 43 %sbug00702-001.php:6
+                           => $array = [0 => 1, 1 => 2] %sbug00702-001.php:8
+                           => $array[] = 3 %sbug00702-001.php:9
+                           => $array[] =& $array[2] %sbug00702-001.php:10
+                           => $array = [0 => 1, 1 => 2, 2 => [0 => 3, 1 => 4, 2 => 6]] %sbug00702-001.php:12
+                           => $array[] = 4 %sbug00702-001.php:13
+                           => $array[] =& $array[2][1] %sbug00702-001.php:14
+%w%f %w%d     -> xdebug_stop_trace() %sbug00702-001.php:16
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug00702-002.phpt b/xdebug-3.4.5/tests/tracing/bug00702-002.phpt
new file mode 100644
index 0000000..90ddf26
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00702-002.phpt
@@ -0,0 +1,42 @@
+--TEST--
+Test for bug #702: Check whether variables tracing also works with =& (with object)
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.dump_globals=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+xdebug.force_error_reporting=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$a = new stdClass;
+$b =& $a;
+$b = 43;
+
+$object = new stdClass;
+$object->foo = 'bar';
+$object->array = [ 1, 2, 3, 5, 8, 13 ];
+$object->bar =& $object->foo;
+$object->array[] =& $object->foo;
+$object->array[] =& $object->array[4];
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+                           => $a = class stdClass {  } %sbug00702-002.php:4
+                           => $b =& $a %sbug00702-002.php:5
+                           => $b = 43 %sbug00702-002.php:6
+                           => $object = class stdClass {  } %sbug00702-002.php:8
+                           => $object->foo = 'bar' %sbug00702-002.php:9
+                           => $object->array = [0 => 1, 1 => 2, 2 => 3, 3 => 5, 4 => 8, 5 => 13] %sbug00702-002.php:10
+                           => $object->bar =& $object->foo %sbug00702-002.php:11
+                           => $object->array[] =& $object->foo %sbug00702-002.php:12
+                           => $object->array[] =& $object->array[4] %sbug00702-002.php:13
+%w%f %w%d     -> xdebug_stop_trace() %sbug00702-002.php:15
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug00756.phpt b/xdebug-3.4.5/tests/tracing/bug00756.phpt
new file mode 100644
index 0000000..c045784
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00756.phpt
@@ -0,0 +1,56 @@
+--TEST--
+Test for bug #756: Tracing doesn't always understand the variables and shows IS_VAR
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_options=0
+xdebug.trace_output_name=trace.%c
+xdebug.collect_return=1
+xdebug.collect_assignments=1
+xdebug.dump_globals=0
+xdebug.trace_format=0
+--FILE--
+<?php
+class foo
+{
+	static $bar;
+	public $foo;
+
+	static function bar()
+	{
+		self::$bar++;
+	}
+
+	function __construct()
+	{
+		$this->foo++;
+	}
+}
+
+require_once 'capture-trace.inc';
+$trace_file = xdebug_get_tracefile_name();
+
+foo::bar();
+$f = new foo;
+$f->__construct();
+
+xdebug_stop_trace();
+echo "DONE\n";
+?>
+--EXPECTF--
+DONE
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxdt%s.%s.xt%S' %s:%d
+%w%f %w%d     -> xdebug_get_tracefile_name() %sbug00756.php:19
+%w%f %w%d      >=> '%sxdt%s.%s.xt%S'
+                           => $trace_file = '%sxdt%s.%s.xt%S' %sbug00756.php:19
+%w%f %w%d     -> foo::bar() %sbug00756.php:21
+                             => %r(\+\+self::bar|self::bar\+\+)%r %sbug00756.php:9
+%w%f %w%d     -> foo->__construct() %sbug00756.php:22
+                             => %r(\$this->foo\+\+|\+\+\$this->foo)%r %sbug00756.php:14
+                           => $f = class foo { public $foo = 1 } %sbug00756.php:22
+%w%f %w%d     -> foo->__construct() %sbug00756.php:23
+                             => %r(\$this->foo\+\+|\+\+\$this->foo)%r %sbug00756.php:14
+%w%f %w%d     -> xdebug_stop_trace() %sbug00756.php:25
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug00799.phpt b/xdebug-3.4.5/tests/tracing/bug00799.phpt
new file mode 100644
index 0000000..30a569f
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00799.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Test for bug #799: Function traces report base class instead of object name
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.dump_globals=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.force_error_reporting=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+abstract class A
+{
+	abstract function foo();
+	
+	public function bar()
+	{
+		echo "A Test","\n";
+	}
+}
+
+class B extends A
+{
+	public function foo()
+	{
+	}
+}
+
+$test = new B;
+$test->bar();
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+A Test
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> A->bar() %sbug00799.php:22
+%w%f %w%d     -> xdebug_stop_trace() %sbug00799.php:24
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug00843-001.phpt b/xdebug-3.4.5/tests/tracing/bug00843-001.phpt
new file mode 100644
index 0000000..3b0b4ce
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00843-001.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test for bug #843: Text output depends on php locale [computerized]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!win');
+if (false == setlocale(LC_ALL, "ro_RO.UTF-8", "de_DE.UTF-8", "de_DE", "de", "german", "ge", "de_DE.ISO-8859-1")) print "skip locale not found";
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+setlocale(LC_ALL, "ro_RO.UTF-8", "de_DE.UTF-8", "de_DE", "de", "german", "ge", "de_DE.ISO-8859-1");
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+Version: %d.%s
+File format: %d
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+2	1	1	%d.%d	%d
+2	7	0	%d.%d	%d	setlocale	0		%sbug00843-001.php	4	8	%d	'ro_RO.UTF-8'	'de_DE.UTF-8'	'de_DE'	'de'	'german'	'ge'	'de_DE.ISO-8859-1'
+2	7	1	%d.%d	%d
+2	7	R			'%s'
+2	8	0	%d.%d	%d	xdebug_stop_trace	0		%sbug00843-001.php	6	0
+			%d%c%d	%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug00843-002.phpt b/xdebug-3.4.5/tests/tracing/bug00843-002.phpt
new file mode 100644
index 0000000..e855d76
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00843-002.phpt
@@ -0,0 +1,29 @@
+--TEST--
+Test for bug #843: Text output depends on php locale [normal]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!win');
+if (false == setlocale(LC_ALL, "ro_RO.UTF-8", "de_DE.UTF-8", "de_DE", "de", "german", "ge", "de_DE.ISO-8859-1")) print "skip locale not found";
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+setlocale(LC_ALL, "ro_RO.UTF-8", "de_DE.UTF-8", "de_DE", "de", "german", "ge", "de_DE.ISO-8859-1");
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> setlocale($category = %d, $locales = 'ro_RO.UTF-8', ...$rest = variadic(0 => 'de_DE.UTF-8', 1 => 'de_DE', 2 => 'de', 3 => 'german', 4 => 'ge', 5 => 'de_DE.ISO-8859-1')) %sbug00843-002.php:4
+%w%f %w%d      >=> '%s'
+%w%f %w%d     -> xdebug_stop_trace() %sbug00843-002.php:6
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug00847-001.phpt b/xdebug-3.4.5/tests/tracing/bug00847-001.phpt
new file mode 100644
index 0000000..f24e7a7
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00847-001.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Test for bug #847: %s doesn't work in xdebug.trace_output_name (auto_trace)
+--INI--
+xdebug.mode=trace
+xdebug.trace_format=0
+xdebug.start_with_request=yes
+xdebug.trace_output_name=trace.%s
+xdebug.trace_options=1
+--FILE--
+<?php
+$trace_file = xdebug_get_tracefile_name();
+echo $trace_file, "\n";
+xdebug_stop_trace();
+unlink($trace_file);
+?>
+--EXPECTF--
+%strace.%s_tests_tracing_bug00847-001_php.xt%S
diff --git a/xdebug-3.4.5/tests/tracing/bug00847-002.phpt b/xdebug-3.4.5/tests/tracing/bug00847-002.phpt
new file mode 100644
index 0000000..d7d4dd5
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00847-002.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Test for bug #847: %s doesn't work in xdebug.trace_output_name (xdebug_start_trace)
+--INI--
+xdebug.mode=trace
+xdebug.trace_format=0
+xdebug.trace_output_name=trace.%s
+xdebug.trace_options=1
+xdebug.start_with_request=no
+--FILE--
+<?php
+xdebug_start_trace();
+$trace_file = xdebug_get_tracefile_name();
+echo $trace_file, "\n";
+xdebug_stop_trace();
+?>
+--EXPECTF--
+%strace.%s_tests_tracing_bug00847-002_php.xt%S
diff --git a/xdebug-3.4.5/tests/tracing/bug00905.phpt b/xdebug-3.4.5/tests/tracing/bug00905.phpt
new file mode 100644
index 0000000..5f90b66
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug00905.phpt
@@ -0,0 +1,57 @@
+--TEST--
+Test for bug #905: Tracing for generators (>= PHP 8.1)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function gen() {
+    yield 'a';
+    yield 'b';
+    yield 'key' => 'c';
+    yield 'd';
+    yield 10 => 'e';
+    yield 'f';
+}
+ 
+foreach (gen() as $key => $value) {
+    echo $key, ' => ', $value, "\n";
+}
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+0 => a
+1 => b
+key => c
+2 => d
+10 => e
+11 => f
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> gen() %sbug00905.php:13
+%w%f %w%d      >=> (0 => 'a')
+%w%f %w%d     -> gen() %sbug00905.php:13
+%w%f %w%d      >=> (1 => 'b')
+%w%f %w%d     -> gen() %sbug00905.php:13
+%w%f %w%d      >=> ('key' => 'c')
+%w%f %w%d     -> gen() %sbug00905.php:13
+%w%f %w%d      >=> (2 => 'd')
+%w%f %w%d     -> gen() %sbug00905.php:13
+%w%f %w%d      >=> (10 => 'e')
+%w%f %w%d     -> gen() %sbug00905.php:13
+%w%f %w%d      >=> (11 => 'f')
+%w%f %w%d     -> gen() %sbug00905.php:13
+%w%f %w%d      >=> (11 => 'f')
+%w%f %w%d     -> xdebug_stop_trace() %sbug00905.php:17
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01073.phpt b/xdebug-3.4.5/tests/tracing/bug01073.phpt
new file mode 100644
index 0000000..18662bb
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01073.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Test for bug #1073: Segmentation Fault 11 when nesting call_user_func_array
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.var_display_max_children=128
+xdebug.var_display_max_data=512
+xdebug.var_display_max_depth=3
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+$c = 'call_user_func_array';
+$c('call_user_func_array', array('printf', array("%u %u %u\n", 1,2,3)));
+
+$c('call_user_func_array', array('call_user_func_array', array('printf', array("%u %u %u\n", 1,2,3))));
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+1 2 3
+1 2 3
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> call_user_func_array:{%sbug01073.php:4}($%s = 'call_user_func_array', $%s = [0 => 'printf', 1 => [0 => '%u %u %u\n', 1 => 1, 2 => 2, 3 => 3]]) %sbug01073.php:4
+%w%f %w%d       -> call_user_func_array:{%sbug01073.php:4}($%s = 'printf', $%s = [0 => '%u %u %u\n', 1 => 1, 2 => 2, 3 => 3]) %sbug01073.php:4
+%w%f %w%d         -> printf($format = '%u %u %u\n', ...$%s = variadic(0 => 1, 1 => 2, 2 => 3)) %sbug01073.php:4
+%w%f %w%d     -> call_user_func_array:{%sbug01073.php:6}($%s = 'call_user_func_array', $%s = [0 => 'call_user_func_array', 1 => [0 => 'printf', 1 => [...]]]) %sbug01073.php:6
+%w%f %w%d       -> call_user_func_array:{%sbug01073.php:6}($%s = 'call_user_func_array', $%s = [0 => 'printf', 1 => [0 => '%u %u %u\n', 1 => 1, 2 => 2, 3 => 3]]) %sbug01073.php:6
+%w%f %w%d         -> call_user_func_array:{%sbug01073.php:6}($%s = 'printf', $%s = [0 => '%u %u %u\n', 1 => 1, 2 => 2, 3 => 3]) %sbug01073.php:6
+%w%f %w%d           -> printf($format = '%u %u %u\n', ...$%s = variadic(0 => 1, 1 => 2, 2 => 3)) %sbug01073.php:6
+%w%f %w%d     -> xdebug_stop_trace() %sbug01073.php:8
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01112.phpt b/xdebug-3.4.5/tests/tracing/bug01112.phpt
new file mode 100644
index 0000000..fcbe3eb
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01112.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Test for bug #1112: Setting an invalid xdebug.trace_format causes Xdebug to crash
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!win');
+?>
+--INI--
+xdebug.mode=trace,develop
+xdebug.start_with_request=yes
+xdebug.trace_output_name=trace.%p.%r
+xdebug.trace_format=42
+log_errors=0
+--FILE--
+<?php
+echo strlen("45"), "\n";
+?>
+--EXPECTF--
+Notice: A wrong value for xdebug.trace_format was selected (42), defaulting to the textual format in %s/bug01112.php on line 2
+
+2
diff --git a/xdebug-3.4.5/tests/tracing/bug01140.phpt b/xdebug-3.4.5/tests/tracing/bug01140.phpt
new file mode 100644
index 0000000..718ee9a
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01140.phpt
@@ -0,0 +1,39 @@
+--TEST--
+Test for bug #1140: Tracing with __debugInfo() crashes Xdebug due to a stack overflow
+--INI--
+xdebug.mode=trace,develop
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.dump_globals=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.force_error_reporting=0
+--FILE--
+<?php
+class Foo
+{
+	function __debugInfo()
+	{
+		$p = get_object_vars( $this );
+		return $p;
+	}
+}
+
+require_once 'capture-trace.inc';
+
+$a = new Foo;
+var_dump( $a );
+
+xdebug_stop_trace();
+?>
+== I didn't crash ==
+--EXPECTF--
+%sbug01140.php:14:
+class Foo#1 (0) {
+}
+== I didn't crash ==
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> var_dump($value = class Foo {  }) %sbug01140.php:14
+%w%f %w%d     -> xdebug_stop_trace() %sbug01140.php:16
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01209.phpt b/xdebug-3.4.5/tests/tracing/bug01209.phpt
new file mode 100644
index 0000000..0e0ca90
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01209.phpt
@@ -0,0 +1,47 @@
+--TEST--
+Test for bug #1209: Tracing property assignments in user-readable function traces (PHP < 8)
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8');
+?>
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function foo()
+{
+	$newfunc = @create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b);');
+	echo "New anonymous function: $newfunc\n";
+	echo $newfunc(2, M_E) . "\n";
+
+	return $newfunc;
+}
+
+$f = foo();
+
+echo $f(2, M_PI), "\n";
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+New anonymous function:  lambda_1
+ln(2) + ln(2.718281828459) = 1.6931471805599
+ln(2) + ln(3.1415926535898) = 1.8378770664093
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> foo() %sbug01209.php:13
+%w%f %w%d       -> create_function($args = '$a,$b', $code = 'return "ln($a) + ln($b) = " . log($a * $b);') %sbug01209.php:6
+%w%f %w%d         -> {internal eval}() %sbug01209.php:6
+%w%f %w%d       -> __lambda_func($a = 2, $b = 2.718281828459) %sbug01209.php:8
+%w%f %w%d         -> log($number = 5.4365636569181) %sbug01209.php(6) : runtime-created function:1
+%w%f %w%d     -> __lambda_func($a = 2, $b = 3.1415926535898) %sbug01209.php:15
+%w%f %w%d       -> log($number = 6.2831853071796) %sbug01209.php(6) : runtime-created function:1
+%w%f %w%d     -> xdebug_stop_trace() %sbug01209.php:17
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01215.phpt b/xdebug-3.4.5/tests/tracing/bug01215.phpt
new file mode 100644
index 0000000..51f63fe
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01215.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Test for bug #1215: SIGSEGV if xdebug.output_dir directory does not exist
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=default
+xdebug.output_dir=/tmp/jumberwocky
+--FILE--
+<?php
+echo strlen("hi!"), "\n";
+?>
+--EXPECT--
+3
diff --git a/xdebug-3.4.5/tests/tracing/bug01471.phpt b/xdebug-3.4.5/tests/tracing/bug01471.phpt
new file mode 100644
index 0000000..6287c55
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01471.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Test for bug #1471: Crash with tracing and ternairy op assignment
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$ff = "bb";
+$c = "aa" == $ff ? 1 : 0;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+                           => $ff = 'bb' %sbug01471.php:4
+                           => $c = 0 %sbug01471.php:5
+%w%f %w%d     -> xdebug_stop_trace() %sbug01471.php:7
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01571-001-php81.phpt b/xdebug-3.4.5/tests/tracing/bug01571-001-php81.phpt
new file mode 100644
index 0000000..e90a752
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01571-001-php81.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test for bug #1571: Stack traces don't show file/line for closures in namespaces (< PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.2');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+namespace A;
+
+require_once 'capture-trace.inc';
+
+$a = function(){
+
+};
+$a(1, $a);
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> A\{closure:%sbug01571-001-php81.php:6-8}(1, class Closure { virtual $closure = "A\{closure}" }) %sbug01571-001-php81.php:9
+%w%f %w%d     -> xdebug_stop_trace() %sbug01571-001-php81.php:11
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01571-001-php82.phpt b/xdebug-3.4.5/tests/tracing/bug01571-001-php82.phpt
new file mode 100644
index 0000000..0f05bfd
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01571-001-php82.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test for bug #1571: Stack traces don't show file/line for closures in namespaces (>= PHP 8.2, < PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2,< 8.4');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+namespace A;
+
+require_once 'capture-trace.inc';
+
+$a = function(){
+
+};
+$a(1, $a);
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> A\{closure:%sbug01571-001-php82.php:6-8}(1, class Closure {  }) %sbug01571-001-php82.php:9
+%w%f %w%d     -> xdebug_stop_trace() %sbug01571-001-php82.php:11
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01571-001-php84.phpt b/xdebug-3.4.5/tests/tracing/bug01571-001-php84.phpt
new file mode 100644
index 0000000..5dfadc8
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01571-001-php84.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test for bug #1571: Stack traces don't show file/line for closures in namespaces (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+namespace A;
+
+require_once 'capture-trace.inc';
+
+$a = function(){
+
+};
+$a(1, $a);
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> {closure:%sbug01571-001-php84.php:6-8}(1, class Closure { public $name = '{closure:%sbug01571-001-php84.php:6}'; public $file = '%sbug01571-001-php84.php'; public $line = 6 }) %sbug01571-001-php84.php:9
+%w%f %w%d     -> xdebug_stop_trace() %sbug01571-001-php84.php:11
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01599-001.phpt b/xdebug-3.4.5/tests/tracing/bug01599-001.phpt
new file mode 100644
index 0000000..2b81dbe
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01599-001.phpt
@@ -0,0 +1,49 @@
+--TEST--
+Test for tracing new PHP 7.4 assignment opcodes
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+class foo {
+	static public $var1;
+	static public $var2;
+	static public $var3;
+	static public $var4 = 0;
+
+	static function test()
+	{
+		self::$var1 = 42;
+		self::$var2 = self::$var1;
+		self::$var3 &= self::$var2;
+		self::$var3 =& self::$var2;
+		self::$var4++;
+		self::$var4--;
+		++self::$var4;
+		--self::$var4;
+	}
+}
+foo::test();
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+%w%f %w%d     -> foo::test() %sbug01599-001.php:22
+                             => self::var1 = 42 %sbug01599-001.php:12
+                             => self::var2 = 42 %sbug01599-001.php:13
+                             => self::var3 &= 42 %sbug01599-001.php:14
+                             => self::var3 =& self::var2 %sbug01599-001.php:15
+                             => ++self::var4 %sbug01599-001.php:16
+                             => --self::var4 %sbug01599-001.php:17
+                             => ++self::var4 %sbug01599-001.php:18
+                             => --self::var4 %sbug01599-001.php:19
+%w%f %w%d     -> xdebug_stop_trace() %sbug01599-001.php:24
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01599-002.phpt b/xdebug-3.4.5/tests/tracing/bug01599-002.phpt
new file mode 100644
index 0000000..5f80514
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01599-002.phpt
@@ -0,0 +1,54 @@
+--TEST--
+Test for tracing new PHP 7.4 assignment opcodes (< PHP 7.4 && opcache)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 7.4; opcache');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+class foo {
+	static public $var1;
+	static public $var2;
+	static public $var3;
+	static public $var4 = 0;
+
+	static function test()
+	{
+		self::$var1 = 42;
+		self::$var2 = self::$var1;
+		self::$var3 &= self::$var2;
+		self::$var3 =& self::$var2;
+		self::$var4++;
+		self::$var4--;
+		++self::$var4;
+		--self::$var4;
+	}
+}
+foo::test();
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+                             => $tf = '%sxt%S' %s:%d
+%w%f %w%d     -> foo::test() %sbug01599-002.php:22
+                             => self::var1 = 42 %sbug01599-002.php:12
+                             => self::var2 = 42 %sbug01599-002.php:13
+                             => self::var3 &= 42 %sbug01599-002.php:14
+                             => self::var3 =& self::var2 %sbug01599-002.php:15
+                             => ++self::var4 %sbug01599-002.php:16
+                             => --self::var4 %sbug01599-002.php:17
+                             => ++self::var4 %sbug01599-002.php:18
+                             => --self::var4 %sbug01599-002.php:19
+%w%f %w%d     -> xdebug_stop_trace() %sbug01599-002.php:24
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01676.phpt b/xdebug-3.4.5/tests/tracing/bug01676.phpt
new file mode 100644
index 0000000..785bed9
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01676.phpt
@@ -0,0 +1,44 @@
+--TEST--
+Test for bug #1676: xdebug_trace_* deinit and write_footer not called for shutdown functions
+--INI--
+xdebug.mode=trace
+xdebug.trace_format=0
+xdebug.start_with_request=yes
+xdebug.trace_output_name=trace.%p.%r
+xdebug.collect_assignments=0
+xdebug.collect_return=0
+--FILE--
+<?php
+function shutdown() {
+	global $tf;
+
+	var_dump("in shutdown");
+
+	xdebug_stop_trace();
+	if (preg_match('@\.gz$@', $tf)) {
+		$fp = gzopen($tf, 'r');
+		echo stream_get_contents($fp);
+	} else {
+		echo file_get_contents($tf);
+	}
+}
+
+
+$tf = xdebug_get_tracefile_name();
+
+register_shutdown_function('shutdown');
+var_dump("foo");
+?>
+--EXPECTF--
+string(3) "foo"
+string(11) "in shutdown"
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d   -> {main}() %sbug01676.php:0
+%w%f %w%d     -> xdebug_get_tracefile_name() %sbug01676.php:17
+%w%f %w%d     -> register_shutdown_function($callback = 'shutdown') %sbug01676.php:19
+%w%f %w%d     -> var_dump($value = 'foo') %sbug01676.php:20
+%w%f %w%d   -> shutdown() %sbug01676.php:0
+%w%f %w%d     -> var_dump($value = 'in shutdown') %sbug01676.php:5
+%w%f %w%d     -> xdebug_stop_trace() %sbug01676.php:7
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01739.phpt b/xdebug-3.4.5/tests/tracing/bug01739.phpt
new file mode 100644
index 0000000..680c03c
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01739.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test for bug #1739: Tracing footer not written
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_options=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.dump_globals=0
+xdebug.trace_format=0
+xdebug.use_compression=0
+--FILE--
+<?php
+$id = getenv( 'UNIQ_RUN_ID' ) ? getenv( 'UNIQ_RUN_ID' ) : '';
+xdebug_start_trace( sys_get_temp_dir() . '/1739' . $id );
+function foo() {
+	echo "bar\n";
+}
+
+foo();
+?>
+--AFTER--
+<?php
+$id = getenv( 'UNIQ_RUN_ID' ) ? getenv( 'UNIQ_RUN_ID' ) : '';
+echo file_get_contents( sys_get_temp_dir() . '/1739' . $id . '.xt' );
+unlink( sys_get_temp_dir() . '/1739' . $id . '.xt' );
+?>
+--EXPECTF--
+bar
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> foo() %sbug01739.php:%d
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01829.phpt b/xdebug-3.4.5/tests/tracing/bug01829.phpt
new file mode 100644
index 0000000..f1a64a4
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01829.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Test for bug #1829: Range and precision of time
+--INI--
+xdebug.mode=trace
+xdebug.trace_format=0
+xdebug.start_with_request=no
+xdebug.collect_assignments=0
+xdebug.collect_return=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+var_dump( 42 );
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+int(42)
+TRACE START [20%d-%d-%d %d:%d:%d.%d]
+%w0.%d %w%d     -> var_dump($value = 42) %sbug01829.php:4
+%w0.%d %w%d     -> xdebug_stop_trace() %sbug01829.php:6
+%w0.%d %w%d
+TRACE END   [20%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01837-001.phpt b/xdebug-3.4.5/tests/tracing/bug01837-001.phpt
new file mode 100644
index 0000000..c0550e2
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01837-001.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Test for bug #1837: Support for associative variadic variable names (user-defined)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.0');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+serialize_precision=-1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function takeThemAll(string $one, ...$args)
+{
+}
+
+takeThemAll(one: "test", arg1: 42, arg2: M_PI);
+takeThemAll(arg1: 42, one: "test", arg2: M_PI);
+takeThemAll("test", arg1: 42, arg2: M_PI);
+takeThemAll("test", 42, M_PI);
+takeThemAll("test", 42, arg2: M_PI);
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> takeThemAll($one = 'test', ...$args = variadic($arg1 => 42, $arg2 => 3.141592653589793)) %sbug01837-001.php:8
+%w%f %w%d     -> takeThemAll($one = 'test', ...$args = variadic($arg1 => 42, $arg2 => 3.141592653589793)) %sbug01837-001.php:9
+%w%f %w%d     -> takeThemAll($one = 'test', ...$args = variadic($arg1 => 42, $arg2 => 3.141592653589793)) %sbug01837-001.php:10
+%w%f %w%d     -> takeThemAll($one = 'test', ...$args = variadic(0 => 42, 1 => 3.141592653589793)) %sbug01837-001.php:11
+%w%f %w%d     -> takeThemAll($one = 'test', ...$args = variadic(0 => 42, $arg2 => 3.141592653589793)) %sbug01837-001.php:12
+%w%f %w%d     -> xdebug_stop_trace() %sbug01837-001.php:14
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01837-004.phpt b/xdebug-3.4.5/tests/tracing/bug01837-004.phpt
new file mode 100644
index 0000000..65ec29e
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01837-004.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Test for bug #1837: Support for associative variadic variable names (internal)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.0');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+serialize_precision=-1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function test(...$all) {
+}
+
+call_user_func("test", one: "test", arg1: 42, arg2: M_PI);
+call_user_func("test", arg1: 42, one: "test", arg2: M_PI);
+call_user_func("test", "test", arg1: 42, arg2: M_PI);
+call_user_func("test", "test", 42, M_PI);
+call_user_func("test", "test", 42, arg2: M_PI);
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> call_user_func:{%sbug01837-004.php:7}($callback = 'test', ...$args = variadic($one => 'test', $arg1 => 42, $arg2 => 3.141592653589793)) %sbug01837-004.php:7
+%w%f %w%d       -> test(...$all = variadic($one => 'test', $arg1 => 42, $arg2 => 3.141592653589793)) %sbug01837-004.php:7
+%w%f %w%d     -> call_user_func:{%sbug01837-004.php:8}($callback = 'test', ...$args = variadic($arg1 => 42, $one => 'test', $arg2 => 3.141592653589793)) %sbug01837-004.php:8
+%w%f %w%d       -> test(...$all = variadic($arg1 => 42, $one => 'test', $arg2 => 3.141592653589793)) %sbug01837-004.php:8
+%w%f %w%d     -> call_user_func:{%sbug01837-004.php:9}($callback = 'test', ...$args = variadic(0 => 'test', $arg1 => 42, $arg2 => 3.141592653589793)) %sbug01837-004.php:9
+%w%f %w%d       -> test(...$all = variadic(0 => 'test', $arg1 => 42, $arg2 => 3.141592653589793)) %sbug01837-004.php:9
+%w%f %w%d     -> test(...$all = variadic(0 => 'test', 1 => 42, 2 => 3.141592653589793)) %sbug01837-004.php:10
+%w%f %w%d     -> call_user_func:{%sbug01837-004.php:11}($callback = 'test', ...$args = variadic(0 => 'test', 1 => 42, $arg2 => 3.141592653589793)) %sbug01837-004.php:11
+%w%f %w%d       -> test(...$all = variadic(0 => 'test', 1 => 42, $arg2 => 3.141592653589793)) %sbug01837-004.php:11
+%w%f %w%d     -> xdebug_stop_trace() %sbug01837-004.php:13
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01875-001.phpt b/xdebug-3.4.5/tests/tracing/bug01875-001.phpt
new file mode 100644
index 0000000..663bee6
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01875-001.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Test for bug #1875: Overflow with large amounts of elements for variadics
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$input = '<!DOCTYPE html><body><svg><altGlyph /><altGlyphDef /><altGlyphItem /><animateColor /><animateMotion /><animateTransform /><clipPath /><feBlend /><feColorMatrix /><feComponentTransfer /><feComposite /><feConvolveMatrix /><feDiffuseLighting /><feDisplacementMap /><feDistantLight /><feFlood /><feFuncA /><feFuncB /><feFuncG /><feFuncR /><feGaussianBlur /><feImage /><feMerge /><feMergeNode /><feMorphology /><feOffset /><fePointLight /><feSpecularLighting /><feSpotLight /><feTile /><feTurbulence /><foreignObject /><glyphRef /><linearGradient /><radialGradient /><textPath /></svg>';
+$chars = preg_split('//u', $input, -1, PREG_SPLIT_NO_EMPTY);
+$a = [];
+
+array_push($a, ...$chars);
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> preg_split($pattern = '//u', $subject = '<!DOCTYPE html><body><svg><altGlyph /><altGlyphDef /><altGlyphItem /><animateColor /><animateMotion /><animateTransform /><clipPath /><feBlend /><feColorMatrix /><feComponentTransfer /><feComposite /><feConvolveMatrix /><feDiffuseLighting /><feDisplacementMap /><feDistantLight /><feFlood /><feFuncA /><feFuncB /><feFuncG /><feFuncR /><feGaussianBlur /><feImage /><feMerge /><feMergeNode /><feMorphology /><feOffset /><fePointLight /><feSpecularLighting /><feSpotLight /><feTile /><feTurbulence /><foreignObject '..., $limit = -1, $flags = 1) %sbug01875-001.php:5
+%w%f %w%d     -> array_push($%s = [], ...$%s = variadic(0 => '<', 1 => '!', 2 => 'D', 3 => 'O', 4 => 'C', 5 => 'T', 6 => 'Y', 7 => 'P', 8 => 'E', 9 => ' ', 10 => 'h', 11 => 't', 12 => 'm', 13 => 'l', 14 => '>', 15 => '<', 16 => 'b', 17 => 'o', 18 => 'd', 19 => 'y', 20 => '>', 21 => '<', 22 => 's', 23 => 'v', 24 => 'g', 25 => '>', 26 => '<', 27 => 'a', 28 => 'l', 29 => 't', 30 => 'G', 31 => 'l', 32 => 'y', 33 => 'p', 34 => 'h', 35 => ' ', 36 => '/', 37 => '>', 38 => '<', 39 => 'a', 40 => 'l', 41 => 't', 42 => 'G', 43 => 'l', 44 => 'y', 45 => 'p', 46 => 'h', 47 => 'D', 48 => 'e', 49 => 'f', 50 => ' ', 51 => '/', 52 => '>', 53 => '<', 54 => 'a', 55 => 'l', 56 => 't', 57 => 'G', 58 => 'l', 59 => 'y', 60 => 'p', 61 => 'h', 62 => 'I', 63 => 't', 64 => 'e', 65 => 'm', 66 => ' ', 67 => '/', 68 => '>', 69 => '<', 70 => 'a', 71 => 'n', 72 => 'i', 73 => 'm', 74 => 'a', 75 => 't', 76 => 'e', 77 => 'C', 78 => 'o', 79 => 'l', 80 => 'o', 81 => 'r', 82 => ' ', 83 => '/', 84 => '>', 85 => '<', 86 => 'a', 87 => 'n', 88 => 'i', 89 => 'm', 90 => 'a', 91 => 't', 92 => 'e', 93 => 'M', 94 => 'o', 95 => 't', 96 => 'i', 97 => 'o', 98 => 'n', 99 => ' ', 100 => '/', 101 => '>', 102 => '<', 103 => 'a', 104 => 'n', 105 => 'i', 106 => 'm', 107 => 'a', 108 => 't', 109 => 'e', 110 => 'T', 111 => 'r', 112 => 'a', 113 => 'n', 114 => 's', 115 => 'f', 116 => 'o', 117 => 'r', 118 => 'm', 119 => ' ', 120 => '/', 121 => '>', 122 => '<', 123 => 'c', 124 => 'l', 125 => 'i', 126 => 'p', 127 => 'P', 128 => 'a', 129 => 't', 130 => 'h', 131 => ' ', 132 => '/', 133 => '>', 134 => '<', 135 => 'f', 136 => 'e', 137 => 'B', 138 => 'l', 139 => 'e', 140 => 'n', 141 => 'd', 142 => ' ', 143 => '/', 144 => '>', 145 => '<', 146 => 'f', 147 => 'e', 148 => 'C', 149 => 'o', 150 => 'l', 151 => 'o', 152 => 'r', 153 => 'M', 154 => 'a', 155 => 't', 156 => 'r', 157 => 'i', 158 => 'x', 159 => ' ', 160 => '/', 161 => '>', 162 => '<', 163 => 'f', 164 => 'e', 165 => 'C', 166 => 'o', 167 => 'm', 168 => 'p', 169 => 'o', 170 => 'n', 171 => 'e', 172 => 'n', 173 => 't', 174 => 'T', 175 => 'r', 176 => 'a', 177 => 'n', 178 => 's', 179 => 'f', 180 => 'e', 181 => 'r', 182 => ' ', 183 => '/', 184 => '>', 185 => '<', 186 => 'f', 187 => 'e', 188 => 'C', 189 => 'o', 190 => 'm', 191 => 'p', 192 => 'o', 193 => 's', 194 => 'i', 195 => 't', 196 => 'e', 197 => ' ', 198 => '/', 199 => '>', 200 => '<', 201 => 'f', 202 => 'e', 203 => 'C', 204 => 'o', 205 => 'n', 206 => 'v', 207 => 'o', 208 => 'l', 209 => 'v', 210 => 'e', 211 => 'M', 212 => 'a', 213 => 't', 214 => 'r', 215 => 'i', 216 => 'x', 217 => ' ', 218 => '/', 219 => '>', 220 => '<', 221 => 'f', 222 => 'e', 223 => 'D', 224 => 'i', 225 => 'f', 226 => 'f', 227 => 'u', 228 => 's', 229 => 'e', 230 => 'L', 231 => 'i', 232 => 'g', 233 => 'h', 234 => 't', 235 => 'i', 236 => 'n', 237 => 'g', 238 => ' ', 239 => '/', 240 => '>', 241 => '<', 242 => 'f', 243 => 'e', 244 => 'D', 245 => 'i', 246 => 's', 247 => 'p', 248 => 'l', 249 => 'a', 250 => 'c', 251 => 'e', 252 => 'm', 253 => 'e', 254 => 'n', 255 => 't', 256 => 'M', 257 => 'a', 258 => 'p', 259 => ' ', 260 => '/', 261 => '>', 262 => '<', 263 => 'f', 264 => 'e', 265 => 'D', 266 => 'i', 267 => 's', 268 => 't', 269 => 'a', 270 => 'n', 271 => 't', 272 => 'L', 273 => 'i', 274 => 'g', 275 => 'h', 276 => 't', 277 => ' ', 278 => '/', 279 => '>', 280 => '<', 281 => 'f', 282 => 'e', 283 => 'F', 284 => 'l', 285 => 'o', 286 => 'o', 287 => 'd', 288 => ' ', 289 => '/', 290 => '>', 291 => '<', 292 => 'f', 293 => 'e', 294 => 'F', 295 => 'u', 296 => 'n', 297 => 'c', 298 => 'A', 299 => ' ', 300 => '/', 301 => '>', 302 => '<', 303 => 'f', 304 => 'e', 305 => 'F', 306 => 'u', 307 => 'n', 308 => 'c', 309 => 'B', 310 => ' ', 311 => '/', 312 => '>', 313 => '<', 314 => 'f', 315 => 'e', 316 => 'F', 317 => 'u', 318 => 'n', 319 => 'c', 320 => 'G', 321 => ' ', 322 => '/', 323 => '>', 324 => '<', 325 => 'f', 326 => 'e', 327 => 'F', 328 => 'u', 329 => 'n', 330 => 'c', 331 => 'R', 332 => ' ', 333 => '/', 334 => '>', 335 => '<', 336 => 'f', 337 => 'e', 338 => 'G', 339 => 'a', 340 => 'u', 341 => 's', 342 => 's', 343 => 'i', 344 => 'a', 345 => 'n', 346 => 'B', 347 => 'l', 348 => 'u', 349 => 'r', 350 => ' ', 351 => '/', 352 => '>', 353 => '<', 354 => 'f', 355 => 'e', 356 => 'I', 357 => 'm', 358 => 'a', 359 => 'g', 360 => 'e', 361 => ' ', 362 => '/', 363 => '>', 364 => '<', 365 => 'f', 366 => 'e', 367 => 'M', 368 => 'e', 369 => 'r', 370 => 'g', 371 => 'e', 372 => ' ', 373 => '/', 374 => '>', 375 => '<', 376 => 'f', 377 => 'e', 378 => 'M', 379 => 'e', 380 => 'r', 381 => 'g', 382 => 'e', 383 => 'N', 384 => 'o', 385 => 'd', 386 => 'e', 387 => ' ', 388 => '/', 389 => '>', 390 => '<', 391 => 'f', 392 => 'e', 393 => 'M', 394 => 'o', 395 => 'r', 396 => 'p', 397 => 'h', 398 => 'o', 399 => 'l', 400 => 'o', 401 => 'g', 402 => 'y', 403 => ' ', 404 => '/', 405 => '>', 406 => '<', 407 => 'f', 408 => 'e', 409 => 'O', 410 => 'f', 411 => 'f', 412 => 's', 413 => 'e', 414 => 't', 415 => ' ', 416 => '/', 417 => '>', 418 => '<', 419 => 'f', 420 => 'e', 421 => 'P', 422 => 'o', 423 => 'i', 424 => 'n', 425 => 't', 426 => 'L', 427 => 'i', 428 => 'g', 429 => 'h', 430 => 't', 431 => ' ', 432 => '/', 433 => '>', 434 => '<', 435 => 'f', 436 => 'e', 437 => 'S', 438 => 'p', 439 => 'e', 440 => 'c', 441 => 'u', 442 => 'l', 443 => 'a', 444 => 'r', 445 => 'L', 446 => 'i', 447 => 'g', 448 => 'h', 449 => 't', 450 => 'i', 451 => 'n', 452 => 'g', 453 => ' ', 454 => '/', 455 => '>', 456 => '<', 457 => 'f', 458 => 'e', 459 => 'S', 460 => 'p', 461 => 'o', 462 => 't', 463 => 'L', 464 => 'i', 465 => 'g', 466 => 'h', 467 => 't', 468 => ' ', 469 => '/', 470 => '>', 471 => '<', 472 => 'f', 473 => 'e', 474 => 'T', 475 => 'i', 476 => 'l', 477 => 'e', 478 => ' ', 479 => '/', 480 => '>', 481 => '<', 482 => 'f', 483 => 'e', 484 => 'T', 485 => 'u', 486 => 'r', 487 => 'b', 488 => 'u', 489 => 'l', 490 => 'e', 491 => 'n', 492 => 'c', 493 => 'e', 494 => ' ', 495 => '/', 496 => '>', 497 => '<', 498 => 'f', 499 => 'o', 500 => 'r', 501 => 'e', 502 => 'i', 503 => 'g', 504 => 'n', 505 => 'O', 506 => 'b', 507 => 'j', 508 => 'e', 509 => 'c', 510 => 't', 511 => ' ', 512 => '/', 513 => '>', 514 => '<', 515 => 'g', 516 => 'l', 517 => 'y', 518 => 'p', 519 => 'h', 520 => 'R', 521 => 'e', 522 => 'f', 523 => ' ', 524 => '/', 525 => '>', 526 => '<', 527 => 'l', 528 => 'i', 529 => 'n', 530 => 'e', 531 => 'a', 532 => 'r', 533 => 'G', 534 => 'r', 535 => 'a', 536 => 'd', 537 => 'i', 538 => 'e', 539 => 'n', 540 => 't', 541 => ' ', 542 => '/', 543 => '>', 544 => '<', 545 => 'r', 546 => 'a', 547 => 'd', 548 => 'i', 549 => 'a', 550 => 'l', 551 => 'G', 552 => 'r', 553 => 'a', 554 => 'd', 555 => 'i', 556 => 'e', 557 => 'n', 558 => 't', 559 => ' ', 560 => '/', 561 => '>', 562 => '<', 563 => 't', 564 => 'e', 565 => 'x', 566 => 't', 567 => 'P', 568 => 'a', 569 => 't', 570 => 'h', 571 => ' ', 572 => '/', 573 => '>', 574 => '<', 575 => '/', 576 => 's', 577 => 'v', 578 => 'g', 579 => '>')) %sbug01875-001.php:8
+%w%f %w%d     -> xdebug_stop_trace() %sbug01875-001.php:10
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01875-002.phpt b/xdebug-3.4.5/tests/tracing/bug01875-002.phpt
new file mode 100644
index 0000000..1db839b
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01875-002.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Test for bug #1875: Overflow with large amounts of elements for variadics
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$a = [];
+
+$input1 = array_fill(0, 65534, 65534);
+$input2 = array_fill(0, 65535, 65535);
+
+array_push($a, ...$input1);
+array_push($a, ...$input2);
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> array_fill($%s = 0, $%s = 65534, $%s = 65534) %sbug01875-002.php:6
+%w%f %w%d     -> array_fill($%s = 0, $%s = 65535, $%s = 65535) %sbug01875-002.php:7
+%w%f %w%d     -> array_push($%s = [], ...$%s = variadic(%s)) %sbug01875-002.php:9
+%w%f %w%d     -> array_push() %sbug01875-002.php:10
+%w%f %w%d     -> xdebug_stop_trace() %sbug01875-002.php:12
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01896-php81.phpt b/xdebug-3.4.5/tests/tracing/bug01896-php81.phpt
new file mode 100644
index 0000000..53eaadc
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01896-php81.phpt
@@ -0,0 +1,34 @@
+--TEST--
+Test for bug #1896: Crash with Closure::fromCallable (< PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.2');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$a = new \ReflectionClass(\stdClass::class);
+$b = \Closure::fromCallable([$a, 'newInstanceWithoutConstructor']);
+$c = $b();
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> ReflectionClass->__construct($%s = 'stdClass') %sbug01896-php81.php:4
+%w%f %w%d      >=> NULL
+%w%f %w%d     -> Closure::fromCallable($call%s = [0 => class ReflectionClass { public %S$name = 'stdClass' }, 1 => 'newInstanceWithoutConstructor']) %sbug01896-php81.php:5
+%w%f %w%d      >=> class Closure { virtual $closure = "$this->newInstanceWithoutConstructor", public $this = class ReflectionClass { public %S$name = 'stdClass' } }
+%w%f %w%d     -> ReflectionClass->newInstanceWithoutConstructor() %sbug01896-php81.php:6
+%w%f %w%d      >=> class stdClass {  }
+%w%f %w%d     -> xdebug_stop_trace() %sbug01896-php81.php:8
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01896-php82.phpt b/xdebug-3.4.5/tests/tracing/bug01896-php82.phpt
new file mode 100644
index 0000000..657990c
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01896-php82.phpt
@@ -0,0 +1,34 @@
+--TEST--
+Test for bug #1896: Crash with Closure::fromCallable (>= PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$a = new \ReflectionClass(\stdClass::class);
+$b = \Closure::fromCallable([$a, 'newInstanceWithoutConstructor']);
+$c = $b();
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> ReflectionClass->__construct($%s = 'stdClass') %sbug01896-php82.php:4
+%w%f %w%d      >=> NULL
+%w%f %w%d     -> Closure::fromCallable($call%s = [0 => class ReflectionClass { public %S$name = 'stdClass' }, 1 => 'newInstanceWithoutConstructor']) %sbug01896-php82.php:5
+%w%f %w%d      >=> class Closure { public $function = 'ReflectionClass::newInstanceWithoutConstructor'; public $this = class ReflectionClass { public string $name = 'stdClass' } }
+%w%f %w%d     -> ReflectionClass->newInstanceWithoutConstructor() %sbug01896-php82.php:6
+%w%f %w%d      >=> class stdClass {  }
+%w%f %w%d     -> xdebug_stop_trace() %sbug01896-php82.php:8
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01903-001.phpt b/xdebug-3.4.5/tests/tracing/bug01903-001.phpt
new file mode 100644
index 0000000..eaa6786
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01903-001.phpt
@@ -0,0 +1,10 @@
+--TEST--
+Test for bug #1903: Tracing constants are only defined with mode=tracing
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+echo XDEBUG_TRACE_APPEND, ' ', XDEBUG_TRACE_COMPUTERIZED, ' ', XDEBUG_TRACE_HTML, "\n";
+?>
+--EXPECT--
+1 2 4
diff --git a/xdebug-3.4.5/tests/tracing/bug01903-002.phpt b/xdebug-3.4.5/tests/tracing/bug01903-002.phpt
new file mode 100644
index 0000000..72ddfaf
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01903-002.phpt
@@ -0,0 +1,16 @@
+--TEST--
+Test for bug #1903: Tracing constants should be defined with mode=off
+--INI--
+xdebug.mode=off
+--FILE--
+<?php
+var_dump(
+	defined( 'XDEBUG_TRACE_APPEND' ),
+	defined( 'XDEBUG_TRACE_COMPUTERIZED' ),
+	defined( 'XDEBUG_TRACE_HTML' )
+);
+?>
+--EXPECT--
+bool(true)
+bool(true)
+bool(true)
diff --git a/xdebug-3.4.5/tests/tracing/bug01927.phpt b/xdebug-3.4.5/tests/tracing/bug01927.phpt
new file mode 100644
index 0000000..f99ca2e
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01927.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Test for bug #1927: Crash when calling xdebug_stop_trace without a trace in progress
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+--FILE--
+<?php
+var_dump(xdebug_stop_trace());
+?>
+--EXPECTF--
+%sFunction trace was not started in %s
+bool(false)
diff --git a/xdebug-3.4.5/tests/tracing/bug01944.phpt b/xdebug-3.4.5/tests/tracing/bug01944.phpt
new file mode 100644
index 0000000..1cc7426
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01944.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Test for bug #1944: tracing is started without trigger, when profiler is also enabled
+--INI--
+xdebug.mode=trace,profile
+xdebug.start_with_request=default
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+$fileName = xdebug_get_tracefile_name();
+var_dump($fileName);
+@unlink($fileName);
+
+$fileName = xdebug_get_profiler_filename();
+var_dump($fileName);
+@unlink($fileName);
+?>
+--EXPECTF--
+bool(false)
+string(%d) "%s"
diff --git a/xdebug-3.4.5/tests/tracing/bug01950.phpt b/xdebug-3.4.5/tests/tracing/bug01950.phpt
new file mode 100644
index 0000000..ae4e5c7
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01950.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Test for bug #1950: Assignment trace with ASSIGN_OBJ_REF crashes
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+final class SessionBag
+{
+    private $data;
+	static private $dataAgain;
+
+    public function __construct(array &$data)
+    {
+        $this->data = &$data;
+    }
+
+	static public function set(array &$data)
+	{
+		self::$dataAgain = &$data;
+	}
+}
+
+$data = [ 'one', 'two', 'three' ];
+$a = new SessionBag( $data );
+SessionBag::set( $data );
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w               => $tf = '%s' %s
+%w             => $data = [0 => 'one', 1 => 'two', 2 => 'three'] %sbug01950.php:20
+%w%f %w%d     -> SessionBag->__construct($data = [0 => 'one', 1 => 'two', 2 => 'three']) %sbug01950.php:21
+%w               => $this->data =& $data %sbug01950.php:11
+%w             => $a = class SessionBag { private $data = [0 => 'one', 1 => 'two', 2 => 'three'] } %sbug01950.php:21
+%w%f %w%d     -> SessionBag::set($data = [0 => 'one', 1 => 'two', 2 => 'three']) %sbug01950.php:22
+%w               => self::dataAgain =& $data %sbug01950.php:16
+%w%f %w%d     -> xdebug_stop_trace() %sbug01950.php:24
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01954.phpt b/xdebug-3.4.5/tests/tracing/bug01954.phpt
new file mode 100644
index 0000000..d8eef63
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01954.phpt
@@ -0,0 +1,16 @@
+--TEST--
+Test for bug #1954: Calling xdebug_start_trace without mode including tracing results in a fatal error
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+?>
+--INI--
+xdebug.mode=off
+--FILE--
+<?php
+$tf = xdebug_start_trace(sys_get_temp_dir() . '/'. uniqid('xdt', TRUE));
+var_dump( $tf );
+?>
+--EXPECTF--
+Notice: Functionality is not enabled in %sbug01954.php on line 2
+NULL
diff --git a/xdebug-3.4.5/tests/tracing/bug01996-001-php81.phpt b/xdebug-3.4.5/tests/tracing/bug01996-001-php81.phpt
new file mode 100644
index 0000000..587dbb2
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01996-001-php81.phpt
@@ -0,0 +1,65 @@
+--TEST--
+Test for bug #1996: Show wrapped callable for closures in traces (< PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.2');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+xdebug.trace_format=0
+date.timezone=UTC
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+
+$closure = Closure::fromCallable('substr');
+echo $closure("OH NO!", 3);
+
+
+function user_defined($a, $b)
+{
+	return substr($a, $b);
+}
+$closure = Closure::fromCallable('user_defined');
+echo $closure("OH NO!", 3);
+
+
+$closure = Closure::fromCallable(['DateTimeImmutable', 'createFromFormat']);
+echo $closure("!Y-m-d", "2021-07-22")->format("Y m d\n");
+
+
+$dateTime = new DateTimeImmutable("2021-07-22");
+$closure = Closure::fromCallable([$dateTime, 'format']);
+$closure("Y-m-d\n");
+
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+NO!NO!2021 07 22
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w               => $tf = '%sxt%S' %s:%d
+%w%f %w%d     -> Closure::fromCallable($call%s = 'substr') %sbug01996-001-php81.php:5
+%w             => $closure = class Closure { virtual $closure = "substr", public $parameter = ['$%s' => '<required>', '$%s' => '<required>', '$length' => '<optional>'] } %sbug01996-001-php81.php:5
+%w%f %w%d     -> substr($%s = 'OH NO!', $%s = 3) %sbug01996-001-php81.php:6
+%w%f %w%d     -> Closure::fromCallable($call%s = 'user_defined') %sbug01996-001-php81.php:13
+%w             => $closure = class Closure { virtual $closure = "user_defined", public $parameter = ['$a' => '<required>', '$b' => '<required>'] } %sbug01996-001-php81.php:13
+%w%f %w%d     -> user_defined($a = 'OH NO!', $b = 3) %sbug01996-001-php81.php:14
+%w%f %w%d       -> substr($%s = 'OH NO!', $%s = 3) %sbug01996-001-php81.php:11
+%w%f %w%d     -> Closure::fromCallable($call%s = [0 => 'DateTimeImmutable', 1 => 'createFromFormat']) %sbug01996-001-php81.php:17
+%w             => $closure = class Closure { virtual $closure = "DateTimeImmutable::createFromFormat", public $parameter = ['$format' => '<required>', '$%s' => '<required>', '$%s' => '<optional>'] } %sbug01996-001-php81.php:17
+%w%f %w%d     -> DateTimeImmutable::createFromFormat($format = '!Y-m-d', $%s = '2021-07-22') %sbug01996-001-php81.php:18
+%w%f %w%d     -> DateTimeImmutable->format($format = 'Y m d\n') %sbug01996-001-php81.php:18
+%w%f %w%d     -> DateTimeImmutable->__construct($%s = '2021-07-22') %sbug01996-001-php81.php:21
+%w             => $dateTime = class DateTimeImmutable { public $date = '2021-07-22 00:00:00.000000'; public $timezone_type = 3; public $timezone = 'UTC' } %sbug01996-001-php81.php:21
+%w%f %w%d     -> Closure::fromCallable($call%s = [0 => class DateTimeImmutable { public $date = '2021-07-22 00:00:00.000000'; public $timezone_type = 3; public $timezone = 'UTC' }, 1 => 'format']) %sbug01996-001-php81.php:22
+%w             => $closure = class Closure { virtual $closure = "$this->format", public $this = class DateTimeImmutable { public $date = '2021-07-22 00:00:00.000000'; public $timezone_type = 3; public $timezone = 'UTC' }; public $parameter = ['$format' => '<required>'] } %sbug01996-001-php81.php:22
+%w%f %w%d     -> DateTimeImmutable->format($format = 'Y-m-d\n') %sbug01996-001-php81.php:23
+%w%f %w%d     -> xdebug_stop_trace() %sbug01996-001-php81.php:26
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01996-001-php82.phpt b/xdebug-3.4.5/tests/tracing/bug01996-001-php82.phpt
new file mode 100644
index 0000000..ec2d501
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01996-001-php82.phpt
@@ -0,0 +1,65 @@
+--TEST--
+Test for bug #1996: Show wrapped callable for closures in traces (>= PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+xdebug.trace_format=0
+date.timezone=UTC
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+
+$closure = Closure::fromCallable('substr');
+echo $closure("OH NO!", 3);
+
+
+function user_defined($a, $b)
+{
+	return substr($a, $b);
+}
+$closure = Closure::fromCallable('user_defined');
+echo $closure("OH NO!", 3);
+
+
+$closure = Closure::fromCallable(['DateTimeImmutable', 'createFromFormat']);
+echo $closure("!Y-m-d", "2021-07-22")->format("Y m d\n");
+
+
+$dateTime = new DateTimeImmutable("2021-07-22");
+$closure = Closure::fromCallable([$dateTime, 'format']);
+$closure("Y-m-d\n");
+
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+NO!NO!2021 07 22
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w               => $tf = '%sxt%S' %s:%d
+%w%f %w%d     -> Closure::fromCallable($call%s = 'substr') %sbug01996-001-php82.php:5
+%w             => $closure = class Closure { public $function = 'substr'; public $parameter = ['$string' => '<required>', '$offset' => '<required>', '$length' => '<optional>'] } %sbug01996-001-php82.php:5
+%w%f %w%d     -> substr($%s = 'OH NO!', $%s = 3) %sbug01996-001-php82.php:6
+%w%f %w%d     -> Closure::fromCallable($call%s = 'user_defined') %sbug01996-001-php82.php:13
+%w             => $closure = class Closure { public $function = 'user_defined'; public $parameter = ['$a' => '<required>', '$b' => '<required>'] } %sbug01996-001-php82.php:13
+%w%f %w%d     -> user_defined($a = 'OH NO!', $b = 3) %sbug01996-001-php82.php:14
+%w%f %w%d       -> substr($%s = 'OH NO!', $%s = 3) %sbug01996-001-php82.php:11
+%w%f %w%d     -> Closure::fromCallable($call%s = [0 => 'DateTimeImmutable', 1 => 'createFromFormat']) %sbug01996-001-php82.php:17
+%w             => $closure = class Closure { public $function = 'DateTimeImmutable::createFromFormat'; public $parameter = ['$format' => '<required>', '$datetime' => '<required>', '$timezone' => '<optional>'] } %sbug01996-001-php82.php:17
+%w%f %w%d     -> DateTimeImmutable::createFromFormat($format = '!Y-m-d', $%s = '2021-07-22') %sbug01996-001-php82.php:18
+%w%f %w%d     -> DateTimeImmutable->format($format = 'Y m d\n') %sbug01996-001-php82.php:18
+%w%f %w%d     -> DateTimeImmutable->__construct($%s = '2021-07-22') %sbug01996-001-php82.php:21
+%w             => $dateTime = class DateTimeImmutable { public $date = '2021-07-22 00:00:00.000000'; public $timezone_type = 3; public $timezone = 'UTC' } %sbug01996-001-php82.php:21
+%w%f %w%d     -> Closure::fromCallable($call%s = [0 => class DateTimeImmutable { public $date = '2021-07-22 00:00:00.000000'; public $timezone_type = 3; public $timezone = 'UTC' }, 1 => 'format']) %sbug01996-001-php82.php:22
+%w             => $closure = class Closure { public $function = 'DateTimeImmutable::format'; public $this = class DateTimeImmutable { public $date = '2021-07-22 00:00:00.000000'; public $timezone_type = 3; public $timezone = 'UTC' }; public $parameter = ['$format' => '<required>'] } %sbug01996-001-php82.php:22
+%w%f %w%d     -> DateTimeImmutable->format($format = 'Y-m-d\n') %sbug01996-001-php82.php:23
+%w%f %w%d     -> xdebug_stop_trace() %sbug01996-001-php82.php:26
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01996-002-php81.phpt b/xdebug-3.4.5/tests/tracing/bug01996-002-php81.phpt
new file mode 100644
index 0000000..908e407
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01996-002-php81.phpt
@@ -0,0 +1,49 @@
+--TEST--
+Test for bug #1996: Show wrapped callable for first class callables in traces (PHP 8.1)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1,< 8.2');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+
+$closure = substr(...);
+
+
+function user_defined($a, $b)
+{
+	return substr($a, $b);
+}
+$closure = user_defined(...);
+
+
+$closure = DateTimeImmutable::createFromFormat(...);
+
+
+$dateTime = new DateTimeImmutable("2021-07-22");
+$closure = $dateTime->format(...);
+
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w               => $tf = '%s' %s
+%w             => $closure = class Closure { virtual $closure = "substr", public $parameter = ['$string' => '<required>', '$offset' => '<required>', '$length' => '<optional>'] } %sbug01996-002-php81.php:5
+%w             => $closure = class Closure { virtual $closure = "user_defined", public $parameter = ['$a' => '<required>', '$b' => '<required>'] } %sbug01996-002-php81.php:12
+%w             => $closure = class Closure { virtual $closure = "DateTimeImmutable::createFromFormat", public $parameter = ['$format' => '<required>', '$datetime' => '<required>', '$timezone' => '<optional>'] } %sbug01996-002-php81.php:15
+%w%f %w%d     -> DateTimeImmutable->__construct($datetime = '2021-07-22') %sbug01996-002-php81.php:18
+%w             => $dateTime = class DateTimeImmutable { public $date = '2021-07-22 00:00:00.000000'; public $timezone_type = 3; public $timezone = 'UTC' } %sbug01996-002-php81.php:18
+%w             => $closure = class Closure { virtual $closure = "$this->format", public $this = class DateTimeImmutable { public $date = '2021-07-22 00:00:00.000000'; public $timezone_type = 3; public $timezone = 'UTC' }; public $parameter = ['$format' => '<required>'] } %sbug01996-002-php81.php:19
+%w%f %w%d     -> xdebug_stop_trace() %sbug01996-002-php81.php:22
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01996-002-php82.phpt b/xdebug-3.4.5/tests/tracing/bug01996-002-php82.phpt
new file mode 100644
index 0000000..c0e363b
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01996-002-php82.phpt
@@ -0,0 +1,49 @@
+--TEST--
+Test for bug #1996: Show wrapped callable for first class callables in traces (>= PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+
+$closure = substr(...);
+
+
+function user_defined($a, $b)
+{
+	return substr($a, $b);
+}
+$closure = user_defined(...);
+
+
+$closure = DateTimeImmutable::createFromFormat(...);
+
+
+$dateTime = new DateTimeImmutable("2021-07-22");
+$closure = $dateTime->format(...);
+
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w               => $tf = '%s' %s
+%w             => $closure = class Closure { public $function = 'substr'; public $parameter = ['$string' => '<required>', '$offset' => '<required>', '$length' => '<optional>'] } %sbug01996-002-php82.php:5
+%w             => $closure = class Closure { public $function = 'user_defined'; public $parameter = ['$a' => '<required>', '$b' => '<required>'] } %sbug01996-002-php82.php:12
+%w             => $closure = class Closure { public $function = 'DateTimeImmutable::createFromFormat'; public $parameter = ['$format' => '<required>', '$datetime' => '<required>', '$timezone' => '<optional>'] } %sbug01996-002-php82.php:15
+%w%f %w%d     -> DateTimeImmutable->__construct($datetime = '2021-07-22') %sbug01996-002-php82.php:18
+%w             => $dateTime = class DateTimeImmutable { public $date = '2021-07-22 00:00:00.000000'; public $timezone_type = 3; public $timezone = 'UTC' } %sbug01996-002-php82.php:18
+%w             => $closure = class Closure { public $function = 'DateTimeImmutable::format'; public $this = class DateTimeImmutable { public $date = '2021-07-22 00:00:00.000000'; public $timezone_type = 3; public $timezone = 'UTC' }; public $parameter = ['$format' => '<required>'] } %sbug01996-002-php82.php:19
+%w%f %w%d     -> xdebug_stop_trace() %sbug01996-002-php82.php:22
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug01999.phpt b/xdebug-3.4.5/tests/tracing/bug01999.phpt
new file mode 100644
index 0000000..f6521b4
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug01999.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Test for bug #1999: Show readonly properties (PHP >= 8.1)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+
+class WithReadOnlyProps
+{
+	static int $static_int = 1;
+
+	function __construct(
+		public string $static_string = "two",
+		public readonly string $ro_string = "readonly-default",
+	) {}
+}
+
+$obj = new WithReadOnlyProps(ro_string: "New Value");
+
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w               => $tf = '%s' %s
+%w%f %w%d     -> WithReadOnlyProps->__construct($static_string = 'two', $ro_string = 'New Value') %sbug01999.php:15
+%w               => $this->static_string = 'two' %sbug01999.php:9
+%w               => $this->ro_string = 'New Value' %sbug01999.php:9
+%w              => $obj = class WithReadOnlyProps { public string $static_string = 'two'; public readonly string $ro_string = 'New Value' } %sbug01999.php:15
+%w%f %w%d     -> xdebug_stop_trace() %sbug01999.php:18
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug02054.phpt b/xdebug-3.4.5/tests/tracing/bug02054.phpt
new file mode 100644
index 0000000..50a5a26
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug02054.phpt
@@ -0,0 +1,29 @@
+--TEST--
+Test for bug #2054: Incorrectly truncated string
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+xdebug.trace_format=0
+xdebug.var_display_max_data=9
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+$string = str_repeat("'", 64);
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w               => $tf = '%s'... %s
+%w%f %w%d     -> str_repeat($%s = '\'', $%s = 64) %sbug02054.php:4
+%w               => $string = '\'\'\'\'\'\'\'\'\''... %sbug02054.php:4
+%w%f %w%d     -> xdebug_stop_trace() %sbug02054.php:6
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug02104-001.phpt b/xdebug-3.4.5/tests/tracing/bug02104-001.phpt
new file mode 100644
index 0000000..0a1ddc5
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug02104-001.phpt
@@ -0,0 +1,39 @@
+--TEST--
+Test for bug #2104: SensitiveParameter attribute in trace files
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+xdebug.trace_format=0
+xdebug.var_display_max_data=128
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function takeThemAll(#[SensitiveParameter] string $secret, string $notSecret)
+{
+}
+
+function takeSplat(string $user, #[SensitiveParameter] string ...$secrets)
+{
+}
+
+takeThemAll("secret password", "username");
+takeSplat("username", "hunter12", "tiger34");
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w               => $tf = '%s' %scapture-trace.inc:17
+%w%f %w%d     -> takeThemAll($secret = '[Sensitive Parameter]', $notSecret = 'username') %sbug02104-001.php:12
+%w%f %w%d     -> takeSplat($user = 'username', ...$secrets = variadic(0 => '[Sensitive Parameter]', 1 => '[Sensitive Parameter]')) %sbug02104-001.php:13
+%w%f %w%d     -> xdebug_stop_trace() %sbug02104-001.php:15
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug02104-002.phpt b/xdebug-3.4.5/tests/tracing/bug02104-002.phpt
new file mode 100644
index 0000000..3c49894
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug02104-002.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Test for bug #2104: SensitiveParameter attribute in trace files for internal functions
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext hash; PHP >= 8.2');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+xdebug.trace_format=0
+xdebug.var_display_max_data=128
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+hash_equals('foo', 'key');
+hash_hmac('sha256', 'bar', 'baz');
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w               => $tf = '%s' %scapture-trace.inc:17
+%w%f %w%d     -> hash_equals($known_string = '[Sensitive Parameter]', $user_string = '[Sensitive Parameter]') %sbug02104-002.php:4
+%w%f %w%d     -> hash_hmac($algo = 'sha256', $data = 'bar', $key = '[Sensitive Parameter]') %sbug02104-002.php:5
+%w%f %w%d     -> xdebug_stop_trace() %sbug02104-002.php:7
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug02127-001-php81.phpt b/xdebug-3.4.5/tests/tracing/bug02127-001-php81.phpt
new file mode 100644
index 0000000..12a8342
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug02127-001-php81.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test for bug #2127: Tracing does not handle NUL char in anonymous closure scope (< PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.2');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=1
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+class Test
+{
+	private $configureException;
+
+	function __construct()
+	{
+		$this->configureException = \Closure::bind(
+			static function($a, $b) { return $a * $b; },
+			null,
+			new class() extends \Exception {}
+		);
+	}
+}
+
+$t = new Test;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w               => $tf = '%s' %s
+%w%f %w%d     -> Test->__construct() %sbug02127-001-php81.php:18
+%w%f %w%d       -> Exception->__construct() %sbug02127-001-php81.php:13
+%w%f %w%d        >=> NULL
+%w%f %w%d       -> Closure::bind($closure = class Closure { virtual $closure = "Test::{closure}", public $parameter = ['$a' => '<required>', '$b' => '<required>'] }, $newThis = NULL, $newScope = class Exception@anonymous { protected $message = ''; private %S${Exception}string = ''; protected $code = 0; protected %S$file = '%sbug02127-001-php81.php'; protected %S$line = 13; private array ${Exception}trace = [0 => [...]]; private ?Throwable ${Exception}previous = NULL }) %sbug02127-001-php81.php:13
+%w%f %w%d        >=> class Closure { virtual $closure = "Exception@anonymous::{closure}", public $parameter = ['$a' => '<required>', '$b' => '<required>'] }
+                             => $this->configureException = class Closure { virtual $closure = "Exception@anonymous::{closure}", public $parameter = ['$a' => '<required>', '$b' => '<required>'] } %sbug02127-001-php81.php:10
+                           => $t = class Test { private $configureException = class Closure { virtual $closure = "Exception@anonymous::{closure}", public $parameter = [...] } } %sbug02127-001-php81.php:18
+%w%f %w%d     -> xdebug_stop_trace() %sbug02127-001-php81.php:20
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug02127-001-php82.phpt b/xdebug-3.4.5/tests/tracing/bug02127-001-php82.phpt
new file mode 100644
index 0000000..b49247b
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug02127-001-php82.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test for bug #2127: Tracing does not handle NUL char in anonymous closure scope (>= PHP 8.2, < PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2,< 8.4');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=1
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+class Test
+{
+	private $configureException;
+
+	function __construct()
+	{
+		$this->configureException = \Closure::bind(
+			static function($a, $b) { return $a * $b; },
+			null,
+			new class() extends \Exception {}
+		);
+	}
+}
+
+$t = new Test;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w               => $tf = '%s' %s
+%w%f %w%d     -> Test->__construct() %sbug02127-001-php82.php:18
+%w%f %w%d       -> Exception->__construct() %sbug02127-001-php82.php:13
+%w%f %w%d        >=> NULL
+%w%f %w%d       -> Closure::bind($closure = class Closure { public $parameter = ['$a' => '<required>', '$b' => '<required>'] }, $newThis = NULL, $newScope = class Exception@anonymous { protected $message = ''; private string ${Exception}string = ''; protected $code = 0; protected string $file = '%sbug02127-001-php82.php'; protected int $line = 13; private array ${Exception}trace = [0 => [...]]; private ?Throwable ${Exception}previous = NULL }) %sbug02127-001-php82.php:10
+%w%f %w%d        >=> class Closure { public $parameter = ['$a' => '<required>', '$b' => '<required>'] }
+                             => $this->configureException = class Closure { public $parameter = ['$a' => '<required>', '$b' => '<required>'] } %sbug02127-001-php82.php:10
+                           => $t = class Test { private $configureException = class Closure { public $parameter = [...] } } %sbug02127-001-php82.php:18
+%w%f %w%d     -> xdebug_stop_trace() %sbug02127-001-php82.php:20
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug02127-001-php84.phpt b/xdebug-3.4.5/tests/tracing/bug02127-001-php84.phpt
new file mode 100644
index 0000000..26ba5c8
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug02127-001-php84.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test for bug #2127: Tracing does not handle NUL char in anonymous closure scope (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=1
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+class Test
+{
+	private $configureException;
+
+	function __construct()
+	{
+		$this->configureException = \Closure::bind(
+			static function($a, $b) { return $a * $b; },
+			null,
+			new class() extends \Exception {}
+		);
+	}
+}
+
+$t = new Test;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w               => $tf = '%s' %s
+%w%f %w%d     -> Test->__construct() %sbug02127-001-php84.php:18
+%w%f %w%d       -> Exception->__construct() %sbug02127-001-php84.php:13
+%w%f %w%d        >=> NULL
+%w%f %w%d       -> Closure::bind($closure = class Closure { public $name = '{closure:Test::__construct():11}'; public $file = '%sbug02127-001-php84.php'; public $line = 11; public $parameter = ['$a' => '<required>', '$b' => '<required>'] }, $newThis = NULL, $newScope = class Exception@anonymous { protected $message = ''; private string ${Exception}string = ''; protected $code = 0; protected string $file = '%sbug02127-001-php84.php'; protected int $line = 13; private array ${Exception}trace = [0 => [...]]; private ?Throwable ${Exception}previous = NULL }) %sbug02127-001-php84.php:10
+%w%f %w%d        >=> class Closure { public $name = '{closure:Test::__construct():11}'; public $file = '%sbug02127-001-php84.php'; public $line = 11; public $parameter = ['$a' => '<required>', '$b' => '<required>'] }
+                             => $this->configureException = class Closure { public $name = '{closure:Test::__construct():11}'; public $file = '%sbug02127-001-php84.php'; public $line = 11; public $parameter = ['$a' => '<required>', '$b' => '<required>'] } %sbug02127-001-php84.php:10
+                           => $t = class Test { private $configureException = class Closure { public $name = '{closure:Test::__construct():11}'; public $file = '%sbug02127-001-php84.php'; public $line = 11; public $parameter = [...] } } %sbug02127-001-php84.php:18
+%w%f %w%d     -> xdebug_stop_trace() %sbug02127-001-php84.php:20
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug02127-002-php81.phpt b/xdebug-3.4.5/tests/tracing/bug02127-002-php81.phpt
new file mode 100644
index 0000000..faef462
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug02127-002-php81.phpt
@@ -0,0 +1,54 @@
+--TEST--
+Test for bug #2127: Tracing does not handle NUL char in anonymous closure scope (< PHP 8.2)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP < 8.2');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=1
+xdebug.trace_format=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+class Test
+{
+	private $configureException;
+
+	function __construct()
+	{
+		$this->configureException = \Closure::bind(
+			static function($a, $b) { return $a * $b; },
+			null,
+			new class() extends \Exception {}
+		);
+	}
+}
+
+$t = new Test;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+Version: %s
+File format: 4
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+2		A						%scapture-trace.inc	17	$tf = '%s'
+2	1	1	%f	%d
+2	7	0	%f	%d	Test->__construct	1		%sbug02127-002-php81.php	18	0
+3	8	0	%f	%d	Exception->__construct	0		%sbug02127-002-php81.php	13	0
+3	8	1	%f	%d
+3	8	R			NULL
+3	9	0	%f	%d	Closure::bind	0		%sbug02127-002-php81.php	13	3	class Closure { virtual $closure = "Test::{closure}", public $parameter = ['$a' => '<required>', '$b' => '<required>'] }	NULL	class Exception@anonymous { protected $message = ''; private %S${Exception}string = ''; protected $code = 0; protected %S$file = '%sbug02127-002-php81.php'; protected %S$line = 13; private array ${Exception}trace = [0 => [...]]; private ?Throwable ${Exception}previous = NULL }
+3	9	1	%f	%d
+3	9	R			class Closure { virtual $closure = "Exception@anonymous::{closure}", public $parameter = ['$a' => '<required>', '$b' => '<required>'] }
+2		A						%sbug02127-002-php81.php	10	$this->configureException = class Closure { virtual $closure = "Exception@anonymous::{closure}", public $parameter = ['$a' => '<required>', '$b' => '<required>'] }
+2	7	1	%f	%d
+1		A						%sbug02127-002-php81.php	18	$t = class Test { private $configureException = class Closure { virtual $closure = "Exception@anonymous::{closure}", public $parameter = [...] } }
+2	10	0	%f	%d	xdebug_stop_trace	0		%sbug02127-002-php81.php	20	0
+			%f	%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug02127-002-php82.phpt b/xdebug-3.4.5/tests/tracing/bug02127-002-php82.phpt
new file mode 100644
index 0000000..c6e34cb
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug02127-002-php82.phpt
@@ -0,0 +1,54 @@
+--TEST--
+Test for bug #2127: Tracing does not handle NUL char in anonymous closure scope (>= PHP 8.2, < PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.2,< 8.4');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=1
+xdebug.trace_format=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+class Test
+{
+	private $configureException;
+
+	function __construct()
+	{
+		$this->configureException = \Closure::bind(
+			static function($a, $b) { return $a * $b; },
+			null,
+			new class() extends \Exception {}
+		);
+	}
+}
+
+$t = new Test;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+Version: %s
+File format: 4
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+2		A						%scapture-trace.inc	17	$tf = '%s'
+2	1	1	%f	%d
+2	7	0	%f	%d	Test->__construct	1		%sbug02127-002-php82.php	18	0
+3	8	0	%f	%d	Exception->__construct	0		%sbug02127-002-php82.php	13	0
+3	8	1	%f	%d
+3	8	R			NULL
+3	9	0	%f	%d	Closure::bind	0		%sbug02127-002-php82.php	10	3	class Closure { public $parameter = ['$a' => '<required>', '$b' => '<required>'] }	NULL	class Exception@anonymous { protected $message = ''; private string ${Exception}string = ''; protected $code = 0; protected string $file = '%sbug02127-002-php82.php'; protected int $line = 13; private array ${Exception}trace = [0 => [...]]; private ?Throwable ${Exception}previous = NULL }
+3	9	1	%f	%d
+3	9	R			class Closure { public $parameter = ['$a' => '<required>', '$b' => '<required>'] }
+2		A						%sbug02127-002-php82.php	10	$this->configureException = class Closure { public $parameter = ['$a' => '<required>', '$b' => '<required>'] }
+2	7	1	%f	%d
+1		A						%sbug02127-002-php82.php	18	$t = class Test { private $configureException = class Closure { public $parameter = [...] } }
+2	10	0	%f	%d	xdebug_stop_trace	0		%sbug02127-002-php82.php	20	0
+			%f	%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug02127-002-php84.phpt b/xdebug-3.4.5/tests/tracing/bug02127-002-php84.phpt
new file mode 100644
index 0000000..b648d6f
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug02127-002-php84.phpt
@@ -0,0 +1,54 @@
+--TEST--
+Test for bug #2127: Tracing does not handle NUL char in anonymous closure scope (>= PHP 8.4)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.4');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=1
+xdebug.trace_format=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+class Test
+{
+	private $configureException;
+
+	function __construct()
+	{
+		$this->configureException = \Closure::bind(
+			static function($a, $b) { return $a * $b; },
+			null,
+			new class() extends \Exception {}
+		);
+	}
+}
+
+$t = new Test;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+Version: %s
+File format: 4
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+2		A						%scapture-trace.inc	17	$tf = '%s'
+2	1	1	%f	%d
+2	7	0	%f	%d	Test->__construct	1		%sbug02127-002-php84.php	18	0
+3	8	0	%f	%d	Exception->__construct	0		%sbug02127-002-php84.php	13	0
+3	8	1	%f	%d
+3	8	R			NULL
+3	9	0	%f	%d	Closure::bind	0		%sbug02127-002-php84.php	10	3	class Closure { public $name = '{closure:Test::__construct():11}'; public $file = '%sbug02127-002-php84.php'; public $line = 11; public $parameter = ['$a' => '<required>', '$b' => '<required>'] }	NULL	class Exception@anonymous { protected $message = ''; private string ${Exception}string = ''; protected $code = 0; protected string $file = '%sbug02127-002-php84.php'; protected int $line = 13; private array ${Exception}trace = [0 => [...]]; private ?Throwable ${Exception}previous = NULL }
+3	9	1	%f	%d
+3	9	R			class Closure { public $name = '{closure:Test::__construct():11}'; public $file = '%sbug02127-002-php84.php'; public $line = 11; public $parameter = ['$a' => '<required>', '$b' => '<required>'] }
+2		A						%sbug02127-002-php84.php	10	$this->configureException = class Closure { public $name = '{closure:Test::__construct():11}'; public $file = '%sbug02127-002-php84.php'; public $line = 11; public $parameter = ['$a' => '<required>', '$b' => '<required>'] }
+2	7	1	%f	%d
+1		A						%sbug02127-002-php84.php	18	$t = class Test { private $configureException = class Closure { public $name = '{closure:Test::__construct():11}'; public $file = '%sbug02127-002-php84.php'; public $line = 11; public $parameter = [...] } }
+2	10	0	%f	%d	xdebug_stop_trace	0		%sbug02127-002-php84.php	20	0
+			%f	%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug02214-001.phpt b/xdebug-3.4.5/tests/tracing/bug02214-001.phpt
new file mode 100644
index 0000000..6379807
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug02214-001.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Test for bug #2214: Array keys aren't escaped in traces
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+require dirname( __FILE__ ) . '/bug02214.inc';
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> dirname($path = '%sbug02214-001.php') %sbug02214-001.php:4
+%w%f %w%d     -> require(%sbug02214.inc) %sbug02214-001.php:4
+%w%f %w%d       -> func($a = ['\n' => '\n', '\r' => '\r', '\r\n' => '\r\n']) %sbug02214.inc:%d
+%w%f %w%d     -> xdebug_stop_trace() %sbug02214-001.php:6
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug02214-002.phpt b/xdebug-3.4.5/tests/tracing/bug02214-002.phpt
new file mode 100644
index 0000000..0c43c5a
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug02214-002.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Test for bug #2214: Array keys aren't escaped in traces
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=1
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+require dirname( __FILE__ ) . '/bug02214.inc';
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+Version: %s
+File format: 4
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+2	1	1	%f	%d
+2	7	0	%f	%d	dirname	0		%sbug02214-002.php	4	1	'%sbug02214-002.php'
+2	7	1	%f	%d
+2	8	0	%f	%d	require	1	%sbug02214.inc	%sbug02214-002.php	4	0
+3	9	0	%f	%d	func	1		%sbug02214.inc	%d	1	['\n' => '\n', '\r' => '\r', '\r\n' => '\r\n']
+3	9	1	%f	%d
+2	8	1	%f	%d
+2	10	0	%f	%d	xdebug_stop_trace	0		%sbug02214-002.php	6	0
+			%f	%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/bug02214.inc b/xdebug-3.4.5/tests/tracing/bug02214.inc
new file mode 100644
index 0000000..67a2fea
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/bug02214.inc
@@ -0,0 +1,11 @@
+<?php
+function func(array $a) {
+    return $a;
+}
+
+func([
+    "\n" => "\n",
+    "\r" => "\r",
+    "\r\n" => "\r\n",
+]);
+?>
diff --git a/xdebug-3.4.5/tests/tracing/call_user_func_array-001.phpt b/xdebug-3.4.5/tests/tracing/call_user_func_array-001.phpt
new file mode 100644
index 0000000..2f0e546
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/call_user_func_array-001.phpt
@@ -0,0 +1,42 @@
+--TEST--
+Test for file/line correctness with call_user_func_array()
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+xdebug.var_display_max_depth=3
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+function debug($var, $val) {
+    $ia = 'is_array'; $io = 'is_object'; $ir = 'is_resource';
+    if ($ia($val) || $io($val) || $ir($val)) {
+        /* Do nothing */
+    } else {
+        /* Do nothing */
+	}
+}
+$c = "call_user_func_array";
+$foo = array(1, 2);
+$c('debug', array('foo', $foo));
+
+$foo = 'bar';
+$c('debug', array('bar', $foo));
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> call_user_func_array:{%scall_user_func_array-001.php:13}($%s = 'debug', $%s = [0 => 'foo', 1 => [0 => 1, 1 => 2]]) %scall_user_func_array-001.php:13
+%w%f %w%d       -> debug($var = 'foo', $val = [0 => 1, 1 => 2]) %scall_user_func_array-001.php:13
+%w%f %w%d         -> is_array($%s = [0 => 1, 1 => 2]) %scall_user_func_array-001.php:5
+%w%f %w%d     -> call_user_func_array:{%scall_user_func_array-001.php:16}($%s = 'debug', $%s = [0 => 'bar', 1 => 'bar']) %scall_user_func_array-001.php:16
+%w%f %w%d       -> debug($var = 'bar', $val = 'bar') %scall_user_func_array-001.php:16
+%w%f %w%d         -> is_array($%s = 'bar') %scall_user_func_array-001.php:5
+%w%f %w%d         -> is_object($%s = 'bar') %scall_user_func_array-001.php:5
+%w%f %w%d         -> is_resource($%s = 'bar') %scall_user_func_array-001.php:5
+%w%f %w%d     -> xdebug_stop_trace() %scall_user_func_array-001.php:18
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/call_user_func_array-002.inc b/xdebug-3.4.5/tests/tracing/call_user_func_array-002.inc
new file mode 100644
index 0000000..2e34994
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/call_user_func_array-002.inc
@@ -0,0 +1,10 @@
+<?php
+function debug($var, $val) {
+    $ia = 'is_array'; $io = 'is_object'; $ir = 'is_resource';
+    if ($ia($val) || $io($val) || $ir($val)) {
+        /* Do nothing */
+    } else {
+        /* Do nothing */
+	}
+}
+?>
diff --git a/xdebug-3.4.5/tests/tracing/call_user_func_array-002.phpt b/xdebug-3.4.5/tests/tracing/call_user_func_array-002.phpt
new file mode 100644
index 0000000..c19061d
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/call_user_func_array-002.phpt
@@ -0,0 +1,37 @@
+--TEST--
+Test call_user_func_array() with multiple files
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+xdebug.var_display_max_depth=3
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+include 'call_user_func_array-002.inc';
+$c = "call_user_func_array";
+$foo = array(1, 2);
+$c('debug', array('foo', $foo));
+
+$foo = 'bar';
+$c('debug', array('bar', $foo));
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> include(%scall_user_func_array-002.inc) %scall_user_func_array-002.php:4
+%w%f %w%d     -> call_user_func_array:{%scall_user_func_array-002.php:7}($%s = 'debug', $%s = [0 => 'foo', 1 => [0 => 1, 1 => 2]]) %scall_user_func_array-002.php:7
+%w%f %w%d       -> debug($var = 'foo', $val = [0 => 1, 1 => 2]) %scall_user_func_array-002.php:7
+%w%f %w%d         -> is_array($%s = [0 => 1, 1 => 2]) %scall_user_func_array-002.inc:4
+%w%f %w%d     -> call_user_func_array:{%scall_user_func_array-002.php:10}($%s = 'debug', $%s = [0 => 'bar', 1 => 'bar']) %scall_user_func_array-002.php:10
+%w%f %w%d       -> debug($var = 'bar', $val = 'bar') %scall_user_func_array-002.php:10
+%w%f %w%d         -> is_array($%s = 'bar') %scall_user_func_array-002.inc:4
+%w%f %w%d         -> is_object($%s = 'bar') %scall_user_func_array-002.inc:4
+%w%f %w%d         -> is_resource($%s = 'bar') %scall_user_func_array-002.inc:4
+%w%f %w%d     -> xdebug_stop_trace() %scall_user_func_array-002.php:12
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/capture-trace.inc b/xdebug-3.4.5/tests/tracing/capture-trace.inc
new file mode 100644
index 0000000..7f29477
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/capture-trace.inc
@@ -0,0 +1,21 @@
+<?php
+function show_trace_file() {
+	global $tf;
+
+	if (preg_match('@\.gz$@', $tf)) {
+		$fp = gzopen($tf, 'r');
+		echo stream_get_contents($fp);
+	} else {
+		echo file_get_contents($tf);
+	}
+	unlink($tf);
+}
+
+register_shutdown_function('show_trace_file');
+
+if (xdebug_get_tracefile_name() === false) {
+	$tf = xdebug_start_trace(sys_get_temp_dir() . '/' . uniqid('xdt', TRUE));
+} else {
+	$tf = xdebug_get_tracefile_name();
+}
+?>
diff --git a/xdebug-3.4.5/tests/tracing/circular-references.phpt b/xdebug-3.4.5/tests/tracing/circular-references.phpt
new file mode 100644
index 0000000..00c169e
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/circular-references.phpt
@@ -0,0 +1,39 @@
+--TEST--
+Test for circular references
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+report_memleaks=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+class foo {
+	public $a, $b;
+	function __construct() {
+		$this->a = $this;
+		$this->b = $this;
+	}
+
+}
+
+function bar($o) {
+}
+
+$f = new foo();
+bar($f);
+bar($f);
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> foo->__construct() %scircular-references.php:16
+%w%f %w%d     -> bar($o = class foo { public $a = ...; public $b = ... }) %scircular-references.php:17
+%w%f %w%d     -> bar($o = class foo { public $a = ...; public $b = ... }) %scircular-references.php:18
+%w%f %w%d     -> xdebug_stop_trace() %scircular-references.php:20
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/comp-without-params.phpt b/xdebug-3.4.5/tests/tracing/comp-without-params.phpt
new file mode 100644
index 0000000..544dcae
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/comp-without-params.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Test for trace with xdebug.collect_params turned off (comp)
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_assignments=0
+xdebug.collect_params=0
+xdebug.collect_return=0
+xdebug.trace_format=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function a ($a, $b, $h, &$i) {
+	echo $a;
+	return $a + $b;
+}
+
+$a = array (1, 2,3,4,5);
+$b = array ("h" => 9.12, $a, $a, $a, "p" => 9 - 0.12);
+echo a (5, 9.12, FALSE, $b), "\n";
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+514.12
+Version: %s
+File format: %d
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+2	1	1	%f	%d
+2	7	0	%f	%d	a	1		%scomp-without-params.php	11
+2	7	1	%f	%d
+2	8	0	%f	%d	xdebug_stop_trace	0		%scomp-without-params.php	13
+			%f	%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/complex-parameters.phpt b/xdebug-3.4.5/tests/tracing/complex-parameters.phpt
new file mode 100644
index 0000000..27e1e4f
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/complex-parameters.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test for complex parameters to functions
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+xdebug.var_display_max_depth=3
+xdebug.var_display_max_children=6
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function a ($a, $b, $h, &$i) {
+	echo $a;
+	return $a + $b;
+}
+
+$a = array (1, 2,3,4,5);
+$b = array ("h" => 9.12, $a, $a, $a, "p" => 9 - 0.12);
+echo a (5, 9.12, FALSE, $b), "\n";
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+514.12
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> a($a = 5, $b = 9.12, $h = FALSE, $i = ['h' => 9.12, 0 => [0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5], 1 => [0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5], 2 => [0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5], 'p' => 8.88]) %scomplex-parameters.php:11
+%w%f %w%d     -> xdebug_stop_trace() %scomplex-parameters.php:13
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/fiber-001.inc b/xdebug-3.4.5/tests/tracing/fiber-001.inc
new file mode 100644
index 0000000..3eaf9f4
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/fiber-001.inc
@@ -0,0 +1,38 @@
+<?php
+
+function AB() {
+}
+
+function AA() {
+}
+
+function A() {
+	AA();
+	Fiber::suspend();
+	AB();
+}
+
+function BA() {
+}
+
+function BB() {
+}
+
+function B() {
+	BA();
+	Fiber::suspend();
+	BB();
+}
+
+$fiberA = new Fiber(function () {
+	A();
+});
+
+$fiberB = new Fiber(function () {
+	B();
+});
+
+$fiberA->start();
+$fiberB->start();
+$fiberA->resume();
+$fiberB->resume();
diff --git a/xdebug-3.4.5/tests/tracing/flamegraph-001.phpt b/xdebug-3.4.5/tests/tracing/flamegraph-001.phpt
new file mode 100644
index 0000000..322ad3c
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/flamegraph-001.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Tracing: Flamegraph for time
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=3
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function ABB() {
+}
+
+function ABA() {
+}
+
+function AC() {
+}
+
+function AB() {
+    ABA();
+    ABB();
+}
+
+function AA() {
+}
+
+function A() {
+    AA();
+    AB();
+    AA();
+    AB();
+    AC();
+}
+
+A();
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+A;AA %d
+A;AB;ABA %d
+A;AB;ABB %d
+A;AB %d
+A;AA %d
+A;AB;ABA %d
+A;AB;ABB %d
+A;AB %d
+A;AC %d
+A %d
diff --git a/xdebug-3.4.5/tests/tracing/flamegraph-002.phpt b/xdebug-3.4.5/tests/tracing/flamegraph-002.phpt
new file mode 100644
index 0000000..c5f4a38
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/flamegraph-002.phpt
@@ -0,0 +1,63 @@
+--TEST--
+Tracing: Flamegraph for memory
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=4
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+// This forcefully creates some memory leaks to yield meaningful numbers
+// in the generated output, so that we will have some results to see.
+global $memoryLeak;
+$memoryLeak = '';
+
+function ABB() {
+	global $memoryLeak;
+    for ($i = 0; $i < 10000; $i++) {
+        $memoryLeak .= 'a';
+    }
+}
+
+function ABA() {
+}
+
+function AC() {
+	global $memoryLeak;
+    for ($i = 0; $i < 10000; $i++) {
+        $memoryLeak .= 'a';
+    }
+}
+
+function AB() {
+    ABA();
+    ABB();
+}
+
+function AA() {
+}
+
+function A() {
+    AA();
+    AB();
+    AA();
+    AB();
+    AC();
+}
+
+A();
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+A;AA 0
+A;AB;ABA 0
+A;AB;ABB %d
+A;AB %d
+A;AA 0
+A;AB;ABA 0
+A;AB;ABB %d
+A;AB 0
+A;AC %d
+A %d
diff --git a/xdebug-3.4.5/tests/tracing/flamegraph-003.phpt b/xdebug-3.4.5/tests/tracing/flamegraph-003.phpt
new file mode 100644
index 0000000..f0f6640
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/flamegraph-003.phpt
@@ -0,0 +1,49 @@
+--TEST--
+Tracing: Flamegraph output is consistent when xdebug_stop_trace() is called lower in the stack
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=4
+--FILE--
+<?php
+function ABB() {
+}
+
+function ABA() {
+}
+
+function AC() {
+}
+
+function AB() {
+	global $tf;
+
+	require_once 'capture-trace.inc';
+
+    ABA();
+    ABB();
+}
+
+function AA() {
+}
+
+function A() {
+    AA();
+    AB();
+    AA();
+    AB();
+    AC();
+}
+
+A();
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+ABA %d
+ABB %d
+AA %d
+AB;ABA %d
+AB;ABB %d
+AB %d
+AC %d
diff --git a/xdebug-3.4.5/tests/tracing/flamegraph-004.phpt b/xdebug-3.4.5/tests/tracing/flamegraph-004.phpt
new file mode 100644
index 0000000..e92ed19
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/flamegraph-004.phpt
@@ -0,0 +1,70 @@
+--TEST--
+Tracing: Flamegraph with Fiber
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=3
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1');
+?>
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+require dirname(__FILE__) . '/fiber-001.inc';
+
+xdebug_stop_trace();
+
+/*
+ * You have to understand that in the following output, when Fiber::start()
+ * is called, it executes until it reach an explicit Fiber::suspend().
+ *
+ * What happens next is that the Fiber::start() method is considered as being
+ * completed, so the trace exit handler is called for it, when the Fiber is
+ * being suspended, hence the A:AA() call with the Fiber::start() that follows
+ * directly.
+ *
+ * Fiber::suspend() is not exited until the Fiber instance is resumed, so its
+ * relative time can be extremelly long, even though it doesn't uses CPU at
+ * all (since it's being suspended, it's just IDLE time).
+ *
+ * When Fiber::resume() is called, in the following trace, Fiber::suspend()
+ * is exited at the same time, that's why resuming always start with suspend,
+ * and in the very final step of Fiber::resume() operation, when the Fiber
+ * stack is either resumed once again or deleted because finished, then and
+ * only then, the exit hook is called for Fiber::resume().
+ *
+ * I hope this is clear enough for anyone reading this to understand why the
+ * trace output ordering has nothing to do with the real function execution
+ * order.
+ *
+ * In all cases, Fiber::suspend() timing will always be wrong, since it will
+ * change the current stack being executed, its 'self' cost cannot be computed
+ * because we cannot guess which other Fiber gets resumed, in other word with
+ * the current algorithm, we cannot compute 'self' cost of IDLE Fiber.
+ *
+ * This is not a problem, because the Fiber being IDLE, it doesn't consume
+ * any CPU. This is probably not the bottleneck you are looking for.
+ */
+?>
+--EXPECTF--
+dirname %d
+{require:%sfiber-001.inc};Fiber->__construct %d
+{require:%sfiber-001.inc};Fiber->__construct %d
+{closure:%sfiber-001.inc:27-29};A;AA %d
+{require:%sfiber-001.inc};Fiber->start %d
+{closure:%sfiber-001.inc:31-33};B;BA %d
+{require:%sfiber-001.inc};Fiber->start %d
+{closure:%sfiber-001.inc:27-29};A;Fiber::suspend %d
+{closure:%sfiber-001.inc:27-29};A;AB %d
+{closure:%sfiber-001.inc:27-29};A %d
+{closure:%sfiber-001.inc:27-29} %d
+{require:%sfiber-001.inc};Fiber->resume %d
+{closure:%sfiber-001.inc:31-33};B;Fiber::suspend %d
+{closure:%sfiber-001.inc:31-33};B;BB %d
+{closure:%sfiber-001.inc:31-33};B %d
+{closure:%sfiber-001.inc:31-33} %d
+{require:%sfiber-001.inc};Fiber->resume %d
+{require:%sfiber-001.inc} %d
diff --git a/xdebug-3.4.5/tests/tracing/flamegraph-005.phpt b/xdebug-3.4.5/tests/tracing/flamegraph-005.phpt
new file mode 100644
index 0000000..7166341
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/flamegraph-005.phpt
@@ -0,0 +1,59 @@
+--TEST--
+Tracing: Flamegraph with "start with request"
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=yes
+xdebug.trace_output_name=trace.%p.%r
+xdebug.trace_format=3
+--FILE--
+<?php
+$tf = xdebug_get_tracefile_name();
+
+function ABB() {
+}
+
+function ABA() {
+}
+
+function AC() {
+}
+
+function AB() {
+    ABA();
+    ABB();
+}
+
+function AA() {
+}
+
+function A() {
+    AA();
+    AB();
+    AA();
+    AB();
+    AC();
+}
+
+A();
+
+xdebug_stop_trace();
+
+if (preg_match('@\.gz$@', $tf)) {
+	$fp = gzopen($tf, 'r');
+	echo stream_get_contents($fp);
+} else {
+	echo file_get_contents($tf);
+}
+?>
+--EXPECTF--
+{main};xdebug_get_tracefile_name %d
+{main};A;AA %d
+{main};A;AB;ABA %d
+{main};A;AB;ABB %d
+{main};A;AB %d
+{main};A;AA %d
+{main};A;AB;ABA %d
+{main};A;AB;ABB %d
+{main};A;AB %d
+{main};A;AC %d
+{main};A %d
diff --git a/xdebug-3.4.5/tests/tracing/function_counter.phpt b/xdebug-3.4.5/tests/tracing/function_counter.phpt
new file mode 100644
index 0000000..3ee3921
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/function_counter.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Test for xdebug_get_function_count
+--INI--
+xdebug.mode=develop
+--FILE--
+<?php
+	echo xdebug_get_function_count(). "\n";
+
+	for ($i = 0; $i < 9; $i++) {
+		strrev($i);
+	}
+
+	echo xdebug_get_function_count(). "\n";
+?>
+--EXPECT--
+1
+11
diff --git a/xdebug-3.4.5/tests/tracing/functrace_comp.phpt b/xdebug-3.4.5/tests/tracing/functrace_comp.phpt
new file mode 100644
index 0000000..52aa4c8
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/functrace_comp.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test computerized function traces (comp)
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=1
+xdebug.dump_globals=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.force_error_reporting=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function foo( $a )
+{
+	// do nothing really
+}
+
+@foo( 42 );
+@foo( "string" );
+@foo( "string\nwith\nnewline" );
+@foo( 1, false );
+@foo( true, null );
+@foo( "foo", "bar", 3.1415 );
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+Version: %s
+File format: %d
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+2	1	1	%f	%d
+2	7	0	%f	%d	foo	1		%sfunctrace_comp.php	9	1	42
+2	7	1	%f	%d
+2	8	0	%f	%d	foo	1		%sfunctrace_comp.php	10	1	'string'
+2	8	1	%f	%d
+2	9	0	%f	%d	foo	1		%sfunctrace_comp.php	11	1	'string\nwith\nnewline'
+2	9	1	%f	%d
+2	10	0	%f	%d	foo	1		%sfunctrace_comp.php	12	2	1	FALSE
+2	10	1	%f	%d
+2	11	0	%f	%d	foo	1		%sfunctrace_comp.php	13	2	TRUE	NULL
+2	11	1	%f	%d
+2	12	0	%f	%d	foo	1		%sfunctrace_comp.php	14	3	'foo'	'bar'	3.1415
+2	12	1	%f	%d
+2	13	0	%f	%d	xdebug_stop_trace	0		%sfunctrace_comp.php	16	0
+			%f	%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/functrace_comp_assign.phpt b/xdebug-3.4.5/tests/tracing/functrace_comp_assign.phpt
new file mode 100644
index 0000000..f99bb82
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/functrace_comp_assign.phpt
@@ -0,0 +1,166 @@
+--TEST--
+Test computerized function traces (comp, with assignments)
+--INI--
+xdebug.mode=trace
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+xdebug.trace_format=1
+xdebug.dump_globals=0
+xdebug.force_error_reporting=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function foo( $a )
+{
+	$aa = $a;
+	$bar11 = 1;
+	++$bar11;
+	++$bar11;
+	--$bar11;
+	--$bar11;
+	$bar11 += 1;
+	$bar11 -= 1;
+	$bar11 *= 2;
+	$bar11 %= 2;
+	$bar11 /= 2;
+	// do nothing really
+}
+
+$bar = 42;
+@foo( $bar );
+$bar1 = "string";
+@foo( $bar1 );
+$bar2 = "string\nwith\nnewline";
+@foo( $bar2 );
+$bar3 = 1;
+$bar4 = false;
+@foo( $bar3, $bar4 );
+$bar5 = true;
+$bar6 = null;
+@foo( $bar5, $bar6 );
+$bar7 = "foo";
+$bar8 = "bar";
+$bar9 = 3.1415;
+@foo( $bar7, $bar8, $bar9 );
+
+$bar10 = 1;
+++$bar10;
+++$bar10;
+--$bar10;
+--$bar10;
+$bar10 += 1;
+$bar10 -= 1;
+$bar10 *= 2;
+$bar10 %= 2;
+$bar10 /= 2;
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+Version: %s
+File format: %d
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+2		A						%s	%d	$tf = '%s'
+2	1	1	%f	%d
+1		A						%sfunctrace_comp_assign.php	20	$bar = 42
+2	7	0	%f	%d	foo	1		%sfunctrace_comp_assign.php	21	1	42
+2		A						%sfunctrace_comp_assign.php	6	$aa = 42
+2		A						%sfunctrace_comp_assign.php	7	$bar11 = 1
+2		A						%sfunctrace_comp_assign.php	8	++$bar11
+2		A						%sfunctrace_comp_assign.php	9	++$bar11
+2		A						%sfunctrace_comp_assign.php	10	--$bar11
+2		A						%sfunctrace_comp_assign.php	11	--$bar11
+2		A						%sfunctrace_comp_assign.php	12	$bar11 += 1
+2		A						%sfunctrace_comp_assign.php	13	$bar11 -= 1
+2		A						%sfunctrace_comp_assign.php	14	$bar11 *= 2
+2		A						%sfunctrace_comp_assign.php	15	$bar11 %= 2
+2		A						%sfunctrace_comp_assign.php	16	$bar11 /= 2
+2	7	1	%f	%d
+1		A						%sfunctrace_comp_assign.php	22	$bar1 = 'string'
+2	8	0	%f	%d	foo	1		%sfunctrace_comp_assign.php	23	1	'string'
+2		A						%sfunctrace_comp_assign.php	6	$aa = 'string'
+2		A						%sfunctrace_comp_assign.php	7	$bar11 = 1
+2		A						%sfunctrace_comp_assign.php	8	++$bar11
+2		A						%sfunctrace_comp_assign.php	9	++$bar11
+2		A						%sfunctrace_comp_assign.php	10	--$bar11
+2		A						%sfunctrace_comp_assign.php	11	--$bar11
+2		A						%sfunctrace_comp_assign.php	12	$bar11 += 1
+2		A						%sfunctrace_comp_assign.php	13	$bar11 -= 1
+2		A						%sfunctrace_comp_assign.php	14	$bar11 *= 2
+2		A						%sfunctrace_comp_assign.php	15	$bar11 %= 2
+2		A						%sfunctrace_comp_assign.php	16	$bar11 /= 2
+2	8	1	%f	%d
+1		A						%sfunctrace_comp_assign.php	24	$bar2 = 'string\nwith\nnewline'
+2	9	0	%f	%d	foo	1		%sfunctrace_comp_assign.php	25	1	'string\nwith\nnewline'
+2		A						%sfunctrace_comp_assign.php	6	$aa = 'string\nwith\nnewline'
+2		A						%sfunctrace_comp_assign.php	7	$bar11 = 1
+2		A						%sfunctrace_comp_assign.php	8	++$bar11
+2		A						%sfunctrace_comp_assign.php	9	++$bar11
+2		A						%sfunctrace_comp_assign.php	10	--$bar11
+2		A						%sfunctrace_comp_assign.php	11	--$bar11
+2		A						%sfunctrace_comp_assign.php	12	$bar11 += 1
+2		A						%sfunctrace_comp_assign.php	13	$bar11 -= 1
+2		A						%sfunctrace_comp_assign.php	14	$bar11 *= 2
+2		A						%sfunctrace_comp_assign.php	15	$bar11 %= 2
+2		A						%sfunctrace_comp_assign.php	16	$bar11 /= 2
+2	9	1	%f	%d
+1		A						%sfunctrace_comp_assign.php	26	$bar3 = 1
+1		A						%sfunctrace_comp_assign.php	27	$bar4 = FALSE
+2	10	0	%f	%d	foo	1		%sfunctrace_comp_assign.php	28	2	1	FALSE
+2		A						%sfunctrace_comp_assign.php	6	$aa = 1
+2		A						%sfunctrace_comp_assign.php	7	$bar11 = 1
+2		A						%sfunctrace_comp_assign.php	8	++$bar11
+2		A						%sfunctrace_comp_assign.php	9	++$bar11
+2		A						%sfunctrace_comp_assign.php	10	--$bar11
+2		A						%sfunctrace_comp_assign.php	11	--$bar11
+2		A						%sfunctrace_comp_assign.php	12	$bar11 += 1
+2		A						%sfunctrace_comp_assign.php	13	$bar11 -= 1
+2		A						%sfunctrace_comp_assign.php	14	$bar11 *= 2
+2		A						%sfunctrace_comp_assign.php	15	$bar11 %= 2
+2		A						%sfunctrace_comp_assign.php	16	$bar11 /= 2
+2	10	1	%f	%d
+1		A						%sfunctrace_comp_assign.php	29	$bar5 = TRUE
+1		A						%sfunctrace_comp_assign.php	%d	$bar6 = NULL
+2	11	0	%f	%d	foo	1		%sfunctrace_comp_assign.php	%d	2	TRUE	NULL
+2		A						%sfunctrace_comp_assign.php	6	$aa = TRUE
+2		A						%sfunctrace_comp_assign.php	7	$bar11 = 1
+2		A						%sfunctrace_comp_assign.php	8	++$bar11
+2		A						%sfunctrace_comp_assign.php	9	++$bar11
+2		A						%sfunctrace_comp_assign.php	10	--$bar11
+2		A						%sfunctrace_comp_assign.php	11	--$bar11
+2		A						%sfunctrace_comp_assign.php	12	$bar11 += 1
+2		A						%sfunctrace_comp_assign.php	13	$bar11 -= 1
+2		A						%sfunctrace_comp_assign.php	14	$bar11 *= 2
+2		A						%sfunctrace_comp_assign.php	15	$bar11 %= 2
+2		A						%sfunctrace_comp_assign.php	16	$bar11 /= 2
+2	11	1	%f	%d
+1		A						%sfunctrace_comp_assign.php	%d	$bar7 = 'foo'
+1		A						%sfunctrace_comp_assign.php	%d	$bar8 = 'bar'
+1		A						%sfunctrace_comp_assign.php	%d	$bar9 = 3.1415
+2	12	0	%f	%d	foo	1		%sfunctrace_comp_assign.php	%d	3	'foo'	'bar'	3.1415
+2		A						%sfunctrace_comp_assign.php	6	$aa = 'foo'
+2		A						%sfunctrace_comp_assign.php	7	$bar11 = 1
+2		A						%sfunctrace_comp_assign.php	8	++$bar11
+2		A						%sfunctrace_comp_assign.php	9	++$bar11
+2		A						%sfunctrace_comp_assign.php	10	--$bar11
+2		A						%sfunctrace_comp_assign.php	11	--$bar11
+2		A						%sfunctrace_comp_assign.php	12	$bar11 += 1
+2		A						%sfunctrace_comp_assign.php	13	$bar11 -= 1
+2		A						%sfunctrace_comp_assign.php	14	$bar11 *= 2
+2		A						%sfunctrace_comp_assign.php	15	$bar11 %= 2
+2		A						%sfunctrace_comp_assign.php	16	$bar11 /= 2
+2	12	1	%f	%d
+1		A						%sfunctrace_comp_assign.php	%d	$bar10 = 1
+1		A						%sfunctrace_comp_assign.php	%d	++$bar10
+1		A						%sfunctrace_comp_assign.php	%d	++$bar10
+1		A						%sfunctrace_comp_assign.php	40	--$bar10
+1		A						%sfunctrace_comp_assign.php	41	--$bar10
+1		A						%sfunctrace_comp_assign.php	42	$bar10 += 1
+1		A						%sfunctrace_comp_assign.php	43	$bar10 -= 1
+1		A						%sfunctrace_comp_assign.php	44	$bar10 *= 2
+1		A						%sfunctrace_comp_assign.php	45	$bar10 %= 2
+1		A						%sfunctrace_comp_assign.php	46	$bar10 /= 2
+2	13	0	%f	%d	xdebug_stop_trace	0		%sfunctrace_comp_assign.php	48	0
+			%f	%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/functrace_comp_r.phpt b/xdebug-3.4.5/tests/tracing/functrace_comp_r.phpt
new file mode 100644
index 0000000..ceb977e
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/functrace_comp_r.phpt
@@ -0,0 +1,54 @@
+--TEST--
+Test computerized function traces (comp, with return)
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=1
+xdebug.dump_globals=0
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.force_error_reporting=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function foo( $a )
+{
+	return $a;
+}
+
+$r = @foo( 42 );
+$r = @foo( "string" );
+$r = @foo( "string\nwi\th\nnewline" );
+$r = @foo( 1, false );
+$r = @foo( true, null );
+$r = @foo( "foo", "bar", 3.1415 );
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+Version: %s
+File format: %d
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+2	1	1	%f	%d
+2	7	0	%f	%d	foo	1		%sfunctrace_comp_r.php	9	1	42
+2	7	1	%f	%d
+2	7	R			42
+2	8	0	%f	%d	foo	1		%sfunctrace_comp_r.php	10	1	'string'
+2	8	1	%f	%d
+2	8	R			'string'
+2	9	0	%f	%d	foo	1		%sfunctrace_comp_r.php	11	1	'string\nwi\th\nnewline'
+2	9	1	%f	%d
+2	9	R			'string\nwi\th\nnewline'
+2	10	0	%f	%d	foo	1		%sfunctrace_comp_r.php	12	2	1	FALSE
+2	10	1	%f	%d
+2	10	R			1
+2	11	0	%f	%d	foo	1		%sfunctrace_comp_r.php	13	2	TRUE	NULL
+2	11	1	%f	%d
+2	11	R			TRUE
+2	12	0	%f	%d	foo	1		%sfunctrace_comp_r.php	14	3	'foo'	'bar'	3.1415
+2	12	1	%f	%d
+2	12	R			'foo'
+2	13	0	%f	%d	xdebug_stop_trace	0		%sfunctrace_comp_r.php	16	0
+			%f	%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/functrace_typed_properties.phpt b/xdebug-3.4.5/tests/tracing/functrace_typed_properties.phpt
new file mode 100644
index 0000000..04804c4
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/functrace_typed_properties.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Test for function traces with typed properties
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 7.4');
+?>
+--INI--
+date.timezone=UTC
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.dump_globals=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.force_error_reporting=0
+serialize_precision=-1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+class foo {
+	public $v = M_PI;
+	public $w;
+	private string $x;
+	protected int $y = 42;
+	public ?Fibble $z;
+	public \DateTime $a;
+}
+
+function test($value) {}
+
+$f = new foo;
+$f->a = new \DateTime;
+
+test($f);
+test(new class{public string $x;});
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> DateTime->__construct() %sfunctrace_typed_properties.php:16
+%w%f %w%d     -> test($value = class foo { public $v = 3.141592653589793; public $w = NULL; private string $x = *uninitialized*; protected int $y = 42; public ?Fibble $z = *uninitialized*; public DateTime $a = class DateTime { public $date = '%s'; public $timezone_type = 3; public $timezone = 'UTC' } }) %sfunctrace_typed_properties.php:18
+%w%f %w%d     -> test($value = class class@anonymous { public string $x = *uninitialized* }) %sfunctrace_typed_properties.php:19
+%w%f %w%d     -> xdebug_stop_trace() %sfunctrace_typed_properties.php:21
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/functrace_variadics.phpt b/xdebug-3.4.5/tests/tracing/functrace_variadics.phpt
new file mode 100644
index 0000000..8bb2ab1
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/functrace_variadics.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test for function traces with variadics
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.dump_globals=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.force_error_reporting=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function foo( $a, ...$b )
+{
+	// do nothing really
+}
+
+foo( 42 );
+foo( 1, false );
+foo( "foo", "bar", 3.1415 );
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> foo($a = 42) %sfunctrace_variadics.php:9
+%w%f %w%d     -> foo($a = 1, ...$b = variadic(0 => FALSE)) %sfunctrace_variadics.php:10
+%w%f %w%d     -> foo($a = 'foo', ...$b = variadic(0 => 'bar', 1 => 3.1415)) %sfunctrace_variadics.php:11
+%w%f %w%d     -> xdebug_stop_trace() %sfunctrace_variadics.php:13
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/include-file.phpt b/xdebug-3.4.5/tests/tracing/include-file.phpt
new file mode 100644
index 0000000..537c0d1
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/include-file.phpt
@@ -0,0 +1,36 @@
+--TEST--
+Test with include file
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+xdebug.var_display_max_depth=1
+xdebug.var_display_max_children=3
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+function foo ($a)
+{
+	$c = new een();
+	$b = $a * 3;
+	$c->foo2 ($b, array ('blaat', 5, FALSE));
+	return $b;
+}
+
+include ('test_class.inc');
+
+echo foo(5), "\n";
+xdebug_stop_trace();
+?>
+--EXPECTF--
+15
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> include(%stest_class.inc) %sinclude-file.php:11
+%w%f %w%d     -> foo($a = 5) %sinclude-file.php:13
+%w%f %w%d       -> een->foo2(15, [0 => 'blaat', 1 => 5, 2 => FALSE]) %sinclude-file.php:7
+%w%f %w%d         -> een->hang() %stest_class.inc:10
+%w%f %w%d     -> xdebug_stop_trace() %sinclude-file.php:14
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/internal-parameters.phpt b/xdebug-3.4.5/tests/tracing/internal-parameters.phpt
new file mode 100644
index 0000000..104544f
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/internal-parameters.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Test for internal parameters
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+echo str_repeat ("5", 5), "\n";
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+55555
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> str_repeat($%s = '5', $%s = 5) %sinternal-parameters.php:4
+%w%f %w%d     -> xdebug_stop_trace() %sinternal-parameters.php:6
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/nested-function-calls.phpt b/xdebug-3.4.5/tests/tracing/nested-function-calls.phpt
new file mode 100644
index 0000000..37d0ff8
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/nested-function-calls.phpt
@@ -0,0 +1,168 @@
+--TEST--
+Test for nested function calls
+--INI--
+xdebug.mode=develop,trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+xdebug.var_display_max_depth=5
+xdebug.var_display_max_children=6
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function a () {
+	var_dump (xdebug_get_function_stack());
+	return 'a';
+}
+
+function b ($b) {
+	return $b.'b';
+}
+
+function c ($a, $b) {
+	return $b.$a;
+}
+
+echo c(c(a(),b(2)), c(a(), a())), "\n";
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+%snested-function-calls.php:5:
+array(2) {
+  [0] =>
+  array(6) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(6) "{main}"
+    'file' =>
+    string(%d) "%snested-function-calls.php"
+    'line' =>
+    int(0)
+    'params' =>
+    array(0) {
+    }
+  }
+  [1] =>
+  array(6) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(1) "a"
+    'file' =>
+    string(%d) "%snested-function-calls.php"
+    'line' =>
+    int(17)
+    'params' =>
+    array(0) {
+    }
+  }
+}
+%snested-function-calls.php:5:
+array(2) {
+  [0] =>
+  array(6) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(6) "{main}"
+    'file' =>
+    string(%d) "%snested-function-calls.php"
+    'line' =>
+    int(0)
+    'params' =>
+    array(0) {
+    }
+  }
+  [1] =>
+  array(6) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(1) "a"
+    'file' =>
+    string(%d) "%snested-function-calls.php"
+    'line' =>
+    int(17)
+    'params' =>
+    array(0) {
+    }
+  }
+}
+%snested-function-calls.php:5:
+array(2) {
+  [0] =>
+  array(6) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(6) "{main}"
+    'file' =>
+    string(%d) "%snested-function-calls.php"
+    'line' =>
+    int(0)
+    'params' =>
+    array(0) {
+    }
+  }
+  [1] =>
+  array(6) {
+    'time' =>
+    double(%f)
+    'memory' =>
+    int(%d)
+    'function' =>
+    string(1) "a"
+    'file' =>
+    string(%d) "%snested-function-calls.php"
+    'line' =>
+    int(17)
+    'params' =>
+    array(0) {
+    }
+  }
+}
+aa2ba
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> a() %snested-function-calls.php:17
+%w%f %w%d       -> xdebug_get_function_stack() %snested-function-calls.php:5
+%w%f %w%d        >=> [0 => ['time' => %f, 'memory' => %d, 'function' => '{main}', 'file' => '%snested-function-calls.php', 'line' => 0, 'params' => []], 1 => ['time' => %f, 'memory' => %d, 'function' => 'a', 'file' => '%snested-function-calls.php', 'line' => 17, 'params' => []]]
+%w%f %w%d       -> var_dump($value = [0 => ['time' => %f, 'memory' => %d, 'function' => '{main}', 'file' => '%snested-function-calls.php', 'line' => 0, 'params' => []], 1 => ['time' => %f, 'memory' => %d, 'function' => 'a', 'file' => '%snested-function-calls.php', 'line' => 17, 'params' => []]]) %snested-function-calls.php:5
+%w%f %w%d        >=> NULL
+%w%f %w%d      >=> 'a'
+%w%f %w%d     -> b($b = 2) %snested-function-calls.php:17
+%w%f %w%d      >=> '2b'
+%w%f %w%d     -> c($a = 'a', $b = '2b') %snested-function-calls.php:17
+%w%f %w%d      >=> '2ba'
+%w%f %w%d     -> a() %snested-function-calls.php:17
+%w%f %w%d       -> xdebug_get_function_stack() %snested-function-calls.php:5
+%w%f %w%d        >=> [0 => ['time' => %f, 'memory' => %d, 'function' => '{main}', 'file' => '%snested-function-calls.php', 'line' => 0, 'params' => []], 1 => ['time' => %f, 'memory' => %d, 'function' => 'a', 'file' => '%snested-function-calls.php', 'line' => 17, 'params' => []]]
+%w%f %w%d       -> var_dump($value = [0 => ['time' => %f, 'memory' => %d, 'function' => '{main}', 'file' => '%snested-function-calls.php', 'line' => 0, 'params' => []], 1 => ['time' => %f, 'memory' => %d, 'function' => 'a', 'file' => '%snested-function-calls.php', 'line' => 17, 'params' => []]]) %snested-function-calls.php:5
+%w%f %w%d        >=> NULL
+%w%f %w%d      >=> 'a'
+%w%f %w%d     -> a() %snested-function-calls.php:17
+%w%f %w%d       -> xdebug_get_function_stack() %snested-function-calls.php:5
+%w%f %w%d        >=> [0 => ['time' => %f, 'memory' => %d, 'function' => '{main}', 'file' => '%snested-function-calls.php', 'line' => 0, 'params' => []], 1 => ['time' => %f, 'memory' => %d, 'function' => 'a', 'file' => '%snested-function-calls.php', 'line' => 17, 'params' => []]]
+%w%f %w%d       -> var_dump($value = [0 => ['time' => %f, 'memory' => %d, 'function' => '{main}', 'file' => '%snested-function-calls.php', 'line' => 0, 'params' => []], 1 => ['time' => %f, 'memory' => %d, 'function' => 'a', 'file' => '%snested-function-calls.php', 'line' => 17, 'params' => []]]) %snested-function-calls.php:5
+%w%f %w%d        >=> NULL
+%w%f %w%d      >=> 'a'
+%w%f %w%d     -> c($a = 'a', $b = 'a') %snested-function-calls.php:17
+%w%f %w%d      >=> 'aa'
+%w%f %w%d     -> c($a = '2ba', $b = 'aa') %snested-function-calls.php:17
+%w%f %w%d      >=> 'aa2ba'
+%w%f %w%d     -> xdebug_stop_trace() %snested-function-calls.php:19
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/nested-indirect-function.phpt b/xdebug-3.4.5/tests/tracing/nested-indirect-function.phpt
new file mode 100644
index 0000000..c2bf539
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/nested-indirect-function.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for nested indirect function call
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+class D
+{
+	static function a($x) {
+		return 'a';
+	}
+	static function b($x) {
+		return 'b';
+	}
+	static function c($x) {
+		return 'c';
+	}
+}
+
+function blaat($a) {
+}
+
+$a = blaat("insert blah '".D::a(D::b(D::a(D::c('blah')))));
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> D::c($x = 'blah') %snested-indirect-function.php:19
+%w%f %w%d      >=> 'c'
+%w%f %w%d     -> D::a($x = 'c') %snested-indirect-function.php:19
+%w%f %w%d      >=> 'a'
+%w%f %w%d     -> D::b($x = 'a') %snested-indirect-function.php:19
+%w%f %w%d      >=> 'b'
+%w%f %w%d     -> D::a($x = 'b') %snested-indirect-function.php:19
+%w%f %w%d      >=> 'a'
+%w%f %w%d     -> blaat($a = 'insert blah \'a') %snested-indirect-function.php:19
+%w%f %w%d      >=> NULL
+%w%f %w%d     -> xdebug_stop_trace() %snested-indirect-function.php:20
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/nested-static-method-calls.phpt b/xdebug-3.4.5/tests/tracing/nested-static-method-calls.phpt
new file mode 100644
index 0000000..73ac14b
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/nested-static-method-calls.phpt
@@ -0,0 +1,41 @@
+--TEST--
+Test for nested static method calls
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+class DBHelper
+{
+  static function quote($s) {
+    return addslashes ($s);
+  }
+}
+
+class DB
+{
+  function query($s) {
+  }
+}
+
+$db = new DB;
+
+$db->query("insert blah '".DBHelper::quote("test's").DBHelper::quote("test's")."' blah");
+$db->query("insert blah ' blah");
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> DBHelper::quote($s = 'test\'s') %snested-static-method-calls.php:18
+%w%f %w%d       -> addslashes($str%S = 'test\'s') %snested-static-method-calls.php:6
+%w%f %w%d     -> DBHelper::quote($s = 'test\'s') %snested-static-method-calls.php:18
+%w%f %w%d       -> addslashes($str%S = 'test\'s') %snested-static-method-calls.php:6
+%w%f %w%d     -> DB->query($s = 'insert blah \'test\\\'stest\\\'s\' blah') %snested-static-method-calls.php:18
+%w%f %w%d     -> DB->query($s = 'insert blah \' blah') %snested-static-method-calls.php:19
+%w%f %w%d     -> xdebug_stop_trace() %snested-static-method-calls.php:20
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/start_no_zlib_compression.phpt b/xdebug-3.4.5/tests/tracing/start_no_zlib_compression.phpt
new file mode 100644
index 0000000..9cb8873
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_no_zlib_compression.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Compression: no zlib, use_compression=1
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!ext-flag compression');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=yes
+xdebug.trace_format=0
+xdebug.trace_output_name=trace.%p.%r
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.use_compression=1
+xdebug.log={TMP}/{RUNID}{TEST_PHP_WORKER}start_no_zlib_compression.txt
+xdebug.control_socket=off
+--FILE--
+<?php
+$tf = xdebug_get_tracefile_name();
+
+xdebug_stop_trace();
+
+echo $tf, "\n";
+if (preg_match('@\.gz$@', $tf)) {
+	$fp = gzopen($tf, 'r');
+	echo stream_get_contents($fp);
+} else {
+	echo file_get_contents($tf);
+}
+
+echo file_get_contents(sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'start_no_zlib_compression.txt' );
+?>
+--CLEAN--
+<?php
+unlink (sys_get_temp_dir() . '/' . getenv('UNIQ_RUN_ID') . getenv('TEST_PHP_WORKER') . 'start_no_zlib_compression.txt' );
+?>
+--EXPECTF--
+%s.xt
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d   -> {main}() %s:0
+%w%f %w%d     -> xdebug_get_tracefile_name() %s:2
+%w%f %w%d     -> xdebug_stop_trace() %s:4
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
+
+[%d] Log opened at %s
+[%d] [Config] WARN: Cannot create the compressed file '%s.xt.gz', because support for zlib has not been compiled in. Falling back to '%s.xt'
diff --git a/xdebug-3.4.5/tests/tracing/start_no_zlib_no_compression.phpt b/xdebug-3.4.5/tests/tracing/start_no_zlib_no_compression.phpt
new file mode 100644
index 0000000..2082598
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_no_zlib_no_compression.phpt
@@ -0,0 +1,37 @@
+--TEST--
+Compression: no zlib, use_compression=0
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('!ext-flag compression');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=yes
+xdebug.trace_format=0
+xdebug.trace_output_name=trace.%p.%r
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.use_compression=0
+--FILE--
+<?php
+$tf = xdebug_get_tracefile_name();
+
+xdebug_stop_trace();
+
+echo $tf, "\n";
+if (preg_match('@\.gz$@', $tf)) {
+	$fp = gzopen($tf, 'r');
+	echo stream_get_contents($fp);
+} else {
+	echo file_get_contents($tf);
+}
+?>
+--EXPECTF--
+%s.xt
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d   -> {main}() %s:0
+%w%f %w%d     -> xdebug_get_tracefile_name() %s:2
+%w%f %w%d     -> xdebug_stop_trace() %s:4
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/start_trace.phpt b/xdebug-3.4.5/tests/tracing/start_trace.phpt
new file mode 100644
index 0000000..3be7170
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_trace.phpt
@@ -0,0 +1,19 @@
+--TEST--
+xdebug_start_trace() without filename
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+xdebug.trace_output_name=trace.%c
+xdebug.use_compression=0
+--FILE--
+<?php
+	$tf = xdebug_start_trace();
+	echo $tf, "\n";
+	xdebug_stop_trace();
+	unlink($tf);
+?>
+--EXPECTF--
+%strace.%d.xt
diff --git a/xdebug-3.4.5/tests/tracing/start_with_request_always_no_env.phpt b/xdebug-3.4.5/tests/tracing/start_with_request_always_no_env.phpt
new file mode 100644
index 0000000..7035f1b
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_with_request_always_no_env.phpt
@@ -0,0 +1,29 @@
+--TEST--
+Starting Tracing: always, no environment
+--INI--
+xdebug.mode=trace
+xdebug.trace_format=0
+xdebug.start_with_request=yes
+xdebug.trace_output_name=trace.%p.%r
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+$tf = xdebug_get_tracefile_name();
+
+xdebug_stop_trace();
+
+if (preg_match('@\.gz$@', $tf)) {
+	$fp = gzopen($tf, 'r');
+	echo stream_get_contents($fp);
+} else {
+	echo file_get_contents($tf);
+}
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d   -> {main}() %sstart_with_request_always_no_env.php:0
+%w%f %w%d     -> xdebug_get_tracefile_name() %sstart_with_request_always_no_env.php:2
+%w%f %w%d     -> xdebug_stop_trace() %sstart_with_request_always_no_env.php:4
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/start_with_request_always_no_match.phpt b/xdebug-3.4.5/tests/tracing/start_with_request_always_no_match.phpt
new file mode 100644
index 0000000..42f0346
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_with_request_always_no_match.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Starting Tracing: always, no trigger match
+--INI--
+xdebug.mode=trace
+xdebug.trace_format=0
+xdebug.start_with_request=yes
+xdebug.trace_output_name=trace.%p.%r
+xdebug.trigger_value=FOOBAR
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+$tf = xdebug_get_tracefile_name();
+
+xdebug_stop_trace();
+
+if (preg_match('@\.gz$@', $tf)) {
+	$fp = gzopen($tf, 'r');
+	echo stream_get_contents($fp);
+} else {
+	echo file_get_contents($tf);
+}
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d   -> {main}() %sstart_with_request_always_no_match.php:0
+%w%f %w%d     -> xdebug_get_tracefile_name() %sstart_with_request_always_no_match.php:2
+%w%f %w%d     -> xdebug_stop_trace() %sstart_with_request_always_no_match.php:4
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/start_with_request_default_env-001.phpt b/xdebug-3.4.5/tests/tracing/start_with_request_default_env-001.phpt
new file mode 100644
index 0000000..d784b8a
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_with_request_default_env-001.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Starting Tracing: default, environment [1]
+--INI--
+xdebug.mode=trace
+xdebug.trace_format=0
+xdebug.start_with_request=default
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+variables_order=PGCS
+--ENV--
+XDEBUG_TRACE=anything
+--FILE--
+<?php
+$tf = xdebug_get_tracefile_name();
+
+xdebug_stop_trace();
+
+if (preg_match('@\.gz$@', $tf)) {
+	$fp = gzopen($tf, 'r');
+	echo stream_get_contents($fp);
+} else {
+	echo file_get_contents($tf);
+}
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d   -> {main}() %sstart_with_request_default_env-001.php:0
+%w%f %w%d     -> xdebug_get_tracefile_name() %sstart_with_request_default_env-001.php:2
+%w%f %w%d     -> xdebug_stop_trace() %sstart_with_request_default_env-001.php:4
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/start_with_request_default_env-002.phpt b/xdebug-3.4.5/tests/tracing/start_with_request_default_env-002.phpt
new file mode 100644
index 0000000..e69199f
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_with_request_default_env-002.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Starting Tracing: default, environment [2]
+--INI--
+xdebug.mode=trace
+xdebug.trace_format=0
+xdebug.start_with_request=default
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+variables_order=EPGCS
+--ENV--
+XDEBUG_TRACE=anything
+--FILE--
+<?php
+$tf = xdebug_get_tracefile_name();
+
+xdebug_stop_trace();
+
+if (preg_match('@\.gz$@', $tf)) {
+	$fp = gzopen($tf, 'r');
+	echo stream_get_contents($fp);
+} else {
+	echo file_get_contents($tf);
+}
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d   -> {main}() %sstart_with_request_default_env-002.php:0
+%w%f %w%d     -> xdebug_get_tracefile_name() %sstart_with_request_default_env-002.php:2
+%w%f %w%d     -> xdebug_stop_trace() %sstart_with_request_default_env-002.php:4
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/start_with_request_default_function_call.phpt b/xdebug-3.4.5/tests/tracing/start_with_request_default_function_call.phpt
new file mode 100644
index 0000000..719e8ab
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_with_request_default_function_call.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Starting Tracing: default, function call
+--INI--
+xdebug.mode=trace
+xdebug.trace_format=0
+xdebug.trigger_value=FOOBAR
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+$tf = xdebug_start_trace();
+
+xdebug_stop_trace();
+
+if (preg_match('@\.gz$@', $tf)) {
+	$fp = gzopen($tf, 'r');
+	echo stream_get_contents($fp);
+} else {
+	echo file_get_contents($tf);
+}
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> xdebug_stop_trace() %sstart_with_request_default_function_call.php:4
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/start_with_request_default_match-001.phpt b/xdebug-3.4.5/tests/tracing/start_with_request_default_match-001.phpt
new file mode 100644
index 0000000..e012ed2
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_with_request_default_match-001.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Starting Tracing: default, trigger match [1]
+--INI--
+xdebug.mode=trace
+xdebug.trace_format=0
+xdebug.start_with_request=default
+xdebug.trigger_value=SOMETHING
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+variables_order=PGCS
+--ENV--
+XDEBUG_TRACE=SOMETHING
+--FILE--
+<?php
+$tf = xdebug_get_tracefile_name();
+
+xdebug_stop_trace();
+
+if (preg_match('@\.gz$@', $tf)) {
+	$fp = gzopen($tf, 'r');
+	echo stream_get_contents($fp);
+} else {
+	echo file_get_contents($tf);
+}
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d   -> {main}() %sstart_with_request_default_match-001.php:0
+%w%f %w%d     -> xdebug_get_tracefile_name() %sstart_with_request_default_match-001.php:2
+%w%f %w%d     -> xdebug_stop_trace() %sstart_with_request_default_match-001.php:4
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/start_with_request_default_match-002.phpt b/xdebug-3.4.5/tests/tracing/start_with_request_default_match-002.phpt
new file mode 100644
index 0000000..44608db
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_with_request_default_match-002.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Starting Tracing: default, trigger match [2]
+--INI--
+xdebug.mode=trace
+xdebug.trace_format=0
+xdebug.start_with_request=default
+xdebug.trigger_value=SOMETHING
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+variables_order=EPGCS
+--ENV--
+XDEBUG_TRACE=SOMETHING
+--FILE--
+<?php
+$tf = xdebug_get_tracefile_name();
+
+xdebug_stop_trace();
+
+if (preg_match('@\.gz$@', $tf)) {
+	$fp = gzopen($tf, 'r');
+	echo stream_get_contents($fp);
+} else {
+	echo file_get_contents($tf);
+}
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d   -> {main}() %sstart_with_request_default_match-002.php:0
+%w%f %w%d     -> xdebug_get_tracefile_name() %sstart_with_request_default_match-002.php:2
+%w%f %w%d     -> xdebug_stop_trace() %sstart_with_request_default_match-002.php:4
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/start_with_request_default_no_env.phpt b/xdebug-3.4.5/tests/tracing/start_with_request_default_no_env.phpt
new file mode 100644
index 0000000..4185685
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_with_request_default_no_env.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Starting Tracing: default, no environment
+--INI--
+xdebug.mode=trace
+xdebug.trigger_value=FOOBAR
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+$fileName = xdebug_get_tracefile_name();
+var_dump($fileName);
+?>
+--EXPECTF--
+bool(false)
diff --git a/xdebug-3.4.5/tests/tracing/start_with_request_never_match.phpt b/xdebug-3.4.5/tests/tracing/start_with_request_never_match.phpt
new file mode 100644
index 0000000..5cb7470
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_with_request_never_match.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Starting Tracing: never, trigger match
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trigger_value=SOMETHING
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--ENV--
+XDEBUG_TRACE=SOMETHING
+--FILE--
+<?php
+$fileName = xdebug_get_tracefile_name();
+var_dump($fileName);
+?>
+--EXPECTF--
+bool(false)
diff --git a/xdebug-3.4.5/tests/tracing/start_with_request_never_no_env.phpt b/xdebug-3.4.5/tests/tracing/start_with_request_never_no_env.phpt
new file mode 100644
index 0000000..36030eb
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_with_request_never_no_env.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Starting Tracing: never, no environment
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+$fileName = xdebug_get_tracefile_name();
+var_dump($fileName);
+?>
+--EXPECTF--
+bool(false)
diff --git a/xdebug-3.4.5/tests/tracing/start_with_request_trigger_env-001.phpt b/xdebug-3.4.5/tests/tracing/start_with_request_trigger_env-001.phpt
new file mode 100644
index 0000000..107edad
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_with_request_trigger_env-001.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Starting Tracing: trigger, environment [1]
+--INI--
+xdebug.mode=trace
+xdebug.trace_format=0
+xdebug.start_with_request=trigger
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+variables_order=PGCS
+--ENV--
+XDEBUG_TRACE=anything
+--FILE--
+<?php
+$tf = xdebug_get_tracefile_name();
+
+xdebug_stop_trace();
+
+if (preg_match('@\.gz$@', $tf)) {
+	$fp = gzopen($tf, 'r');
+	echo stream_get_contents($fp);
+} else {
+	echo file_get_contents($tf);
+}
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d   -> {main}() %sstart_with_request_trigger_env-001.php:0
+%w%f %w%d     -> xdebug_get_tracefile_name() %sstart_with_request_trigger_env-001.php:2
+%w%f %w%d     -> xdebug_stop_trace() %sstart_with_request_trigger_env-001.php:4
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/start_with_request_trigger_env-002.phpt b/xdebug-3.4.5/tests/tracing/start_with_request_trigger_env-002.phpt
new file mode 100644
index 0000000..2de8bda
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_with_request_trigger_env-002.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Starting Tracing: trigger, environment [2]
+--INI--
+xdebug.mode=trace
+xdebug.trace_format=0
+xdebug.start_with_request=trigger
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+variables_order=EPGCS
+--ENV--
+XDEBUG_TRACE=anything
+--FILE--
+<?php
+$tf = xdebug_get_tracefile_name();
+
+xdebug_stop_trace();
+
+if (preg_match('@\.gz$@', $tf)) {
+	$fp = gzopen($tf, 'r');
+	echo stream_get_contents($fp);
+} else {
+	echo file_get_contents($tf);
+}
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d   -> {main}() %sstart_with_request_trigger_env-002.php:0
+%w%f %w%d     -> xdebug_get_tracefile_name() %sstart_with_request_trigger_env-002.php:2
+%w%f %w%d     -> xdebug_stop_trace() %sstart_with_request_trigger_env-002.php:4
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/start_with_request_trigger_match-001.phpt b/xdebug-3.4.5/tests/tracing/start_with_request_trigger_match-001.phpt
new file mode 100644
index 0000000..6635b1c
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_with_request_trigger_match-001.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Starting Tracing: trigger, trigger match [1]
+--INI--
+xdebug.mode=trace
+xdebug.trace_format=0
+xdebug.start_with_request=trigger
+xdebug.trigger_value=SOMETHING
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+variables_order=PGCS
+--ENV--
+XDEBUG_TRACE=SOMETHING
+--FILE--
+<?php
+$tf = xdebug_get_tracefile_name();
+
+xdebug_stop_trace();
+
+if (preg_match('@\.gz$@', $tf)) {
+	$fp = gzopen($tf, 'r');
+	echo stream_get_contents($fp);
+} else {
+	echo file_get_contents($tf);
+}
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d   -> {main}() %sstart_with_request_trigger_match-001.php:0
+%w%f %w%d     -> xdebug_get_tracefile_name() %sstart_with_request_trigger_match-001.php:2
+%w%f %w%d     -> xdebug_stop_trace() %sstart_with_request_trigger_match-001.php:4
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/start_with_request_trigger_match-002.phpt b/xdebug-3.4.5/tests/tracing/start_with_request_trigger_match-002.phpt
new file mode 100644
index 0000000..827ae8a
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_with_request_trigger_match-002.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Starting Tracing: trigger, trigger match [2]
+--INI--
+xdebug.mode=trace
+xdebug.trace_format=0
+xdebug.start_with_request=trigger
+xdebug.trigger_value=SOMETHING
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+variables_order=EPGCS
+--ENV--
+XDEBUG_TRACE=SOMETHING
+--FILE--
+<?php
+$tf = xdebug_get_tracefile_name();
+
+xdebug_stop_trace();
+
+if (preg_match('@\.gz$@', $tf)) {
+	$fp = gzopen($tf, 'r');
+	echo stream_get_contents($fp);
+} else {
+	echo file_get_contents($tf);
+}
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d   -> {main}() %sstart_with_request_trigger_match-002.php:0
+%w%f %w%d     -> xdebug_get_tracefile_name() %sstart_with_request_trigger_match-002.php:2
+%w%f %w%d     -> xdebug_stop_trace() %sstart_with_request_trigger_match-002.php:4
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/start_with_request_trigger_no_env.phpt b/xdebug-3.4.5/tests/tracing/start_with_request_trigger_no_env.phpt
new file mode 100644
index 0000000..ce29e14
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_with_request_trigger_no_env.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Starting Tracing: trigger, no environment
+--INI--
+xdebug.mode=trace
+xdebug.trigger_value=FOOBAR
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+$fileName = xdebug_get_tracefile_name();
+var_dump($fileName);
+?>
+--EXPECTF--
+bool(false)
diff --git a/xdebug-3.4.5/tests/tracing/start_with_request_trigger_no_match.phpt b/xdebug-3.4.5/tests/tracing/start_with_request_trigger_no_match.phpt
new file mode 100644
index 0000000..e928730
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_with_request_trigger_no_match.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Starting Tracing: trigger, no trigger match
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=trigger
+xdebug.trigger_value=FOOBAR
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--ENV--
+XDEBUG_TRACE=SOMETHINGELSE
+--FILE--
+<?php
+$fileName = xdebug_get_tracefile_name();
+var_dump($fileName);
+?>
+--EXPECTF--
+bool(false)
diff --git a/xdebug-3.4.5/tests/tracing/start_zlib_compression.phpt b/xdebug-3.4.5/tests/tracing/start_zlib_compression.phpt
new file mode 100644
index 0000000..f08cb34
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_zlib_compression.phpt
@@ -0,0 +1,37 @@
+--TEST--
+Compression: zlib, use_compression=1
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext-flag compression');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.trace_format=0
+xdebug.start_with_request=yes
+xdebug.trace_output_name=trace.%p.%r
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.use_compression=1
+--FILE--
+<?php
+$tf = xdebug_get_tracefile_name();
+
+xdebug_stop_trace();
+
+echo $tf, "\n";
+if (preg_match('@\.gz$@', $tf)) {
+	$fp = gzopen($tf, 'r');
+	echo stream_get_contents($fp);
+} else {
+	echo file_get_contents($tf);
+}
+?>
+--EXPECTF--
+%s.xt.gz
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d   -> {main}() %s:0
+%w%f %w%d     -> xdebug_get_tracefile_name() %s:2
+%w%f %w%d     -> xdebug_stop_trace() %s:4
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/start_zlib_no_compression.phpt b/xdebug-3.4.5/tests/tracing/start_zlib_no_compression.phpt
new file mode 100644
index 0000000..5697043
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/start_zlib_no_compression.phpt
@@ -0,0 +1,37 @@
+--TEST--
+Compression: zlib, use_compression=0
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('ext-flag compression');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.trace_format=0
+xdebug.start_with_request=yes
+xdebug.trace_output_name=trace.%p.%r
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.use_compression=0
+--FILE--
+<?php
+$tf = xdebug_get_tracefile_name();
+
+xdebug_stop_trace();
+
+echo $tf, "\n";
+if (preg_match('@\.gz$@', $tf)) {
+	$fp = gzopen($tf, 'r');
+	echo stream_get_contents($fp);
+} else {
+	echo file_get_contents($tf);
+}
+?>
+--EXPECTF--
+%s.xt
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d   -> {main}() %s:0
+%w%f %w%d     -> xdebug_get_tracefile_name() %s:2
+%w%f %w%d     -> xdebug_stop_trace() %s:4
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/static-method-calls.phpt b/xdebug-3.4.5/tests/tracing/static-method-calls.phpt
new file mode 100644
index 0000000..064e840
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/static-method-calls.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Test for static method calls
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+class DB {
+	static function query($s) {
+		echo $s."\n";
+	}
+}
+
+DB::query("test");
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+test
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> DB::query($s = 'test') %sstatic-method-calls.php:9
+%w%f %w%d     -> xdebug_stop_trace() %sstatic-method-calls.php:11
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/test11.phpt b/xdebug-3.4.5/tests/tracing/test11.phpt
new file mode 100644
index 0000000..538fba6
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/test11.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Test for indirect function call
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function blaat ()
+{
+}
+
+$func = 'blaat';
+echo $func();
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> blaat() %stest11.php:9
+%w%f %w%d      >=> NULL
+%w%f %w%d     -> xdebug_stop_trace() %stest11.php:11
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/test15.phpt b/xdebug-3.4.5/tests/tracing/test15.phpt
new file mode 100644
index 0000000..7d4e359
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/test15.phpt
@@ -0,0 +1,37 @@
+--TEST--
+Test for variable member functions
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+class a {
+
+	function func_a1() {
+	}
+
+	function func_a2() {
+	}
+
+}
+
+$A = new a;
+$A->func_a1();
+
+$a = 'func_a2';
+$A->$a();
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> a->func_a1() %stest15.php:15
+%w%f %w%d     -> a->func_a2() %stest15.php:18
+%w%f %w%d     -> xdebug_stop_trace() %stest15.php:20
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/test18.phpt b/xdebug-3.4.5/tests/tracing/test18.phpt
new file mode 100644
index 0000000..04d5ec4
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/test18.phpt
@@ -0,0 +1,42 @@
+--TEST--
+Test with eval()
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function bar()
+{
+	return "bar";
+}
+
+function foo()
+{
+	return bar();
+}
+
+foo();
+
+eval("\$foo = foo();\nbar();\nfoo();\n");
+echo $foo, "\n";
+xdebug_stop_trace();
+?>
+--EXPECTF--
+bar
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> foo() %stest18.php:14
+%w%f %w%d       -> bar() %stest18.php:11
+%w%f %w%d     -> eval('$foo = foo();\nbar();\nfoo();\n') %stest18.php:16
+%w%f %w%d       -> foo() %stest18.php(16) : eval()'d code:1
+%w%f %w%d         -> bar() %stest18.php:11
+%w%f %w%d       -> bar() %stest18.php(16) : eval()'d code:2
+%w%f %w%d       -> foo() %stest18.php(16) : eval()'d code:3
+%w%f %w%d         -> bar() %stest18.php:11
+%w%f %w%d     -> xdebug_stop_trace() %stest18.php:18
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/test18a.phpt b/xdebug-3.4.5/tests/tracing/test18a.phpt
new file mode 100644
index 0000000..33e4d47
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/test18a.phpt
@@ -0,0 +1,53 @@
+--TEST--
+Test with eval()
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function bar()
+{
+	return "bar";
+}
+
+function foo()
+{
+	return bar();
+}
+
+foo();
+
+eval("\$foo = foo();\nbar();\nfoo();\n");
+echo $foo, "\n";
+xdebug_stop_trace();
+?>
+--EXPECTF--
+bar
+Version: %d.%s
+File format: %d
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+2	1	1	%f	%d
+2	7	0	%f	%d	foo	1		%stest18a.php	14	0
+3	8	0	%f	%d	bar	1		%stest18a.php	11	0
+3	8	1	%f	%d
+2	7	1	%f	%d
+2	9	0	%f	%d	eval	1	'$foo = foo();\nbar();\nfoo();\n'	%stest18a.php	16	0
+3	10	0	%f	%d	foo	1		%stest18a.php(16) : eval()'d code	1	0
+4	11	0	%f	%d	bar	1		%stest18a.php	11	0
+4	11	1	%f	%d
+3	10	1	%f	%d
+3	12	0	%f	%d	bar	1		%stest18a.php(16) : eval()'d code	2	0
+3	12	1	%f	%d
+3	13	0	%f	%d	foo	1		%stest18a.php(16) : eval()'d code	3	0
+4	14	0	%f	%d	bar	1		%stest18a.php	11	0
+4	14	1	%f	%d
+3	13	1	%f	%d
+2	9	1	%f	%d
+2	15	0	%f	%d	xdebug_stop_trace	0		%stest18a.php	18	0
+			%f	%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/test18b.phpt b/xdebug-3.4.5/tests/tracing/test18b.phpt
new file mode 100644
index 0000000..3f86a2b
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/test18b.phpt
@@ -0,0 +1,42 @@
+--TEST--
+Test with eval()
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=2
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function bar()
+{
+	return "bar";
+}
+
+function foo()
+{
+	return bar();
+}
+
+foo();
+
+eval("\$foo = foo();\nbar();\nfoo();\n");
+echo $foo, "\n";
+xdebug_stop_trace();
+?>
+--EXPECTF--
+bar
+<table style='hyphens: auto; -webkit-hyphens: auto; -ms-hyphens: auto;' class='xdebug-trace' dir='ltr' border='1' cellspacing='0'>
+	<tr><th>#</th><th>Time</th><th>Mem</th><th colspan='2'>Function</th><th>Location</th></tr>
+	<tr><td>7</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;-&gt;</td><td>foo()</td><td>%stest18b.php:14</td></tr>
+	<tr><td>8</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>bar()</td><td>%stest18b.php:11</td></tr>
+	<tr><td>9</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;-&gt;</td><td>eval('$foo = foo();<br />bar();<br />foo();<br />')</td><td>%stest18b.php:16</td></tr>
+	<tr><td>10</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>foo()</td><td>%stest18b.php(16) : eval()'d code:1</td></tr>
+	<tr><td>11</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>bar()</td><td>%stest18b.php:11</td></tr>
+	<tr><td>12</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>bar()</td><td>%stest18b.php(16) : eval()'d code:2</td></tr>
+	<tr><td>13</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>foo()</td><td>%stest18b.php(16) : eval()'d code:3</td></tr>
+	<tr><td>14</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>bar()</td><td>%stest18b.php:11</td></tr>
+	<tr><td>15</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;-&gt;</td><td>xdebug_stop_trace()</td><td>%stest18b.php:18</td></tr>
+</table>
diff --git a/xdebug-3.4.5/tests/tracing/test7b.phpt b/xdebug-3.4.5/tests/tracing/test7b.phpt
new file mode 100644
index 0000000..210a16d
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/test7b.phpt
@@ -0,0 +1,49 @@
+--TEST--
+Test for class members
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+class aaa {
+	public $c1;
+	public $c2;
+	function a1 () {
+		return 'a1';
+	}
+	function a2 () {
+		return 'a2';
+	}
+}
+
+class bbb {
+	function b1 () {
+		return 'a1';
+	}
+	function b2 () {
+		return 'a2';
+	}
+}
+
+
+$a = new aaa;
+$b = new bbb;
+$a->a1();
+$b->b1();
+$a->a2();
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> aaa->a1() %stest7b.php:27
+%w%f %w%d     -> bbb->b1() %stest7b.php:28
+%w%f %w%d     -> aaa->a2() %stest7b.php:29
+%w%f %w%d     -> xdebug_stop_trace() %stest7b.php:31
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/test_class.inc b/xdebug-3.4.5/tests/tracing/test_class.inc
new file mode 100644
index 0000000..873186b
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/test_class.inc
@@ -0,0 +1,14 @@
+<?php
+	class een {
+		function hang ()
+		{
+//			not_existent();
+		}
+
+		function foo2 ()
+		{
+			$this->hang();
+		}
+	}
+?>
+
diff --git a/xdebug-3.4.5/tests/tracing/text-without-params.phpt b/xdebug-3.4.5/tests/tracing/text-without-params.phpt
new file mode 100644
index 0000000..5512d27
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/text-without-params.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Test for trace with xdebug.collect_params turned off (text)
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_assignments=0
+xdebug.collect_params=0
+xdebug.collect_return=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function a ($a, $b, $h, &$i) {
+	echo $a;
+	return $a + $b;
+}
+
+$a = array (1, 2,3,4,5);
+$b = array ("h" => 9.12, $a, $a, $a, "p" => 9 - 0.12);
+echo a (5, 9.12, FALSE, $b), "\n";
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+514.12
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> a() %stext-without-params.php:11
+%w%f %w%d     -> xdebug_stop_trace() %stext-without-params.php:13
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/trace-001.phpt b/xdebug-3.4.5/tests/tracing/trace-001.phpt
new file mode 100644
index 0000000..3e57302
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace-001.phpt
@@ -0,0 +1,235 @@
+--TEST--
+Trace test with fibonacci numbers (format=1)
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+function fibonacci_cache ($n)
+{
+	if (isset ($GLOBALS['fcache'][$n])) {
+		return $GLOBALS['fcache'][$n];
+	}
+
+	if ($n == 0) {
+		return 0;
+	} else if ($n == 1) {
+		return 1;
+	} else if ($n == 2) {
+		return 1;
+	} else {
+		$t = fibonacci_cache($n - 1) + fibonacci_cache($n - 2);
+		$GLOBALS['fcache'][$n] = $t;
+		return $t;
+	}
+}
+
+fibonacci_cache(50);
+xdebug_stop_trace();
+?>
+--EXPECTF--
+Version: %d.%s
+File format: %d
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+2	1	1	%f	%d
+2	7	0	%f	%d	fibonacci_cache	1		%strace-001.php	22	1	50
+3	8	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	49
+4	9	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	48
+5	10	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	47
+6	11	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	46
+7	12	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	45
+8	13	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	44
+9	14	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	43
+10	15	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	42
+11	16	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	41
+12	17	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	40
+13	18	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	39
+14	19	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	38
+15	20	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	37
+16	21	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	36
+17	22	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	35
+18	23	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	34
+19	24	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	33
+20	25	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	32
+21	26	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	31
+22	27	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	30
+23	28	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	29
+24	29	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	28
+25	30	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	27
+26	31	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	26
+27	32	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	25
+28	33	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	24
+29	34	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	23
+30	35	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	22
+31	36	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	21
+32	37	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	20
+33	38	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	19
+34	39	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	18
+35	40	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	17
+36	41	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	16
+37	42	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	15
+38	43	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	14
+39	44	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	13
+40	45	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	12
+41	46	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	11
+42	47	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	10
+43	48	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	9
+44	49	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	8
+45	50	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	7
+46	51	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	6
+47	52	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	5
+48	53	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	4
+49	54	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	3
+50	55	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	2
+50	55	1	%f	%d
+50	56	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	1
+50	56	1	%f	%d
+49	54	1	%f	%d
+49	57	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	2
+49	57	1	%f	%d
+48	53	1	%f	%d
+48	58	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	3
+48	58	1	%f	%d
+47	52	1	%f	%d
+47	59	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	4
+47	59	1	%f	%d
+46	51	1	%f	%d
+46	60	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	5
+46	60	1	%f	%d
+45	50	1	%f	%d
+45	61	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	6
+45	61	1	%f	%d
+44	49	1	%f	%d
+44	62	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	7
+44	62	1	%f	%d
+43	48	1	%f	%d
+43	63	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	8
+43	63	1	%f	%d
+42	47	1	%f	%d
+42	64	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	9
+42	64	1	%f	%d
+41	46	1	%f	%d
+41	65	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	10
+41	65	1	%f	%d
+40	45	1	%f	%d
+40	66	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	11
+40	66	1	%f	%d
+39	44	1	%f	%d
+39	67	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	12
+39	67	1	%f	%d
+38	43	1	%f	%d
+38	68	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	13
+38	68	1	%f	%d
+37	42	1	%f	%d
+37	69	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	14
+37	69	1	%f	%d
+36	41	1	%f	%d
+36	70	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	15
+36	70	1	%f	%d
+35	40	1	%f	%d
+35	71	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	16
+35	71	1	%f	%d
+34	39	1	%f	%d
+34	72	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	17
+34	72	1	%f	%d
+33	38	1	%f	%d
+33	73	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	18
+33	73	1	%f	%d
+32	37	1	%f	%d
+32	74	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	19
+32	74	1	%f	%d
+31	36	1	%f	%d
+31	75	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	20
+31	75	1	%f	%d
+30	35	1	%f	%d
+30	76	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	21
+30	76	1	%f	%d
+29	34	1	%f	%d
+29	77	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	22
+29	77	1	%f	%d
+28	33	1	%f	%d
+28	78	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	23
+28	78	1	%f	%d
+27	32	1	%f	%d
+27	79	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	24
+27	79	1	%f	%d
+26	31	1	%f	%d
+26	80	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	25
+26	80	1	%f	%d
+25	30	1	%f	%d
+25	81	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	26
+25	81	1	%f	%d
+24	29	1	%f	%d
+24	82	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	27
+24	82	1	%f	%d
+23	28	1	%f	%d
+23	83	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	28
+23	83	1	%f	%d
+22	27	1	%f	%d
+22	84	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	29
+22	84	1	%f	%d
+21	26	1	%f	%d
+21	85	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	30
+21	85	1	%f	%d
+20	25	1	%f	%d
+20	86	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	31
+20	86	1	%f	%d
+19	24	1	%f	%d
+19	87	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	32
+19	87	1	%f	%d
+18	23	1	%f	%d
+18	88	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	33
+18	88	1	%f	%d
+17	22	1	%f	%d
+17	89	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	34
+17	89	1	%f	%d
+16	21	1	%f	%d
+16	90	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	35
+16	90	1	%f	%d
+15	20	1	%f	%d
+15	91	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	36
+15	91	1	%f	%d
+14	19	1	%f	%d
+14	92	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	37
+14	92	1	%f	%d
+13	18	1	%f	%d
+13	93	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	38
+13	93	1	%f	%d
+12	17	1	%f	%d
+12	94	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	39
+12	94	1	%f	%d
+11	16	1	%f	%d
+11	95	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	40
+11	95	1	%f	%d
+10	15	1	%f	%d
+10	96	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	41
+10	96	1	%f	%d
+9	14	1	%f	%d
+9	97	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	42
+9	97	1	%f	%d
+8	13	1	%f	%d
+8	98	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	43
+8	98	1	%f	%d
+7	12	1	%f	%d
+7	99	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	44
+7	99	1	%f	%d
+6	11	1	%f	%d
+6	100	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	45
+6	100	1	%f	%d
+5	10	1	%f	%d
+5	101	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	46
+5	101	1	%f	%d
+4	9	1	%f	%d
+4	102	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	47
+4	102	1	%f	%d
+3	8	1	%f	%d
+3	103	0	%f	%d	fibonacci_cache	1		%strace-001.php	16	1	48
+3	103	1	%f	%d
+2	7	1	%f	%d
+2	104	0	%f	%d	xdebug_stop_trace	0		%strace-001.php	23	0
+			%f	%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/trace-002.phpt b/xdebug-3.4.5/tests/tracing/trace-002.phpt
new file mode 100644
index 0000000..cc60406
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace-002.phpt
@@ -0,0 +1,55 @@
+--TEST--
+Trace test with fibonacci numbers (format=2)
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=2
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+function fibonacci_cache ($n)
+{
+	if (isset ($GLOBALS['fcache'][$n])) {
+		return $GLOBALS['fcache'][$n];
+	}
+
+	if ($n == 0) {
+		return 0;
+	} else if ($n == 1) {
+		return 1;
+	} else if ($n == 2) {
+		return 1;
+	} else {
+		$t = fibonacci_cache($n - 1) + fibonacci_cache($n - 2);
+		$GLOBALS['fcache'][$n] = $t;
+		return $t;
+	}
+}
+
+fibonacci_cache(10);
+xdebug_stop_trace();
+?>
+--EXPECTF--
+<table style='hyphens: auto; -webkit-hyphens: auto; -ms-hyphens: auto;' class='xdebug-trace' dir='ltr' border='1' cellspacing='0'>
+	<tr><th>#</th><th>Time</th><th>Mem</th><th colspan='2'>Function</th><th>Location</th></tr>
+	<tr><td>7</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;-&gt;</td><td>fibonacci_cache()</td><td>%strace-002.php:22</td></tr>
+	<tr><td>8</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>fibonacci_cache()</td><td>%strace-002.php:16</td></tr>
+	<tr><td>9</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>fibonacci_cache()</td><td>%strace-002.php:16</td></tr>
+	<tr><td>10</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>fibonacci_cache()</td><td>%strace-002.php:16</td></tr>
+	<tr><td>11</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>fibonacci_cache()</td><td>%strace-002.php:16</td></tr>
+	<tr><td>12</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>fibonacci_cache()</td><td>%strace-002.php:16</td></tr>
+	<tr><td>13</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>fibonacci_cache()</td><td>%strace-002.php:16</td></tr>
+	<tr><td>14</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>fibonacci_cache()</td><td>%strace-002.php:16</td></tr>
+	<tr><td>15</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>fibonacci_cache()</td><td>%strace-002.php:16</td></tr>
+	<tr><td>16</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>fibonacci_cache()</td><td>%strace-002.php:16</td></tr>
+	<tr><td>17</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>fibonacci_cache()</td><td>%strace-002.php:16</td></tr>
+	<tr><td>18</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>fibonacci_cache()</td><td>%strace-002.php:16</td></tr>
+	<tr><td>19</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>fibonacci_cache()</td><td>%strace-002.php:16</td></tr>
+	<tr><td>20</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>fibonacci_cache()</td><td>%strace-002.php:16</td></tr>
+	<tr><td>21</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>fibonacci_cache()</td><td>%strace-002.php:16</td></tr>
+	<tr><td>22</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>fibonacci_cache()</td><td>%strace-002.php:16</td></tr>
+	<tr><td>23</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;&nbsp; &nbsp;-&gt;</td><td>fibonacci_cache()</td><td>%strace-002.php:16</td></tr>
+	<tr><td>24</td><td>%f</td><td align='right'>%d</td><td align='left'>&nbsp; &nbsp;-&gt;</td><td>xdebug_stop_trace()</td><td>%strace-002.php:23</td></tr>
+</table>
diff --git a/xdebug-3.4.5/tests/tracing/trace-003.phpt b/xdebug-3.4.5/tests/tracing/trace-003.phpt
new file mode 100644
index 0000000..5ee0c56
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace-003.phpt
@@ -0,0 +1,135 @@
+--TEST--
+Trace test with fibonacci numbers (format=0)
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+function fibonacci_cache ($n)
+{
+	if (isset ($GLOBALS['fcache'][$n])) {
+		return $GLOBALS['fcache'][$n];
+	}
+
+	if ($n == 0) {
+		return 0;
+	} else if ($n == 1) {
+		return 1;
+	} else if ($n == 2) {
+		return 1;
+	} else {
+		$t = fibonacci_cache($n - 1) + fibonacci_cache($n - 2);
+		$GLOBALS['fcache'][$n] = $t;
+		return $t;
+	}
+}
+
+fibonacci_cache(50);
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> fibonacci_cache($n = 50) %strace-003.php:22
+%w%f %w%d       -> fibonacci_cache($n = 49) %strace-003.php:16
+%w%f %w%d         -> fibonacci_cache($n = 48) %strace-003.php:16
+%w%f %w%d           -> fibonacci_cache($n = 47) %strace-003.php:16
+%w%f %w%d             -> fibonacci_cache($n = 46) %strace-003.php:16
+%w%f %w%d               -> fibonacci_cache($n = 45) %strace-003.php:16
+%w%f %w%d                 -> fibonacci_cache($n = 44) %strace-003.php:16
+%w%f %w%d                   -> fibonacci_cache($n = 43) %strace-003.php:16
+%w%f %w%d                     -> fibonacci_cache($n = 42) %strace-003.php:16
+%w%f %w%d                       -> fibonacci_cache($n = 41) %strace-003.php:16
+%w%f %w%d                         -> fibonacci_cache($n = 40) %strace-003.php:16
+%w%f %w%d                           -> fibonacci_cache($n = 39) %strace-003.php:16
+%w%f %w%d                             -> fibonacci_cache($n = 38) %strace-003.php:16
+%w%f %w%d                               -> fibonacci_cache($n = 37) %strace-003.php:16
+%w%f %w%d                                 -> fibonacci_cache($n = 36) %strace-003.php:16
+%w%f %w%d                                   -> fibonacci_cache($n = 35) %strace-003.php:16
+%w%f %w%d                                     -> fibonacci_cache($n = 34) %strace-003.php:16
+%w%f %w%d                                       -> fibonacci_cache($n = 33) %strace-003.php:16
+%w%f %w%d                                         -> fibonacci_cache($n = 32) %strace-003.php:16
+%w%f %w%d                                           -> fibonacci_cache($n = 31) %strace-003.php:16
+%w%f %w%d                                             -> fibonacci_cache($n = 30) %strace-003.php:16
+%w%f %w%d                                               -> fibonacci_cache($n = 29) %strace-003.php:16
+%w%f %w%d                                                 -> fibonacci_cache($n = 28) %strace-003.php:16
+%w%f %w%d                                                   -> fibonacci_cache($n = 27) %strace-003.php:16
+%w%f %w%d                                                     -> fibonacci_cache($n = 26) %strace-003.php:16
+%w%f %w%d                                                       -> fibonacci_cache($n = 25) %strace-003.php:16
+%w%f %w%d                                                         -> fibonacci_cache($n = 24) %strace-003.php:16
+%w%f %w%d                                                           -> fibonacci_cache($n = 23) %strace-003.php:16
+%w%f %w%d                                                             -> fibonacci_cache($n = 22) %strace-003.php:16
+%w%f %w%d                                                               -> fibonacci_cache($n = 21) %strace-003.php:16
+%w%f %w%d                                                                 -> fibonacci_cache($n = 20) %strace-003.php:16
+%w%f %w%d                                                                   -> fibonacci_cache($n = 19) %strace-003.php:16
+%w%f %w%d                                                                     -> fibonacci_cache($n = 18) %strace-003.php:16
+%w%f %w%d                                                                       -> fibonacci_cache($n = 17) %strace-003.php:16
+%w%f %w%d                                                                         -> fibonacci_cache($n = 16) %strace-003.php:16
+%w%f %w%d                                                                           -> fibonacci_cache($n = 15) %strace-003.php:16
+%w%f %w%d                                                                             -> fibonacci_cache($n = 14) %strace-003.php:16
+%w%f %w%d                                                                               -> fibonacci_cache($n = 13) %strace-003.php:16
+%w%f %w%d                                                                                 -> fibonacci_cache($n = 12) %strace-003.php:16
+%w%f %w%d                                                                                   -> fibonacci_cache($n = 11) %strace-003.php:16
+%w%f %w%d                                                                                     -> fibonacci_cache($n = 10) %strace-003.php:16
+%w%f %w%d                                                                                       -> fibonacci_cache($n = 9) %strace-003.php:16
+%w%f %w%d                                                                                         -> fibonacci_cache($n = 8) %strace-003.php:16
+%w%f %w%d                                                                                           -> fibonacci_cache($n = 7) %strace-003.php:16
+%w%f %w%d                                                                                             -> fibonacci_cache($n = 6) %strace-003.php:16
+%w%f %w%d                                                                                               -> fibonacci_cache($n = 5) %strace-003.php:16
+%w%f %w%d                                                                                                 -> fibonacci_cache($n = 4) %strace-003.php:16
+%w%f %w%d                                                                                                   -> fibonacci_cache($n = 3) %strace-003.php:16
+%w%f %w%d                                                                                                     -> fibonacci_cache($n = 2) %strace-003.php:16
+%w%f %w%d                                                                                                     -> fibonacci_cache($n = 1) %strace-003.php:16
+%w%f %w%d                                                                                                   -> fibonacci_cache($n = 2) %strace-003.php:16
+%w%f %w%d                                                                                                 -> fibonacci_cache($n = 3) %strace-003.php:16
+%w%f %w%d                                                                                               -> fibonacci_cache($n = 4) %strace-003.php:16
+%w%f %w%d                                                                                             -> fibonacci_cache($n = 5) %strace-003.php:16
+%w%f %w%d                                                                                           -> fibonacci_cache($n = 6) %strace-003.php:16
+%w%f %w%d                                                                                         -> fibonacci_cache($n = 7) %strace-003.php:16
+%w%f %w%d                                                                                       -> fibonacci_cache($n = 8) %strace-003.php:16
+%w%f %w%d                                                                                     -> fibonacci_cache($n = 9) %strace-003.php:16
+%w%f %w%d                                                                                   -> fibonacci_cache($n = 10) %strace-003.php:16
+%w%f %w%d                                                                                 -> fibonacci_cache($n = 11) %strace-003.php:16
+%w%f %w%d                                                                               -> fibonacci_cache($n = 12) %strace-003.php:16
+%w%f %w%d                                                                             -> fibonacci_cache($n = 13) %strace-003.php:16
+%w%f %w%d                                                                           -> fibonacci_cache($n = 14) %strace-003.php:16
+%w%f %w%d                                                                         -> fibonacci_cache($n = 15) %strace-003.php:16
+%w%f %w%d                                                                       -> fibonacci_cache($n = 16) %strace-003.php:16
+%w%f %w%d                                                                     -> fibonacci_cache($n = 17) %strace-003.php:16
+%w%f %w%d                                                                   -> fibonacci_cache($n = 18) %strace-003.php:16
+%w%f %w%d                                                                 -> fibonacci_cache($n = 19) %strace-003.php:16
+%w%f %w%d                                                               -> fibonacci_cache($n = 20) %strace-003.php:16
+%w%f %w%d                                                             -> fibonacci_cache($n = 21) %strace-003.php:16
+%w%f %w%d                                                           -> fibonacci_cache($n = 22) %strace-003.php:16
+%w%f %w%d                                                         -> fibonacci_cache($n = 23) %strace-003.php:16
+%w%f %w%d                                                       -> fibonacci_cache($n = 24) %strace-003.php:16
+%w%f %w%d                                                     -> fibonacci_cache($n = 25) %strace-003.php:16
+%w%f %w%d                                                   -> fibonacci_cache($n = 26) %strace-003.php:16
+%w%f %w%d                                                 -> fibonacci_cache($n = 27) %strace-003.php:16
+%w%f %w%d                                               -> fibonacci_cache($n = 28) %strace-003.php:16
+%w%f %w%d                                             -> fibonacci_cache($n = 29) %strace-003.php:16
+%w%f %w%d                                           -> fibonacci_cache($n = 30) %strace-003.php:16
+%w%f %w%d                                         -> fibonacci_cache($n = 31) %strace-003.php:16
+%w%f %w%d                                       -> fibonacci_cache($n = 32) %strace-003.php:16
+%w%f %w%d                                     -> fibonacci_cache($n = 33) %strace-003.php:16
+%w%f %w%d                                   -> fibonacci_cache($n = 34) %strace-003.php:16
+%w%f %w%d                                 -> fibonacci_cache($n = 35) %strace-003.php:16
+%w%f %w%d                               -> fibonacci_cache($n = 36) %strace-003.php:16
+%w%f %w%d                             -> fibonacci_cache($n = 37) %strace-003.php:16
+%w%f %w%d                           -> fibonacci_cache($n = 38) %strace-003.php:16
+%w%f %w%d                         -> fibonacci_cache($n = 39) %strace-003.php:16
+%w%f %w%d                       -> fibonacci_cache($n = 40) %strace-003.php:16
+%w%f %w%d                     -> fibonacci_cache($n = 41) %strace-003.php:16
+%w%f %w%d                   -> fibonacci_cache($n = 42) %strace-003.php:16
+%w%f %w%d                 -> fibonacci_cache($n = 43) %strace-003.php:16
+%w%f %w%d               -> fibonacci_cache($n = 44) %strace-003.php:16
+%w%f %w%d             -> fibonacci_cache($n = 45) %strace-003.php:16
+%w%f %w%d           -> fibonacci_cache($n = 46) %strace-003.php:16
+%w%f %w%d         -> fibonacci_cache($n = 47) %strace-003.php:16
+%w%f %w%d       -> fibonacci_cache($n = 48) %strace-003.php:16
+%w%f %w%d     -> xdebug_stop_trace() %strace-003.php:23
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/trace-filter-ns-exclude-001.phpt b/xdebug-3.4.5/tests/tracing/trace-filter-ns-exclude-001.phpt
new file mode 100644
index 0000000..1030d91
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace-filter-ns-exclude-001.phpt
@@ -0,0 +1,39 @@
+--TEST--
+Filtered tracing: namespace exclude [1]
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+$cwd = __DIR__;
+xdebug_set_filter(XDEBUG_FILTER_TRACING, XDEBUG_NAMESPACE_EXCLUDE, [ 'XDEBUG' ] );
+
+include "$cwd/../filter/foobar/foobar.php";
+include "$cwd/../filter/xdebug/xdebug.php";
+
+require_once 'capture-trace.inc';
+
+Foobar::foo("hi");
+XDEBUG::foo("hi");
+Xdebug::foo("hi");
+	
+xdebug_stop_trace();
+?>
+--EXPECTF--
+ello!
+ello!
+ello!
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> Foobar::foo($s = 'hi') %strace-filter-ns-exclude-001.php:10
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%efoobar%efoobar.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%exdebug%exdebug.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%exdebug%exdebug.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> xdebug_stop_trace() %strace-filter-ns-exclude-001.php:14
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/trace-filter-ns-exclude-002.phpt b/xdebug-3.4.5/tests/tracing/trace-filter-ns-exclude-002.phpt
new file mode 100644
index 0000000..d505947
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace-filter-ns-exclude-002.phpt
@@ -0,0 +1,41 @@
+--TEST--
+Filtered tracing: namespace exclude [2]
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+$cwd = __DIR__;
+xdebug_set_filter(XDEBUG_FILTER_TRACING, XDEBUG_NAMESPACE_EXCLUDE, [] );
+
+include "$cwd/../filter/foobar/foobar.php";
+include "$cwd/../filter/xdebug/xdebug.php";
+
+require_once 'capture-trace.inc';
+
+Foobar::foo("hi");
+XDEBUG::foo("hi");
+Xdebug::foo("hi");
+	
+xdebug_stop_trace();
+?>
+--EXPECTF--
+ello!
+ello!
+ello!
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> Foobar::foo($s = 'hi') %strace-filter-ns-exclude-002.php:10
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%efoobar%efoobar.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> Xdebug::foo($s = 'hi') %strace-filter-ns-exclude-002.php:11
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%exdebug%exdebug.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> Xdebug::foo($s = 'hi') %strace-filter-ns-exclude-002.php:12
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%exdebug%exdebug.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> xdebug_stop_trace() %strace-filter-ns-exclude-002.php:14
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/trace-filter-ns-exclude-003.phpt b/xdebug-3.4.5/tests/tracing/trace-filter-ns-exclude-003.phpt
new file mode 100644
index 0000000..2b25c43
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace-filter-ns-exclude-003.phpt
@@ -0,0 +1,39 @@
+--TEST--
+Filtered tracing: namespace exclude [3]
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+$cwd = __DIR__;
+xdebug_set_filter(XDEBUG_FILTER_TRACING, XDEBUG_NAMESPACE_EXCLUDE, [ '\\Xdebug' ] );
+
+include "$cwd/../filter/foobar/foobar.php";
+include "$cwd/../filter/xdebug/xdebug.php";
+
+require_once 'capture-trace.inc';
+
+Foobar::foo("hi");
+XDEBUG::foo("hi");
+Xdebug::foo("hi");
+	
+xdebug_stop_trace();
+?>
+--EXPECTF--
+ello!
+ello!
+ello!
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> Foobar::foo($s = 'hi') %strace-filter-ns-exclude-003.php:10
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%efoobar%efoobar.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%exdebug%exdebug.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%exdebug%exdebug.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> xdebug_stop_trace() %strace-filter-ns-exclude-003.php:14
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/trace-filter-ns-include-001.phpt b/xdebug-3.4.5/tests/tracing/trace-filter-ns-include-001.phpt
new file mode 100644
index 0000000..4fa2eb1
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace-filter-ns-include-001.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Filtered tracing: namespace include [1]
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+$cwd = __DIR__;
+xdebug_set_filter(XDEBUG_FILTER_TRACING, XDEBUG_NAMESPACE_INCLUDE, [ '', 'XDEBUG' ] );
+
+include "$cwd/../filter/foobar/foobar.php";
+include "$cwd/../filter/xdebug/xdebug.php";
+
+require_once 'capture-trace.inc';
+
+Foobar::foo("hi");
+XDEBUG::foo("hi");
+Xdebug::foo("hi");
+	
+xdebug_stop_trace();
+?>
+--EXPECTF--
+ello!
+ello!
+ello!
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%efoobar%efoobar.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> Xdebug::foo($s = 'hi') %strace-filter-ns-include-001.php:11
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%exdebug%exdebug.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> Xdebug::foo($s = 'hi') %strace-filter-ns-include-001.php:12
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%exdebug%exdebug.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> xdebug_stop_trace() %strace-filter-ns-include-001.php:14
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/trace-filter-ns-include-002.phpt b/xdebug-3.4.5/tests/tracing/trace-filter-ns-include-002.phpt
new file mode 100644
index 0000000..8687e8d
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace-filter-ns-include-002.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Filtered tracing: namespace include [2]
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+$cwd = __DIR__;
+xdebug_set_filter(XDEBUG_FILTER_TRACING, XDEBUG_NAMESPACE_INCLUDE, [ '', '\\XDEBUG' ] );
+
+include "$cwd/../filter/foobar/foobar.php";
+include "$cwd/../filter/xdebug/xdebug.php";
+
+require_once 'capture-trace.inc';
+
+Foobar::foo("hi");
+XDEBUG::foo("hi");
+Xdebug::foo("hi");
+	
+xdebug_stop_trace();
+?>
+--EXPECTF--
+ello!
+ello!
+ello!
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%efoobar%efoobar.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> Xdebug::foo($s = 'hi') %strace-filter-ns-include-002.php:11
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%exdebug%exdebug.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> Xdebug::foo($s = 'hi') %strace-filter-ns-include-002.php:12
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%exdebug%exdebug.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> xdebug_stop_trace() %strace-filter-ns-include-002.php:14
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/trace-filter-ns-include-003.phpt b/xdebug-3.4.5/tests/tracing/trace-filter-ns-include-003.phpt
new file mode 100644
index 0000000..3f252b9
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace-filter-ns-include-003.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Filtered tracing: namespace include [3]
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+$cwd = __DIR__;
+xdebug_set_filter(XDEBUG_FILTER_TRACING, XDEBUG_NAMESPACE_INCLUDE, [ '', '\XDEBUG' ] );
+
+include "$cwd/../filter/foobar/foobar.php";
+include "$cwd/../filter/xdebug/xdebug.php";
+
+require_once 'capture-trace.inc';
+
+Foobar::foo("hi");
+XDEBUG::foo("hi");
+Xdebug::foo("hi");
+	
+xdebug_stop_trace();
+?>
+--EXPECTF--
+ello!
+ello!
+ello!
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%efoobar%efoobar.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> Xdebug::foo($s = 'hi') %strace-filter-ns-include-003.php:11
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%exdebug%exdebug.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> Xdebug::foo($s = 'hi') %strace-filter-ns-include-003.php:12
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%exdebug%exdebug.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> xdebug_stop_trace() %strace-filter-ns-include-003.php:14
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/trace-filter-ns-include-004.phpt b/xdebug-3.4.5/tests/tracing/trace-filter-ns-include-004.phpt
new file mode 100644
index 0000000..4f93a76
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace-filter-ns-include-004.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Filtered tracing: namespace include [1]
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+$cwd = __DIR__;
+xdebug_set_filter(XDEBUG_FILTER_TRACING, XDEBUG_NAMESPACE_INCLUDE, [ '', 'XDEBUG' ] );
+
+include "$cwd/../filter/foobar/foobar.php";
+include "$cwd/../filter/xdebug/trace/xdebug.php";
+
+require_once 'capture-trace.inc';
+
+Foobar::foo("hi");
+XDEBUG\TRACE::foo("hi");
+Xdebug\Trace::foo("hi");
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+ello!
+ello!
+ello!
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%efoobar%efoobar.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> Xdebug\Trace::foo($s = 'hi') %strace-filter-ns-include-004.php:11
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%exdebug%etrace%exdebug.php:8
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> Xdebug\Trace::foo($s = 'hi') %strace-filter-ns-include-004.php:12
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%exdebug%etrace%exdebug.php:8
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> xdebug_stop_trace() %strace-filter-ns-include-004.php:14
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/trace-filter-path-exclude-001.phpt b/xdebug-3.4.5/tests/tracing/trace-filter-path-exclude-001.phpt
new file mode 100644
index 0000000..b4f98e5
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace-filter-path-exclude-001.phpt
@@ -0,0 +1,34 @@
+--TEST--
+Filtered tracing: path exclude [1]
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+$cwd = __DIR__; $s = DIRECTORY_SEPARATOR; $includeDir = realpath( $cwd . '/..' );
+xdebug_set_filter(XDEBUG_FILTER_TRACING, XDEBUG_PATH_EXCLUDE, [ "{$includeDir}{$s}filter{$s}xdebug" ] );
+
+include "{$includeDir}/filter/foobar/foobar.php";
+include "{$includeDir}/filter/xdebug/xdebug.php";
+
+require_once 'capture-trace.inc';
+
+Foobar::foo("hi");
+Xdebug::foo("hi");
+	
+xdebug_stop_trace();
+?>
+--EXPECTF--
+ello!
+ello!
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> Foobar::foo($s = 'hi') %strace-filter-path-exclude-001.php:10
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%efoobar%efoobar.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> Xdebug::foo($s = 'hi') %strace-filter-path-exclude-001.php:11
+%w%f %w%d     -> xdebug_stop_trace() %strace-filter-path-exclude-001.php:13
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/trace-filter-path-include-001.phpt b/xdebug-3.4.5/tests/tracing/trace-filter-path-include-001.phpt
new file mode 100644
index 0000000..e5ef0e8
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace-filter-path-include-001.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Filtered tracing: path include [1]
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+$cwd = __DIR__; $s = DIRECTORY_SEPARATOR; $includeDir = realpath( $cwd . '/..' );
+xdebug_set_filter(XDEBUG_FILTER_TRACING, XDEBUG_PATH_INCLUDE, [ "{$includeDir}{$s}filter{$s}xdebug" ] );
+
+include "{$includeDir}/filter/foobar/foobar.php";
+include "{$includeDir}/filter/xdebug/xdebug.php";
+
+require_once 'capture-trace.inc';
+
+Foobar::foo("hi");
+Xdebug::foo("hi");
+	
+xdebug_stop_trace();
+?>
+--EXPECTF--
+ello!
+ello!
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%exdebug%exdebug.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/trace-filter-path-include-002.phpt b/xdebug-3.4.5/tests/tracing/trace-filter-path-include-002.phpt
new file mode 100644
index 0000000..bee1e3e
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace-filter-path-include-002.phpt
@@ -0,0 +1,34 @@
+--TEST--
+Filtered tracing: path include [2]
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+$cwd = __DIR__; $s = DIRECTORY_SEPARATOR; $includeDir = realpath( $cwd . '/..' );
+xdebug_set_filter(XDEBUG_FILTER_TRACING, XDEBUG_PATH_INCLUDE, [ "{$includeDir}{$s}filter{$s}xdebug", "{$cwd}{$s}trace-filter" ] );
+
+include "{$includeDir}/filter/foobar/foobar.php";
+include "{$includeDir}/filter/xdebug/xdebug.php";
+
+require_once 'capture-trace.inc';
+
+Foobar::foo("hi");
+Xdebug::foo("hi");
+	
+xdebug_stop_trace();
+?>
+--EXPECTF--
+ello!
+ello!
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> Foobar::foo($s = 'hi') %strace-filter-path-include-002.php:10
+%w%f %w%d     -> Xdebug::foo($s = 'hi') %strace-filter-path-include-002.php:11
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%exdebug%exdebug.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> xdebug_stop_trace() %strace-filter-path-include-002.php:13
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/trace-filter-path-include-003.phpt b/xdebug-3.4.5/tests/tracing/trace-filter-path-include-003.phpt
new file mode 100644
index 0000000..1a4ad40
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace-filter-path-include-003.phpt
@@ -0,0 +1,29 @@
+--TEST--
+Filtered tracing: path include [3]
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+$cwd = __DIR__;
+xdebug_set_filter(XDEBUG_FILTER_TRACING, XDEBUG_PATH_INCLUDE, [] );
+
+include "$cwd/../filter/foobar/foobar.php";
+include "$cwd/../filter/xdebug/xdebug.php";
+
+require_once 'capture-trace.inc';
+
+Foobar::foo("hi");
+Xdebug::foo("hi");
+	
+xdebug_stop_trace();
+?>
+--EXPECTF--
+ello!
+ello!
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/trace-filter-path-include-004.phpt b/xdebug-3.4.5/tests/tracing/trace-filter-path-include-004.phpt
new file mode 100644
index 0000000..252cffe
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace-filter-path-include-004.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Filtered tracing: path include [4]
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=1
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+$cwd = __DIR__; $s = DIRECTORY_SEPARATOR;
+xdebug_set_filter(XDEBUG_FILTER_TRACING, XDEBUG_PATH_INCLUDE, [] );
+
+include "$cwd/../filter/foobar/foobar.php";
+include "$cwd/../filter/xdebug/xdebug.php";
+
+require_once 'capture-trace.inc';
+
+Foobar::foo("hi");
+Xdebug::foo("hi");
+
+xdebug_set_filter(XDEBUG_FILTER_TRACING, XDEBUG_PATH_INCLUDE, [ "{$cwd}{$s}filter{$s}foobar", "" ] );
+
+Foobar::foo("hi");
+Xdebug::foo("hi");
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+ello!
+ello!
+ello!
+ello!
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> Foobar::foo($s = 'hi') %strace-filter-path-include-004.php:15
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%efoobar%efoobar.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> Xdebug::foo($s = 'hi') %strace-filter-path-include-004.php:16
+%w%f %w%d       -> strstr($haystack = 'Hello!\n', $needle = 'e') %sfilter%exdebug%exdebug.php:6
+%w%f %w%d        >=> 'ello!\n'
+%w%f %w%d     -> xdebug_stop_trace() %strace-filter-path-include-004.php:18
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/trace_enum-001.phpt b/xdebug-3.4.5/tests/tracing/trace_enum-001.phpt
new file mode 100644
index 0000000..565182b
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace_enum-001.phpt
@@ -0,0 +1,60 @@
+--TEST--
+Test for enums [0]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+enum Language {
+	case English;
+	case Cymru;
+	case Gàidhlig;
+}
+$lang = Language::Gàidhlig;
+
+enum Currency: string {
+	case EUR = "€";
+	case GBP = "£";
+}
+$eur = Currency::EUR;
+
+enum Unit: int {
+	case Second = 1;
+	case Minute = 60;
+	case Hour = 3600;
+	case Day = 86400;
+}
+$time = Unit::Hour;
+
+xdebug_var_dump( $lang, $eur, $time );
+echo "\n";
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+%strace_enum-001.php:25:
+enum Language::Gàidhlig;
+%strace_enum-001.php:25:
+enum Currency::EUR : string("€");
+%strace_enum-001.php:25:
+enum Unit::Hour : int(3600);
+
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w               => $tf = '%s' %s
+%w             => $lang = enum Language::Gàidhlig %strace_enum-001.php:9
+%w             => $eur = enum Currency::EUR('€') %strace_enum-001.php:15
+%w             => $time = enum Unit::Hour(3600) %strace_enum-001.php:23
+%w%f %w%d     -> xdebug_var_dump(...$variable = variadic(0 => enum Language::Gàidhlig, 1 => enum Currency::EUR('€'), 2 => enum Unit::Hour(3600))) %strace_enum-001.php:25
+%w%f %w%d     -> xdebug_stop_trace() %strace_enum-001.php:28
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/trace_enum-002.phpt b/xdebug-3.4.5/tests/tracing/trace_enum-002.phpt
new file mode 100644
index 0000000..8f02a86
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace_enum-002.phpt
@@ -0,0 +1,64 @@
+--TEST--
+Test for enums [1]
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=1
+xdebug.trace_format=1
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+enum Language {
+	case English;
+	case Cymru;
+	case Gàidhlig;
+}
+$lang = Language::Gàidhlig;
+
+enum Currency: string {
+	case EUR = "€";
+	case GBP = "£";
+}
+$eur = Currency::EUR;
+
+enum Unit: int {
+	case Second = 1;
+	case Minute = 60;
+	case Hour = 3600;
+	case Day = 86400;
+}
+$time = Unit::Hour;
+
+xdebug_var_dump( $lang, $eur, $time );
+echo "\n";
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+%strace_enum-002.php:25:
+enum Language::Gàidhlig;
+%strace_enum-002.php:25:
+enum Currency::EUR : string("€");
+%strace_enum-002.php:25:
+enum Unit::Hour : int(3600);
+
+Version: %s
+File format: 4
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+2		A						%s	%d	$tf = '%s'
+2	1	1	%f	%d
+1		A						%strace_enum-002.php	9	$lang = enum Language::Gàidhlig
+1		A						%strace_enum-002.php	15	$eur = enum Currency::EUR('€')
+1		A						%strace_enum-002.php	23	$time = enum Unit::Hour(3600)
+2	7	0	%f	%d	xdebug_var_dump	0		%strace_enum-002.php	25	3	enum Language::Gàidhlig	enum Currency::EUR('€')	enum Unit::Hour(3600)
+2	7	1	%f	%d
+2	8	0	%f	%d	xdebug_stop_trace	0		%strace_enum-002.php	28	0
+			%f	%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/trace_with_magic_call_method.phpt b/xdebug-3.4.5/tests/tracing/trace_with_magic_call_method.phpt
new file mode 100644
index 0000000..b385d51
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace_with_magic_call_method.phpt
@@ -0,0 +1,41 @@
+--TEST--
+Test for line numbers and arguments with __call (>= PHP 8.1)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+class Test {
+	public function __construct() { }
+	public function __call($func, $args) {
+		return $this->$func($args);
+	}
+	private function testFunc($args) {
+		array_sum($args);
+	}
+}
+
+$test = new Test();
+$test->testFunc(21, 62);
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> Test->__construct() %strace_with_magic_call_method.php:14
+%w%f %w%d     -> Test->__call($func = 'testFunc', $args = [0 => 21, 1 => 62]) %strace_with_magic_call_method.php:15
+%w%f %w%d       -> Test->testFunc($args = [0 => 21, 1 => 62]) %strace_with_magic_call_method.php:7
+%w%f %w%d         -> array_sum($ar%s = [0 => 21, 1 => 62]) %strace_with_magic_call_method.php:10
+%w%f %w%d     -> xdebug_stop_trace() %strace_with_magic_call_method.php:17
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/trace_with_magic_call_method_and_contents.phpt b/xdebug-3.4.5/tests/tracing/trace_with_magic_call_method_and_contents.phpt
new file mode 100644
index 0000000..fafa8ed
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace_with_magic_call_method_and_contents.phpt
@@ -0,0 +1,41 @@
+--TEST--
+Test for line numbers and arguments with __call including contents (>= PHP 8.1)
+--SKIPIF--
+<?php
+require __DIR__ . '/../utils.inc';
+check_reqs('PHP >= 8.1');
+?>
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+class Test {
+	public function __construct() { }
+	public function __call($func, $args) {
+		return $this->$func($args);
+	}
+	private function testFunc($args) {
+		array_sum($args);
+	}
+}
+
+$test = new Test();
+$test->testFunc(21, 62);
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> Test->__construct() %strace_with_magic_call_method_and_contents.php:14
+%w%f %w%d     -> Test->__call($func = 'testFunc', $args = [0 => 21, 1 => 62]) %strace_with_magic_call_method_and_contents.php:15
+%w%f %w%d       -> Test->testFunc($args = [0 => 21, 1 => 62]) %strace_with_magic_call_method_and_contents.php:7
+%w%f %w%d         -> array_sum($ar%s = [0 => 21, 1 => 62]) %strace_with_magic_call_method_and_contents.php:10
+%w%f %w%d     -> xdebug_stop_trace() %strace_with_magic_call_method_and_contents.php:17
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/trace_with_magic_methods.phpt b/xdebug-3.4.5/tests/tracing/trace_with_magic_methods.phpt
new file mode 100644
index 0000000..a4a91e9
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace_with_magic_methods.phpt
@@ -0,0 +1,47 @@
+--TEST--
+Test for line numbers for __get, __set, __isset, and __unset
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.trace_format=0
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+class Test {
+    private $container = array();
+    public function __construct() { }
+    public function __set($offset, $value) {
+        $this->container[$offset] = $value;
+    }
+    public function __isset($offset) {
+        return isset($this->container[$offset]);
+    }
+    public function __unset($offset) {
+        unset($this->container[$offset]);
+    }
+    public function __get($offset) {
+        return isset($this->container[$offset]) ? $this->container[$offset] : null;
+    }
+}
+
+$test = new Test();
+$test->test = 'test';
+$foo = $test->test;
+isset($test->test);
+unset($test->test);
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> Test->__construct() %strace_with_magic_methods.php:21
+%w%f %w%d     -> Test->__set($offset = 'test', $value = 'test') %strace_with_magic_methods.php:22
+%w%f %w%d     -> Test->__get($offset = 'test') %strace_with_magic_methods.php:23
+%w%f %w%d     -> Test->__isset($offset = 'test') %strace_with_magic_methods.php:24
+%w%f %w%d     -> Test->__unset($offset = 'test') %strace_with_magic_methods.php:25
+%w%f %w%d     -> xdebug_stop_trace() %strace_with_magic_methods.php:27
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/tracing/trace_with_naked_filename.phpt b/xdebug-3.4.5/tests/tracing/trace_with_naked_filename.phpt
new file mode 100644
index 0000000..6996a82
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/trace_with_naked_filename.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Test trace with "naked filename"
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+xdebug.use_compression=0
+--FILE--
+<?php
+$tf = xdebug_start_trace(sys_get_temp_dir() . '/bug971' . uniqid('', true), XDEBUG_TRACE_COMPUTERIZED);
+echo $tf, "\n";
+xdebug_stop_trace();
+unlink($tf);
+
+$tf = xdebug_start_trace(sys_get_temp_dir() . '/bug971' . uniqid('', true), XDEBUG_TRACE_COMPUTERIZED | XDEBUG_TRACE_NAKED_FILENAME);
+echo $tf, "\n";
+xdebug_stop_trace();
+unlink($tf);
+?>
+--EXPECTF--
+%sbug971%s.xt
+%sbug971%s
diff --git a/xdebug-3.4.5/tests/tracing/variable-functions.phpt b/xdebug-3.4.5/tests/tracing/variable-functions.phpt
new file mode 100644
index 0000000..85af737
--- /dev/null
+++ b/xdebug-3.4.5/tests/tracing/variable-functions.phpt
@@ -0,0 +1,56 @@
+--TEST--
+Test for variable function calls
+--INI--
+xdebug.mode=trace
+xdebug.start_with_request=no
+xdebug.collect_return=0
+xdebug.collect_assignments=0
+xdebug.trace_format=0
+--FILE--
+<?php
+require_once 'capture-trace.inc';
+
+function foo1 ($a)
+{
+	return addslashes ($a);
+}
+
+function foo2 ($a)
+{
+	return addslashes ($a);
+}
+
+function foo3 ($a)
+{
+	return addslashes ($a);
+}
+
+function foo4 ($a)
+{
+	return addslashes ($a);
+}
+
+$f = 'foo1';
+$f('test\'s');
+$g = 'foo4';
+$g('test\'s');
+$h = 'foo2';
+$h('test\'s');
+$i = 'foo3';
+$i('test\'s');
+
+xdebug_stop_trace();
+?>
+--EXPECTF--
+TRACE START [%d-%d-%d %d:%d:%d.%d]
+%w%f %w%d     -> foo1($a = 'test\'s') %svariable-functions.php:25
+%w%f %w%d       -> addslashes($str%S = 'test\'s') %svariable-functions.php:6
+%w%f %w%d     -> foo4($a = 'test\'s') %svariable-functions.php:27
+%w%f %w%d       -> addslashes($str%S = 'test\'s') %svariable-functions.php:21
+%w%f %w%d     -> foo2($a = 'test\'s') %svariable-functions.php:29
+%w%f %w%d       -> addslashes($str%S = 'test\'s') %svariable-functions.php:11
+%w%f %w%d     -> foo3($a = 'test\'s') %svariable-functions.php:31
+%w%f %w%d       -> addslashes($str%S = 'test\'s') %svariable-functions.php:16
+%w%f %w%d     -> xdebug_stop_trace() %svariable-functions.php:33
+%w%f %w%d
+TRACE END   [%d-%d-%d %d:%d:%d.%d]
diff --git a/xdebug-3.4.5/tests/utils.inc b/xdebug-3.4.5/tests/utils.inc
new file mode 100644
index 0000000..44d1f0c
--- /dev/null
+++ b/xdebug-3.4.5/tests/utils.inc
@@ -0,0 +1,222 @@
+<?php
+function runtime_version( $value, $operator )
+{
+	return version_compare( phpversion(), $value, $operator );
+}
+
+function opcache_active()
+{
+	if (! extension_loaded( 'zend opcache' ) )
+	{
+		return false;
+	}
+
+	if ( ini_get( 'opcache.enable' ) == 0 )
+	{
+		return false;
+	}
+
+	if ( ini_get( 'opcache.enable_cli' ) == 0 )
+	{
+		return false;
+	}
+
+	if ( ini_get( 'opcache.optimization_level' ) === "0" )
+	{
+		return false;
+	}
+
+	return true;
+}
+
+function check_reqs( $req_str )
+{
+	$missing = 0;
+	$errors = [];
+
+	$parts = explode( ';', $req_str );
+
+	foreach ( $parts as $key => $req )
+	{
+		$parts[$key] = $req = trim( $req );
+		$old_missing = $missing;
+
+		if ( $req === 'ZTS' )
+		{
+			$missing += ( PHP_ZTS == 0 );
+		}
+		if ( $req === 'NTS' )
+		{
+			$missing += ( PHP_ZTS == 1 );
+		}
+		if ( $req === 'opcache' )
+		{
+			$missing += ( !opcache_active() );
+		}
+		if ( $req === '!opcache' )
+		{
+			$missing += opcache_active();
+		}
+
+		if ( $req === 'linux' )
+		{
+			$missing += ( php_uname('s') != 'Linux' );
+		}
+		if ( $req === '!linux' )
+		{
+			$missing += ( php_uname('s') == 'Linux' );
+		}
+
+		if ( $req === 'sunos' )
+		{
+			$missing += ( php_uname('s') != 'SunOS' );
+		}
+		if ( $req === '!sunos' )
+		{
+			$missing += ( php_uname('s') == 'SunOS' );
+		}
+
+		if ( $req === 'win' )
+		{
+			$missing += ( substr( PHP_OS, 0, 3 ) !== 'WIN' );
+		}
+		if ( $req === '!win' )
+		{
+			$missing += ( substr( PHP_OS, 0, 3 ) === 'WIN' );
+		}
+
+		if ( $req === 'osx' )
+		{
+			$missing += ( PHP_OS !== 'Darwin' );
+		}
+		if ( $req === '!osx' )
+		{
+			$missing += ( PHP_OS === 'Darwin' );
+		}
+
+		if ( substr( $req, 0, 3 ) === 'PHP' )
+		{
+			$versions_req = explode( ',', substr( $req, 4 ) );
+			foreach ( $versions_req as $version_req )
+			{
+				list( $operator, $version ) = explode( ' ', trim( $version_req ) );
+				$missing += (int) ( ! runtime_version( $version, $operator ) );
+			}
+		}
+
+		if ( substr( $req, 0, 9 ) === '!ext-flag' )
+		{
+			$missing += (int) ( in_array( substr( $req, 10 ), xdebug_info( 'extension-flags' ) ) );
+			$req = "absence of 'xdebug-" . substr( $req, 10 ) . '\' compile flag';
+		}
+
+		if ( substr( $req, 0, 8 ) === 'ext-flag' )
+		{
+			$missing += (int) ( ! in_array( substr( $req, 9 ), xdebug_info( 'extension-flags' ) ) );
+			$req = "'xdebug-" . substr( $req, 9 ) . '\' compile flag';
+		}
+		else if ( substr( $req, 0, 3 ) === 'ext' )
+		{
+			$missing += (int) ( ! extension_loaded( substr( $req, 4 ) ) );
+			$req = "'" . substr( $req, 4 ) . '\' extension';
+		}
+
+		if ( substr( $req, 0, 5 ) === 'class' )
+		{
+			$missing += (int) ( in_array( substr( $req, 6 ), get_declared_classes()) == false );
+			$req = "'" . substr( $req, 6 ) . '\' class';
+		}
+
+		if ( $req === '32bit' )
+		{
+			$missing += ( PHP_INT_SIZE != 4 );
+		}
+		if ( $req === '64bit' )
+		{
+			$missing += ( PHP_INT_SIZE != 8 );
+		}
+
+		if ( $req === 'unparallel' )
+		{
+			$missing += ( getenv( 'SKIP_UNPARALLEL_TESTS' ) );
+			$missing += ( getenv( 'TEST_PHP_WORKER' ) !== false );
+		}
+
+		if ( $req === 'dbgp' )
+		{
+			$missing += (int) ( getenv( 'SKIP_DBGP_TESTS' ) );
+			$req = "DBGp tests are disabled";
+		}
+
+		if ( $req === 'slow' )
+		{
+			$missing += (int) ( getenv( 'SKIP_SLOW_TESTS' ) );
+			$req = "Ignoring slow tests";
+		}
+
+		if ( $old_missing != $missing )
+		{
+			$errors[] = $req;
+		}
+	}
+
+	if ( $missing )
+	{
+		die( "skip required: " . join( ' && ', $parts ) . " > missing: " . join( ' && ', $errors ) );
+	}
+}
+
+function mustBeExecuted( array $coverageInfo, array $lines )
+{
+	foreach ( $lines as $line )
+	{
+		if ( !array_key_exists( $line, $coverageInfo ) )
+		{
+			echo "FAIL: line #{$line} is not present in coverage info\n";
+			continue;
+		}
+
+		if ( $coverageInfo[$line] !== 1 )
+		{
+			echo "FAIL: line #{$line} is not covered\n";
+			continue;
+		}
+
+		echo "line #{$line} is present and covered\n";
+	}
+}
+
+function mustNotBeExecuted( array $coverageInfo, array $lines )
+{
+	foreach ( $lines as $line )
+	{
+		if ( !array_key_exists( $line, $coverageInfo ) )
+		{
+			echo "FAIL: line #{$line} is not present in coverage info\n";
+			continue;
+		}
+
+		if ( $coverageInfo[$line] === 1 )
+		{
+			echo "FAIL: line #{$line} is covered\n";
+			continue;
+		}
+
+		echo "line #{$line} is present and not covered\n";
+	}
+}
+
+function getTmpDir() : string
+{
+	$envTmpDir = getenv('TEST_TMP_DIR');
+	$tmpDir = $envTmpDir !== false ? $envTmpDir : sys_get_temp_dir();
+	$tmpDir .= '/';
+	$workerId = getenv( 'TEST_PHP_WORKER' );
+	if ( $workerId !== false )
+	{
+		$tmpDir .= "{$workerId}-";
+	}
+
+	return $tmpDir;
+}
+?>
