§
    £˜ºhü¥  ã                   óÖ  — d Z ddlZddlZddlmZ ddlmZmZmZm	Z	m
Z
mZ 	 ddlZdZn# e$ r dZY nw xY w	 ddlZdZn# e$ r dZY nw xY wddlmZmZmZmZ dd	lmZmZmZmZmZmZ dd
lm Z m!Z! ddl"m"Z" ddl#m$Z$m%Z%m&Z&m'Z' ddl(m)Z) ddl*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= dZ> G d„ d¦  «        Z? G d„ d¦  «        Z@ G d„ d¦  «        ZA G d„ d¦  «        ZBdS )z3Implementation of the X protocol for MySQL servers.é    N)ÚBytesIO)ÚAnyÚDictÚListÚOptionalÚTupleÚUnionTFé   )ÚInterfaceErrorÚNotSupportedErrorÚOperationalErrorÚProgrammingError)Ú
ExprParserÚbuild_bool_scalarÚ
build_exprÚbuild_int_scalarÚbuild_scalarÚbuild_unsigned_int_scalar)Úencode_to_bytesÚget_item_or_attr)Úlogger)ÚCRUD_PREPARE_MAPPINGÚSERVER_MESSAGESÚMessageÚmysqlxpb_enum)ÚColumn)
ÚAddStatementÚDeleteStatementÚFilterableStatementÚFindStatementÚInsertStatementÚModifyStatementÚReadStatementÚRemoveStatementÚSqlStatementÚUpdateStatement)Ú
ColumnTypeÚMessageTypeÚProtobufMessageCextTypeÚProtobufMessageTypeÚResultBaseTypeÚ
SocketTypeÚStatementTypeÚ
StrOrBytesiè  c                   óB   — e Zd ZdZdeddfd„Zdedefd„Zdedefd„Z	dS )	Ú
CompressorzËImplements compression/decompression using `zstd_stream`, `lz4_message`
    and `deflate_stream` algorithms.

    Args:
        algorithm (str): Compression algorithm.

    .. versionadded:: 8.0.21

    Ú	algorithmÚreturnNc                 ó  — || _         d | _        d | _        |dk    r2t          j        ¦   «         | _        t          j        ¦   «         | _        d S |dk    r2t          j        ¦   «         | _        t          j        ¦   «         | _        d S d S )NÚzstd_streamÚdeflate_stream)	Ú
_algorithmÚ_compressobjÚ_decompressobjÚzstdÚZstdCompressorÚZstdDecompressorÚzlibÚcompressobjÚdecompressobj©Úselfr1   s     úW/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/mysqlx/protocol.pyÚ__init__zCompressor.__init__j   sˆ   € Ø(ˆŒØ!%ˆÔØ#'ˆÔà˜Ò%Ð%Ý $Ô 3Ñ 5Ô 5ˆDÔÝ"&Ô"7Ñ"9Ô"9ˆDÔÐÐØÐ*Ò*Ð*Ý $Ô 0Ñ 2Ô 2ˆDÔÝ"&Ô"4Ñ"6Ô"6ˆDÔÐÐð +Ð*ó    Údatac                 óÞ  — | j         dk    r| j                             |¦  «        S | j         dk    r{t          j                             ¦   «         5 }|                     ¦   «         }||                     |¦  «        z  }||                     ¦   «         z  }ddd¦  «         n# 1 swxY w Y   |S | j                             |¦  «        }|| j                             t          j	        ¦  «        z  }|S )z´Compresses data and returns it.

        Args:
            data (str, bytes or buffer object): Data to be compressed.

        Returns:
            bytes: Compressed data.
        r4   Úlz4_messageN)
r6   r7   ÚcompressÚlz4ÚframeÚLZ4FrameCompressorÚbeginÚflushr<   ÚZ_SYNC_FLUSH)r@   rD   Ú
compressorÚ
compresseds       rA   rG   zCompressor.compressv   s  € ð Œ?˜mÒ+Ð+ØÔ$×-Ò-¨dÑ3Ô3Ð3ØŒ?˜mÒ+Ð+Ý”×-Ò-Ñ/Ô/ð 1°:Ø'×-Ò-Ñ/Ô/�
Ø˜j×1Ò1°$Ñ7Ô7Ñ7�
Ø˜j×.Ò.Ñ0Ô0Ñ0�
ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð Ðð Ô&×/Ò/°Ñ5Ô5ˆ
Ø�dÔ'×-Ò-­dÔ.?Ñ@Ô@Ñ@ˆ
ØÐs   ÁABÂB#Â&B#c                 ó‚  — | j         dk    r| j                             |¦  «        S | j         dk    rMt          j                             ¦   «         5 }|                     |¦  «        }ddd¦  «         n# 1 swxY w Y   |S | j                             |¦  «        }|| j                             t          j        ¦  «        z  }|S )zÙDecompresses a frame of data and returns it as a string of bytes.

        Args:
            data (str, bytes or buffer object): Data to be compressed.

        Returns:
            bytes: Decompresssed data.
        r4   rF   N)	r6   r8   Ú
decompressrH   rI   ÚLZ4FrameDecompressorrL   r<   rM   )r@   rD   ÚdecompressorÚdecompresseds       rA   rQ   zCompressor.decompress�   sð   € ð Œ?˜mÒ+Ð+ØÔ&×1Ò1°$Ñ7Ô7Ð7ØŒ?˜mÒ+Ð+Ý”×/Ò/Ñ1Ô1ð =°\Ø+×6Ò6°tÑ<Ô<�ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =àÐð Ô*×5Ò5°dÑ;Ô;ˆØ˜Ô+×1Ò1µ$Ô2CÑDÔDÑDˆØÐs   ÁA1Á1A5Á8A5)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrrB   r.   ÚbytesrG   rQ   © rC   rA   r0   r0   _   s„   € € € € € ðð ð
7 #ð 
7¨$ð 
7ð 
7ð 
7ð 
7ð˜Zð ¨Eð ð ð ð ð.˜zð ¨eð ð ð ð ð ð rC   r0   c                   óZ   — e Zd ZdZdeddfd„Zdefd„Zdefd„Zdeddfd	„Z	d
e
ddfd„ZdS )ÚMessageReaderz™Implements a Message Reader.

    Args:
        socket_stream (mysqlx.connection.SocketStream): `SocketStream` object.

    .. versionadded:: 8.0.21
    Úsocket_streamr2   Nc                 ó>   — || _         d | _        d | _        g | _        d S ©N)Ú_streamÚ_compressorÚ_msgÚ
_msg_queue©r@   r^   s     rA   rB   zMessageReader.__init__¬   s#   € Ø#0ˆŒØ15ˆÔØ!%ˆŒ	Ø)+ˆŒˆˆrC   c                 ót  — | j         r| j                              d¦  «        S t          j        d| j                             d¦  «        ¦  «        \  }}|dk    rt          d¦  «        ‚| j                             |dz
  ¦  «        }|t          vrt          d|› �¦  «        ‚|dk    r|d	k    r|  	                    ¦   «         S t          j        ||¦  «        }|d
k    rÞ|d         }t          | j                             |d         ¦  «        ¦  «        }d}||k     r~t          j        d|                     d¦  «        ¦  «        \  }}	|                     |dz
  ¦  «        }
| j                              t          j        |	|
¦  «        ¦  «         ||dz   z  }||k     °~| j         r| j                              d¦  «        ndS |S )a¦  Reads X Protocol messages from the stream and returns a
        :class:`mysqlx.protobuf.Message` object.

        Raises:
            :class:`mysqlx.ProgrammingError`: If e connected server does not
                                              have the MySQL X protocol plugin
                                              enabled.

        Returns:
            mysqlx.protobuf.Message: MySQL X Protobuf Message.
        r   ú<LBé   é
   z[The connected server does not have the MySQL X protocol plugin enabled or protocol mismatchr
   zUnknown message type: é   rC   é   Úuncompressed_sizeÚpayloadé   N)rd   ÚpopÚstructÚunpackra   Úreadr   r   Ú
