Ë
    ÍÍ:j¦­  ã                   ó  — d Z ddlZddlZddlZddlZdZ G d„ dej                  «      Zdddd	d
œZddddd
œZ	dddœZ
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ fd„Z G d„ dej                  «      Z G d„ d«      Z G d „ d!«      Z G d"„ d#e«      Z G d$„ d%e«      Z G d&„ d'e«      Z G d(„ d)e«      Z G d*„ d+e«      Z G d,„ d-e«      Z G d.„ d/e«      Z G d0„ d1«      Zd2„ Z G d3„ d4«      Z d5„ Z!d6„ Z" G d7„ d8«      Z# G d9„ d:«      Z$d;„ Z%d<„ Z&d=„ Z'y)>zôImplementation of FlexBuffers binary format.

For more info check https://google.github.io/flatbuffers/flexbuffers.html and
corresponding C++ implementation at
https://github.com/google/flatbuffers/blob/master/include/flatbuffers/flexbuffers.h
é    N)ÚTypeÚBuilderÚGetRootÚDumpsÚLoadsc                   ó`   — e Zd ZdZdZdZdZdZed„ «       Z	ed„ «       Z
ed„ «       Zed	„ «       Zy
)ÚBitWidthz¿Supported bit widths of value types.

  These are used in the lower 2 bits of a type field to determine the size of
  the elements (and or size field) of the item pointed to (e.g. vector).
  r   é   é   é   c                 óÔ   — | dk\  sJ ‚| dk  rt         j                  S | dk  rt         j                  S | dk  rt         j                  S | dk  rt         j                  S t        d| z  «      ‚)z@Returns the minimum `BitWidth` to encode unsigned integer value.r   é   i   l        l            zvalue is too big to encode: %s)r	   ÚW8ÚW16ÚW32ÚW64Ú
ValueError©Úvalues    úl/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/flatbuffers/flexbuffers.pyÚUz
BitWidth.U-   si   € ð �AŠ:Ðˆ:à�ÒÜ�[‰[ÐØ	�'Ò	Ü�\‰\ÐØ	�'Ò	Ü�\‰\ÐØ	�'Ò	Ü�\‰\ÐäÐ7¸%Ñ?Ó@Ð@ó    c                 óN   — | dz  } t         j                  | dk\  r| «      S |  «      S )z>Returns the minimum `BitWidth` to encode signed integer value.r   r   )r	   r   r   s    r   ÚIz
BitWidth.I=   s,   € ð 
ˆQ�J€EÜ�:‰:˜u¨šz�eÓ6Ð6°¨vÓ6Ð6r   c                 ó¢   — t        j                  dt        j                  d| «      «      d   | k(  rt        j                  S t        j
                  S )z6Returns the `BitWidth` to encode floating point value.z<fr   )ÚstructÚunpackÚpackr	   r   r   r   s    r   ÚFz
BitWidth.FL   s;   € ô ‡}�}�Tœ6Ÿ;™; t¨UÓ3Ó4°QÑ7¸5Ò@Ü�\‰\ÐÜ�<‰<Ðr   c                 ó†   — t         j                  t         j                  t         j                  t         j                  dœ|    S )N©r
   r   é   é   )r	   r   r   r   r   ©Ú
byte_widths    r   ÚBz
BitWidth.BS   s+   € ä�{‰{œxŸ|™|´·±ÄÇÁÑNØñð r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   Ústaticmethodr   r   r   r&   © r   r   r	   r	   !   sm   „ ñð 	€"Ø	€#Ø	€#Ø	€#àñAó ðAð ñ7ó ð7ð ñó ðð ñó ñr   r	   ÚbÚhÚiÚqr!   r&   ÚHr   ÚQÚfÚd)r"   r#   c                 óR   — t        j                  d| t        |«         z  |«      d   S )Nú<%sr   )r   r   Úlen)ÚfmtÚbufs     r   Ú_Unpackr:   _   s%   € Ü	�‰�u˜s¤3 s£8™}Ñ,¨cÓ	2°1Ñ	5Ð5r   c                 óZ   — t        |«      |z  }t        j                  d|| |   fz  |«      S ©Nz<%d%s)r7   r   r   )r8   r9   Úlengthr%   s       r   Ú_UnpackVectorr>   c   s/   € Ü�3‹x˜6Ñ!€*Ü	�‰�w &¨#¨j©/Ð!:Ñ:¸CÓ	@Ð@r   c                 ó:   — t        j                  d| |   z  |«      S )Nr6   )r   r   )r8   r   r%   s      r   Ú_Packr@   h   s   € Ü	�‰�U˜S ™_Ñ,¨eÓ	4Ð4r   c                 óP   — t        j                  dt        |«      | |   fz  g|¢­Ž S r<   )r   r   r7   )r8   Úvaluesr%   s      r   Ú_PackVectorrC   l   s(   € Ü	�‰�W¤ F£¨S°©_Ð=Ñ=Ð	GÀÒ	GÐGr   c                 ó6   — d|z  |k  rt        | ||«      |d | yy)Nr
   TF)r@   )r8   r9   r   r%   Úvalue_bit_widths        r   Ú_MutaterF   p   s*   € Øˆ?Ñ˜zÒ)Ü˜S %¨Ó4€CˆˆÐØØ	r   c                 ó   — |  |dz
  z  S ©Nr
   r,   )Úbuf_sizeÚscalar_sizes     r   Ú_PaddingBytesrK   z   s   € à
ˆ�k A‘oÑ	&Ð&r   c                 ó¤   — || j                   €dn| j                   z   }|| j                  €|n| j                  z   }t        ||| j                  «      S ©Nr   )ÚstartÚstopÚsliceÚstep)ÚsÚoffsetr=   rN   rO   s        r   Ú_ShiftSlicerT      sE   € Ø
˜Ÿ™˜‘A¨a¯g©gÑ
6€%Ø	˜QŸV™V˜^‘6°·±Ñ	8€$Ü	ˆu�d˜AŸF™FÓ	#Ð#r   c                 ó”   — dt        | «      }}||z
  }|dkD  r0|}|dz  }||z  } || |   |«      r|dz  }|}||dz   z  }n|}|dkD  rŒ0|S )z3Implementation of C++ std::lower_bound() algorithm.r   r   r
   )r7   )rB   r   ÚpredÚfirstÚlastÚcountr/   rQ   s           r   Ú_LowerBoundrZ   †   su   € à”3�v“;ˆ€%Ø
�‰,€%Ø�Š	Ø€AØ�A‰:€DØˆ�I€AÙˆF�1‰I�uÔØˆ1�f€aØ€eØˆt�a‰xÑ�eà€eð 	�‹	ð 
€,r   c                 ó   — | |k  S ©Nr,   )ÚxÚys     r   ú<lambda>r_   ˜   s
   € °1°q±5€ r   c                 óV   — t        | ||«      }|t        | «      k7  r ||| |   «      s|S y)z5Implementation of C++ std::binary_search() algorithm.éÿÿÿÿ)rZ   r7   )rB   r   rV   Úindexs       r   Ú_BinarySearchrc   ˜   s1   € ä
�f˜e TÓ
*€%Ø
Œc�&‹kÒ¡$ u¨f°U©mÔ"<Ø€LØ	r   c                   ó"  — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZe d„ «       Z!e d„ «       Z"e d „ «       Z#e d!„ «       Z$e d"„ «       Z%e d#„ «       Z&e d$„ «       Z'e d%„ «       Z(e d&„ «       Z)e d)d'„«       Z*y()*r   zxSupported types of encoded data.

  These are used as the upper 6 bits of a type field to indicate the actual
  type.
  r   r
   r   r   r"   é   é   é   r#   é	   é
   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é$   c                 ó$   — t        | «      dz  |z  S )Nr   )Úint)Útype_Ú	bit_widths     r   ÚPackz	Type.PackÊ   s   € ä�‹J˜!‰O˜yÑ(Ð(r   c                 ó.   — d| dz  z  t        | dz	  «      fS )Nr
   r   r   )r   ©Úpacked_types    r   ÚUnpackzType.UnpackÎ   s!   € à�˜tÑ#Ñ$¤d¨;¸!Ñ+;Ó&<Ð<Ð<r   c                 óR   — | t         j                  k  xs | t         j                  k(  S r\   )r   ÚFLOATÚBOOL©r}   s    r   ÚIsInlinezType.IsInlineÒ   s   € à”D—J‘JÑÒ4 %¬4¯9©9Ñ"4Ð4r   c                 ó„   — t         j                  | cxk  xr t         j                  k  nc xs | t         j                  k(  S r\   )r   Ú
VECTOR_INTÚVECTOR_STRING_DEPRECATEDÚVECTOR_BOOLr‡   s    r   ÚIsTypedVectorzType.IsTypedVectorÖ   s3   € ô 	�‰˜5ÖA¤D×$AÑ$AÔAò 	%Ø”D×$Ñ$Ñ$ðr   c                 ó„   — t         j                  | cxk  xr t         j                  k  nc xs | t         j                  k(  S r\   )r   ÚINTÚSTRINGr†   r‡   s    r   ÚIsTypedVectorElementTypezType.IsTypedVectorElementTypeÝ   s(   € ä�8‰8�uÖ+¤§¡Ô+ÒA¨u¼¿	¹	Ñ/AÐAr   c                 óœ   — t         j                  | «      st        d«      ‚t        | t         j                  z
  t         j                  z   «      S )Nzmust be typed vector type)r   r�   r   rŠ   r�   r‡   s    r   ÚToTypedVectorElementTypezType.ToTypedVectorElementTypeá   s9   € ä×Ñ˜eÔ$ÜÐ2Ó3Ð3ä�œŸ™Ñ'¬$¯(©(Ñ2Ó3Ð3r   c                 óZ   — t         j                  | cxk  xr t         j                  k  S c S r\   )r   ÚVECTOR_INT2ÚVECTOR_FLOAT4r‡   s    r   ÚIsFixedTypedVectorzType.IsFixedTypedVectorè   s$   € ä×Ñ˜uÖ:¬×(:Ñ(:Ñ:Ð:Ñ:Ð:r   c                 óZ   — t         j                  | cxk  xr t         j                  k  S c S r\   )r   r�   r…   r‡   s    r   ÚIsFixedTypedVectorElementTypez"Type.IsFixedTypedVectorElementTypeì   s    € ä�8‰8�uÖ*¤§
¡
Ñ*Ð*Ñ*Ð*r   c                 ó¶   — t         j                  | «      st        d«      ‚| t         j                  z
  }t        |dz  t         j                  z   «      |dz  dz   fS )Nzmust be fixed typed vector typer   r   )r   r—   r   r•   r�   )r}   Ú
fixed_types     r   ÚToFixedTypedVectorElementTypez"Type.ToFixedTypedVectorElementTypeð   sT   € ä×"Ñ" 5Ô)ÜÐ8Ó9Ð9ð œ×)Ñ)Ñ)€JÜ�
˜Q‘¤§¡Ñ)Ó*¨J¸!©O¸aÑ,?Ð?Ð?r   c                 óÖ  — |dk(  r t         j                  | «      s+t        d«      ‚t         j                  | «      st        d«      ‚| t         j                  z
  }|dk(  rt        |t         j
                  z   «      S |dk(  rt        |t         j                  z   «      S |dk(  rt        |t         j                  z   «      S |dk(  rt        |t         j                  z   «      S t        d|z  «      ‚)a  Converts element type to corresponding vector type.

    Args:
      element_type: vector element type
      fixed_len: number of elements: 0 for typed vector; 2, 3, or 4 for fixed
        typed vector.

    Returns:
      Typed vector type or fixed typed vector type.
    r   z!must be typed vector element typeú'must be fixed typed vector element typer   r   r"   zunsupported fixed_len: %s)	r   r‘   r   r™   r�   rŠ   r•   ÚVECTOR_INT3ÚVECTOR_INT4)Úelement_typeÚ	fixed_lenrS   s      r   ÚToTypedVectorzType.ToTypedVectorù   sÐ   € ð �A‚~Ü×*Ñ*¨<Ô8ÜÐ<Ó=Ð=ä×/Ñ/°Ô=ÜÐBÓCÐCàœDŸH™HÑ$€FØ�A‚~Ü�&œ4Ÿ?™?Ñ*Ó+Ð+Ø	�aŠÜ�&œ4×+Ñ+Ñ+Ó,Ð,Ø	�aŠÜ�&œ4×+Ñ+Ñ+Ó,Ð,Ø	�aŠÜ�&œ4×+Ñ+Ñ+Ó,Ð,äÐ2°YÑ>Ó?Ð?r   N©r   )+r'   r(   r)   r*   ÚNULLr�   ÚUINTr…   ÚKEYr�   ÚINDIRECT_INTÚINDIRECT_UINTÚINDIRECT_FLOATÚMAPÚVECTORrŠ   ÚVECTOR_UINTÚVECTOR_FLOATÚ
VECTOR_KEYr‹   r•   ÚVECTOR_UINT2ÚVECTOR_FLOAT2rŸ   ÚVECTOR_UINT3ÚVECTOR_FLOAT3r    ÚVECTOR_UINT4r–   ÚBLOBr†   rŒ   r+   r   rƒ   rˆ   r�   r‘   r“   r—   r™   rœ   r£   r,   r   r   r   r       sd  „ ñð 
€$Ø	€#Ø	
€$Ø
€%à	€#Ø€&Ø€,Ø€-Ø€.Ø	€#Ø€&à€*Ø€+Ø€,Ø€*ð  Ðà€+Ø€,Ø€-Ø€+Ø€,Ø€-Ø€+Ø€,Ø€-à	€$Ø	€$Ø€+àñ)ó ð)ð ñ=ó ð=ð ñ5ó ð5ð ñó ðð ñBó ðBð ñ4ó ð4ð ñ;ó ð;ð ñ+ó ð+ð ñ@ó ð@ð ò@ó ñ@r   r   c                   ó:   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚBufzHClass to access underlying buffer object starting from the given offset.c                 ó€   — || _         |dk\  r|nt        |«      |z   | _        t        |«      | j                  z
  | _        y rM   )Ú_bufr7   Ú_offsetÚ_length)Úselfr9   rS   s      r   Ú__init__zBuf.__init__  s5   € Ø€D„IØ# qš[‘6¬c°#«h¸Ñ.?€D„LÜ�s“8˜dŸl™lÑ*€D…Lr   c                 óì   — t        |t        «      r.| j                  t        || j                  | j
                  «         S t        |t        «      r| j                  | j                  |z      S t        d«      ‚©Nzinvalid key type©Ú
isinstancerP   r¹   rT   rº   r»   r|   Ú	TypeError©r¼   Úkeys     r   Ú__getitem__zBuf.__getitem__!  sZ   € Ü�#”uÔØ�Y‰Y”{ 3¨¯©°d·l±lÓCÑDÐDÜ	�CœÔ	Ø�Y‰Y�t—|‘| cÑ)Ñ*Ð*äÐ(Ó)Ð)r   c                 óð   — t        |t        «      r/|| j                  t        || j                  | j
                  «      <   y t        |t        «      r|| j                  | j                  |z   <   y t        d«      ‚r¿   rÀ   )r¼   rÄ   r   s      r   Ú__setitem__zBuf.__setitem__)  sX   € Ü�#”uÔØ@E€d‡i�i”˜C §¡¨t¯|©|Ó<Ò=Ü	�CœÔ	Ø&)€d‡i�i�—‘˜sÑ"Ò#äÐ(Ó)Ð)r   c                 ó    — d| j                   z  S )Nzbuf[%d:])rº   ©r¼   s    r   Ú__repr__zBuf.__repr__1  s   € Ø˜Ÿ™Ñ$Ð$r   c                 óR   — | j                   | j                  d j                  |«      S )z<Returns the lowest index where the sub subsequence is found.N)r¹   rº   Úfind)r¼   Úsubs     r   ÚFindzBuf.Find4  s"   € à�9‰9�T—\‘\�^Ð$×)Ñ)¨#Ó.Ð.r   c                 óH   — t        | j                  | j                  |z   «      S )z5Returns new `Buf` which starts from the given offset.)r·   r¹   rº   )r¼   rS   s     r   ÚSlicez	Buf.Slice8  s   € äˆt�y‰y˜$Ÿ,™,¨Ñ/Ó0Ð0r   c           
      óR   — | j                  |t        t        | |||z    «      z
  «      S )zAReturn new `Buf` based on the encoded offset (indirect encoding).)rÐ   r:   r   )r¼   rS   r%   s      r   ÚIndirectzBuf.Indirect<  s)   € à�:‰:�fœw¤q¨$¨v¸ÀÑ8KÐ*LÓMÑMÓNÐNr   N)r'   r(   r)   r*   r½   rÅ   rÇ   rÊ   rÎ   rÐ   rÒ   r,   r   r   r·   r·     s)   „ ÙPò+ò
*ò*ò%ò/ò1óOr   r·   c                   ó*   — e Zd ZdZdZd„ Zed„ «       Zy)ÚObjectz.Base class for all non-trivial data accessors.©r¹   Ú_byte_widthc                 ó    — || _         || _        y r\   rÕ   )r¼   r9   r%   s      r   r½   zObject.__init__F  s   € Ø€D„IØ!€DÕr   c                 ó   — | j                   S r\   )rÖ   rÉ   s    r   Ú	ByteWidthzObject.ByteWidthJ  s   € à×ÑÐr   N)r'   r(   r)   r*   Ú	__slots__r½   ÚpropertyrÙ   r,   r   r   rÔ   rÔ   A  s#   „ Ù6à#€)ò"ð ñó ñr   rÔ   c                   ó>   ‡ — e Zd ZdZdZdˆ fd„	Zed„ «       Zd„ Zˆ xZ	S )ÚSizedzBBase class for all data accessors which need to read encoded size.©Ú_sizec                 ó~   •— t         ‰| �  ||«       |dk(  r t        t        | j                  «      | _        y || _        y rM   )Úsuperr½   r:   r   Ú	SizeBytesrß   )r¼   r9   r%   ÚsizeÚ	__class__s       €r   r½   zSized.__init__T  s2   ø€ Ü	�GÑ�S˜*Ô%Øˆq‚yÜœ1˜dŸn™nÓ-€d…jà€d…jr   c                 ó6   — | j                   | j                   d S rM   rÕ   rÉ   s    r   râ   zSized.SizeBytes[  s   € à�9‰9�d×&Ñ&Ð&¨Ð+Ð+r   c                 ó   — | j                   S r\   rÞ   rÉ   s    r   Ú__len__zSized.__len___  s   € Ø�:‰:Ðr   r¤   )
r'   r(   r)   r*   rÚ   r½   rÛ   râ   rç   Ú__classcell__©rä   s   @r   rÝ   rÝ   O  s)   ø„ ÙJà€)õð ñ,ó ð,ör   rÝ   c                   ó*   — e Zd ZdZdZed„ «       Zd„ Zy)ÚBlobz)Data accessor for the encoded blob bytes.r,   c                 ó2   — | j                   dt        | «       S rM   ©r¹   r7   rÉ   s    r   ÚBytesz
Blob.Bytesh  ó   € à�9‰9�Qœ˜T›Ð#Ð#r   c                 ó6   — d| j                   t        | «      fz  S )NzBlob(%s, size=%d)rí   rÉ   s    r   rÊ   zBlob.__repr__l  s   € Ø $§)¡)¬S°«YÐ!7Ñ7Ð7r   N)r'   r(   r)   r*   rÚ   rÛ   rî   rÊ   r,   r   r   rë   rë   c  s!   „ Ù1à€)àñ$ó ð$ó8r   rë   c                   ó6   — e Zd ZdZdZed„ «       Zd„ Zd„ Zd„ Z	y)ÚStringz+Data accessor for the encoded string bytes.r,   c                 ó2   — | j                   dt        | «       S rM   rí   rÉ   s    r   rî   zString.Bytesu  rï   r   c                 ó8  — |j                  d«      }t        |«      }|t        | «      k  rpt        t        || j                  «      | j
                  | j                   d || j
                  d| t        t        | «      |z
  «      | j
                  |t        | «       yy)a4  Mutates underlying string bytes in place.

    Args:
      value: New string to replace the existing one. New string must have less
        or equal UTF-8-encoded bytes than the existing one to successfully
        mutate underlying byte buffer.

    Returns:
      Whether the value was mutated or not.
    úutf-8r   TF)Úencoder7   r@   r   rÖ   r¹   Ú	bytearray)r¼   r   ÚencodedÚns       r   ÚMutatezString.Mutatey  s„   € ð �l‰l˜7Ó#€GÜˆG‹€AØŒC�‹I‚~Ü).¬q°!°T×5EÑ5EÓ)F€d‡i�i�×!Ñ!Ð! AÐ&Ø€d‡i�i��!€nÜ!*¬3¨t«9°q©=Ó!9€d‡i�i�”C˜“IÐØØr   c                 ó8   — | j                   j                  d«      S )Nrõ   ©rî   ÚdecoderÉ   s    r   Ú__str__zString.__str__�  ó   € Ø�:‰:×Ñ˜WÓ%Ð%r   c                 ó6   — d| j                   t        | «      fz  S )NzString(%s, size=%d)rí   rÉ   s    r   rÊ   zString.__repr__�  s   € Ø  D§I¡I¬s°4«yÐ#9Ñ9Ð9r   N)
r'   r(   r)   r*   rÚ   rÛ   rî   rú   rþ   rÊ   r,   r   r   rò   rò   p  s+   „ Ù3à€)àñ$ó ð$òò(&ó:r   rò   c                   óH   ‡ — e Zd ZdZdZˆ fd„Zed„ «       Zd„ Zd„ Z	d„ Z
ˆ xZS )ÚKeyz(Data accessor for the encoded key bytes.r,   c                 ó4   •— |dk(  sJ ‚t         ‰| �  ||«       y rH   )rá   r½   )r¼   r9   r%   rä   s      €r   r½   zKey.__init__™  s   ø€ Ø˜Š?Ðˆ?Ü	�GÑ�S˜*Õ%r   c                 ó2   — | j                   dt        | «       S rM   rí   rÉ   s    r   rî   z	Key.Bytes�  rï   r   c                 ó8   — | j                   j                  d«      S rM   )r¹   rÎ   rÉ   s    r   rç   zKey.__len__¡  s   € Ø�9‰9�>‰>˜!ÓÐr   c                 ó8   — | j                   j                  d«      S )NÚasciirü   rÉ   s    r   rþ   zKey.__str__¤  rÿ   r   c                 ó6   — d| j                   t        | «      fz  S )NzKey(%s, size=%d)rí   rÉ   s    r   rÊ   zKey.__repr__§  ó   € Ø §¡¬C°«IÐ 6Ñ6Ð6r   )r'   r(   r)   r*   rÚ   r½   rÛ   rî   rç   rþ   rÊ   rè   ré   s   @r   r  r  ”  s3   ø„ Ù0à€)ô&ð ñ$ó ð$òò&ö7r   r  c                   ó0   — e Zd ZdZdZd„ Zed„ «       Zd„ Zy)ÚVectorz+Data accessor for the encoded vector bytes.r,   c                 ó<  — |dk  s|t        | «      k\  rt        d|t        | «      fz  «      ‚| j                  t        | «      | j                  z  |z      }| j                  j	                  || j                  z  «      }t
        j                  || j                  |«      S )Nr   ú'vector index %s is out of [0, %d) range)r7   Ú
IndexErrorr¹   rÖ   rÐ   ÚRefÚ
PackedType)r¼   rb   r‚   r9   s       r   rÅ   zVector.__getitem__°  sŒ   € Øˆq‚y�EœS ›YÒ&ÜØ
3°u¼cÀ$»iÐ6HÑ
Hóð ð —)‘)œC ›I¨×(8Ñ(8Ñ8¸5Ñ@ÑA€KØ
�)‰)�/‰/˜% $×"2Ñ"2Ñ2Ó
3€CÜ�>‰>˜#˜t×/Ñ/°Ó=Ð=r   c                 ó@   — | D �cg c]  }|j                   ‘Œ c}S c c}w )z5Returns the underlying encoded data as a list object.)ÚValue©r¼   Úes     r   r  zVector.Valueº  s   € ð "Ö"˜ˆA�G‹GÒ"Ð"ùÒ"s   …c                 óN   — d| j                   | j                  | j                  fz  S )Nz"Vector(%s, byte_width=%d, size=%d))r¹   rÖ   rß   rÉ   s    r   rÊ   zVector.__repr__¿  s+   € Ø/Ø�	‰	Ø×ÑØ�
‰
ð3ñ ð r   N)	r'   r(   r)   r*   rÚ   rÅ   rÛ   r  rÊ   r,   r   r   r  r  «  s(   „ Ù3à€)ò>ð ñ#ó ð#ór   r  c                   ód   ‡ — e Zd ZdZdZd	ˆ fd„	Zed„ «       Zed„ «       Zd„ Z	ed„ «       Z
d„ Zˆ xZS )
ÚTypedVectorzGData accessor for the encoded typed vector or fixed typed vector bytes.)Ú_element_typerß   c                 ó|   •— t         ‰| �  |||«       |t        j                  k(  rt        j                  }|| _        y r\   )rá   r½   r   r�   r§   r  )r¼   r9   r%   r¡   rã   rä   s        €r   r½   zTypedVector.__init__Ì  s3   ø€ Ü	�GÑ�S˜* dÔ+à”t—{‘{Ò"ô —X‘X€là%€DÕr   c                 óL   — | j                   d | j                  t        | «      z   S r\   )r¹   rÖ   r7   rÉ   s    r   rî   zTypedVector.BytesÚ  s#   € à�9‰9Ð3�t×'Ñ'¬#¨d«)Ñ3Ð4Ð4r   c                 ó   — | j                   S r\   )r  rÉ   s    r   ÚElementTypezTypedVector.ElementTypeÞ  s   € à×ÑÐr   c                 óî   — |dk  s|t        | «      k\  rt        d|t        | «      fz  «      ‚| j                  j                  || j                  z  «      }t        || j                  d| j                  «      S )Nr   r  r
   )r7   r  r¹   rÐ   rÖ   r  r  )r¼   rb   r9   s      r   rÅ   zTypedVector.__getitem__â  sn   € Øˆq‚y�EœS ›YÒ&ÜØ
3°u¼cÀ$»iÐ6HÑ
Hóð ð �)‰)�/‰/˜% $×"2Ñ"2Ñ2Ó
3€CÜˆs�D×$Ñ$ a¨×);Ñ);Ó<Ð<r   c           	      ó”  — | sg S | j                   t        j                  u r;t        t        | j
                  t        | «      «      D �cg c]  }t        |«      ‘Œ c}S | j                   t        j                  u r-t        t        t        | j
                  t        | «      «      «      S | j                   t        j                  u r-t        t        t        | j
                  t        | «      «      «      S | j                   t        j                  u r-t        t        t        | j
                  t        | «      «      «      S | j                   t        j                  u r| D �cg c]  }|j                  ‘Œ c}S | j                   t        j                   u r| D �cg c]  }|j"                  ‘Œ c}S t%        d| j                   z  «      ‚c c}w c c}w c c}w )z'Returns underlying data as list object.úunsupported element_type: %s)r  r   r†   r>   r   rî   r7   Úboolr�   Úlistr   r¦   r…   r   r§   ÚAsKeyr�   ÚAsStringrÂ   r  s     r   r  zTypedVector.Valueë  sA  € ñ Ø€ià×ÑœTŸY™YÑ&Ü,¬Q°·
±
¼CÀ»IÓFÖG˜!Œd�1�gÒGÐGØ	×	Ñ	œtŸx™xÑ	'Ü”-¤ 4§:¡:¬s°4«yÓ9Ó:Ð:Ø	×	Ñ	œtŸy™yÑ	(Ü”-¤ 4§:¡:¬s°4«yÓ9Ó:Ð:Ø	×	Ñ	œtŸz™zÑ	)Ü”-¤ 4§:¡:¬s°4«yÓ9Ó:Ð:Ø	×	Ñ	œtŸx™xÑ	'Ø#Ö$˜!ˆa�g‹gÒ$Ð$Ø	×	Ñ	œtŸ{™{Ñ	*Ø"&Ö'˜Qˆa�j‹jÒ'Ð'äÐ4°t×7IÑ7IÑIÓJÐJùò Hùò %ùâ's   ÁF;ÅG ÆGc                 ód   — d| j                   | j                  | j                  | j                  fz  S )Nz8TypedVector(%s, byte_width=%d, element_type=%s, size=%d))r¹   rÖ   r  rß   rÉ   s    r   rÊ   zTypedVector.__repr__   s5   € ØEØ�	‰	Ø×ÑØ×ÑØ�
‰
ð	Iñ ð r   r¤   )r'   r(   r)   r*   rÚ   r½   rÛ   rî   r  rÅ   r  rÊ   rè   ré   s   @r   r  r  Ç  sX   ø„ ÙOà&€)õ&ð ñ5ó ð5ð ñó ðò=ð ñKó ðKö(r   r  c                   óh   ‡ — e Zd ZdZed„ «       Zˆ fd„Zed„ «       Zed„ «       Z	ed„ «       Z
d„ Zˆ xZS )ÚMapz(Data accessor for the encoded map bytes.c                 ó|   — t        | t        «      r| j                  } t        |t        «      r|j                  }| |k  S r\   )rÁ   r  Ú
AsKeyBytes©Úar-   s     r   ÚCompareKeyszMap.CompareKeys  s1   € ä�!”SÔØ
�,‰,€aÜ�!”SÔØ
�,‰,€aØˆq‰5€Lr   c                 óà   •— t        |t        «      rt        ‰| �  |«      S t	        | j
                  |j                  d«      | j                  «      }|dk7  rt        ‰| �  |«      S t        |«      ‚)Nr  ra   )	rÁ   r|   rá   rÅ   rc   ÚKeysrö   r+  ÚKeyError)r¼   rÄ   rb   rä   s      €r   rÅ   zMap.__getitem__  s_   ø€ Ü�#”sÔÜ‰WÑ  Ó%Ð%ä˜$Ÿ)™) S§Z¡Z°Ó%8¸$×:JÑ:JÓK€EØ�‚{Ü‰WÑ  Ó'Ð'ä
�3‹-Ðr   c                 ó  — t        t        | j                  d| j                  z  | j                    «      }| j                  j	                  d| j                  z  | j                  «      }t        ||t        j                  «      S )Néþÿÿÿéýÿÿÿ)r:   r   r¹   rÖ   rÒ   r  r   r§   )r¼   r%   r9   s      r   r-  zMap.Keys  sl   € äÜ	ˆ4�9‰9�R˜$×*Ñ*Ñ*¨d×.>Ñ.>Ð->Ð?ó€Jð �)‰)×
Ñ
˜R $×"2Ñ"2Ñ2°D×4DÑ4DÓ
E€CÜ�s˜J¬¯©Ó1Ð1r   c                 óB   — t        | j                  | j                  «      S r\   )r  r¹   rÖ   rÉ   s    r   ÚValuesz
Map.Values&  s   € ä�$—)‘)˜T×-Ñ-Ó.Ð.r   c                 óž   — t        | j                  | j                  «      D ��ci c]  \  }}|j                  |j                  “Œ c}}S c c}}w r\   )Úzipr-  r3  r  )r¼   ÚkÚvs      r   r  z	Map.Value*  s6   € ä),¨T¯Y©Y¸¿¹Ó)D×E¡  AˆA�G‰G�Q—W‘WÑÓEÐEùÓEs   ¤!A	c                 ó6   — d| j                   t        | «      fz  S )NzMap(%s, size=%d)rí   rÉ   s    r   rÊ   zMap.__repr__.  r	  r   )r'   r(   r)   r*   r+   r+  rÅ   rÛ   r-  r3  r  rÊ   rè   ré   s   @r   r&  r&  	  s`   ø„ Ù0àñó ðôð ñ2ó ð2ð ñ/ó ð/ð ñFó ðFö7r   r&  c                   ó  — e Zd ZdZdZed„ «       Zd„ Zd„ Ze	d„ «       Z
d„ Zd„ Ze	d	„ «       Ze	d
„ «       Ze	d„ «       Zd„ Ze	d„ «       Ze	d„ «       Ze	d„ «       Zd„ Ze	d„ «       Ze	d„ «       Zd„ Ze	d„ «       Ze	d„ «       Ze	d„ «       Ze	d„ «       Ze	d„ «       Ze	d„ «       Zd„ Ze	d„ «       Ze	d„ «       Z e	d„ «       Z!e	d„ «       Z"e	d„ «       Z#e	d „ «       Z$e	d!„ «       Z%e	d"„ «       Z&e	d#„ «       Z'e	d$„ «       Z(e	d%„ «       Z)e	d&„ «       Z*y')(r  z)Data accessor for the encoded data bytes.©r¹   Ú_parent_widthrÖ   Ú_typec                 óN   — t         j                  |«      \  }}t        | |||«      S r\   )r   rƒ   r  )r9   Úparent_widthr‚   r%   r}   s        r   r  zRef.PackedType7  s&   € äŸ™ KÓ0Ñ€J�Üˆs�L *¨eÓ4Ð4r   c                 ó<   — || _         || _        || _        || _        y r\   r:  )r¼   r9   r>  r%   r}   s        r   r½   zRef.__init__<  s    € Ø€D„IØ%€DÔØ!€DÔØ€D…Jr   c                 ód   — d| j                   | j                  | j                  | j                  fz  S )Nz1Ref(%s, parent_width=%d, byte_width=%d, type_=%s)r:  rÉ   s    r   rÊ   zRef.__repr__B  s5   € Ø>Ø�	‰	Ø×ÑØ×ÑØ�
‰
ð	Bñ ð r   c                 ó4   — | j                   d | j                   S r\   )r¹   r;  rÉ   s    r   Ú_Bytesz
Ref._BytesJ  s   € à�9‰9Ð)�t×)Ñ)Ð*Ð*r   c                 ó8   — t        d| j                  ›d|›�«      ‚)Nzcannot convert z to )rÂ   r<  )r¼   Útarget_types     r   Ú_ConvertErrorzRef._ConvertErrorN  s   € Ý
°·³¹[ÐIÓ
JÐJr   c                 óN   — | j                   j                  d| j                  «      S rM   )r¹   rÒ   r;  rÉ   s    r   Ú	_IndirectzRef._IndirectQ  s   € Ø�9‰9×Ñ˜a ×!3Ñ!3Ó4Ð4r   c                 ó:   — | j                   t        j                  u S r\   )r<  r   r¥   rÉ   s    r   ÚIsNullz
Ref.IsNullT  ó   € à�:‰:œŸ™Ð"Ð"r   c                 ó:   — | j                   t        j                  u S r\   )r<  r   r†   rÉ   s    r   ÚIsBoolz
Ref.IsBoolX  rJ  r   c                 óž   — | j                   t        j                  u r#t        t	        t
        | j                  «      «      S | j                  dk7  S rM   )r<  r   r†   r   r:   r   rB  ÚAsIntrÉ   s    r   ÚAsBoolz
