
    	h                         S r SSKrS rS rg)z4
OOXML has non-standard escaping for characters < 
    Nc                 V    [         R                  " S5      nS nUR                  X 5      $ )z:
Convert ASCII < 31 to OOXML: \n == _x + hex(ord(\n)) + _
z[\001-\031]c                 T    SR                  [        U R                  S5      5      5      $ )z
Callback to escape chars
z
_x{:0>4x}_r   )formatordgroupmatchs    G/var/www/html/env/lib/python3.13/site-packages/openpyxl/utils/escape.py_subescape.<locals>._sub   s"     ""3u{{1~#677    recompilesub)value
CHAR_REGEXr   s      r
   escaper   
   s(    
 N+J8 >>$&&r   c                 f    [         R                  " S5      nS nSU ;   a  UR                  X 5      n U $ )z2
Convert escaped strings to ASCIII: _x000a_ == \n
z_x([0-9A-Fa-f]{4})_c                 J    [        [        U R                  S5      S5      5      $ )z
Callback to unescape chars
      )chrintr   r   s    r
   r   unescape.<locals>._sub"   s     3u{{1~r*++r   _xr   )r   ESCAPED_REGEXr   s      r
   unescaper      s6     JJ45M, u}!!$.Lr   )__doc__r   r   r    r   r
   <module>r!      s    
' r   