## 29. [PHP] with `-r`, 256 bytes

<!-- language-all: lang-php -->

<pre><code>.6|0&amp;"123'  '321"&amp;0|6.
&lt;   
0   
;   
+   
eval(   
~   
preg_replace    
('Hi, Retina!'^'g5X|&lt;J' 
,   
''  
^'Henry Jams?'  
,'×× ×  ×ÝÅÐÐÝÖÓÎÖÖÁÇÇÀ«Å¹ÖÄ'));?&gt;-&gt;/45789:@ABCDEFGHIJKLMNOPQ  
*   
a   
b   
c   
d   
e   
f   
g   
h   
i   
j   
k   
m   
n   
o   p~</code></pre>

Not being able to use `$` made this quite tricky, in my original solution I misunderstood the rule, but I think I have everything covered now. I've used high-byte characters, `~` and `eval` to work around the lack of decent variables for PHP. I nearly made the minimum number of unique code points 96, but I thought that might make it a little too hard for some languages.

Here's a reversible hex dump for verification too.

    00000000: 2e36 7c30 2622 3132 3327 0927 3332 3122  .6|0&"123'.'321"
    00000010: 2630 7c36 2e0a 2a09 0a30 090a 3b09 0a2b  &0|6..*..0..;..+
    00000020: 090a 6576 616c 2809 0a7e 090a 7072 6567  ..eval(..~..preg
    00000030: 5f72 6570 6c61 6365 090a 2827 4869 2c20  _replace..('Hi, 
    00000040: 5265 7469 6e61 2127 5e27 6735 587c 3c4a  Retina!'^'g5X|<J
    00000050: 2709 0a2c 090a 2727 090a 5e27 4865 6e72  '..,..''..^'Henr
    00000060: 7920 4a61 6d73 3f27 090a 2c27 9b96 9ad7  y Jams?'..,'....
    00000070: 9c90 8a91 8bd7 9c90 8a91 8ba0 9c97 9e8d  ................
    00000080: 8cd7 9996 939a a098 9a8b a09c 9091 8b9a  ................
    00000090: 918b 8cd7 dd8f 978f c5d0 d08c 8b9b 9691  ................
    000000a0: ddd6 d3ce d6d6 c1c7 c7c0 abc5 b9d6 c427  ...............'
    000000b0: 2929 3b3f 3e2d 3e2f 3435 3738 393a 4041  ));?>->/45789:@A
    000000c0: 4243 4445 4647 4849 4a4b 4c4d 4e4f 5051  BCDEFGHIJKLMNOPQ
    000000d0: 090a 3c09 0a61 090a 6209 0a63 090a 6409  ..<..a..b..c..d.
    000000e0: 0a65 090a 6609 0a67 090a 6809 0a69 090a  .e..f..g..h..i..
    000000f0: 6a09 0a6b 090a 6d09 0a6e 090a 6f09 707e  j..k..m..n..o.p~

[Try it online!][TIO-jf1k8dot]