Ref.AsBool\  s6   € à‡z�z”T—Y‘YÑÜ”'œ!˜TŸ[™[Ó)Ó*Ð*à�Z‰Z˜1‰_Ðr   c                 óˆ   — | j                   xr5 t        t        | j                  || j                  t
        j                  «      S )zšMutates underlying boolean value bytes in place.

    Args:
      value: New boolean value.

    Returns:
      Whether the value was mutated or not.
    )rL  rF   r   r¹   r;  r	   r   ©r¼   r   s     r   Ú
MutateBoolzRef.MutateBoolc  s5   € ð �;‰;ò œ7Ü	ˆ4�9‰9�e˜T×/Ñ/´·±óð r   c                 ó6   — | j                   xs | j                  S r\   )ÚIsIntÚIsFloatrÉ   s    r   Ú	IsNumericzRef.IsNumericp  s   € à�:‰:Ò%˜Ÿ™Ð%r   c                 ó–   — | j                   t        j                  t        j                  t        j                  t        j
                  fv S r\   )r<  r   r�   r¨   r¦   r©   rÉ   s    r   rT  z	Ref.IsIntt  s8   € à�:‰:Ü�‰Ü×ÑÜ�	‰	Ü×Ñð	ð ð r   c                 ó  — | j                   ry| j                  rt        | j                  «      S | j                  t
        j                  u rt        t        | j                  «      S | j                  t
        j                  u r+t        t        | j                  «       d| j                   «      S | j                  t
        j                  u rt        t        | j                  «      S | j                  t
        j                  u r+t        t        | j                  «       d| j                   «      S | j                   rt#        | j$                  «      S | j&                  rt#        | j(                  «      S | j*                  rt#        | j,                  «      S | j.                  rt#        | j0                  «      S | j2                  rt#        | j4                  «      S | j6                  rt#        | j8                  «      S | j;                  t
        j                  «      ‚)z+Returns current reference as integer value.r   N)rI  rL  r|   rO  r<  r   r�   r:   r   rB  r¨   rG  rÖ   r¦   r   r©   ÚIsStringr7   r#  ÚIsKeyr"  ÚIsBlobÚAsBlobÚIsVectorÚAsVectorr�   ÚAsTypedVectorr—   ÚAsFixedTypedVectorrE  rÉ   s    r   rN  z	Ref.AsInt}  sn  € ð ‡{‚{ØØ	�ŠÜ�—‘ÓÐØ	�‰”t—x‘xÑ	Ü”Q˜Ÿ™Ó$Ð$Ø	�‰”t×(Ñ(Ñ	(Ü”Q˜Ÿ™Ó(Ð);¨4×+;Ñ+;Ð<Ó=Ð=Ø‡z�z”T—Y‘YÑÜ”Q˜Ÿ™Ó$Ð$Ø	�‰”t×)Ñ)Ñ	)Ü”Q˜Ÿ™Ó(Ð);¨4×+;Ñ+;Ð<Ó=Ð=Ø	�ŠÜ�—‘ÓÐØ	�ŠÜ�—‘‹_ÐØ	�ŠÜ�—‘ÓÐØ	�ŠÜ�—‘ÓÐØ	×	Ò	Ü�×#Ñ#Ó$Ð$Ø	×	 Ò	 Ü�×(Ñ(Ó)Ð)à×ÑœtŸx™xÓ(Ð(r   c           	      óÄ  — | j                   t        j                  u r:t        t        | j
                  || j                  t        j	                  |«      «      S | j                   t        j                  u r>t        t        | j                  «       || j                  t        j	                  |«      «      S | j                   t        j                  u r:t        t        | j
                  || j                  t        j                  |«      «      S | j                   t        j                  u r>t        t        | j                  «       || j                  t        j                  |«      «      S y)zÞMutates underlying integer value bytes in place.

    Args:
      value: New integer value. It must fit to the byte size of the existing
        encoded value.

    Returns:
      Whether the value was mutated or not.
    F)r<  r   r�   rF   r   r¹   r;  r	   r¨   rG  rÖ   r¦   r   r©   rQ  s     r   Ú	MutateIntzRef.MutateInt›  s÷   € ð ‡z�z”T—X‘XÑÜ”Q˜Ÿ	™	 5¨$×*<Ñ*<¼h¿j¹jÈÓ>OÓPÐPØ	�‰”t×(Ñ(Ñ	(ÜÜ
ˆT�^‰^Ó˜u d×&6Ñ&6¼¿
¹
À5Ó8Ióð ð 
�‰”t—y‘yÑ	 Ü”Q˜Ÿ	™	 5¨$×*<Ñ*<¼h¿j¹jÈÓ>OÓPÐPØ	�‰”t×)Ñ)Ñ	)ÜÜ
ˆT�^‰^Ó˜u d×&6Ñ&6¼¿
¹
À5Ó8Ióð ð r   c                 óZ   — | j                   t        j                  t        j                  fv S r\   )r<  r   r…   rª   rÉ   s    r   rU  zRef.IsFloat´  s    € à�:‰:œ$Ÿ*™*¤d×&9Ñ&9Ð:Ð:Ð:r   c                 ó&  — | j                   ry| j                  rt        | j                  «      S | j                  rt        | j
                  «      S | j                  t        j                  u rt        t        | j                  «      S | j                  t        j                  u r+t        t        | j                  «       d| j                   «      S | j                  rt        | j                   «      S | j"                  rt        t%        | j&                  «      «      S | j)                  «       rt        t%        | j*                  «      «      S | j-                  «       rt        t%        | j.                  «      «      S | j1                  t        j                  «      ‚)z2Returns current reference as floating point value.g        N)rI  rL  ÚfloatrO  rT  rN  r<  r   r…   r:   r   rB  rª   rG  rÖ   rY  r#  r]  r7   r^  r�   r_  r—   ÚFixedTypedVectorrE  rÉ   s    r   ÚAsFloatzRef.AsFloat¸  s  € ð ‡{‚{ØØ	�ŠÜ�4—;‘;ÓÐØ	�ŠÜ�4—:‘:ÓÐØ	�‰”t—z‘zÑ	!Ü”Q˜Ÿ™Ó$Ð$Ø	�‰”t×*Ñ*Ñ	*Ü”Q˜Ÿ™Ó(Ð);¨4×+;Ñ+;Ð<Ó=Ð=Ø	�ŠÜ�4—=‘=Ó!Ð!Ø	�ŠÜ”3�t—}‘}Ó%Ó&Ð&Ø	×	Ñ	Ô	Ü”3�t×)Ñ)Ó*Ó+Ð+Ø	×	 Ñ	 Ô	"Ü”3�t×,Ñ,Ó-Ó.Ð.à×ÑœtŸz™zÓ*Ð*r   c           	      óŒ  — | j                   t        j                  u rDt        t        | j
                  || j                  t        j                  | j                  «      «      S | j                   t        j                  u rHt        t        | j                  «       || j                  t        j                  | j                  «      «      S y)zãMutates underlying floating point value bytes in place.

    Args:
      value: New float value. It must fit to the byte size of the existing
        encoded value.

    Returns:
      Whether the value was mutated or not.
    F)r<  r   r…   rF   r   r¹   r;  r	   r&   rª   rG  rÖ   rQ  s     r   ÚMutateFloatzRef.MutateFloatÐ  sš   € ð ‡z�z”T—Z‘ZÑÜÜ
