- presentation.json gets its own 256 MiB inflation limit instead of the 2 GiB
per-entry allowance, and is parsed in place: only a file that needs its
null-number repair is copied.
- A media member that fails decoding or its CRC is charged for the bytes it
inflated, so later members cannot reuse the shared media budget.
- repair() and Presentation::validate() check slide layouts against a set
built once instead of scanning every layout per slide.