ValueErrorÚ_read_messager   Úfrom_server_messager   rb   rQ   Úappend)r@   Ú
frame_sizeÚ
frame_typeÚframe_payloadÚ	frame_msgrl   ÚstreamÚbytes_processedÚpayload_sizeÚmsg_typerm   s              rA   rt   zMessageReader._read_message²   sÏ  € ð Œ?ð 	*Ø”?×&Ò& qÑ)Ô)Ð)å!'¤¨u°d´l×6GÒ6GÈÑ6JÔ6JÑ!KÔ!KÑˆ
�Jà˜ÒÐÝ"ð$ñô ð ð œ×)Ò)¨*°q©.Ñ9Ô9ˆØ�_Ð,Ð,ÝÐB°jÐBÐBÑCÔCÐCð ˜ÒÐ °Ò 4Ð 4Ø×%Ò%Ñ'Ô'Ð'åÔ/°
¸MÑJÔJˆ	à˜ÒÐØ )Ð*=Ô >ÐÝ˜TÔ-×8Ò8¸À9Ô9MÑNÔNÑOÔOˆFØˆOØ!Ð$5Ò5Ð5Ý)/¬°u¸f¿kºkÈ!¹n¼nÑ)MÔ)MÑ&�˜hØ Ÿ+š+ l°QÑ&6Ñ7Ô7�Ø”×&Ò&¥wÔ'BÀ8ÈWÑ'UÔ'UÑVÔVÐVØ <°!Ñ#3Ñ3�ð	 "Ð$5Ò5Ð5ð
 .2¬_ÐF�4”?×&Ò& qÑ)Ô)Ð)À$ÐFàÐrC   c                 óX   — | j         �| j         }d| _         |S |                      ¦   «         S )zgRead message.

        Returns:
            mysqlx.protobuf.Message: MySQL X Protobuf Message.
        N)rc   rt   ©r@   Úmsgs     rA   Úread_messagezMessageReader.read_messageá   s1   € ð Œ9Ð Ø”)ˆCØˆDŒIØˆJØ×!Ò!Ñ#Ô#Ð#rC   r�   c                 ó@   — | j         �t          d¦  «        ‚|| _         dS )zÇPush message.

        Args:
            msg (mysqlx.protobuf.Message): MySQL X Protobuf Message.

        Raises:
            :class:`mysqlx.OperationalError`: If message push slot is full.
        NzMessage push slot is full)rc   r   r€   s     rA   Úpush_messagezMessageReader.push_messageí   s&   € ð Œ9Ð Ý"Ð#>Ñ?Ô?Ð?ØˆŒ	ˆ	ˆ	rC   r1   c                 ó6   — |rt          |¦  «        nd| _        dS )zÏCreates a :class:`mysqlx.protocol.Compressor` object based on the
        compression algorithm.

        Args:
            algorithm (str): Compression algorithm.

        .. versionadded:: 8.0.21

        N©r0   rb   r?   s     rA   Úset_compressionzMessageReader.set_compressionú   s$   € ð 5>ÐG�: iÑ0Ô0Ð0À4ˆÔÐÐrC   )rU   rV   rW   rX   r,   rB   r(   rt   r‚   r„   rY   r‡   r[   rC   rA   r]   r]   £   sÃ   € € € € € ðð ð, jð ,°Tð ,ð ,ð ,ð ,ð-˜{ð -ð -ð -ð -ð^
$˜kð 
$ð 
$ð 
$ð 
$ð ð °ð ð ð ð ð
H¨ð 
H°ð 
Hð 
Hð 
Hð 
Hð 
Hð 
HrC   r]   c                   óF   — e Zd ZdZdeddfd„Zdededdfd„Zd	e	ddfd
„Z
dS )ÚMessageWriterzšImplements a Message Writer.

    Args:
        socket_stream (mysqlx.connection.SocketStream): `SocketStream` object.

    .. versionadded:: 8.0.21

    r^   r2   Nc                 ó"   — || _         d | _        d S r`   )ra   rb   re   s     rA   rB   zMessageWriter.__init__  s   € Ø#0ˆŒØ15ˆÔÐÐrC   r~   r�   c                 óâ  — |                      |¦  «        }| j        �rh|t          k    �r\t          |                     ¦   «         ¦  «        }t          j        d|dz   |¦  «        }| j                             d                     ||g¦  «        ¦  «        }t          d¦  «        }||d<   |dz   |d<   t          d¦  «        }||d<   d                     t          | 
                    ¦   «         ¦  «        d	d
…         t          | 
                    ¦   «         ¦  «        g¦  «        }	t          d¦  «        }
t          j        dt          |	¦  «        dz   |
¦  «        }| j                             d                     ||	g¦  «        ¦  «         d	S t          |                     ¦   «         ¦  «        }t          j        d|dz   |¦  «        }| j                             d                     ||g¦  «        ¦  «         d	S )z™Write message.

        Args:
            msg_type (int): The message type.
            msg (mysqlx.protobuf.Message): MySQL X Protobuf Message.
        rg   r
   rC   zMysqlx.Connection.CompressionÚclient_messagesrh   rl   rm   Néþÿÿÿz&Mysqlx.ClientMessages.Type.COMPRESSION)Ú	byte_sizerb   Ú_COMPRESSION_THRESHOLDr   Úserialize_to_stringrp   ÚpackrG   Újoinr   Úserialize_partial_to_stringr   Úlenra   Úsendall)r@   r~   r�   Úmsg_sizeÚmsg_strÚheaderrO   Úmsg_first_fieldsÚmsg_payloadÚoutputÚmsg_comp_ids              rA   Úwrite_messagezMessageWriter.write_message  sÑ  € ð —=’= Ñ%Ô%ˆØÔñ 	> Õ+AÒ AÑ AÝ% c×&=Ò&=Ñ&?Ô&?Ñ@Ô@ˆGÝ”[ ¨°1©°hÑ?Ô?ˆFØÔ)×2Ò2°3·8²8¸VÀWÐ<MÑ3NÔ3NÑOÔOˆJå&Ð'FÑGÔGÐØ2:ÐÐ.Ñ/Ø4<¸q±LÐÐ0Ñ1å!Ð"AÑBÔBˆKØ%/ˆK˜	Ñ"à—X’Xå#Ð$4×$PÒ$PÑ$RÔ$RÑSÔSØ˜˜ôõ $ K×$KÒ$KÑ$MÔ$MÑNÔNð	ñô ˆFõ (Ð(PÑQÔQˆKÝ”[ ­¨F©¬°a©¸ÑEÔEˆFØŒL× Ò  §¢¨6°6Ð*:Ñ!;Ô!;Ñ<Ô<Ð<Ð<Ð<å% c×&=Ò&=Ñ&?Ô&?Ñ@Ô@ˆGÝ”[ ¨°1©°hÑ?Ô?ˆFØŒL× Ò  §¢¨6°7Ð*;Ñ!<Ô!<Ñ=Ô=Ð=Ð=Ð=rC   r1   c                 ó6   — |rt          |¦  «        nd| _        dS )z¬Creates a :class:`mysqlx.protocol.Compressor` object based on the
        compression algorithm.

        Args:
            algorithm (str): Compression algorithm.
        Nr†   r?   s     rA   r‡   zMessageWriter.set_compression:  s$   € ð 5>ÐG�: iÑ0Ô0Ð0À4ˆÔÐÐrC   )rU   rV   rW   rX   r,   rB   Úintr(   r�   rY   r‡   r[   rC   rA   r‰   r‰     s”   € € € € € ðð ð6 jð 6°Tð 6ð 6ð 6ð 6ð#> cð #>°ð #>Àð #>ð #>ð #>ð #>ðJH¨ð H°ð Hð Hð Hð Hð Hð HrC   r‰   c                   óæ  — e Zd ZdZdededdfd„Zedee	         fd„¦   «         Z
eded	eddfd
„¦   «         Zdedee         fd„Z	 d6d	eeef         dedeed         eeeef                  f         fd„Zdededdfd„Zdedee         fd„Zde	ddfd„Zdefd„Zdeddfd„Z	 	 d7de	dee	         dee	         ddfd„Zdefd„Z de	ddfd„Z!d8d„Z"de	ded	ee#e$e%e&e'e(f         ddfd „Z)de	ded	eddfd!„Z*d"e+ddfd#„Z,de	ded	eeef         ddfd$„Z-de	deddfd%„Z.d	ee#e&f         de/e	ef         fd&„Z0d	ee%e(f         de/e	ef         fd'„Z1d	ee$e'f         de/e	ef         fd(„Z2	 d9d)e	d	ee	e3f         d*ee4e	ef                  de/e	ef         fd+„Z5ed	ee6e7f         de/e	ef         fd,„¦   «         Z8deddfd-„Z9dedee         fd.„Z:dedee;         fd/„Z<d8d0„Z=d8d1„Z>d8d2„Z?d8d3„Z@d9d4ee         defd5„ZAdS ):ÚProtocolzàImplements the MySQL X Protocol.

    Args:
        read (mysqlx.protocol.MessageReader): A Message Reader object.
        writer (mysqlx.protocol.MessageWriter): A Message Writer object.

    .. versionchanged:: 8.0.21
    ÚreaderÚwriterr2   Nc                 ó>   — || _         || _        d | _        g | _        d S r`   )Ú_readerÚ_writerÚ_compression_algorithmÚ	_warnings)r@   r¢   r£   s      rA   rB   zProtocol.__init__N  s#   € Ø&,ˆŒØ&,ˆŒØ59ˆÔ#Ø$&ˆŒˆˆrC   c                 ó   — | j         S )zstr: The compresion algorithm.)r§   )r@   s    rA   Úcompression_algorithmzProtocol.compression_algorithmT  s   € ð Ô*Ð*rC   r�   Ústmtc                 óR  — |j         r|                     ¦   «         | d<   |j        r-| d                              |                     ¦   «         ¦  «         |j        r-| d                              |                     ¦   «         ¦  «         |j        r|                     ¦   «         | d<   dS dS )z­Apply filter.

        Args:
            msg (mysqlx.protobuf.Message): The MySQL X Protobuf Message.
            stmt (Statement): A `Statement` based type object.
        ÚcriteriaÚorderÚgroupingÚgrouping_criteriaN)	Ú	has_whereÚget_where_exprÚhas_sortÚextendÚget_sort_exprÚhas_group_byÚget_groupingÚ
has_havingÚ
get_having)r�   r«   s     rA   Ú_apply_filterzProtocol._apply_filterY  s¯   € ð Œ>ð 	4Ø"×1Ò1Ñ3Ô3ˆC�
‰OØŒ=ð 	6Ø�ŒL×Ò × 2Ò 2Ñ 4Ô 4Ñ5Ô5Ð5ØÔð 	8Ø�
ŒO×"Ò" 4×#4Ò#4Ñ#6Ô#6Ñ7Ô7Ð7ØŒ?ð 	9Ø'+§¢Ñ'8Ô'8ˆCÐ#Ñ$Ð$Ð$ð	9ð 	9rC   Úargc           	      ó:  — t          |t          ¦  «        r5t          d|¬¦  «        }t          dd|¬¦  «        }t          dd|¬¦  «        S t          |t          ¦  «        rt          ddt	          |¦  «        ¬¦  «        S t          |t
          ¦  «        rD|d	k     rt          ddt          |¦  «        ¬¦  «        S t          ddt          |¦  «        ¬¦  «        S t          |t          ¦  «        rst          |¦  «        d
k    r`|\  }}t          d||  
                    |¦  «        ¬¦  «        }t          d|                     ¦   «         g¬¦  «        }t          dd