Ø
�)‰)Ø
Ø
×
Ñ
Ü
�*‰*�T×'Ñ'Ó
(óð ð 
�‰”t×*Ñ*Ñ	*ÜÜ
Ø
�.‰.Ó
Ø
Ø
×
Ñ
Ü
�*‰*�T×%Ñ%Ó
&óð ð r   c                 ó:   — | j                   t        j                  u S r\   )r<  r   r§   rÉ   s    r   rZ  z	Ref.IsKeyí  ó   € à�:‰:œŸ™Ð!Ð!r   c                 ó´   — | j                   r.t        | j                  «       | j                  «      j                  S | j                  t        j                  «      ‚r\   )rZ  r  rG  rÖ   rî   rE  r   r§   rÉ   s    r   r(  zRef.AsKeyBytesñ  s>   € à‡z‚zÜ�—‘Ó! 4×#3Ñ#3Ó4×:Ñ:Ð:à×ÑœtŸx™xÓ(Ð(r   c                 ó²   — | j                   r-t        t        | j                  «       | j                  «      «      S | j                  t        j                  «      ‚r\   )rZ  Ústrr  rG  rÖ   rE  r   r§   rÉ   s    r   r"  z	Ref.AsKeyø  s=   € à‡z‚zÜ”�T—^‘^Ó% t×'7Ñ'7Ó8Ó9Ð9à×ÑœtŸx™xÓ(Ð(r   c                 ó:   — | j                   t        j                  u S r\   )r<  r   r�   rÉ   s    r   rY  zRef.IsStringÿ  s   € à�:‰:œŸ™Ð$Ð$r   c                 óä   — | j                   r.t        | j                  «       | j                  «      j                  S | j
                  r| j                  S | j                  t        j                  «      ‚r\   )
