
    j2                     &    d e defdZdede fdZdS )sreturnc                 $   g }t          |           }d}||k     r| |         }|dz  }|dk    rt          d| |dz
  |d          |dk     r$|                    t          |                     n|dz  dk    rW||k    rt          d| |dz
  |d          |                    t          |d	z  d
z  | |         dz  z                       |dz  }n(|dz  dk    r|dz   |k    rt          d| |dz
  |d          | |         }| |dz            }|dk    r|dz  dk    r|dz   |k    rt          d| |dz
  |d          | |dz            }| |dz            }| |dz            }	|dk    rS|dz  dk    rJ|                    t          d|dz  dz  z  |dz  dz  z  |dz  d
z  z  |	dz  z                       |dz  }|                    t          |dz  dz  |dz  d
z  z  |dz  z                       |dz  }nt          ||k     d                    |          S )z
    Decodes a bytestring containing modified UTF-8 as defined in section
    4.4.7 of the JVM specification.

    :param s: bytestring to be converted.
    :returns: A unicode representation of the original string.
           zmutf-8zEmbedded NULL byte in input.         z82-byte codepoint started, but input too short to finish.      ?      zB3-byte or 6-byte codepoint started, but input too short to finish.                  i         
          )lenUnicodeDecodeErrorappendchrRuntimeErrorjoin)
r   s_outs_lens_ixb1b2b3b4b5b6s
             R/home/ubuntu/.hermes/hermes-agent/venv/lib/python3.11/site-packages/mutf8/mutf8.pydecode_modified_utf8r*      s    EFFED
,,tW	77$q.   99LLR!!!!4iD  u}}( q#   LL$Y4'tWt^%    AIDD4iD  ax5  ( q,   4B4!8BTzzrDyT11!8u$$,$ 1H 0   tax[tax[tax[::29"5"5LL#$Y4/0$Y4/0  $Y4/0  $Y	(    AIDLL$Y4'$Y4'($Y     AIDDq ,,t 88E??    uc                    t                      }d | D             D ]}|dk    r|                    ddg            |dk    r|                    |           <|dk    r'|                    dd|dz	  z  z  dd	|z  z  g           i|d
k    r1|                    dd|dz	  z  z  dd	|dz	  z  z  dd	|z  z  g           |                    dd|dz	  dz  z  d|dz	  d	z  z  dd|dz	  dz  z  d|d	z  z  g           t          |          S )z
    Encodes a unicode string as modified UTF-8 as defined in section 4.4.7
    of the JVM specification.

    :param u: unicode string to be converted.
    :returns: A decoded bytearray.
    c              3   4   K   | ]}t          |          V  d S )N)ord).0chars     r)   	<genexpr>z'encode_modified_utf8.<locals>.<genexpr>t   s(      &&Dc$ii&&&&&&r+   r   r	   r      i  r
   r   r   i  r   r   r   r   r   r   r   r   )	bytearrayextendr   bytes)r,   final_stringcs      r)   encode_modified_utf8r9   j   s    ;;L&&A&&&  99t----$YY""""%ZZd+,"!     &[[d+,d+,"!     dd*+dd*+dd*+D!!     r+   N)r6   strr*   r9    r+   r)   <module>r<      sZ   fE fc f f f fR)C )E ) ) ) ) ) )r+   