|¬¦  «        S t          |t          ¦  «        s7t          |t          t          f¦  «        rút          |d	         t          ¦  «        rßg }|D ]´}	g }
|	                     ¦   «         D ]Q\  }}t          d||  
                    |¦  «        ¬¦  «        }|
                     |                     ¦   «         ¦  «         ŒRt          d|
¬¦  «        }t          dd
|¬¦  «        }|                     |                     ¦   «         ¦  «         Œµt          d¦  «        }||d<   t          dd|¬¦  «        S t          |t          ¦  «        r{g }
|D ]Q\  }}t          d||  
                    |¦  «        ¬¦  «        }|
                     |                     ¦   «         ¦  «         ŒRt          d|
¬¦  «        }t          dd
|¬¦  «        }|S dS )z Create any.

        Args:
            arg (object): Arbitrary object.

        Returns:
            mysqlx.protobuf.Message: MySQL X Protobuf Message.
        zMysqlx.Datatypes.Scalar.String)ÚvaluezMysqlx.Datatypes.Scalaré   )ÚtypeÚv_stringúMysqlx.Datatypes.Anyr
   )r¿   Úscalarr   é   ú#Mysqlx.Datatypes.Object.ObjectField©Úkeyr½   úMysqlx.Datatypes.Object©Úfld©r¿   ÚobjzMysqlx.Datatypes.Arrayr½   é   )r¿   ÚarrayN)Ú
isinstancerY   r   Úboolr   rŸ   r   r   Útupler”   Ú_create_anyÚget_messageÚdictÚlistÚitemsrv   )r@   r»   r½   rÂ   Úarg_keyÚ	arg_valueÚobj_fldrË   Úarray_valuesrÕ   Úobj_fldsrÆ   Úmsg_objÚmsg_anyr�   s                  rA   rÑ   zProtocol._create_anyj  sv  € õ �c�3ÑÔð 	JÝÐ<ÀCÐHÑHÔHˆEÝÐ6¸QÈÐOÑOÔOˆFÝÐ1¸À&ÐIÑIÔIÐIÝ�c�4Ñ Ô ð 	ÝØ&¨QÕ7HÈÑ7MÔ7Mðñ ô ð õ �c�3ÑÔð 	Ø�QŠwˆwÝØ*ØÝ+¨CÑ0Ô0ðñ ô ð õ
 Ø&ØÝ0°Ñ5Ô5ðñ ô ð õ
 �c�5Ñ!Ô!ð 	D¥c¨#¡h¤h°!¢m mØ!$ÑˆG�YÝØ5ØØ×&Ò& yÑ1Ô1ðñ ô ˆGõ
 Ð3¸'×:MÒ:MÑ:OÔ:OÐ9PÐQÑQÔQˆCÝÐ1¸¸sÐCÑCÔCÐCÝ�c�4Ñ Ô ð 	FÝ�s�T¥5˜MÑ*Ô*ð	FÝ/9¸#¸a¼&Å$Ñ/GÔ/Gð	Fð ˆLØð ;ð ;�Ø�Ø"'§+¢+¡-¤-ð ;ð ;‘J�C˜å%Ø=ØØ"×.Ò.¨uÑ5Ô5ðñ ô �Gð
 —O’O G×$7Ò$7Ñ$9Ô$9Ñ:Ô:Ð:Ð:Ý!Ð";ÀÐJÑJÔJ�Ý!Ð"8¸qÀgÐNÑNÔN�Ø×#Ò# G×$7Ò$7Ñ$9Ô$9Ñ:Ô:Ð:Ð:åÐ2Ñ3Ô3ˆCØ'ˆC�‰LÝÐ1¸ÀÐEÑEÔEÐEÝ�c�4Ñ Ô ð 	ØˆHØ!ð 7ð 7‘
��UÝ!Ø9ØØ×*Ò*¨5Ñ1Ô1ðñ ô �ð
 —’ × 3Ò 3Ñ 5Ô 5Ñ6Ô6Ð6Ð6ÝÐ7¸XÐFÑFÔFˆGÝÐ4¸1À'ÐJÑJÔJˆGØˆNàˆtrC   TÚ	is_scalarc                 óÄ  ‡ ‡‡