rY  rò   rG  rÖ   rî   rZ  r(  rE  r   r�   rÉ   s    r   ÚAsStringByteszRef.AsStringBytes  sO   € à‡}‚}Ü�D—N‘NÓ$ d×&6Ñ&6Ó7×=Ñ=Ð=Ø	�ŠØ�_‰_Ðà×ÑœtŸ{™{Ó+Ð+r   c                 óâ   — | j                   r-t        t        | j                  «       | j                  «      «      S | j
                  r| j                  S | j                  t        j                  «      ‚r\   )
rY  rn  rò   rG  rÖ   rZ  r"  rE  r   r�   rÉ   s    r   r#  zRef.AsString  sN   € à‡}‚}Ü”˜Ÿ™Ó(¨$×*:Ñ*:Ó;Ó<Ð<Ø	�ŠØ�Z‰ZÐà×ÑœtŸ{™{Ó+Ð+r   c                 óh   — t        | j                  «       | j                  «      j                  |«      S r\   )rò   rG  rÖ   rú   rQ  s     r   ÚMutateStringzRef.MutateString  s'   € Ü�$—.‘.Ó" D×$4Ñ$4Ó5×<Ñ<¸UÓCÐCr   c                 ó:   — | j                   t        j                  u S r\   )r<  r   rµ   rÉ   s    r   r[  z
Ref.IsBlob  rJ  r   c                 ó´   — | j                   r.t        | j                  «       | j                  «      j                  S | j                  t        j                  «      ‚r\   )r[  rë   rG  rÖ   rî   rE  r   rµ   rÉ   s    r   r\  z
Ref.AsBlob  s>   € à‡{‚{Ü�$—.‘.Ó" D×$4Ñ$4Ó5×;Ñ;Ð;à×ÑœtŸy™yÓ)Ð)r   c                 óZ   — | j                   xs | j                  xs | j                  «       S r\   )r]  r�   r—   rÉ   s    r   ÚIsAnyVectorzRef.IsAnyVector#  s%   € à�=‰=ÒK˜D×.Ñ.ÒK°$×2IÑ2IÓ2KÐKr   c                 óZ   — | j                   t        j                  t        j                  fv S r\   )r<  r   r¬   r«   rÉ   s    r   r]  zRef.IsVector'  s   € à�:‰:œ$Ÿ+™+¤t§x¡xÐ0Ð0Ð0r   c                 ó    — | j                   r$t        | j                  «       | j                  «      S | j	                  t
        j                  «      ‚r\   )r]  r  rG  rÖ   rE  r   r¬   rÉ   s    r   r^  zRef.AsVector+  s8   € à‡}‚}Ü�D—N‘NÓ$ d×&6Ñ&6Ó7Ð7à×ÑœtŸ{™{Ó+Ð+r   c                 ó@   — t         j                  | j                  «      S r\   )r   r�   r<  rÉ   s    r   r�   zRef.IsTypedVector2  s   € ä×Ñ˜dŸj™jÓ)Ð)r   c                 óÀ   — | j                   rBt        | j                  «       | j                  t        j                  | j                  «      «      S | j                  d«      ‚)NÚTYPED_VECTOR)r�   r  rG  rÖ   r   r“   r<  rE  rÉ   s    r   r_  zRef.AsTypedVector6  sP   € à×ÒÜØ