[Test driver](https://tio.run/##tRldc9vG8Rn3K65nUSAkESRAUZZIAbLkT7mKldqqJx1ZUo/kgYQEAjAASqRMedyZpsm0aeNMZhzXTTp971Mf2@kT@dhfUf8Rdg8gRfArkmOWGB3udvfu9ut2F6ci9avdbokGWMeu51Q8WpODRoAQK1UdnLIxmVMIBiQtl103RA0waogJPJPalbpFPTNojlBkQ4pjZlmjmOUQ4we0dMLKI7hciHObQdWxsyO4lUvcCOJmiDirmr7LPH@AhB@ZWw2Rj0MoF1Y2bbceyIHpYL0PHyy1FlJ7LDBtOoJ6oWQuCGfcqdXYGE4Jccf0lPolz3SDMQI1JDgdg2dDODBu5YZxZs11vAD7Tb9gaECYuyi4nmkHSSMJMNkPyqYte4yWk5IkkYHW1LEtVsItntepF4B@AmoYYyQ3QxJQYcB8l5bG5Vu9iG0xapkXaqSa0Npj@6uRiFXqnwBetqr@EDbauuJYxmTNqasXCOlCjZq2BuIzj5aCpF91zuSKFFtXHVt4LWK5Gvku2tTmkj3@cdpxg3To17xdXJTdJk6l6oEBrWFabODzeD3mMRLa@qmLXPalAY9KHhNkGngf2N0kWNPgvUXwQQEHVWYjHBISl/o@QczyWR9iUNMiyDAnyDR0ItN7Q@cT2Bs7sFeJ9xPWG4PFJFZnInHIWehrUYuN@iDQTJDoKvrLfozT7EdzGo2fRGEOmz62nQCbNp@Py555yjyZoBuYNcJj/mj3zt2jTzf3HmgkXfe9tGUW07ZTZkc1p1y3mM9J@TgySy949t/ysR@Pp0MqiFQ2Evla/ZMcD7WRsjhlDDiN9FJRuY9W1LgX80HYcB/rB/yrXHXapH43xvPK/4Hnfvq57HA24jnpKv6vs0B8GJPn5uyOlZcumnb6cRSKo/TY2yhMpTrGDqzpxfJmBNfj8K3Jqw0oYryvfrwtIsDjMGlPPWg1x3YiRUfZPR3Ry6zBYvl@wtHx6sVm79TxzB@1slccFAITLHutSZf9eE7IzCjwPLwsRSarBONtsQzJ85ThwMFnEKxZrHzhxI5XZh5H1ugJw2YAWgwV8lQLBTvtBQQ1kvM0zTM099mwxsGpOk4ZY3r5kLmno6qZTfbgpRZf/rLkwpNO5iSiy0GcqVklis9WVzAQsVoRElTPYo6N97Z3yfVCuDqI4b1zyWtGMpVwIEJu9nVIvNgcGnAjj1aiV0XGD11sFBSXdWV2oXJQLafPwtdI/TytErnGvGFAnP/ZhPqrfGlyPTClIBitCJTVGR2J3VLAw9OUiP7jpaD6obWgGi8GR4@IOquovGm51XrpZKpM1xbcq9u9D5/4h9XETDSFMDaKSzqzwvfR7tbuzscJ2lvpk61700mi8nln89F9jdlHv3wycIvBJ2Wsy3Pw8LfmNCe5/vRhQFyZszmt4yZUpxh7@LOZx/4pc@NMrs4m/FddnPL6n9uTQvooQa8XZ2XtY1npduWVVmYeaoWsKIhZVSHzmdaKjNYFlBFQQUCLAmKn1EoK6KWAXI9VjjzmWhBoBZQUH5hLOCoLfyYeipXcZ631h6KAlgQkwutQfMBsr4kf0pq/wcFi@y/tN@13ne/a37dft3/f/qb9h3i//Tfof9f@a/uP7a8A/meg/bb9DqBvoY2wr0O6d2ELNJ0f2l/DjK87n3ded163vwIo3@Gbzg@dN51vO3@C9k3nN50v4HnV/nvn8/Y/YfxbUZIKG3pKTy/nbq6u5W9tbt2@c/fe/QfbD3@@88mj3U9/IaAFAVEBFQVUElAZNCAgQ0AVAVUFZAroWEAnAqoJyBaQI7gvu3eWjKVbSwqaM3TS6xO025VlSZaRLG3XZERkosldGb1/9QNjXTm7f0Nkp8w@QLfyBkKinGUcJKqJjHYgYgM79aArZxQVDa61UHSdZTGbX2hhGYdXWvDuXWrhhQWckXM4gRXuCRmpK7OLZ9SXz58oWX65l@vKtFgqM6NSNY9PrJrtuM8h69dPzxrNc6RjohNot7kbbloWgm8U5f2XX6q8s1sPAIqzCJhK6eeFhsY33TFt5ielQlN7ykqB45nnLFkPjNU9Z9sOpGRDKlC7maxwj0mSlE6WGhIwldIzv455TldWUnpsjLexZUIBfc9jdqmK83cQefzUsgpluZqndhl70Dg1EL5uGFBtO3wBZX4@6Ws6iS0D283P@/trB5omEhG2VSzLuv@rpw8IcTtvhwg7//7P7@SF9j9Q5@1hZg4oC6SgyOjZyHKFuSNtXS/AAXKjm0XcTKfTJT03P@@BLT04Xuz53FGhK@9t7@3cxYSSG/CH7@7AGPygTAOKzLxsmBBc1NySspRBfl72A1irgklCze0fPrMPCAoGwCHNwIkdYLaabACXK5ZTpBbmnwWIN3lubwFObN2vWnjO7Hd8VKKwu1@itoFouQyg1SWcgNppQBpRBB44Wo9kuUfi14t4TlX4iDbQ8Tlu9mcZ0axQLcbIrOOai2GpZr5PHPwIMbPzCD4vwc8UsHNSURYIIQuKkizbFGwyZBF@X02IxOksWiuWKfbzZAMCoo19bnA5@oENej1YAOaAu9H92EIHANzYTynqclJu6VTaOEDLa9wvWxvRQxZJr9ca5YCvh@ARkADqFrjS@cOHIQwjwKKIKoRwUuj3zyGE3wJhNKVvgK9AUKKMFCD8kiGrTwsBQ3fasu9aZpAkz2wiSbq6sqhI6Lo/0uI/gpZllSeEQmIRGGoRRlrA0mKCczQkNsSl7HJuBaInGulO3eL9q@9j2QCi4H//9UUXNlMWb6f0FhhSIBi39NTtRTAS6C@6wMYa7l9hYyjwAwDzF/YBwa@0cbJUZVAeJi0eicDqElBEIA1zH0syi9VwQIscAS8AB85du17Da0j4kCfGPAwGykDCyy6XQxAKIueeKIRLJBYEQUaQ9M4F1BRQQ0BnAjoVUF2IazK@qlgooEBAvoA8AT3niYVnGCtMNcdh2qmGKcgI01E5TE1FnoLS@cMl9aZ@eHjY0qymbUPysl8CQ63FRmN9fR28H9pGY7EFDOFQsxXc0EK9iOtiY36eJRqaxgDOtADqgvB/BZA9OGUSKPJUSiRFXcwXJY0migCliRAO4z6@D42oOJBFkEZv1ouhQBYTO3XBCW8lj/JHUuJIo@G0IrCD@yn49vQUbA2yMHL7P6697Mv/AQ "Bash – Try It Online")

[PHP]: https://php.net/
[TIO-jf1k8dot]: https://tio.run/##rRfRctvG8fnuKy5nkQBEEiZISRYJApIjO7ZcN05t2XVsieoRPIqgQBAmQAtUGY870zSZNm2cyYzjunGn733qYzt5Ih/7FfWPsHsAIYK05KQzPfAOe3u7e7t7u3tgg/nt6dQ3ViR1Y1TMUq1U3g9LV/bDYkW8yyWNZoujDRUQrBZji6yYAHoC5BKAP2WOnEyeJYDX50eHfe45zOIJThbyb9p5cpcHtss@ENO6GI7WH45qt@ZaFFk@AWLkfCGiv8nd/pDcYl1/a4lJTCoN6BvQgbkp5hZ0MGAT5hUN3o2L8cLQCC/WQfHNJnRrRl@ZyS3HsiPazRhe4C3O5VVSshM5TSGzFe8h3tY64IpxFzQRX2KDFtM3AW7CvsKZEQzdgjXryqwDL2vEshqV2fqa8Iei6Ftmwby8tn5ls1LdvvrhzrXrH924uXvrZ7d//vGdT36ROG81AVgCNBLASoDm2ZknQCsBjhKgnQB2AnQS4DgBugngJkBPAN4zScfcavcIXfHpDCy40Wx0YpGCpeNWr08YsQVym@qk2cNoTsboyGt7pNCfCYiWdNzsuRxPp9OzeJeQdBbmuIZwEWEd4RzCUSwj/AzhdPwiLEupsJXqUhywEsJ5hCV41aVUSAq0NP7L@OX49eS78ffjF@Pfj78Z/yENj/8G8Hfjv47/OP4K8H8G2m/HrwH7CsZ49UVE9zoagWbyZvw1cHw9@XzyYvJi/BVgxQ7fTN5MXk6@nfwJxpeT30y@gOf5@O@Tz8f/hPlvpR87fYRXEWYINxC2EG6CBxBuIXyEcBthG@EOwscIdxF2Ee4h79lURaNcGNZqNcoojGGYGyEVE4SwiY5IaHCHd4lUk8JslmdCw@CA50bAbEf2270TUlQEpQwUVaZkZMmUqg3FYJkGYFkmwsM8WU@wMZVA8hgTzrh@XTBTJ5M6hMJngnBbPqweKplDg0VsDVCHJPbuXGyvMzcZe0lD@AkqCwcgXTILOzmq0dxOwZR0BA6AMz9FeIhwiPAJwk8RHiCc0gyl40PXcYCwj3BfyBSbdKM9j6P97UiXo0gvHuloRfq66HK1ni9dMev1@shwhq4LZ@eCQht6Jlcwt0YU0REcdi6jQ1S3jG05VLRs1uKO0xq48ra8ozB3KO8YBoS/koWllu02k7mp5f2g73uOHchh3mqzvqwVFQgfnEHv/FLGpG08j/Qn/cAIfbVg5kYM0ZAiNsqZhVVdxSgkhu16g@D/A@mrJKU5Rg@JsfvxJ/f3MLpzfw/exLixJ9/bfXRdfqjkS5qCNIwufLgLJ4PeSai79/buP/jlw08fsYbV5K2jtt05drpuz3vS94PB05NweAoFaA2jlOOwcIAmgmlECJwiISMRYBo4QCRLl0G5M6DmBbzPrIAE3A8ALV7Eh4Uor2Srza1jIju2y33iKwpQxCiDMMchcpSYAWuIBXgBOuhddwddUnmPkec8Cx58x4i4IcgNNINVkRLn/c7P251ReE67SMZ7frUfa0CTM00ojmYuNZ61XDQWZkggNvOPzHy99qgQ90LSHpk51azjOgrTuchTuSidbypcdnGWirSEUintSCLdrrpDsrOFL2iZuZc18LJ25uWtUW6hFvY81vOxbXu2bdnMtzjjlufZPrMt7DPPBoRvWYAQFNAYXLewaNsdxnmMsoEFaDnnnRgFINDABAMOMPGcd2YisGAAGR1@1joCK4RGiiTrgjbi5gl9J6bB9rzNWXDMM@eIyBPaztlOdseLdEioAOlFSsf6xqrPdor1TasqjBQ24YQ7vcZxx5tLBrZ4hpcIO4ncZZNhimOvskS12CC8JDGyLtY3LfJM3wWhnZmE5BBmApb8uyChkxbZibXAM4EdLxWdDDesqH6dLNQvDAUsKW0ng2QJJ7VttnRRJqTis2AWRSFc34APE7wEXhT8@O3z71Mqvn3@5j//@uKCrWap5Tiy7Xd5t8H7ix9x@VBRsv6gO1@Ga48FcilfLlfLG/m1jXxFq1bKeQk@opTaRjaUS/AqZoVI@dgIZa0aXaCQuVoxrykFTVEMo@XYnnwM5TeD/4cmbKCcgRH0EgUTGKfCBppSmGK76/X6UPKHPnydwm0gO9yVYab6QdN21T5nTVlR4yuc7rtUUczSRk5TfrIWdCQaxWtqaaqOtuKH5ugMGi2dH1nmJ0lgQIlS4wZfiTMIShQhRCuY7HFKygEgtx4XtNKarI5Mpmwd4LUK@wAEMHCtpq1SSlc1TW66TFveHu5KShVB57Buo8mIX6Vb4CYXrr@pure7d/s6gf0vQSfXb8NcxWqTBQzbVbVlw51YWs9r@SL2q@BBcOgRoZnS@uP6vntAcTBHLpRVilvzlQ@HfI5Xj5xegzlEXNdYDFUyb9gb@G2HrNgJ4GNLXMu@xdwWZs0moDbzJMN9b04aUwR9OOcZydqMxB80yEpJEzMW4s4pGSZcrZgrCpDWElen6xEQNawmxMF7iLlbxX0ewEnoVAff79MF71N95dComTr8wfL0SAAZXr582TLXs9k@f8r7PhSmJyuHOghwHOfGpw9uUupNXi0Imfzw79@pq@N/4MmrenFFXGzZrOwb5tJW2az/uHIAFySV4GC1hfMgu8Sxjzn5qM9dq02q1zC9@8Bx9KbarkJokD4MvS54cdBqwRdPD0ILKs@vUhKmarFgnuqhIRLotvh8khV9aDzgVtDr26dcHgStzb3erhsoUFB0cVkfiT@GMgQGFVVkql78rYdNQk0K4674AL3qONg0ifb2yy9LArgzCABLypD//LN95qun97SyCJd1UEorXZjxRCVRzsM7znqFrK6SorpOMkQjhgH/sqZq@fElCQ7CPZiqUDffcD5VVUWFHFB2u1BaVGqo02v5Vn47r/0X "Bash – Try It Online"

**Satisfies**

2. The first character is a `.`.
3. It contains an `e`.
4. Its length is even.
5. Its length is a perfect square.
6. It contains an `a`.
7. It contains a `>` character.
8. Contains the exact string `->`.
9. Contains the exact string `Hi, Retina!`.
10. The sum of the first two Unicode code points is a multiple of 5.
11. The 10-th character is a `"`.
12. The last non-empty line does not have any duplicate characters.
13. The first line is a palindrome of length > 5.
14. The first line is exactly 21 characters long (not including newline).
15. It contains a `?`.
16. It contains a `|`.
17. Contains a `+`.
18. It is at least 28 lines long.
19. The following characters are used five times in total: `!"#$.[\]` and the codepoint of the second character is less than 60.
20. Contains `Henry Jams?` as a continuous substring.
21. The last character is `~`.
22. It contains a `C`
23. Each line contains a tab character.
24. The ninth line contains at least 22 characters, excluding the newline.
25. The tab character can't be the first character on a line
26. The third-to-last character is a tab.
27. There are at least 28 lines, and they are all distinct.
28. There must be a `>` in the code and angle braces must be balanced.
29. **There must be more than 88 distinct code points in the program.**
<hr>

**For future answers:**

- The first line is a palindrome matching `.␣␣␣␣␣␣␣␣"␣"␣␣␣␣␣␣␣␣.` (you are free to fill in the ␣s).
- The second character is one of `',16;`, or a tab, or one of `\x04\x0e\x13\x18\x1d`.
- Its length is an even perfect square.
- There are at least 28 lines, and **all lines are distinct**.
- The ninth line must have at least 22 characters (excluding the newline).
- The last line does not have any duplicate characters.
- Contains the exact strings `->`, `Hi, Retina!`, and `Henry Jams?`.
- It contains `|`, `+` and `C`.
- Each line contains at least one tab character, but it can't be the first character on a line.
- `!".` are banned except where necessary:
  - Only `!` in `Hi, Retina!` and the two `.` and two `"` in the first line are allowed.
- `#$[\]` may not appear in the program.
- The program ends with: `tab`, *(whatever)*, `~`.
- Angle braces must be balanced.
- **There must be more than 88 distinct code points in the program.**