— dt           dt          t          t          f         fˆˆ fd„Š
|                     ¦   «         }|                     ¦   «         }|€ˆ
fd„|D ¦   «         S t          |¦  «        }|dgz  }|t          |¦  «        k    rt          d¦  «        ‚|                     ¦   «         D ]1\  }}||vrt          d|› �¦  «        ‚||         }	 ‰
|¦  «        ||	<   Œ2|S )a›  Returns the binding any/scalar.

        Args:
            stmt (Statement): A `Statement` based type object.
            is_scalar (bool): `True` to return scalar values.

        Raises:
            :class:`mysqlx.ProgrammingError`: If unable to find placeholder for
                                              parameter.

        Returns:
            list: A list of ``Any`` or ``Scalar`` objects.
        r½   r2   c                 ó˜   •— ‰r!t          | ¦  «                             ¦   «         S ‰                     | ¦  «                             ¦   «         S r`   )r   rÒ   rÑ   )r½   rÝ   r@   s    €€rA   Úbuild_valuez/Protocol._get_binding_args.<locals>.build_valueÅ  sG   ø€ ð ð 9Ý# EÑ*Ô*×6Ò6Ñ8Ô8Ð8Ø×#Ò# EÑ*Ô*×6Ò6Ñ8Ô8Ð8rC   Nc                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r[   r[   )Ú.0r½   rà   s     €rA   ú
<listcomp>z.Protocol._get_binding_args.<locals>.<listcomp>Ñ  s#   ø€ Ð=Ð=Ð=¨5�K�K Ñ&Ô&Ð=Ð=Ð=rC   z;The number of bind parameters and placeholders do not matchz*Unable to find placeholder for parameter: )	r   r	   r*   r)   Úget_bindingsÚget_binding_mapr”   r   rÕ   )r@   r«   rÝ   ÚbindingsÚbinding_mapÚcountÚargsÚnamer½   Úposrà   s   ` `       @rA   Ú_get_binding_argszProtocol._get_binding_args´  s5  øøø€ ð"	9Ýð	9åÕ&Õ(?Ð?Ô@ð	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð ×$Ò$Ñ&Ô&ˆØ×*Ò*Ñ,Ô,ˆð ÐØ=Ð=Ð=Ð=°HÐ=Ñ=Ô=Ð=å�KÑ Ô ˆØ 4 &™.ˆØ•C˜‘M”MÒ!Ð!Ý"ØMñô ð ð $Ÿ>š>Ñ+Ô+ð 	+ð 	+‰KˆD�%Ø˜;Ð&Ð&Ý&ØGÀÐGÐGñô ð ð ˜dÔ#ˆCØ#˜ EÑ*Ô*ˆD�‰IˆIØˆrC   Úresultc                 ór  — |d         dk    r‚t          j        d|d         ¦  «        }| j                             |j        ¦  «         t          j        d|j        |j        ¦  «         |                     |j	        |j        |j        ¦  «         dS |d         dk    rt          j        d|d         ¦  «         dS |d         dk    rñt          j        d	|d         ¦  «        }|d
         t          d¦  «        k    r'|                     d„ |d         D ¦   «         ¦  «         dS |d                              ¦   «         }|d
         t          d¦  «        k    r%|                     t          |d¦  «        ¦  «         dS |d
         t          d¦  «        k    r'|                     t          |d¦  «        ¦  «         dS dS dS )z¨Process frame.

        Args:
            msg (mysqlx.protobuf.Message): A MySQL X Protobuf Message.
            result (Result): A `Result` based type object.
        r¿   r
   zMysqlx.Notice.Warningrm   z:Protocol.process_frame Received Warning Notice code %s: %srÃ   z$Mysqlx.Notice.SessionVariableChangedrÌ   z!Mysqlx.Notice.SessionStateChangedÚparamzBMysqlx.Notice.SessionStateChanged.Parameter.GENERATED_DOCUMENT_IDSc                 ón   — g | ]2}t          t          |d ¦  «        d¦  «                             ¦   «         ‘Œ3S )Úv_octetsr½   )r   Údecode)râ   r½   s     rA   rã   z+Protocol._process_frame.<locals>.<listcomp>ü  sL   € ð ð ð ð "õ )Ý,¨U°JÑ?Ô?Àñô ç š&™(œ(ðð ð rC   r½   z9Mysqlx.Notice.SessionStateChanged.Parameter.ROWS_AFFECTEDÚv_unsigned_intz?Mysqlx.Notice.SessionStateChanged.Parameter.GENERATED_INSERT_IDN)r   Úfrom_messager¨   rv   r�   r   ÚwarningÚcodeÚappend_warningÚlevelr   Úset_generated_idsro   Úset_rows_affectedr   Úset_generated_insert_id)r@   r�   rí   Úwarn_msgÚsess_state_msgÚsess_state_values         rA   Ú_process_framezProtocol._process_frameâ  s  € ð ˆvŒ;˜!ÒÐÝÔ+Ð,CÀSÈÄ^ÑTÔTˆHØŒN×!Ò! (¤,Ñ/Ô/Ð/ÝŒNØLØ”Ø”ñô ð ð
 ×!Ò! (¤.°(´-ÀÄÑNÔNÐNÐNÐNØ�Œ[˜AÒÐÝÔ Ð!GÈÈYÌÑXÔXÐXÐXÐXØ�Œ[˜AÒÐÝ$Ô1Ø3°S¸´^ñô ˆNð ˜gÔ&­-ØTñ+ô +ò ð ð ×(Ò(ðð ð &4°GÔ%<ð	ñ ô ñô ð ð ð ð $2°'Ô#:×#>Ò#>Ñ#@Ô#@Ð Ø! 'Ô*­mØOñ/ô /ò ð ð ×,Ò,Ý(Ð)9Ð;KÑLÔLñô ð ð ð ð $ GÔ,µØUñ1ô 1ò ð ð ×2Ò2Ý(Ð)9Ð;KÑLÔLñô ð ð ð ð5 Ðð.ð rC   c                 ó„  — 	 	 | j                              ¦   «         }nO# t          $ rB}t          |                     ¦   «         ¦  «        }|rt          |› d|› �¦  «        |‚Y d}~nd}~ww xY w|j        dk    rt          |d         |d         ¦  «        ‚|j        dk    r/	 |                      ||¦  «         nˆ# t          t          f$ r Y ŒÈw xY w|j        dk    rdS |j        d	k    r| 
                    d¦  «         nC|j        d
k    r|                     d¦  «         n"|j        dk    r|                     d¦  «         nn�Œ>|S )z`Read message.

        Args:
            result (Result): A `Result` based type object.
        Tz	 reason: NúMysqlx.Errorr�   rö   úMysqlx.Notice.FramezMysqlx.Sql.StmtExecuteOkzMysqlx.Resultset.FetchDonez(Mysqlx.Resultset.FetchDoneMoreResultsetsúMysqlx.Resultset.Row)r¥   r‚   ÚRuntimeErrorÚreprÚget_warningsr¿   r   rÿ   ÚAttributeErrorÚKeyErrorÚ
set_closedÚset_has_more_resultsÚset_has_data)r@   rí   r�   ÚerrÚwarningss        rA   rt   zProtocol._read_message  s¬  € ð	ðMØ”l×/Ò/Ñ1Ô1��øÝð Mð Mð MÝ × 3Ò 3Ñ 5Ô 5Ñ6Ô6�Øð MÝ&¨#Ð'BÐ'B¸Ð'BÐ'BÑCÔCÈÐLðMð Mð Mð Mð MøøøøðMøøøð Œx˜>Ò)Ð)Ý& s¨5¤z°3°v´;Ñ?Ô?Ð?ØŒxÐ0Ò0Ð0ðØ×'Ò'¨¨VÑ4Ô4Ð4Ð4øÝ&­Ð1ð ð ð Ø�Hðøøøà”Ð7Ò7Ð7Ø�tØ”Ð9Ò9Ð9Ø×!Ò! $Ñ'Ô'Ð'Ð'Ø”ÐGÒGÐGØ×+Ò+¨DÑ1Ô1Ð1Ð1Ø”Ð3Ò3Ð3Ø×#Ò# DÑ)Ô)Ð)Øàñ1	ð2 ˆ
s&   ƒ �
A)§8A$Á$A)ÂB6 Â6C
Ã	C
r1   c                 ó|   — || _         | j                             |¦  «         | j                             |¦  «         dS )zðSets the compression algorithm to be used by the compression
        object, for uplink and downlink.

        Args:
            algorithm (str): Algorithm to be used in compression/decompression.

        .. versionadded:: 8.0.21

        N)r§   r¥   r‡   r¦   r?   s     rA   r‡   zProtocol.set_compression3  s>   € ð '0ˆÔ#ØŒ×$Ò$ YÑ/Ô/Ð/ØŒ×$Ò$ YÑ/Ô/Ð/Ð/Ð/rC   c                 óR  — t          d¦  «        }| j                             t          d¦  «        |¦  «         | j                             ¦   «         }|j        dk    r$| j                             ¦   «         }|j        dk    °$|j        dk    rt          |d         |d         ¦  «        ‚|S )zkGet capabilities.

        Returns:
            mysqlx.protobuf.Message: MySQL X Protobuf Message.
        z!Mysqlx.Connection.CapabilitiesGetz/Mysqlx.ClientMessages.Type.CON_CAPABILITIES_GETr  r  r�   rö   )r   r¦   r�   r   r¥   r‚   r¿   r   r€   s     rA   Úget_capabiliteszProtocol.get_capabilitesA  s­   € õ Ð9Ñ:Ô:ˆØŒ×"Ò"ÝÐKÑLÔLØñ	
ô 	
ð 	
ð Œl×'Ò'Ñ)Ô)ˆØŒhÐ/Ò/Ð/Ø”,×+Ò+Ñ-Ô-ˆCð ŒhÐ/Ò/Ð/ð Œ8�~Ò%Ð%Ý" 3 u¤:¨s°6¬{Ñ;Ô;Ð;àˆ
rC   Úkwargsc           
      óV  — |sdS t          d¦  «        }|                     ¦   «         D �]\  }}t          d¦  «        }||d<   t          |t          ¦  «        r–|}g }|D ]T}t          d||                      ||         ¦  «        ¬¦  «        }	|                     |	                     ¦   «         ¦  «         ŒUt          d|¬¦  «        }
t          d	d
|
¬¦  «        }|                     ¦   «         |d<   n|                      |¦  «        |d<   |d                              |                     ¦   «         g¦  «         �Œt          d¦  «        }||d<   | j         	                    t          d¦  «        |¦  «         	 |                      ¦   «         S # t          $ r}|j        dk    r‚ Y d}~nd}~ww xY wdS )z­Set capabilities.

        Args:
            **kwargs: Arbitrary keyword arguments.

        Returns:
            mysqlx.protobuf.Message: MySQL X Protobuf Message.
        NzMysqlx.Connection.CapabilitieszMysqlx.Connection.Capabilityrê   rÄ   rÅ   rÇ   rÈ   rÁ   rÃ   rÊ   r½   Úcapabilitiesz!Mysqlx.Connection.CapabilitiesSetz/Mysqlx.ClientMessages.Type.CON_CAPABILITIES_SETiŠ  )r   rÕ   rÎ   rÓ   rÑ   rv   rÒ   r´   r¦   r�   r   Úread_okr   Úerrno)r@   r  r  rÆ   r½   Ú