�.‰.Ó
Ø
×
Ñ
Ü
×
'Ñ
'¨¯
©
Ó
3óð ð ×Ñ˜~Ó.Ð.r   c                 ó@   — t         j                  | j                  «      S r\   )r   r—   r<  rÉ   s    r   r—   zRef.IsFixedTypedVectorA  s   € ä×"Ñ" 4§:¡:Ó.Ð.r   c                 óÌ   — | j                   rHt        j                  | j                  «      \  }}t	        | j                  «       | j                  ||«      S | j                  d«      ‚)NÚFIXED_TYPED_VECTOR)r—   r   rœ   r<  r  rG  rÖ   rE  )r¼   r¡   rã   s      r   r`  zRef.AsFixedTypedVectorE  sT   € à×ÒÜ×=Ñ=¸d¿j¹jÓIÑ€l�DÜ˜Ÿ™Ó)¨4×+;Ñ+;¸\È4ÓPÐPà×ÑÐ3Ó4Ð4r   c                 ó:   — | j                   t        j                  u S r\   )r<  r   r«   rÉ   s    r   ÚIsMapz	Ref.IsMapM  rk  r   c                 ó    — | j                   r$t        | j                  «       | j                  «      S | j	                  t
        j                  «      ‚r\   )r‚  r&  rG  rÖ   rE  r   r«   rÉ   s    r   ÚAsMapz	Ref.AsMapQ  s8   € à‡z‚zÜ�—‘Ó! 4×#3Ñ#3Ó4Ð4à×ÑœtŸx™xÓ(Ð(r   c                 óh  — | j                   ry| j                  r| j                  S | j                  r| j                  S | j
                  r| j                  S | j                  r| j                  S | j                  r| j                  S | j                  r| j                  S | j                  r| j                  j                  S | j                   r| j"                  j                  S | j$                  r| j&                  j                  S | j(                  r| j*                  j                  S t-        d| z  «      ‚)zÝConverts current reference to value of corresponding type.

    This is equivalent to calling `AsInt` for integer values, `AsFloat` for
    floating point values, etc.

    Returns:
      Value of corresponding type.
    Nzcannot convert %r to value)rI  rL  rO  rT  rN  rU  rg  rY  r#  rZ  r"  r[  r\  r‚  r„  r  r]  r^  r�   r_  r—   r`  rÂ   rÉ   s    r   r  z	Ref.ValueX  sé   € ð ‡{‚{ØØ	�ŠØ�[‰[ÐØ	�ŠØ�Z‰ZÐØ	�ŠØ�\‰\ÐØ	�ŠØ�]‰]ÐØ	�ŠØ�Z‰ZÐØ	�ŠØ�[‰[ÐØ	�ŠØ�Z‰Z×ÑÐØ	�ŠØ�]‰]× Ñ Ð Ø	×	Ò	Ø×Ñ×%Ñ%Ð%Ø	×	 Ò	 Ø×$Ñ$×*Ñ*Ð*äÐ2°TÑ9Ó:Ð:r   N)+r'   r(   r)   r*   rÚ   r+   r  r½   rÊ   rÛ   rB  rE  rG  rI  rL  rO  rR  rV  rT  rN  rb  rU  rg  ri  rZ  r(  r"  rY  rq  r#  rt  r[  r\  rx  r]  r^  r�   r_  r—   r`  r‚  r„  r  r,   r   r   r  r  2  sd  „ Ù1à=€)àñ5ó ð5òòð ñ+ó ð+òKò5ð ñ#ó ð#ð ñ#ó ð#ð ñó ðòð ñ&ó ð&ð ñó ðð ñ)ó ð)ò:ð2 ñ;ó ð;ð ñ+ó ð+ò.ð: ñ"ó ð"ð ñ)ó ð)ð ñ)ó ð)ð ñ%ó ð%ð ñ,ó ð,ð ñ,ó ð,òDð ñ#ó ð#ð ñ*ó ð*ð ñLó ðLð ñ1ó ð1ð ñ,ó ð,ð ñ*ó ð*ð ñ/ó ð/ð ñ/ó ð/ð ñ5ó ð5ð ñ"ó ð"ð ñ)ó ð)ð ñ ;ó ñ ;r   r  c                 ó:   — 	 t        | «       y# t        $ r Y yw xY w)NTF)ÚiterrÂ   )Úobjs    r   Ú_IsIterabler‰  |  s#   € ðÜˆ„IØøÜ	ò Ùðús   ‚ Ž	™c                   óö   — e Zd ZdZed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z	ed„ «       Z
d„ Zed	„ «       Zed
„ «       Zed„ «       Zej"                  fd„Zdd„Zej"                  fd„Zd„ Zd„ Zy)r  z;Class to represent given value during the encoding process.c                  óT   — t        dt        j                  t        j                  «      S rM   )r  r   r¥   r	   r   r,   r   r   ÚNullz
Value.Null‡  s   € ä�”D—I‘IœxŸ{™{Ó+Ð+r   c                 óT   — t        | t        j                  t        j                  «      S r\   )r  r   r†   r	   r   r   s    r   ÚBoolz
Value.Bool‹  s   € ä�œŸ	™	¤8§;¡;Ó/Ð/r   c                 ó8   — t        | t        j                  |«      S r\   )r  r   r�   ©r   r~   s     r   ÚIntz	Value.Int�  s   € ä�œŸ™ )Ó,Ð,r   c                 ó8   — t        | t        j                  |«      S r\   )r  r   r¦   r�  s     r   ÚUIntz
Value.UInt“  s   € ä�œŸ	™	 9Ó-Ð-r   c                 ó8   — t        | t        j                  |«      S r\   )r  r   r…   r�  s     r   ÚFloatzValue.Float—  s   € ä�œŸ
™
 IÓ.Ð.r   c                 óT   — t        | t        j                  t        j                  «      S r\   )r  r   r§   r	   r   )rS   s    r   r  z	Value.Key›  s   € ä�œŸ™¤8§;¡;Ó/Ð/r   c                 ó.   — || _         || _        || _        y r\   ©Ú_valuer<  Ú_min_bit_width)r¼   r   r}   Úmin_bit_widths       r   r½   zValue.__init__Ÿ  s   € Ø€D„KØ€D„Jð (€DÕr   c                 ó   — | j                   S r\   )r™  rÉ   s    r   r  zValue.Value¦  s   € à�;‰;Ðr   c                 ó   — | j                   S r\   )r<  rÉ   s    r   r   z
Value.Typeª  s   € à�:‰:Ðr   c                 ó   — | j                   S r\   )rš  rÉ   s    r   ÚMinBitWidthzValue.MinBitWidth®  s   € à×ÑÐr   c                 ó`   — t         j                  | j                  | j                  |«      «      S r\   )r   r   r<  ÚStoredWidth©r¼   Úparent_bit_widths     r   ÚStoredPackedTypezValue.StoredPackedType²  s#   € Ü�9‰9�T—Z‘Z ×!1Ñ!1Ð2BÓ!CÓDÐDr   c                 ó  — t         j                  | j                  «      r| j                  S dD ]E  }|t	        ||«      z   ||z  z   }t
        j                  || j                  z
  «      }|d|z  k(  sŒC|c S  t        d«      ‚)Nr!   r
   zrelative offset is too big)	r   rˆ   r<  rš  rK   r	   r   r™  r   )r¼   rI   Ú
elem_indexr%   Ú
offset_locr~   s         r   Ú	ElemWidthzValue.ElemWidthº  sŠ   € Ü‡}�}�T—Z‘ZÔ Ø× Ñ Ð Ø ò ˆ
à
Ü˜( JÓ/ñ0à˜Ñ#ñ$ð ô
 —*‘*˜Z¨$¯+©+Ñ5Ó6€iØ	˜˜Y™Ó	'ØÒðô Ð1Ó
2Ð2r   c                 ó„   — t         j                  | j                  «      rt        | j                  |«      S | j                  S r\   )r   rˆ   r<  Úmaxrš  r¢  s     r   r¡  zValue.StoredWidthÈ  s2   € Ü‡}�}�T—Z‘ZÔ Ü�×$Ñ$Ð&6Ó7Ð7Ø×ÑÐr   c                 óV   — d| j                   ›d| j                  ›d| j                  ›d�S )NzValue(z, ú)r˜  rÉ   s    r   rÊ   zValue.__repr__Í  s   � Ø"&§+£+¨t¯z«z¸4×;NÓ;NÐOÐOr   c                 ó,   — t        | j                  «      S r\   )rn  r™  rÉ   s    r   rþ   zValue.__str__Ð  s   € Üˆt�{‰{ÓÐr   Nr¤   )r'   r(   r)   r*   r+   rŒ  rŽ  r‘  r“  r•  r  r½   rÛ   r  r   rŸ  r	   r   r¤  r¨  r¡  rÊ   rþ   r,   r   r   r  r  „  sé   „ ÙCàñ,ó ð,ð ñ0ó ð0ð ñ-ó ð-ð ñ.ó ð.ð ñ/ó ð/ð ñ0ó ð0ò(ð ñó ðð ñó ðð ñó ðð /7¯k©kó Eó3ð *2¯©ó ò
Pór   r  c                 ó   ‡ — ˆ fd„}|S )Nc                 óŒ   •— t        |d   t        «      r$| j                  |d   «        ‰| g|dd  ¢­i |¤Ž y  ‰| g|¢­i |¤Ž y )Nr   r
   )rÁ   rn  r  )r¼   ÚargsÚkwargsÚfuncs      €r   ÚwrapperzInMap.<locals>.wrapperÕ  sK   ø€ Ü�$�q‘'œ3ÔØ
‡h�hˆt�A‰wÔÙ
ˆ4Ð%�$�q�r�(Ò%˜fÓ%á
ˆ4Ð!�$Ò!˜&Ó!r   r,   ©r²  r³  s   ` r   ÚInMaprµ  Ô  s   ø€ ô"ð 
€.r   c                 ó   ‡ — ˆ fd„}|S )Nc                 ó®   •— t        |«      dk(  r ‰| |d   «       y t        |«      dk(  r!| j                  |d   «        ‰| |d   «       y t        d«      ‚)Nr
   r   r   zinvalid number of arguments)r7   r  r   )r¼   r°  r²  s     €r   r³  zInMapForString.<locals>.wrapperà  sQ   ø€ Ü
ˆ4ƒy�A‚~Ù
ˆ4��a‘ÕÜ	ˆT‹�aŠØ
‡h�hˆt�A‰wÔÙ
ˆ4��a‘ÕäÐ4Ó5Ð5r   r,   r´  s   ` r   ÚInMapForStringr¸  ß  s   ø€ ô6ð 
€.r   c                   ó2   — e Zd ZdZd„ Zd„ Zd„ Zed„ «       Zy)ÚPoolzCCollection of (data, offset) pairs sorted by data for quick access.c                 ó   — g | _         y r\   ©Ú_poolrÉ   s    r   r½   zPool.__init__ï  ó	   € Ø€D…Jr   c                 ó¦   — ||f}t        | j                  |d„ «      }|dk7  r| j                  |   \  }}|S | j                  j                  ||«       y )Nc                 ó   — | d   |d   k  S rM   r,   r)  s     r   r_   z#Pool.FindOrInsert.<locals>.<lambda>ô  s   € °q¸±t¸aÀ¹d±{€ r   ra   )rc   r½  Úinsert)r¼   ÚdatarS   Údorb   Ú_s         r   ÚFindOrInsertzPool.FindOrInsertò  sS   € Ø	ˆvˆ€BÜ˜$Ÿ*™* bÑ*BÓC€EØ�‚{Ø—*‘*˜UÑ#�i€aˆØ€mØ‡J�J×Ñ�e˜RÔ Ør   c                 ó   — g | _         y r\   r¼  rÉ   s    r   ÚClearz
Pool.Clearû  r¾  r   c                 óL   — | j                   D ��cg c]  \  }}|‘Œ	 c}}S c c}}w r\   r¼  )r¼   rÂ  rÄ  s      r   ÚElementszPool.Elementsþ  s   € à $§
¡
×+‘W�T˜1ŠDÓ+Ð+ùÓ+s   � N)	r'   r(   r)   r*   r½   rÅ  rÇ  rÛ   rÉ  r,   r   r   rº  rº  ì  s(   „ ÙKòòòð ñ,ó ñ,r   rº  c                   óH  — e Zd ZdZddej
                  fd„Zd„ Zed„ «       Z	ed„ «       Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd/d„Zd„ Zed„ «       Zed„ «       Zd„ Zd/d„Zed„ «       Zed0d„«       Zed0d„«       Zed0d„«       Z ed0d„«       Z!ed0d„«       Z"ed0d„«       Z#d „ Z$d!„ Z%e&jN                  d/d"„«       Z(ed#„ «       Z)e&jN                  d/d$„«       Z*ed/d%„«       Z+e	 d1d&„«       Z,d'„ Z-d(„ Z.e&jN                  d/d)„«       Z/d*„ Z0d+„ Z1ed,„ «       Z2ed-„ «       Z3ed.„ «       Z4y)2r   z?Helper class to encode structural data into flexbuffers format.FTc                 ó¤   — || _         || _        || _        t        «       | _        t        «       | _        d| _        t        «       | _        g | _	        y ©NF)
Ú_share_stringsÚ_share_keysÚ_force_min_bit_widthrº  Ú_string_poolÚ	_key_poolÚ	_finishedr÷   r¹   Ú_stack)r¼   Úshare_stringsÚ
share_keysÚforce_min_bit_widths       r   r½   zBuilder.__init__  sF   € ð (€DÔØ!€DÔØ 3€DÔä›€DÔÜ“V€D„Nà€D„NÜ“€D„IØ€D…Kr   c                 ó,   — t        | j                  «      S r\   )r7   r¹   rÉ   s    r   rç   zBuilder.__len__  s   € Üˆt�y‰y‹>Ðr   c                 ó   — | j                   S r\   )rÐ  rÉ   s    r   Ú
StringPoolzBuilder.StringPool  s   € à×ÑÐr   c                 ó   — | j                   S r\   )rÑ  rÉ   s    r   ÚKeyPoolzBuilder.KeyPool  s   € à�>‰>Ðr   c                 ó¦   — | j                   j                  «        | j                  j                  «        d| _        t	        «       | _        g | _        y rÌ  )rÐ  rÇ  rÑ  rÒ  r÷   r¹   rÓ  rÉ   s    r   rÇ  zBuilder.Clear"  s;   € Ø×Ñ×ÑÔØ‡N�N×ÑÔØ€D„NÜ“€D„IØ€D…Kr   c                 óÂ  — | j                   rt        d«      ‚t        | j                  «      dk7  rt        d«      ‚| j                  d   }| j	                  |j                  t        | j                  «      «      «      }| j                  ||¬«       | j                  t        |j                  «       d¬«       | j                  t        |d¬«       d| _        | j                  S )z8Finishes encoding process and returns underlying buffer.z!builder has been already finishedr
   zinternal stack size must be oner   r$   T)rÒ  ÚRuntimeErrorr7   rÓ  Ú_Alignr¨  r¹   Ú	_WriteAnyÚ_Writer   r¤  Úfinished)r¼   r   r%   s      r   ÚFinishzBuilder.Finish)  s®   € à‡~‚~ÜÐ<Ó=Ð=ô ˆ4�;‰;Ó˜1ÒÜÐ:Ó;Ð;à�K‰K˜‰N€EØ—‘˜UŸ_™_¬S°·±«^Ó<Ó=€JØ‡N�N�5 Z€NÔ0Ø‡K�K”�5×)Ñ)Ó+¸€KÔ:Ø‡K�K”�:¨!€KÔ,à€D„MØ�9‰9Ðr   c                 óH   — | j                   |d  }|d |j                  d«       S rM   )r¹   rÌ   )r¼   rS   rÄ   s      r   Ú_ReadKeyzBuilder._ReadKey>  s'   € Ø
�)‰)�F�GÐ
€CØˆ}�—‘˜!“ÐÐr   c                 ó†   — d|z  }| j                   j                  dt        t        | j                   «      |«      z  «       |S )Nr
   ó    )r¹   ÚextendrK   r7   )r¼   Ú	alignmentr%   s      r   rß  zBuilder._AlignB  s7   € Ø�i‘€JØ‡I�I×Ñ�Wœ}¬S°·±«^¸ZÓHÑHÔIØÐr   c                 óP   — | j                   j                  t        |||«      «       y r\   )r¹   rè  r@   )r¼   r8   r   r%   s       r   rá  zBuilder._WriteG  s   € Ø‡I�I×Ñ”U˜3  zÓ2Õ3r   c                 óP   — | j                   j                  t        |||«      «       y r\   )r¹   rè  rC   )r¼   r8   rB   r%   s       r   Ú_WriteVectorzBuilder._WriteVectorJ  s   € Ø‡I�I×Ñ”[  f¨jÓ9Õ:r   c                 ó†   — t        | j                  «      |z
  }|dk(  s|dd|z  z  k  sJ ‚| j                  t        ||«       y )Nr#   r
   )r7   r¹   rá  r   )r¼   rS   r%   Úrelative_offsets       r   Ú_WriteOffsetzBuilder._WriteOffsetM  sA   € Ü˜$Ÿ)™)“n vÑ-€OØ˜Š?˜o°°q¸:±~Ñ1FÒGÐGÐGØ‡K�K”�? JÕ/r   c           
      óz  — t         j                  t        t         j                  t        t         j                  t
        t         j                  t        t         j                  t        ij                  |j                   «      }|r| j                  ||j                  |«       y | j                  |j                  |«       y r\   )r   r¥   r   r†   r�   r   r¦   r…   r   Úgetrá  r  rï  )r¼   r   r%   r8   s       r   rà  zBuilder._WriteAnyR  su   € ä�	‰	”1Ü�	‰	”1Ü�‰”!Ü�	‰	”1Ü�
‰
”Að÷ 
�cˆ%�*‰*ƒoð ñ Ø
‡k�k�#�u—{‘{ JÕ/à
×Ñ˜Ÿ™ ZÕ0r   c                 óŠ  — t         j                  t        |«      «      }| j                  |«      }| j	                  t        t        |«      |«       t        | j
                  «      }| j
                  j                  |«       |r| j
                  j                  d«       | j                  j                  t        |||«      «       |S rM   )
r	   r   r7   rß  rá  r¹   rè  ÚappendrÓ  r  )r¼   rÂ  Úappend_zeror}   r~   r%   Úlocs          r   Ú
_WriteBlobzBuilder._WriteBlob_  sŠ   € Ü—
‘
œ3˜t›9Ó%€IØ—‘˜YÓ'€JØ‡K�K””3�t“9˜jÔ)Ü
ˆd�i‰i‹.€CØ‡I�I×Ñ�TÔÙØ
‡i�i×Ñ�qÔØ‡K�K×Ñ”u˜S %¨Ó3Ô4Ø€Jr   c                 ó„  — t         j                  |«      }t         j                  t        |«      «      |kD  rt	        d«      ‚| j                  |«       |s | j                  t        t        |«      |«       t        | j                  «      }t        j                  t        t        j                  t        t        j                  t        ij                  |«      }|st        d«      ‚| j!                  |||«       t        j#                  ||rt        |«      nd«      }| j$                  j'                  t)        |||«      «       |S )z7Writes scalar vector elements to the underlying buffer.z*too many elements for the given byte_widthzunsupported element_typer   )r	   r&   r   r7   r   rß  rá  r¹   r   r�   r   r¦   r…   r   rñ  rÂ   rì  r£   rÓ  ró  r  )	r¼   r¡   r%   ÚelementsÚfixedr~   rõ  r8   r}   s	            r   Ú_WriteScalarVectorzBuilder._WriteScalarVectorj  sç   € ä—
‘
˜:Ó&€Iô ‡z�z”#�h“-Ó  9Ò,ÜÐCÓDÐDà‡K�K�	ÔÙØ
‡k�k”!”S˜“] JÔ/ä
ˆd�i‰i‹.€Cä�8‰8”QœŸ	™	¤1¤d§j¡j´!Ð
4×
8Ñ
8¸Ó
F€CÙÜÐ0Ó1Ð1Ø×Ñ�c˜8 ZÔ0ä×Ñ˜|¹e¬S°¬]ÈÓK€EØ‡K�K×Ñ”u˜S %¨Ó3Ô4Ø€Jr   Nc           	      óv  — t        |«      }|r|st        d«      ‚t        | j                  t        j                  |«      «      }d}|r3t        ||j                  t        | j                  «      «      «      }|dz  }t        j                  }t        |«      D ]f  \  }	}
t        ||
j                  t        | j                  «      ||	z   «      «      }|sŒ;|	dk(  r|
j                  }ŒM||
j                  k7  sŒ]t        d«      ‚ |r t        j                  |«      st        d«      ‚| j                  |«      }|r@| j                  |j                  |«       | j!                  t
        d|j"                  z  |«       |s| j!                  t
        ||«       t        | j                  «      }|D ]  }
| j%                  |
|«       Œ |s1|D ],  }
| j                  j'                  |
j)                  |«      «       Œ. |rt        j*                  }n-|rt        j-                  ||r|nd«      }nt        j.                  }t        |||«      S )z0Writes vector elements to the underlying buffer.zfixed vector must be typedr
   r   r   z.typed vector elements must be of the same typerž   )r7   r   rª  rÏ  r	   r   r¨  r¹   r   r§   Ú	enumeraterÞ  r™   rß  rï  r  rá  rŸ  rà  ró  r¤  r«   r£   r¬   )r¼   rø  Útypedrù  Úkeysr=   r~   Úprefix_elemsÚvector_typer/   r  r%   rõ  r}   s                 r   Ú_CreateVectorzBuilder._CreateVector‚  sç  € ä�‹]€Fá‘UÜÐ3Ó4Ð4ô �D×-Ñ-¬x¯z©z¸&Ó/AÓB€IØ€LÙÜ�i §¡´°D·I±I³Ó!?Ó@€iØ�aÑ€lä—(‘(€Kä˜(Ó#ò Q‰ˆˆ1Ü�i §¡¬S°·±«^¸\ÈAÑ=MÓ!NÓO€iâ	Ø�Š6ØŸ™‰+à˜AŸF™FÓ"ÜÐOÓPÐPðQñ ”T×7Ñ7¸ÔDÜÐBÓCÐCà—‘˜YÓ'€JáØ
×Ñ˜Ÿ
™
 JÔ/Ø
‡k�k”!�Q˜$×*Ñ*Ñ*¨JÔ7áØ
‡k�k”!�V˜ZÔ(ô ˆd�i‰i‹.€CØò $ˆØ
‡n�n�Q˜
Õ#ð$ñ Øò 8ˆ!Ø�	‰	×Ñ˜×+Ñ+¨IÓ6Õ7ð8ñ Ü�h‰h�eá	Ü×"Ñ" ;¹%±ÀQÓG‰ä—‘ˆä��e˜YÓ'Ð'r   c                 óD  — | j                  |«      }t        | j                  «      }t        j                  t
        t        j                  t        t        j                  t        i|   }| j                  |||«       | j                  j                  t        |||«      «       y r\   )rß  r7   r¹   r   r¨   r   r©   r   rª   r   rá  rÓ  ró  r  )r¼   r   r}   r~   r%   rõ  r8   s          r   Ú_PushIndirectzBuilder._PushIndirect¼  sv   € Ø—‘˜YÓ'€JÜ
ˆd�i‰i‹.€CÜ×Ñœa¤×!3Ñ!3´Q¼×8KÑ8KÌQÐ
OØñ€Cð 	‡K�K��U˜JÔ'Ø‡K�K×Ñ”u˜S %¨Ó3Õ4r   c                 ó4  — t        | j                  «      }|j                  d«      }| j                  |dt        j
                  ¬«      }| j                  rC| j                  j                  ||«      }|�%| j                  |d…= |x| j                  d   _
        }|S )zEncodes string value.rõ   T©rô  r}   Nra   )r7   r¹   rö   rö  r   r�   rÍ  rÐ  rÅ  rÓ  r™  )r¼   r   Úreset_torø   rõ  Úprev_locs         r   rò   zBuilder.StringÅ  s†   € ô �4—9‘9‹~€HØ�l‰l˜7Ó#€GØ
�/‰/˜'¨t¼4¿;¹;ˆ/Ó
G€CØ×ÒØ×"Ñ"×/Ñ/°¸Ó=€hØ	Ð	Ø�I‰I�h‘iÐ Ø'/Ð/ˆ�‰�B‰Ô à€Jr   c                 óF   — | j                  |dt        j                  ¬«      S )z§Encodes binary blob value.

    Args:
      value: A byte/bytearray value to encode

    Returns:
      Offset of the encoded value in underlying the byte buffer.
    Fr  )rö  r   rµ   rQ  s     r   rë   zBuilder.BlobÓ  s   € ð �?‰?˜5¨e¼4¿9¹9ˆ?ÓEÐEr   c                 óà  — t        |t        t        f«      r|}n|j                  d«      }d|v rt	        d«      ‚t        | j                  «      }| j                  j                  |«       | j                  j                  d«       | j                  r/| j                  j                  ||«      }|�| j                  |d…= |}| j                  j                  t        j                  |«      «       |S )a  Encodes key value.

    Args:
      value: A byte/bytearray/str value to encode. Byte object must not contain
        zero bytes. String object must be convertible to ASCII.

    Returns:
      Offset of the encoded value in the underlying byte buffer.
    r  r   zkey contains zero byteN)rÁ   Úbytesr÷   rö   r   r7   r¹   rè  ró  rÎ  rÑ  rÅ  rÓ  r  r  )r¼   r   rø   rõ  r  s        r   r  zBuilder.Keyß  sÀ   € ô �%œ%¤Ð+Ô,Ø�gà—‘˜WÓ%€gàˆG�|ÜÐ/Ó0Ð0ä
ˆd�i‰i‹.€CØ‡I�I×Ñ�WÔØ‡I�I×Ñ�QÔØ×ÒØ—‘×,Ñ,¨W°cÓ:€hØ	Ð	Ø�I‰I�c‘dˆOØˆà‡K�K×Ñ”u—y‘y “~Ô&Ø€Jr   c                 ó„   — |r| j                  |«       | j                  j                  t        j	                  «       «       y)zEncodes None value.N)r  rÓ  ró  r  rŒ  rÃ   s     r   rŒ  zBuilder.Nullý  s(   € á
Ø
‡h�hˆs„mØ‡K�K×Ñ”u—z‘z“|Õ$r   c                 ó`   — | j                   j                  t        j                  |«      «       y)zDEncodes boolean value.

    Args:
      value: A boolean value.
    N)rÓ  ró  r  rŽ  rQ  s     r   rŽ  zBuilder.Bool  s   € ð 	‡K�K×Ñ”u—z‘z %Ó(Õ)r   c                 óÀ   — |dk(  rt         j                  |«      nt         j                  |«      }| j                  j	                  t
        j                  ||«      «       y)z‹Encodes signed integer value.

    Args:
      value: A signed integer value.
      byte_width: Number of bytes to use: 1, 2, 4, or 8.
    r   N)r	   r   r&   rÓ  ró  r  r‘  ©r¼   r   r%   r~   s       r   r‘  zBuilder.Int  s@   € ð &0°1¢_”—