capabilityrÕ   rÚ   ÚitemrØ   rÛ   rÜ   r�   r  s                 rA   Úset_capabilitieszProtocol.set_capabilitiesU  sò  € ð ð 	Ø�4ÝÐ?Ñ@Ô@ˆØ Ÿ,š,™.œ.ð 	Lñ 	L‰JˆC�Ý Ð!?Ñ@Ô@ˆJØ!$ˆJ�vÑÝ˜%¥Ñ&Ô&ð >Ø�Ø�Ø!ð ;ð ;�DÝ%Ø=Ø Ø"×.Ò.¨u°T¬{Ñ;Ô;ðñ ô �Gð
 —O’O G×$7Ò$7Ñ$9Ô$9Ñ:Ô:Ð:Ð:Ý!Ð";ÀÐJÑJÔJ�Ý!Ð"8¸qÀgÐNÑNÔN�Ø&-×&9Ò&9Ñ&;Ô&;�
˜7Ñ#Ð#à&*×&6Ò&6°uÑ&=Ô&=�
˜7Ñ#à˜Ô(×/Ò/°×1GÒ1GÑ1IÔ1IÐ0JÑKÔKÐKÑKÝÐ9Ñ:Ô:ˆØ*ˆˆNÑØŒ×"Ò"ÝÐKÑLÔLØñ	
ô 	
ð 	
ð
	Ø—<’<‘>”>Ð!øÝð 	ð 	ð 	ð Œy˜DÒ Ð Øð !Ð Ð Ð Ð øøøøð	øøøð
 ˆts   Å2F Æ
F&ÆF!Æ!F&ÚmethodÚ	auth_dataÚinitial_responsec                 óš   — t          d¦  «        }||d<   |�||d<   |�||d<   | j                             t          d¦  «        |¦  «         dS )zÖSend authenticate start.

        Args:
            method (str): Message method.
            auth_data (Optional[str]): Authentication data.
            initial_response (Optional[str]): Initial response.
        z Mysqlx.Session.AuthenticateStartÚ	mech_nameNr  r  z2Mysqlx.ClientMessages.Type.SESS_AUTHENTICATE_START©r   r¦   r�   r   )r@   r  r  r  r�   s        rA   Úsend_auth_startzProtocol.send_auth_start…  sp   € õ Ð8Ñ9Ô9ˆØ!ˆˆKÑØÐ Ø(ˆC�ÑØÐ'Ø&6ˆCÐ"Ñ#ØŒ×"Ò"ÝÐNÑOÔOØñ	
ô 	
ð 	
ð 	
ð 	
rC   c                 óÖ   — | j                              ¦   «         }|j        dk    r$| j                              ¦   «         }|j        dk    °$|j        dk    rt          d¦  «        ‚|d         S )züRead authenticate continue.

        Raises:
            :class:`InterfaceError`: If the message type is not
                                     `Mysqlx.Session.AuthenticateContinue`

        Returns:
            str: The authentication data.
        r  ú#Mysqlx.Session.AuthenticateContinuez>Unexpected message encountered during authentication handshaker  ©r¥   r‚   r¿   r   r€   s     rA   Úread_auth_continuezProtocol.read_auth_continue�  sx   € ð Œl×'Ò'Ñ)Ô)ˆØŒhÐ/Ò/Ð/Ø”,×+Ò+Ñ-Ô-ˆCð ŒhÐ/Ò/Ð/àŒ8Ð<Ò<Ð<Ý ØPñô ð ð �;ÔÐrC   c                 óx   — t          d|¬¦  «        }| j                             t          d¦  «        |¦  «         dS )zeSend authenticate continue.

        Args:
            auth_data (str): Authentication data.
        r!  )r  z5Mysqlx.ClientMessages.Type.SESS_AUTHENTICATE_CONTINUENr  )r@   r  r�   s      rA   Úsend_auth_continuezProtocol.send_auth_continue°  sJ   € õ Ð;ÀyÐQÑQÔQˆØŒ×"Ò"ÝÐQÑRÔRØñ	
ô 	
ð 	
ð 	
ð 	
rC   c                 ó�   — 	 | j                              ¦   «         }|j        dk    rdS |j        dk    rt          |j        ¦  «        ‚ŒF)z~Read authenticate OK.

        Raises:
            :class:`mysqlx.InterfaceError`: If message type is `Mysqlx.Error`.
        TzMysqlx.Session.AuthenticateOkr  N)r¥   r‚   r¿   r   r�   r€   s     rA   Úread_auth_okzProtocol.read_auth_ok¼  sO   € ð	.Ø”,×+Ò+Ñ-Ô-ˆCØŒxÐ:Ò:Ð:Ø�ØŒx˜>Ò)Ð)Ý$ S¤WÑ-Ô-Ð-ð	.rC   r~   c                 óv  — |j         �r|j        dk    rú|j        dk    r|                      |¦  «        \  }}nZ|j        dk    r|                      |¦  «        \  }}n6|j        dk    r|                      |¦  «        \  }}nt          d|› �¦  «        ‚t          |                     ¦   «         ¦  «        }t          d¦  «        }t          d¦  «        }t          d||¬	¦  «        |d
<   |j        dk    rt          d||dz   ¬	¦  «        |d<   ||d<   t          |         \  }}	t          d¦  «        }
t          |¦  «        |
d<   ||
|	<   t          d¦  «        }|j        |d<   |
|d<   | j                             t          d¦  «        |¦  «         	 |                      ¦   «          dS # t          $ r}t           |‚d}~ww xY w)a¦  
        Send prepare statement.

        Args:
            msg_type (str): Message ID string.
            msg (mysqlx.protobuf.Message): MySQL X Protobuf Message.
            stmt (Statement): A `Statement` based type object.

        Raises:
            :class:`mysqlx.NotSupportedError`: If prepared statements are not
                                               supported.

        .. versionadded:: 8.0.16
        úMysqlx.Crud.InsertúMysqlx.Crud.FindúMysqlx.Crud.UpdateúMysqlx.Crud.DeletezInvalid message type: z!Mysqlx.Expr.Expr.Type.PLACEHOLDERzMysqlx.Crud.LimitExprzMysqlx.Expr.Expr)r¿   ÚpositionÚ	row_countr
   ÚoffsetÚ
limit_exprú#Mysqlx.Prepare.Prepare.OneOfMessager¿   zMysqlx.Prepare.PrepareÚstmt_idr«   z*Mysqlx.ClientMessages.Type.PREPARE_PREPAREN)Ú	has_limitr¿   Ú
build_findÚbuild_updateÚbuild_deleters   r”   rä   r   r   r   r2  r¦   r�   r  r   r   )r@   r~   r�   r«   Ú_r-  ÚplaceholderÚmsg_limit_exprÚ
oneof_typeÚoneof_opÚ	msg_oneofÚmsg_preparer  s                rA   Úsend_prepare_preparezProtocol.send_prepare_prepareÉ  sý  € ð6 Œ>ñ 	/˜cœhÐ*>Ò>Ð>àŒxÐ-Ò-Ð-ØŸš¨Ñ.Ô.‘��3�3Ø”Ð1Ò1Ð1Ø×*Ò*¨4Ñ0Ô0‘��3�3Ø”Ð1Ò1Ð1Ø×*Ò*¨4Ñ0Ô0‘��3�3å Ð!D¸(Ð!DÐ!DÑEÔEÐEå˜4×,Ò,Ñ.Ô.Ñ/Ô/ˆHÝ'Ð(KÑLÔLˆKÝ$Ð%<Ñ=Ô=ˆNÝ*1Ø"¨¸xð+ñ +ô +ˆN˜;Ñ'ð ŒxÐ-Ò-Ð-Ý+2Ø&¨[À8ÈaÁ<ð,ñ ,ô ,�˜xÑ(ð !/ˆC�Ñå3°HÔ=Ñˆ
�HÝÐAÑBÔBˆ	Ý)¨*Ñ5Ô5ˆ	�&ÑØ!ˆ	�(ÑÝÐ6Ñ7Ô7ˆØ!%¤ˆ�IÑØ'ˆ�FÑàŒ×"Ò"ÝÐFÑGÔGØñ	
ô 	
ð 	
ð
	-Ø�LŠL‰NŒNˆNˆNˆNøÝð 	-ð 	-ð 	-Ý#¨Ð,øøøøð	-øøøs   ÆF! Æ!
F8Æ+F3Æ3F8c                 ó€  — t           |         \  }}t          d¦  «        }t          |¦  «        |d<   |||<   t          d¦  «        }|j        |d<   |                      |d¬¦  «        }|r|d                              |¦  «         |j        r‹|d                              |                      |                     ¦   «         ¦  «         	                    ¦   «         |                      | 
                    ¦   «         ¦  «         	                    ¦   «         g¦  «         | j                             t          d¦  «        |¦  «         d	S )