‘
˜5Ô!¼(¿*¹*ÀZÓ:P€IØ‡K�K×Ñ”u—y‘y ¨	Ó2Õ3r   c                 ó¤   — |dk(  rt         j                  |«      nt         j                  |«      }| j                  |t        j
                  |«       y)z–Encodes signed integer value indirectly.

    Args:
      value: A signed integer value.
      byte_width: Number of bytes to use: 1, 2, 4, or 8.
    r   N)r	   r   r&   r  r   r¨   r  s       r   ÚIndirectIntzBuilder.IndirectInt  s;   € ð &0°1¢_”—
‘
˜5Ô!¼(¿*¹*ÀZÓ:P€IØ×Ñ�uœd×/Ñ/°Õ;r   c                 óÀ   — |dk(  rt         j                  |«      nt         j                  |«      }| j                  j	                  t
        j                  ||«      «       y)z�Encodes unsigned integer value.

    Args:
      value: An unsigned integer value.
      byte_width: Number of bytes to use: 1, 2, 4, or 8.
    r   N)r	   r   r&   rÓ  ró  r  r“  r  s       r   r“  zBuilder.UInt"  s@   € ð &0°1¢_”—
‘
˜5Ô!¼(¿*¹*ÀZÓ:P€IØ‡K�K×Ñ”u—z‘z %¨Ó3Õ4r   c                 ó¤   — |dk(  rt         j                  |«      nt         j                  |«      }| j                  |t        j
                  |«       y)z›Encodes unsigned integer value indirectly.

    Args:
      value: An unsigned integer value.
      byte_width: Number of bytes to use: 1, 2, 4, or 8.
    r   N)r	   r   r&   r  r   r©   r  s       r   ÚIndirectUIntzBuilder.IndirectUInt-  s;   € ð &0°1¢_”—
‘
˜5Ô!¼(¿*¹*ÀZÓ:P€IØ×Ñ�uœd×0Ñ0°)Õ<r   c                 óÀ   — |dk(  rt         j                  |«      nt         j                  |«      }| j                  j	                  t
        j                  ||«      «       y)z„Encodes floating point value.

    Args:
      value: A floating point value.
      byte_width: Number of bytes to use: 4 or 8.
    r   N)r	   r   r&   rÓ  ró  r  r•  r  s       r   r•  zBuilder.Float8  s@   € ð &0°1¢_”—
‘
˜5Ô!¼(¿*¹*ÀZÓ:P€IØ‡K�K×Ñ”u—{‘{ 5¨)Ó4Õ5r   c                 ó¤   — |dk(  rt         j                  |«      nt         j                  |«      }| j                  |t        j
                  |«       y)z�Encodes floating point value indirectly.

    Args:
      value: A floating point value.
      byte_width: Number of bytes to use: 4 or 8.
    r   N)r	   r   r&   r  r   rª   r  s       r   ÚIndirectFloatzBuilder.IndirectFloatC  s;   € ð &0°1¢_”—
‘
˜5Ô!¼(¿*¹*ÀZÓ:P€IØ×Ñ�uœd×1Ñ1°9Õ=r   c                 ó,   — t        | j                  «      S )zStarts vector construction.©r7   rÓ  rÉ   s    r   Ú_StartVectorzBuilder._StartVectorN  ó   € äˆt�{‰{ÓÐr   c                 ó®   — | j                  | j                  |d ||«      }| j                  |d…= | j                  j                  |«       |j                  S )z6Finishes vector construction by encodung its elements.N)r  rÓ  ró  r  )r¼   rN   rý  rù  Úvecs        r   Ú
_EndVectorzBuilder._EndVectorR  sK   € à
×
Ñ
˜TŸ[™[¨¨Ð0°%¸Ó
?€CØ�‰�E‘FÐØ‡K�K×Ñ�sÔØ�9‰9Ðr   c              #   ó¶   K  — |r| j                  |«       	 | j                  «       }| –— | j                  |dd¬«       y # | j                  dd¬«       w xY w­w)NF©rý  rù  ©r  r  r  ©r¼   rÄ   rN   s      r   r  zBuilder.VectorY  sP   è ø€ á
Ø
‡h�hˆs„mð7Ø×ÑÓ!€eØ‚jà
‡o�o�e 5°€oÕ6ø€d‡o�o�e 5°€oÕ6üó   ‚A—A  «AÁ AÁAc                 ó€   — | j                  «       5  |D ]  }| j                  |«       Œ 	 ddd«       y# 1 sw Y   yxY w)z‚Encodes sequence of any elements as a vector.

    Args:
      elements: sequence of elements, they may have different types.
    N)r  ÚAdd)r¼   rø  r  s      r   ÚVectorFromElementszBuilder.VectorFromElementsd  s<   € ð 
�‰‹ñ Øò ˆ!Ø�‰��ñ÷÷ ñ ús   ‘4´=c              #   ó¶   K  — |r| j                  |«       	 | j                  «       }| –— | j                  |dd¬«       y # | j                  dd¬«       w xY w­w)NTFr  r   r!  s      r   r  zBuilder.TypedVectoro  sP   è ø€ á
Ø
‡h�hˆs„mð6Ø×ÑÓ!€eØ‚jà
‡o�o�e 4¨u€oÕ5ø€d‡o�o�e 4¨u€oÕ5ür"  c                 óÌ  — t        |t        j                  «      rö|j                  dk(  r$| j                  t        j
                  d|d¬«       y
|j                  dk(  r$| j                  t        j
                  d|d¬«       y
|j                  dv r.| j                  t        j                  |j                  |d¬«       y
|j                  dv r.| j                  t        j                  |j                  |d¬«       y
t        d	|j                  z  «      ‚|€| j                  n| j                  |«      }| j                  «       5  |D ]
  } ||«       Œ 	 d
d
d
«       y
# 1 sw Y   y
xY w)a%  Encodes sequence of elements of the same type as typed vector.

    Args:
      elements: Sequence of elements, they must be of the same type.
      element_type: Suggested element type. Setting it to None means determining
        correct value automatically based on the given elements.
    r3   r"   F©rù  r4   r#   )r-   r.   r/   Úlr0   )r&   r1   r   ÚLr2   zunsupported array typecode: %sN)rÁ   ÚarrayÚtypecoderú  r   r…   r�   Úitemsizer¦   r   r$  ÚAdderr  )r¼   rø  r¡   Úaddr  s        r   ÚTypedVectorFromElementszBuilder.TypedVectorFromElementsz  s9  € ô �(œEŸK™KÔ(Ø	×	Ñ	˜cÒ	!Ø×Ñ¤§