a  
        Send execute statement.

        Args:
            msg_type (str): Message ID string.
            msg (mysqlx.protobuf.Message): MySQL X Protobuf Message.
            stmt (Statement): A `Statement` based type object.

        .. versionadded:: 8.0.16
        r1  r¿   zMysqlx.Prepare.Executer2  F©rÝ   ré   z*Mysqlx.ClientMessages.Type.PREPARE_EXECUTEN)r   r   r   r2  rì   r´   r3  rÑ   Úget_limit_row_countrÒ   Úget_limit_offsetr¦   r�   )	r@   r~   r�   r«   r:  r;  r<  Úmsg_executeré   s	            rA   Úsend_prepare_executezProtocol.send_prepare_execute  sC  € õ  4°HÔ=Ñˆ
�HÝÐAÑBÔBˆ	Ý)¨*Ñ5Ô5ˆ	�&ÑØ!ˆ	�(ÑÝÐ6Ñ7Ô7ˆØ!%¤ˆ�IÑà×%Ò% d°eÐ%Ñ<Ô<ˆØð 	-Ø˜Ô×&Ò& tÑ,Ô,Ð,àŒ>ð 	Ø˜Ô×&Ò&à×$Ò$ T×%=Ò%=Ñ%?Ô%?Ñ@Ô@×LÒLÑNÔNØ×$Ò$ T×%:Ò%:Ñ%<Ô%<Ñ=Ô=×IÒIÑKÔKðñô ð ð 	Œ×"Ò"ÝÐFÑGÔGØñ	
ô 	
ð 	
ð 	
ð 	
rC   r2  c                 ó¦   — t          d¦  «        }||d<   | j                             t          d¦  «        |¦  «         |                      ¦   «          dS )zŽ
        Send prepare deallocate statement.

        Args:
            stmt_id (int): Statement ID.

        .. versionadded:: 8.0.16
        zMysqlx.Prepare.Deallocater2  z-Mysqlx.ClientMessages.Type.PREPARE_DEALLOCATEN)r   r¦   r�   r   r  )r@   r2  Úmsg_deallocs      rA   Úsend_prepare_deallocatez Protocol.send_prepare_deallocate2  sX   € õ Ð9Ñ:Ô:ˆØ!(ˆ�IÑØŒ×"Ò"ÝÐIÑJÔJØñ	
ô 	
ð 	
ð 	�Š‰ŒˆˆˆrC   c                 óN  — |j         rMt          d¦  «        }|                     ¦   «         |d<   |j        dk    r|                     ¦   «         |d<   ||d<   |dk    }|                      ||¬¦  «        }|r|d                              |¦  «         |                      ||¦  «         d	S )
a)  
        Send a message without prepared statements support.

        Args:
            msg_type (str): Message ID string.
            msg (mysqlx.protobuf.Message): MySQL X Protobuf Message.
            stmt (Statement): A `Statement` based type object.

        .. versionadded:: 8.0.16
        zMysqlx.Crud.Limitr.  r*  r/  Úlimitú+Mysqlx.ClientMessages.Type.SQL_STMT_EXECUTEr@  ré   N)r3  r   rA  r¿   rB  rì   r´   Úsend_msg)r@   r~   r�   r«   Ú	msg_limitrÝ   ré   s          rA   Úsend_msg_without_pszProtocol.send_msg_without_psC  s¼   € ð  Œ>ð 	%ÝÐ 3Ñ4Ô4ˆIØ%)×%=Ò%=Ñ%?Ô%?ˆI�kÑ"ØŒxÐ-Ò-Ð-Ø&*×&;Ò&;Ñ&=Ô&=�	˜(Ñ#Ø$ˆC�‰LØÐ MÒMˆ	Ø×%Ò% d°iÐ%Ñ@Ô@ˆØð 	%Ø�ŒK×Ò˜tÑ$Ô$Ð$Ø�Š�h Ñ$Ô$Ð$Ð$Ð$rC   c                 óV   — | j                              t          |¦  «        |¦  «         dS )zÆ
        Send a message.

        Args:
            msg_type (str): Message ID string.
            msg (mysqlx.protobuf.Message): MySQL X Protobuf Message.

        .. versionadded:: 8.0.16
        N)r¦   r�   r   )r@   r~   r�   s      rA   rK  zProtocol.send_msg_  s*   € ð 	Œ×"Ò"¥=°Ñ#:Ô#:¸CÑ@Ô@Ð@Ð@Ð@rC   c                 ó  — t          |                     ¦   «         rdnd¦  «        }t          d|j        j        |j        j        ¬¦  «        }t          d||¬¦  «        }|j        r|                     ¦   «         |d<   |                      ||¦  «         | 	                    ¦   «         rt          d¦  «        |d	<   n&| 
                    ¦   «         rt          d
¦  «        |d	<   |j        j        dk    r|j        j        |d<   d|fS )a‹  Build find/read message.

        Args:
            stmt (Statement): A :class:`mysqlx.ReadStatement` or
                              :class:`mysqlx.FindStatement` object.

        Returns:
            (tuple): Tuple containing:

                * `str`: Message ID string.
                * :class:`mysqlx.protobuf.Message`: MySQL X Protobuf Message.

        .. versionadded:: 8.0.16
        úMysqlx.Crud.DataModel.DOCUMENTúMysqlx.Crud.DataModel.TABLEúMysqlx.Crud.Collection©rê   Úschemar*  ©Ú
data_modelÚ
collectionÚ
projectionz'Mysqlx.Crud.Find.RowLock.EXCLUSIVE_LOCKÚlockingz$Mysqlx.Crud.Find.RowLock.SHARED_LOCKr   Úlocking_optionsz$Mysqlx.ClientMessages.Type.CRUD_FIND)r   Úis_doc_basedr   Útargetrê   rT  Úhas_projectionÚget_projection_exprrº   Úis_lock_exclusiveÚis_lock_sharedÚlock_contentionr½   ©r@   r«   rV  rW  r�   s        rA   r4  zProtocol.build_findk  s$  € õ" #à× Ò Ñ"Ô"ð/Ð,Ð,à.ñ
ô 
ˆ
õ
 Ø$Ø”Ô!Ø”;Ô#ð
ñ 
ô 
ˆ
õ
 Ð(°ZÈJÐWÑWÔWˆØÔð 	;Ø $× 8Ò 8Ñ :Ô :ˆC�ÑØ×Ò˜3 Ñ%Ô%Ð%à×!Ò!Ñ#Ô#ð 	SÝ*Ð+TÑUÔUˆC�	‰NˆNØ× Ò Ñ"Ô"ð 	SÝ*Ð+QÑRÔRˆC�	‰NàÔÔ%¨Ò)Ð)Ø%)Ô%9Ô%?ˆCÐ!Ñ"à5°sÐ:Ð:rC   c                 ó&  — t          |                     ¦   «         rdnd¦  «        }t          d|j        j        |j        j        ¬¦  «        }t          d||¬¦  «        }|                      ||¦  «         |                     ¦   «                              ¦   «         D ]t\  }}t          d¦  «        }|j	        |d<   |j
        |d	<   |j        �t          |j        ¦  «        |d<   |d                              |                     ¦   «         g¦  «         Œud|fS )aŒ  Build update message.

        Args:
            stmt (Statement): A :class:`mysqlx.ModifyStatement` or
                              :class:`mysqlx.UpdateStatement` object.

        Returns:
            (tuple): Tuple containing:

                * `str`: Message ID string.
                * :class:`mysqlx.protobuf.Message`: MySQL X Protobuf Message.

        .. versionadded:: 8.0.16
        rP  rQ  rR  rS  r+  rU  zMysqlx.Crud.UpdateOperationÚ	operationÚsourceNr½   z&Mysqlx.ClientMessages.Type.CRUD_UPDATE)r   r[  r   r\  rê   rT  rº   Úget_update_opsrÕ   Úupdate_typere  r½   r   r´   rÒ   )r@   r«   rV  rW  r�   r7  Ú	update_oprd  s           rA   r5  zProtocol.build_update•  s3  € õ" #à× Ò Ñ"Ô"ð/Ð,Ð,à.ñ
ô 
ˆ
õ
 Ø$Ø”Ô!Ø”;Ô#ð
ñ 
ô 
ˆ
õ
 Ø ¨ZÀJð
ñ 
ô 
ˆð 	×Ò˜3 Ñ%Ô%Ð%Ø ×/Ò/Ñ1Ô1×7Ò7Ñ9Ô9ð 	?ð 	?‰LˆAˆyÝÐ =Ñ>Ô>ˆIØ%.Ô%:ˆI�kÑ"Ø"+Ô"2ˆI�hÑØŒÐ*Ý%/°	´Ñ%@Ô%@�	˜'Ñ"Ø�Ô×#Ò# Y×%:Ò%:Ñ%<Ô%<Ð$=Ñ>Ô>Ð>Ð>à7¸Ð<Ð<rC   c                 óð   — t          |                     ¦   «         rdnd¦  «        }t          d|j        j        |j        j        ¬¦  «        }t          d||¬¦  «        }|                      ||¦  «         d|fS )aŒ  Build delete message.

        Args:
            stmt (Statement): A :class:`mysqlx.DeleteStatement` or
                              :class:`mysqlx.RemoveStatement` object.

        Returns:
            (tuple): Tuple containing:

                * `str`: Message ID string.
                * :class:`mysqlx.protobuf.Message`: MySQL X Protobuf Message.

        .. versionadded:: 8.0.16
        rP  rQ  rR  rS  r,  rU  z&Mysqlx.ClientMessages.Type.CRUD_DELETE)r   r[  r   r\  rê   rT  rº   rb  s        rA   r6  zProtocol.build_delete¾  s™   € õ" #à× Ò Ñ"Ô"ð/Ð,Ð,à.ñ
ô 
ˆ
õ
 Ø$Ø”Ô!Ø”;Ô#ð
ñ 
ô 
ˆ
õ
 Ø ¨ZÀJð
ñ 
ô 
ˆð 	×Ò˜3 Ñ%Ô%Ð%Ø7¸Ð<Ð<rC   Ú	namespaceÚfieldsc                 óz  — t          d||d¬¦  «        }|r£g }|                     ¦   «         D ]Q\  }}t          d||                      |¦  «        ¬¦  «        }|                     |                     ¦   «         ¦  «         ŒRt          d|¬¦  «        }	t          dd	|	¬
¦  «        }
|
                     ¦   «         g|d<   d|fS )aª  Build execute statement.

        Args:
            namespace (str): The namespace.
            stmt (Statement): A `Statement` based type object.
            fields (Optional[dict]): The message fields.

        Returns:
            (tuple): Tuple containing:

                * `str`: Message ID string.
                * :class:`mysqlx.protobuf.Message`: MySQL X Protobuf Message.

        .. versionadded:: 8.0.16
        zMysqlx.Sql.StmtExecuteF)rj  r«   Úcompact_metadatarÄ   rÅ   rÇ   rÈ   rÁ   rÃ   rÊ   ré   rJ  )r   rÕ   rÑ   rv   rÒ   )r@   rj  r«   rk  r�   rÚ   rÆ   r½   rØ   rÛ   rÜ   s              rA   Úbuild_execute_statementz Protocol.build_execute_statementß  sç   € õ* Ø$ØØØ"ð	
ñ 
ô 
ˆð ð 	2ØˆHØ$Ÿlšl™nœnð 7ð 7‘
��UÝ!Ø9ØØ×*Ò*¨5Ñ1Ô1ðñ ô �ð
 —’ × 3Ò 3Ñ 5Ô 5Ñ6Ô6Ð6Ð6ÝÐ7¸XÐFÑFÔFˆGÝÐ4¸1À'ÐJÑJÔJˆGØ"×.Ò.Ñ0Ô0Ð1ˆC�‰KØ<¸cÐAÐArC   c                 óÖ  — t          |                      ¦   «         rdnd¦  «        }t          d| j        j        | j        j        ¬¦  «        }t          d||¬¦  «        }t          | d¦  «        rm| j        D ]e}t          ||                      ¦   «          ¦  «         	                    ¦   «         }|d          
                    |                     ¦   «         g¦  «         Œf|                      ¦   «         D ]Ð}t          d	¦  «        }t          |t          ¦  «        rA|D ]=}|d
          
                    t          |¦  «                             ¦   «         g¦  «         Œ>n;|d
          
                    t          |¦  «                             ¦   «         g¦  «         |d          
                    |                     ¦   «         g¦  «         ŒÑt          | d¦  «        r|                      ¦   «         |d<   d|fS )a‹  Build insert statement.

        Args:
            stmt (Statement): A :class:`mysqlx.AddStatement` or
                              :class:`mysqlx.InsertStatement` object.

        Returns:
            (tuple): Tuple containing:

                * `str`: Message ID string.
                * :class:`mysqlx.protobuf.Message`: MySQL X Protobuf Message.

        .. versionadded:: 8.0.16
        rP  rQ  rR  rS  r)  rU  Ú_fieldsrX  zMysqlx.Crud.Insert.TypedRowÚfieldÚrowÚ	is_upsertÚupsertz&Mysqlx.ClientMessages.Type.CRUD_INSERT)r   r[  r   r\  rê   rT  Úhasattrrp  r   Úparse_table_insert_fieldr´   rÒ   Ú
get_valuesrÎ   rÔ   r   rs  )	r«   rV  rW  r�   rq  Úexprr½   rr  Úvals	            rA   Úbuild_insertzProtocol.build_insert	  s  € õ$ #à× Ò Ñ"Ô"ð/Ð,Ð,à.ñ
ô 
ˆ
õ
 Ø$Ø”Ô!Ø”;Ô#ð
ñ 
ô 
ˆ
õ
 Ø ¨ZÀJð
ñ 
ô 
ˆõ �4˜Ñ#Ô#ð 	?Øœð ?ð ?�Ý!Ø˜t×0Ò0Ñ2Ô2Ð2ñô ç*Ò*Ñ,Ô,ð ð �LÔ!×(Ò(¨$×*:Ò*:Ñ*<Ô*<Ð)=Ñ>Ô>Ð>Ð>à—_’_Ñ&Ô&ð 	3ð 	3ˆEÝÐ7Ñ8Ô8ˆCÝ˜%¥Ñ&Ô&ð GØ ð Ið I�CØ˜”L×'Ò'­°C©¬×)DÒ)DÑ)FÔ)FÐ(GÑHÔHÐHÐHðIð �G”×#Ò#¥Z°Ñ%6Ô%6×%BÒ%BÑ%DÔ%DÐ$EÑFÔFÐFØ�ŒJ×Ò˜sŸšÑ0Ô0Ð1Ñ2Ô2Ð2Ð2å�4˜Ñ%Ô%ð 	-Ø ŸNšNÑ,Ô,ˆC�‰Mà7¸Ð<Ð<rC   c                 óR   — |                       |¦  «        }|�t          d¦  «        ‚dS )z¼Close the result.

        Args:
            result (Result): A `Result` based type object.

        Raises:
            :class:`mysqlx.OperationalError`: If message read is None.
        NzExpected to close the result)rt   r   ©r@   rí   r�   s      rA   Úclose_resultzProtocol.close_result>  s2   € ð × Ò  Ñ(Ô(ˆØˆ?Ý"Ð#AÑBÔBÐBð ˆ?rC   c                 ó†   — |                       |¦  «        }|€dS |j        dk    r|S | j                             |¦  «         dS )z\Read row.

        Args:
            result (Result): A `Result` based type object.
        Nr  )rt   r¿   r¥   r„   r|  s      rA   Úread_rowzProtocol.read_rowK  sO   € ð × Ò  Ñ(Ô(ˆØˆ;Ø�4ØŒ8Ð-Ò-Ð-ØˆJØŒ×!Ò! #Ñ&Ô&Ð&ØˆtrC   c                 ó8  — g }	 |                       |¦  «        }|€nþ|j        dk    r| j                             |¦  «         nØ|j        dk    rt	          d¦  «        ‚t          |d         |d         |d         |d	         |d
         |d         |d         |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |                     d¦  «        ¦  «        }|                     |¦  «         �Œ|S )z¿Returns column metadata.

        Args:
            result (Result): A `Result` based type object.

        Raises:
            :class:`mysqlx.InterfaceError`: If unexpected message.
        TNr  zMysqlx.Resultset.ColumnMetaDatazUnexpected msg typer¿   ÚcatalogrT  ÚtableÚoriginal_tablerê   Úoriginal_nameÚlengthé   Ú	collationr   Úfractional_digitsÚflagsé   Úcontent_type)rt   r¿   r¥   r„   r   r   Úgetrv   )r@   rí   Úcolumnsr�   Úcols        rA   Úget_column_metadatazProtocol.get_column_metadataY  s$  € ð ˆð	 Ø×$Ò$ VÑ,Ô,ˆCØˆ{ØØŒxÐ1Ò1Ð1Ø”×)Ò)¨#Ñ.Ô.Ð.ØØŒxÐ<Ò<Ð<Ý$Ð%:Ñ;Ô;Ð;ÝØ�F”Ø�I”Ø�H”Ø�G”ØÐ$Ô%Ø�F”Ø�OÔ$Ø—’˜ "Ñ%Ô%Ø—’˜ QÑ'Ô'Ø—’Ð+¨QÑ/Ô/Ø—’˜ Ñ$Ô$Ø—’˜Ñ'Ô'ñô ˆCð �NŠN˜3ÑÔÐñ/	 ð0 ˆrC   c                 óÂ   — | j                              ¦   «         }|j        dk    r t          d|d         › �|d         ¬¦  «        ‚|j        dk    rt          d¦  «        ‚dS )	zeRead OK.

        Raises:
            :class:`mysqlx.InterfaceError`: If unexpected message.
        r  zMysqlx.Error: r�   rö   )r  z	Mysqlx.OkzUnexpected message encounteredNr"  r€   s     rA   r  zProtocol.read_ok}  sl   € ð Œl×'Ò'Ñ)Ô)ˆØŒ8�~Ò%Ð%Ý Ð!>°#°e´*Ð!>Ð!>ÀcÈ&ÄkÐRÑRÔRÐRØŒ8�{Ò"Ð"Ý Ð!AÑBÔBÐBð #Ð"rC   c                 ót   — t          d¦  «        }| j                             t          d¦  «        |¦  «         dS )zSend connection close.zMysqlx.Connection.Closez$Mysqlx.ClientMessages.Type.CON_CLOSENr  r€   s     rA   Úsend_connection_closezProtocol.send_connection_close‰  sB   € åÐ/Ñ0Ô0ˆØŒ×"Ò"ÝÐ@ÑAÔAÀ3ñ	