¡
¨A¨x¸uÐÕEØ×Ñ Ò#Ø×Ñ¤§
¡
¨A¨x¸uÐÕEØ×ÑÐ 9Ñ9Ø×ÑÜ�H‰H�h×'Ñ'¨¸ð 	 õ 	
ð ×ÑÐ 9Ñ9Ø×ÑÜ�I‰I�x×(Ñ(¨(¸%ð 	 õ 	
ô Ð9¸H×<MÑ<MÑMÓNÐNà$Ð,ˆD�HŠH°$·*±*¸\Ó2J€cØ×ÑÓñ Øò 	ˆAÙ
ˆa�&ñ	÷÷ ñ ús   Å EÅE#c                 ó†  ‡— dt        |«      cxk  rdk  st        d«      ‚ t        d«      ‚|D �ch c]  }t        |«      ’Œ }}t        |«      dk7  rt        d«      ‚|\  }|€It        t
        j                  t        t
        j                  ij                  |«      }|st        d|z  «      ‚|dk(  rvt
        j                  t        j                  t
        j                  t        j                  t
        j                  t        j                  i|   Šdt        ˆfd	„|D «       «      z  }| j!                  |||d
¬«       yc c}w )a‘  Encodes sequence of elements of the same type as fixed typed vector.

    Args:
      elements: Sequence of elements, they must be of the same type. Allowed
        types are `Type.INT`, `Type.UINT`, `Type.FLOAT`. Allowed number of
        elements are 2, 3, or 4.
      element_type: Suggested element type. Setting it to None means determining
        correct value automatically based on the given elements.
      byte_width: Number of bytes to use per element. For `Type.INT` and
        `Type.UINT`: 1, 2, 4, or 8. For `Type.FLOAT`: 4 or 8. Setting it to 0
        means determining correct value automatically based on the given
        elements.
    r   r"   z&only 2, 3, or 4 elements are supportedr
   z%all elements must be of the same typeNr  r   c              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wr\   r,   )Ú.0r  Úwidths     €r   ú	<genexpr>z7Builder.FixedTypedVectorFromElements.<locals>.<genexpr>½  s   øè ø€ Ò7¨™E !ŸHÑ7ùs   ƒTr(  )r7   r   ÚtyperÂ   r|   r   r�   re  r…   rñ  r¦   r	   r   r   r   rª  rú  )r¼   rø  r¡   r%   r  Útypesr}   r4  s          @r   ÚFixedTypedVectorFromElementsz$Builder.FixedTypedVectorFromElements˜  s  ø€ ð" ”�H“Ô" Ò"ÜÐ?Ó@Ð@ð #ÜÐ?Ó@Ð@à&Ö'˜ŒT�!�WÐ'€EÐ'Ü
ˆ5ƒz�Q‚ÜÐ=Ó>Ð>à�H€UàÐÜœ4Ÿ8™8¤U¬D¯J©JÐ7×;Ñ;¸EÓB€lÙÜÐ6¸Ñ>Ó?Ð?à�Q‚ä
�)‰)”X—Z‘ZÜ
�(‰(”H—J‘JÜ
�*‰*”h—j‘jðð 	ñ	€eð
 œÓ7¨hÔ7Ó7Ñ7€jà×Ñ˜L¨*°hÀdÐÕKùò' (s   ±D>c                 ó,   — t        | j                  «      S )zStarts map construction.r  rÉ   s    r   Ú	_StartMapzBuilder._StartMapÁ  r  r   c                 óš  ‡ — ‰ j                   |d }t        |«      dz  dk7  rt        d«      ‚|ddd…   D ]:  }|j                  t        j                  usŒ t        dt        j                  z  «      ‚ t        |ddd…   |ddd…   «      }t        |ˆ fd„¬«      }‰ j                   |d…= |D ]  }‰ j                   j                  |«       Œ ‰ j                  ‰ j                   |dd…   d	d
¬«      }‰ j                  ‰ j                   |dz   dd…   d
d
|¬«      }‰ j                   |d…= ‰ j                   j                  |«       |j                  S )z3Finishes map construction by encodung its elements.Nr   r   z&must be even number of keys and valueszall map keys must be of %s typer
   c                 ó@   •— ‰j                  | d   j                  «      S rM   )rå  r  )Úpairr¼   s    €r   r_   z!Builder._EndMap.<locals>.<lambda>Ò  s   ø€ ¨4¯=©=¸¸a¹¿¹Ó+G€ r   )rÄ   TFr  )rý  rù  rþ  )rÓ  r7   rÞ  r   r§   r5  Úsortedrè  r  ró  r  )r¼   rN   ÚstackrÄ   Úpairsr=  rþ  rB   s   `       r   Ú_EndMapzBuilder._EndMapÅ  sP  ø€ ð �K‰K˜˜Ð€Eä
ˆ5ƒz�A�~˜ÒÜÐAÓBÐBà‘S�q�S‰zò IˆØ	�‰œŸ™Ò	!ÜÐ<¼t¿x¹xÑGÓHÐHðIô �‘c˜�c‘
˜E ! $ Q $™KÓ(€EÜ�5ÓGÔH€Eà�‰�E‘FÐØò ˆØ
‡k�k×Ñ˜Õðð ×Ñ˜dŸk™k¨%¨(°¨(Ñ3¸4ÀuÐÓM€DØ×ÑØ�‰�E˜A‘I�N �NÑ#¨5¸ÀDð  ó €Fð 	�‰�E‘FÐØ‡K�K×Ñ�vÔØ�<‰<Ðr   c              #   óª   K  — |r| j                  |«       	 | j                  «       }| –— | j                  |«       y # | j                  «       w xY w­wr\   )r  r:  rA  r!  s      r   r&  zBuilder.Mapá  sB   è ø€ á
Ø
‡h�hˆs„mðØ�n‰nÓ€eØ‚jà
‡l�l�5Õø€d‡l�l�5Õüs   ‚A—= «A½AÁAc                 óº   — | j                  «       }|j                  «       D ]'  \  }}| j                  |«       | j                  |«       Œ) | j	                  |«       y r\   )r:  Úitemsr  r$  rA  )r¼   rø  rN   r6  r7  s        r   ÚMapFromElementszBuilder.MapFromElementsì  sL   € Ø�N‰NÓ€EØ—‘Ó ò ‰ˆˆ1Ø
‡h�hˆq„kØ
‡h�hˆq…kðð 	‡L�L�Õr   c                 ó  — t         j                  | j                  t         j                  | j                  t         j
                  | j                  t         j                  | j                  t         j                  | j                  t         j                  | j                  t         j                  | j                  t         j                  | j                   t         j"                  | j$                  t         j&                  | j(                  i
|   S r\   )r   r†   rŽ  r�   r‘  r¨   r  r¦   r“  r©   r  r…   r•  rª   r  r§   r  rµ   rë   r�   rò   )r¼   r}   s     r   r.  zBuilder.Adderó  s¤   € ä�	‰	�4—9‘9Ü�‰�$—(‘(Ü×Ñ˜4×+Ñ+Ü�	‰	�4—9‘9Ü×Ñ˜D×-Ñ-Ü�
‰
�D—J‘JÜ×Ñ˜T×/Ñ/Ü�‰�$—(‘(Ü�	‰	�4—9‘9Ü�‰�T—[‘[ðð ñð r   c                 ó*  — |€| j                  «        yt        |t        «      r| j                  |«       yt        |t        «      r| j                  |«       yt        |t        «      r| j                  |«       yt        |t        «      r| j                  |«       yt        |t        t        f«      r| j                  |«       yt        |t        «      rU| j                  «       5  |j                  «       D ]'  \  }}| j!                  |«       | j#                  |«       Œ) 	 ddd«       yt        |t$        j$                  «      r| j'                  |«       yt)        |«      r| j+                  |«       yt-        dt/        |«      z  «      ‚# 1 sw Y   yxY w)z$Encodes value of any supported type.Nzunsupported python type: %s)rŒ  rÁ   r   rŽ  r|   r‘  re  r•  rn  rò   r
  r÷   rë   Údictr&  rD  r  r$  r+  r0  r‰  r%  rÂ   r6  )r¼   r   r6  r7  s       r   r$  zBuilder.Add  s)  € ð €}Ø
‡i�i…kÜ	�Eœ4Ô	 Ø
‡i�i�ÕÜ	�Eœ3Ô	Ø
‡h�hˆu…oÜ	�Eœ5Ô	!Ø
‡j�j�ÕÜ	�Eœ3Ô	Ø
‡k�k�%ÕÜ	�EœE¤9Ð-Ô	.Ø
‡i�i�ÕÜ	�Eœ4Ô	 Ø�8‰8‹:ñ Ø—K‘K“Mò 	‰DˆAˆqØ
�(‰(�1Œ+Ø
�(‰(�1�+ñ	÷ð ô 
�Eœ5Ÿ;™;Ô	'Ø
×"Ñ" 5Õ)Ü	�UÔ	Ø
×Ñ˜eÕ$äÐ3´d¸5³kÑAÓBÐB÷ð ús   Ã$;F	Æ	Fc                 ó    — | j                   d   S )Nra   )rÓ  rÉ   s    r   Ú	LastValuezBuilder.LastValue  s   € à�;‰;�r‰?Ðr   c                 ó:   — | j                   j                  |«       y r\   )rÓ  ró  rQ  s     r   Ú
ReuseValuezBuilder.ReuseValue   s   € à‡K�K×Ñ�uÕr   r\   r¤   rM   )5r'   r(   r)   r*   r	   r   r½   rç   rÛ   rÙ  rÛ  rÇ  rã  rå  rß  rá  rì  rï  rà  rö  rú  r  r  r¸  rò   rµ  rë   r  rŒ  rŽ  r‘  r  r“  r  r•  r  r  r  Ú
contextlibÚcontextmanagerr  r%  r  r0  r8  r:  rA  r&  rE  r.  r$  rJ  rL  r,   r   r   r   r     s/  „ ÙGð ØØ"Ÿ+™+ó	ò"ð ñó ðð ñó ðòòò*òò
4ò;ò0ò
1ò	òó08(òt5ð ñó ðð 	ñ	Fó 	ð	Fòó<%ð 	ñ*ó 	ð*ð 	ò4ó 	ð4ð 	ò<ó 	ð<ð 	ò5ó 	ð5ð 	ò=ó 	ð=ð 	ò6ó 	ð6ð 	ò>ó 	ð>òòð ×Ñò7ó ð7ð 	ñó 	ðð ×Ñò6ó ð6ð 	òó 	ðð: 	à45ò&Ló 	ð&LòPòð8 ×Ñòó ðòòð ñCó ðCð4 ñó ðð 	ñó 	ñr   r   c                 ó�   — t        | «      dk  rt        d«      ‚| d   }t        j                  t	        | d|z    «      || d   ¬«      S )z/Returns root `Ref` object for the given buffer.r   zbuffer is too smallra   r   r0  r�   )r7   r   r  r  r·   )r9   r%   s     r   r   r   %  sQ   € äˆƒX�‚\Ü
Ð*Ó
+Ð+Ø�2‰w€*Ü	�‰Ü	ˆ#��Z‘Ð Ó! :¸3¸r¹7ð 
ó 
ð r   c                 óX   — t        «       }|j                  | «       |j                  «       S )z1Returns bytearray with the encoded python object.)r   r$  rã  )rˆ  Úfbbs     r   r   r   /  s    € ä‹	€#Ø‡'�'ˆ#„,Ø	�‰‹Ðr   c                 ó,   — t        | «      j                  S )z.Returns python object decoded from the buffer.)r   r  )r9   s    r   r   r   6  s   € ä	�‹×	Ñ	Ðr   )(r*   r+  rM  Úenumr   Ú__all__ÚIntEnumr	   r   r   r   r:   r>   r@   rC   rF   rK   rT   rZ   rc   r   r·   rÔ   rÝ   rë   rò   r  r  r  r&  r  r‰  r  rµ  r¸  rº  r   r   r   r   r,   r   r   ú<module>rV     s\  ðñó Û Û Û à
:€ô6ˆt�|‰|ô 6ðr 	�˜ Ñ$€Ø�˜ Ñ$€Ø�Ñ€ò6òAò
5òHòò'ò
$òñ$ '9ó ôv@ˆ4�<‰<ô v@÷r%Oñ %O÷Pñ ôˆFô ô(
8ˆ5ô 
8ô!:ˆUô !:ôH7ˆ&ô 7ô.ˆUô ô8?�%ô ?ôD&7ˆ&ô &7÷RG;ñ G;òT
÷Mñ Mò`ò
÷,ñ ,÷._ñ _òDòór   