ô 	
ð 	
ð 	
ð 	
rC   c                 ót   — t          d¦  «        }| j                             t          d¦  «        |¦  «         dS )zSend close.zMysqlx.Session.Closez%Mysqlx.ClientMessages.Type.SESS_CLOSENr  r€   s     rA   Ú
send_closezProtocol.send_close�  sB   € åÐ,Ñ-Ô-ˆØŒ×"Ò"ÝÐAÑBÔBÀCñ	
ô 	
ð 	
ð 	
ð 	
rC   c                 óô   — t          d¦  «        }t          d¦  «        }||d<   d|d<   t          d¦  «        }|                     ¦   «         g|d<   | j                             t          d¦  «        |¦  «         d	S )
zSend expectation.z3Mysqlx.Expect.Open.Condition.Key.EXPECT_FIELD_EXISTzMysqlx.Expect.Open.ConditionÚcondition_keyz6.1Úcondition_valuezMysqlx.Expect.OpenÚcondz&Mysqlx.ClientMessages.Type.EXPECT_OPENN)r   r   rÒ   r¦   r�   )r@   Úcond_keyÚmsg_ocÚmsg_eos       rA   Úsend_expect_openzProtocol.send_expect_open—  s‹   € å Ð!VÑWÔWˆÝÐ7Ñ8Ô8ˆØ"*ˆˆÑØ$)ˆÐ Ñ!åÐ-Ñ.Ô.ˆØ ×,Ò,Ñ.Ô.Ð/ˆˆv‰àŒ×"Ò"ÝÐBÑCÔCÀVñ	
ô 	
ð 	
ð 	
ð 	
rC   Ú	keep_openc                 ó2  — t          d¦  «        }|€>	 |                      ¦   «          |                      ¦   «          d}n# t          $ r d}Y nw xY w|rd|d<   | j                             t          d¦  «        |¦  «         |                      ¦   «          |rdS dS )z¨Send reset session message.

        Returns:
            boolean: ``True`` if the server will keep the session open,
                     otherwise ``False``.
        zMysqlx.Session.ResetNTFr�  z%Mysqlx.ClientMessages.Type.SESS_RESET)r   rœ  r  r   r¦   r�   r   )r@   r�  r�   s      rA   Ú
send_resetzProtocol.send_reset¥  sÄ   € õ Ð,Ñ-Ô-ˆØÐð"à×%Ò%Ñ'Ô'Ð'Ø—’‘”�Ø �	�	øÝ!ð "ð "ð "à!�	�	�	ð"øøøð ð 	$Ø#ˆC�ÑØŒ×"Ò"ÝÐAÑBÔBÀCñ	
ô 	
ð 	
ð 	�Š‰ŒˆØð 	Ø�4Øˆus   “*> ¾AÁA)T)NN)r2   Nr`   )BrU   rV   rW   rX   r]   r‰   rB   Úpropertyr   rY   rª   Ústaticmethodr(   r   rº   r   rÑ   r	   r%   rÏ   r   r*   r)   rì   r+   rÿ   rt   r‡   r  r  r  rZ   r#  r%  r'  r    r   r"   r#   r$   r&   r>  rD  rŸ   rG  rM  rK  r   r4  r5  r6  r-   r   rn  r   r!   rz  r}  r  r'   r�  r  r’  r”  rœ  rŸ  r[   rC   rA   r¡   r¡   D  s  € € € € € ðð ð'˜}ð '°mð 'Èð 'ð 'ð 'ð 'ð ð+ x°¤}ð +ð +ð +ñ „Xð+ð ð9˜;ð 9Ð.Að 9Àdð 9ð 9ð 9ñ „\ð9ð H˜sð H x°Ô'<ð Hð Hð Hð HðV QUð,ð ,ØÐ-¨|Ð;Ô<ð,ØIMð,à	ˆt�DŒz˜4 Ð&9Ð;RÐ&RÔ SÔTÐTÔ	Uð,ð ,ð ,ð ,ð\. +ð .°~ð .È$ð .ð .ð .ð .ð` Nð °xÀÔ7Lð ð ð ð ðB0¨ð 0°ð 0ð 0ð 0ð 0ð ð ð ð ð ð(.¨ð .°ð .ð .ð .ð .ðf $(Ø*.ð	
ð 
àð
ð ˜C”=ð
ð # 3œ-ð	
ð
 
ð
ð 
ð 
ð 
ð0  Eð  ð  ð  ð  ð&

¨Cð 

°Dð 

ð 

ð 

ð 

ð.ð .ð .ð .ðB-àðB-ð ðB-ð ØØØØØØðô
ð	B-ð 
ðB-ð B-ð B-ð B-ðH#
Øð#
Ø"-ð#
Ø5Hð#
à	ð#
ð #
ð #
ð #
ðJ¨sð °tð ð ð ð ð"%àð%ð ð%ð Ð'¨Ð5Ô6ð	%ð
 
ð%ð %ð %ð %ð8
A ð 
A¨;ð 
A¸4ð 
Að 
Að 
Að 
Að(;Ø˜-¨Ð6Ô7ð(;à	ˆs�KÐÔ	 ð(;ð (;ð (;ð (;ðT'=Ø˜/¨?Ð:Ô;ð'=à	ˆs�KÐÔ	 ð'=ð '=ð '=ð '=ðR=Ø˜/¨?Ð:Ô;ð=à	ˆs�KÐÔ	 ð=ð =ð =ð =ðJ ,0ð	(Bð (Bàð(Bð �C˜Ð&Ô'ð(Bð ˜˜c 3˜hœÔ(ð	(Bð
 
ˆs�KÐÔ	 ð(Bð (Bð (Bð (BðT ð2=Ø�L /Ð1Ô2ð2=à	ˆs�KÐÔ	 ð2=ð 2=ð 2=ñ „\ð2=ðhC >ð C°dð Cð Cð Cð Cð˜~ð °(¸;Ô2Gð ð ð ð ð"¨.ð "¸TÀ*Ô=Mð "ð "ð "ð "ðH
Cð 
Cð 
Cð 
Cð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ðð  H¨T¤Nð ¸dð ð ð ð ð ð rC   r¡   )CrX   rp   r<   Úior   Útypingr   r   r   r   r   r	   Ú	lz4.framerH   ÚHAVE_LZ4ÚImportErrorÚ	zstandardr9   Ú	HAVE_ZSTDÚerrorsr   r   r   r   rx  r   r   r   r   r   r   Úhelpersr   r   r   Úprotobufr   r   r   r   rí   r   Ú	statementr   r   r   r    r!   r"   r#   r$   r%   r&   Útypesr'   r(   r)   r*   r+   r,   r-   r.   r�   r0   r]   r‰   r¡   r[   rC   rA   ú<module>r®     s‚  ðð: :Ð 9à €€€Ø €€€à Ð Ð Ð Ð Ð Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :ðØÐÐÐà€H€HøØð ð ð Ø€H€H€HðøøøðØÐÐÐà€I€IøØð ð ð Ø€I€I€Iðøøøðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 7Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø Ð Ð Ð Ð Ð Ø SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SØ Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð Ð ðAð Að Að Að Añ Aô Að AðHaHð aHð aHð aHð aHñ aHô aHð aHðH:Hð :Hð :Hð :Hð :Hñ :Hô :Hð :Hðzzð zð zð zð zñ zô zð zð zð zs   ¢) ©3²3·> ¾AÁA