Ë
    Ü_Ëi¯É  ã                  óŒ  — U d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZ ddl
mZ ddlmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- dd	l.m/Z/ dd
l0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6m7Z7m8Z8m9Z9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@mAZAmBZB ddlCmDZD ddlEmFZF ddlGmHZH ddlImJZJ ddlKmLZL ddlMmNZNmOZO ddlPmQZQ ddlRmSZS erddlTmUZU ddlVmWZWmXZX 	 ddlYmZZZ dZ[g d¢Z]dZ^dZ_dZ`d Zad!Zbd"Zcd#Zdd$Zed%Zfd&Zgd'Zhd(Zid)Zjd*Zkd+Zld,Zmd-Znd.Zod/Zpd0Zqd1Zr ejæ                  d2«      jè                  Zu ejæ                  d3«      jì                  Zw ejæ                  d3«      jè                  Zx ejæ                  d4«      jè                  Zy ejæ                  d5«      jè                  Zz ejæ                  d6«      jè                  Z{d’d7„Z|d“d8„Z}	 	 	 	 	 	 	 	 	 	 	 	 	 	 d”d9„Z~d•d:„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 d–d;„Z€	 	 	 	 	 	 	 	 	 	 	 	 	 	 d—d<„Z�d˜d=„Z‚	 	 	 	 	 	 	 	 	 	 	 	 	 	 d™d>„Zƒ	 	 	 	 	 	 	 	 	 	 	 	 	 	 dšd?„Z„	 	 	 	 	 	 	 	 	 	 	 	 	 	 d›d@„Z…	 	 	 	 	 	 	 	 	 	 	 	 	 	 dœdA„Z†	 	 	 	 	 	 	 	 	 	 	 	 	 	 d�dB„Z‡	 	 	 	 	 	 	 	 	 	 	 	 	 	 dždC„Zˆ	 	 	 	 	 	 	 	 	 	 	 	 	 	 dŸdD„Z‰	 	 	 	 	 	 	 	 	 	 	 	 	 	 d dE„ZŠ	 	 	 	 	 	 	 	 	 	 	 	 	 	 d¡dF„Z‹	 	 	 	 	 	 	 	 	 	 	 	 	 	 d¢dG„ZŒ	 	 	 	 	 	 	 	 	 	 	 	 	 	 d£dH„Z�	 	 	 	 	 	 	 	 	 	 	 	 	 	 d¤dI„ZŽ	 	 	 	 	 	 	 	 	 	 	 	 	 	 d¥dJ„Z�i  e�e^«      e€“ e�e_«      e�“ e�e`«      eƒ“ e�ea«      e„“ e�eb«      e…“ e�ec«      dK„ “ e�ed«      e†“ e�ee«      e‡“ e�ef«      eˆ“ e�eg«      dL„ “ e�eh«      e‹“ e�ei«      eŒ“ e�ej«      e‰“ e�ek«      e�“ e�el«      eŠ“ e�em«      e~“ e�en«      e�“ e�eo«      eŽ e�ep«      e� e�eq«      dM„  e�er«      dN„ i¥Z‘dOe’dP<   e[r	 d¦	 	 	 	 	 	 	 	 	 	 	 	 	 d§dQ„Z“n	 d¦	 	 	 	 	 	 	 	 	 	 	 	 	 d§dR„Z“ e!dSee”ef   ¬T«      Z•	 d¦	 	 	 	 	 	 	 	 	 	 	 	 	 d¨dU„Z–	 	 d©	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dªdV„Z—d«dW„Z˜e[reZ�j0                  Z˜ ejæ                  d2«      �j2                  Zš ejæ                  d3«      �j2                  Z› ejæ                  d4«      �j2                  Zœ ejæ                  d5«      �j2                  Z� ejæ                  d6«      �j2                  Zž eŸdX„  e dY«      D «       «      Z¡d¬dZ„Z¢d­d[„Z£d­d\„Z¤d®d]„Z¥d¯d^„Z¦d°d_„Z§d±d`„Z¨d²da„Z©	 	 	 	 	 	 	 	 	 	 d³db„Zªd´dc„Z«dµdd„Z¬d¶de„Z­d·df„Z®d¸dg„Z¯d¹dh„Z°dºdi„Z±d»dj„Z²d¼dk„Z³d½dl„Z´d¾dm„Zµd¿dn„Z¶d¿do„Z·dÀdp„Z¸d»dq„Z¹d»dr„Zºi e»e¯“e¼e§“ej                  e°“e8e±“e½e¨“e¾e¦“e¿eµ“eÀeª“e”e«“eŸeª“ eÁd«      e²“e	�j„                  e­“e,e¬“eDe·“e/e´“e<e©“eFeº“eHe¹eJe®eLe³eNe³eOe¨eQe¶e>e¸ej4                  e¨i¥ZÃi ZÄeÃD ]  ZÅ eÆeÅds«      sŒeÃeÅ   eÄeÅ�jŽ                  <   Œ!  eŸdt„ eÃD «       «      ZÈ	 	 dÁ	 	 	 	 	 	 	 	 	 	 	 	 	 dÂdu„ZÉdÃdv„ZÊ	 dÄ	 	 	 	 	 	 	 	 	 dÅdw„ZËe[reZ�j–                  ZË eÌdx«      ZÍde1f	 	 	 	 	 	 	 dÆdy„ZÎe$dÇdÈdz„«       ZÏe$dÉd{„«       ZÏ	 dÇ	 	 	 	 	 dÊd|„ZÏdËd}„ZÐe[reZ�j                   ZÐe$dÇdÌd~„«       ZÑe$	 	 	 	 	 	 dÍd„«       ZÑ	 dÇ	 	 	 	 	 dÎd€„ZÑ	 	 	 	 	 	 	 	 dÏd�„ZÒdÐd‚„ZÓe[reZ�j¦                  ZÓdÑdƒ„ZÔ	 	 	 	 	 	 	 	 dÒd„„ZÕe$dÇdÓd…„«       ZÖe$dÔd†„«       ZÖ	 dÇ	 	 	 	 	 dÕd‡„ZÖe$	 dÇ	 	 	 	 	 dÖdˆ„«       Z×e$	 	 	 	 	 	 d×d‰„«       Z×	 dÇ	 	 	 	 	 dØdŠ„Z×dÙd‹„ZØ G dŒ„ d�e¼«      ZÙdÚdŽ„ZÚdÛd�„ZÛ eÆed�«      r e�j¸                  eÛ¬‘«       yy# e\$ r dZ[Y �ŒMw xY w)ÜaÊ  BSON (Binary JSON) encoding and decoding.

The mapping from Python types to BSON types is as follows:

=======================================  =============  ===================
Python Type                              BSON Type      Supported Direction
=======================================  =============  ===================
None                                     null           both
bool                                     boolean        both
int [#int]_                              int32 / int64  py -> bson
:class:`bson.int64.Int64`                int64          both
float                                    number (real)  both
str                                      string         both
list                                     array          both
dict                                     object         both
:class:`~bson.son.SON`                   object         both
:py:class:`~collections.abc.Mapping`     object         py -> bson
:class:`~bson.raw_bson.RawBSONDocument`  object         both [#raw]_
datetime.datetime [#dt]_ [#dt2]_         UTC datetime   both
:class:`~bson.datetime_ms.DatetimeMS`    UTC datetime   both [#dt3]_
:class:`~bson.regex.Regex`               regex          both
compiled re [#re]_                       regex          py -> bson
:class:`~bson.binary.Binary`             binary         both
:py:class:`uuid.UUID` [#uuid]_           binary         both
:class:`~bson.objectid.ObjectId`         oid            both
:class:`~bson.dbref.DBRef`               dbref          both
:class:`~bson.dbref.DBRef`               dbpointer      bson -> py
None                                     undefined      bson -> py
:class:`~bson.code.Code`                 code           both
str                                      symbol         bson -> py
bytes [#bytes]_                          binary         both
:class:`~bson.timestamp.Timestamp`       timestamp      both
:class:`~bson.decimal128.Decimal128`     decimal128     both
:class:`~bson.min_key.MinKey`            min key        both
:class:`~bson.max_key.MaxKey`            max key        both
=======================================  =============  ===================

.. [#int] A Python int will be saved as a BSON int32 or BSON int64 depending
   on its size. A BSON int32 will always decode to a Python int. A BSON
   int64 will always decode to a :class:`~bson.int64.Int64`.
.. [#raw] Decoding a bson object to :class:`~bson.raw_bson.RawBSONDocument` can be
   optionally configured via :attr:`~bson.codec_options.CodecOptions.document_class`.
.. [#dt] datetime.datetime instances are encoded with millisecond precision so
   the microsecond field is truncated.
.. [#dt2] all datetime.datetime instances are encoded as UTC. By default, they
   are decoded as *naive* but timezone aware datetimes are also supported.
   See `Dates and Times <https://www.mongodb.com/docs/languages/python/pymongo-driver/current/data-formats/dates-and-times/#dates-and-times>`_ for examples.
.. [#dt3] To enable decoding a bson UTC datetime to a :class:`~bson.datetime_ms.DatetimeMS`
   instance see `handling out of range datetimes <https://www.mongodb.com/docs/languages/python/pymongo-driver/current/data-formats/dates-and-times/#handling-out-of-range-datetimes>`_.
.. [#uuid] For :py:class:`uuid.UUID` encoding and decoding behavior see `<https://www.mongodb.com/docs/languages/python/pymongo-driver/current/data-formats/uuid/#universally-unique-ids--uuids->`_.
.. [#re] :class:`~bson.regex.Regex` instances and regular expression
   objects from ``re.compile()`` are both saved as BSON regular expressions.
   BSON regular expressions are decoded as :class:`~bson.regex.Regex`
   instances.
.. [#bytes] The bytes type is encoded as BSON binary with
   subtype 0. It will be decoded back to bytes.
é    )ÚannotationsN)Úutf_8_decode)Úutf_8_encode)Úabc)ÚIOÚTYPE_CHECKINGÚAnyÚBinaryIOÚCallableÚ	GeneratorÚIteratorÚMappingÚMutableMappingÚNoReturnÚOptionalÚSequenceÚTupleÚTypeÚTypeVarÚUnionÚcastÚoverload)ÚALL_UUID_SUBTYPESÚCSHARP_LEGACYÚJAVA_LEGACYÚOLD_UUID_SUBTYPEÚSTANDARDÚUUID_SUBTYPEÚBinaryÚUuidRepresentation)ÚCode)ÚDEFAULT_CODEC_OPTIONSÚCodecOptionsÚDatetimeConversionÚ_raw_document_class)ÚEPOCH_AWAREÚEPOCH_NAIVEÚ
DatetimeMSÚ_datetime_to_millisÚ_millis_to_datetime)ÚDBRef)Ú
Decimal128)ÚInvalidBSONÚInvalidDocumentÚInvalidStringData)ÚInt64©ÚMaxKey©ÚMinKey©ÚObjectId)ÚRegex)ÚRE_TYPEÚSON)Ú	Timestamp)Úutc©ÚRawBSONDocument)Ú_DocumentTypeÚ_ReadableBuffer)Ú_cbsonTF)<r   r   r   r   r   r   r   r    r!   r"   r#   r+   r,   r-   r.   r/   r0   r2   r4   r6   r7   r8   r9   r:   r;   r&   r'   ÚBSONNUMÚBSONSTRÚBSONOBJÚBSONARRÚBSONBINÚBSONUNDÚBSONOIDÚBSONBOOÚBSONDATÚBSONNULÚBSONRGXÚBSONREFÚBSONCODÚBSONSYMÚBSONCWSÚBSONINTÚBSONTIMÚBSONLONÚBSONDECÚBSONMINÚBSONMAXÚget_data_and_viewÚgen_list_nameÚencodeÚdecodeÚ
decode_allÚdecode_iterÚdecode_file_iterÚis_validÚBSONÚhas_cr$   r(   ó   ó   ó   ó   ó   ó   ó   ó   ó   	ó   
ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ÿó   z<dz<iz<iBz<qz<IIc                ó‚   — t        | t        t        f«      r| t        | «      fS t        | «      }|j	                  «       |fS ©N)Ú
isinstanceÚbytesÚ	bytearrayÚ
memoryviewÚtobytes)ÚdataÚviews     úP/var/www/pod-logistic/pod-api/venv/lib/python3.12/site-packages/bson/__init__.pyrV   rV   ÷   s<   € Ü�$œ¤	Ð*Ô+Ø”Z Ó%Ð%Ð%Ü�dÓ€DØ�<‰<‹>˜4ÐÐó    c                óf   — t        dj                  t        | «      j                  «       |«      «      ‚)zUnknown type helper.z\Detected unknown BSON type {!r} for fieldname '{}'. Are you using the latest driver version?)r-   ÚformatÚchrrX   )Úelement_typeÚelement_names     r~   Ú_raise_unknown_typer…   þ   s/   € ä
ð	/ß/5©v´c¸,Ó6G×6NÑ6NÓ6PÐR^Ó/_óð r   c                ó*   — t        | |«      d   |dz   fS )z"Decode a BSON int32 to python int.r   é   )Ú_UNPACK_INT_FROM©r|   Ú_viewÚpositionÚdummy0Údummy1Údummy2s         r~   Ú_get_intr�     s   € ô ˜D (Ó+¨AÑ.°¸1±Ð<Ð<r   c                ój   — | j                  d|«      }t        ||| |j                  d«      d   |dz   fS )z'Decode a BSON 'C' string to python str.ó    Tr   é   )ÚindexÚ_utf_8_decodeÚunicode_decode_error_handler)r|   r}   r‹   ÚoptsÚends        r~   Ú_get_c_stringr˜     sA   € à
�*‰*�W˜hÓ
'€CÜ˜˜h sÐ+¨T×-NÑ-NÐPTÓUÐVWÑXÐZ]Ð`aÑZaÐaÐar   c                ó*   — t        | |«      d   |dz   fS )z%Decode a BSON double to python float.r   é   )Ú_UNPACK_FLOAT_FROMr‰   s         r~   Ú
_get_floatrœ     s   € ô ˜d HÓ-¨aÑ0°(¸Q±,Ð>Ð>r   c                óÔ   — t        | |«      d   }|dz  }|dk  s||z
  |k  rt        d«      ‚||z   dz
  }| |   dk7  rt        d«      ‚t        ||| |j                  d«      d   |dz   fS )z#Decode a BSON string to python str.r   r‡   r’   zinvalid string lengthzinvalid end of stringT)rˆ   r-   r”   r•   )r|   r}   r‹   Úobj_endr–   ÚdummyÚlengthr—   s           r~   Ú_get_stringr¡     s’   € ô ˜d HÓ-¨aÑ0€FØ��M€HØ�‚z�W˜xÑ'¨&Ò0ÜÐ1Ó2Ð2Ø
�VÑ
˜aÑ
€CØˆC�y�A‚~ÜÐ1Ó2Ð2Ü˜˜h sÐ+¨T×-NÑ-NÐPTÓUÐVWÑXÐZ]Ð`aÑZaÐaÐar   c                ó
  — 	 t        | |«      d   }||z   dz
  }||k\  rt        d«      ‚| |   dk7  rt        d«      ‚|dk(  r||k7  rt        d«      ‚||fS # t        j                  $ r}t        t	        |«      «      d‚d}~ww xY w)z+Validate and return a BSON document's size.r   Nr’   zinvalid object lengthúbad eoo)rˆ   ÚstructÚerrorr-   Ústr)r|   r‹   rž   Úobj_sizeÚexcr—   s         r~   Ú_get_object_sizer©   (  s�   € ð.Ü# D¨(Ó3°AÑ6ˆð �XÑ
 Ñ
!€CØ
ˆg‚~ÜÐ1Ó2Ð2ØˆC�y�A‚~Ü˜)Ó$Ð$à�1‚}˜ WÒ,ÜÐ1Ó2Ð2Ø�Sˆ=Ðøô �<‰<ò .Üœ#˜c›(Ó#¨Ð-ûð.ús   ‚A ÁBÁ(A=Á=Bc                óÔ  — t        | ||«      \  }}t        |j                  «      r|j                  | ||dz    |«      ||z   fS t        | ||dz   ||«      }||z  }t	        |j                  d«      t        «      rmd|v rit	        |j                  d«      t        t        d«      f«      r?t        |j                  d«      |j                  dd«      |j                  dd«      |«      |fS ||fS )zEDecode a BSON subdocument to opts.document_class or bson.dbref.DBRef.r’   r‡   z$refz$idz$dbN)
r©   r%   Údocument_classÚ_elements_to_dictrw   Úgetr¦   Útyper+   Úpop)	r|   r}   r‹   rž   r–   rŸ   r§   r—   Úobjs	            r~   Ú_get_objectr±   9  sã   € ô % T¨8°WÓ=�M€HˆcÜ˜4×.Ñ.Ô/Ø×#Ñ# D¨°C¸!±GÐ$<¸dÓCÀXÐPXÑEXÐYÐYä
˜D $¨°1©°c¸4Ó
@€Cà�Ñ€Hô 	�3—7‘7˜6“?¤CÔ(Ø�S‰LÜ�s—w‘w˜u“~¬¬T°$«ZÐ'8Ô9ä�c—g‘g˜f“o s§w¡w¨u°dÓ';¸S¿W¹WÀUÈDÓ=QÐSVÓWÐYaÐbÐbØ�ˆ=Ðr   c                óü  — t        | |«      d   }||z   dz
  }| |   dk7  rt        d«      ‚|dz  }|dz  }g }|j                  }	| j                  }
t        }|j
                  j                  }||k  rY| |   } |
d|«      dz   }	  ||   | |||||«      \  }}|r$|j                  t        «      «      }|� ||«      } |	«       ||k  rŒY||dz   k7  rt        d«      ‚||dz   fS # t        $ r t        ||«       Y Œew xY w)z#Decode a BSON array to python list.r   r’   r£   r‡   r‘   zbad array length)rˆ   r-   Úappendr“   Ú_ELEMENT_GETTERÚtype_registryÚ_decoder_mapÚKeyErrorr…   r­   r®   )r|   r}   r‹   rž   r–   r„   Úsizer—   Úresultr³   r“   ÚgetterÚdecoder_maprƒ   ÚvalueÚcustom_decoders                   r~   Ú
_get_arrayr¾   N  s=  € ô ˜D (Ó+¨AÑ.€DØ
�T‰/˜AÑ
€CØˆC�y�A‚~Ü˜)Ó$Ð$à��M€HØˆ1�H€CØ€Fð �]‰]€FØ�J‰J€EÜ€FØ×$Ñ$×1Ñ1€Kà
�SŠ.Ø˜H‘~ˆá˜ (Ó+¨aÑ/ˆð	<Ø2˜f \Ñ2Ø�d˜H g¨t°\ó‰OˆE�8ñ Ø(Ÿ_™_¬T°%«[Ó9ˆNØÐ)Ù& uÓ-�áˆuŒð! �S‹.ð$ �3˜‘7ÒÜÐ,Ó-Ð-Ø�8˜a‘<ÐÐøô ò 	<Ü ¨lÖ;ð	<ús   ÂC# Ã#C;Ã:C;c                óÞ  — t        | |«      \  }}|dz  }|dk(  r)t        | |«      d   }|dz  }||dz
  k7  rt        d«      ‚|}||z   }	|dk  s|	|kD  rt        d«      ‚|t        v ri|j                  }
t        | ||	 |«      }|
t        j                  k(  s$|t        k(  r	|
t        k7  s|t        k(  r|
t        k(  r||	fS |j                  |
«      |	fS |dk(  r	| ||	 }||	fS t        | ||	 |«      }||	fS )z:Decode a BSON binary to bson.binary.Binary or python UUID.é   é   r   r‡   z,invalid binary (st 2) - lengths don't match!zbad binary object length)Ú_UNPACK_LENGTH_SUBTYPE_FROMrˆ   r-   r   Úuuid_representationr   r    ÚUNSPECIFIEDr   r   r   Úas_uuid)r|   rŠ   r‹   rž   r–   r�   r    ÚsubtypeÚlength2r—   Úuuid_repÚbinary_valuer¼   s                r~   Ú_get_binaryrÊ   x  s6  € ô 2°$¸ÓA�O€FˆGØ��M€HØ�!‚|Ü" 4¨Ó2°1Ñ5ˆØ�A‰ˆØ�f˜q‘jÒ ÜÐLÓMÐMØˆØ
�VÑ
€CØ�‚z�S˜7’]ÜÐ4Ó5Ð5ð Ô#Ñ#Ø×+Ñ+ˆÜ˜d 8¨CÐ0°'Ó:ˆàÔ+×7Ñ7Ò7Øœ<Ò'¨H¼Ò,@ØÔ+Ò+°¼HÒ0Dà Ð$Ð$Ø×#Ñ# HÓ-¨sÐ2Ð2ð �!‚|Ø�X˜cÐ"ˆð �#ˆ:Ðô �t˜H SÐ)¨7Ó3ˆà�#ˆ:Ðr   c                ó,   — |dz   }t        | || «      |fS )z1Decode a BSON ObjectId to bson.objectid.ObjectId.é   r5   ©r|   rŠ   r‹   rŒ   r�   rŽ   r—   s          r~   Ú_get_oidrÎ   �  s$   € ð �R‰-€CÜ�D˜ #Ð&Ó'¨Ð,Ð,r   c                óV   — |dz   }| || }|dk(  rd|fS |dk(  rd|fS t        d|z  «      ‚)z.Decode a BSON true/false to python True/False.r’   r‘   Fr`   Tzinvalid boolean value: %r)r-   )r|   rŠ   r‹   rŒ   r�   rŽ   r—   Úboolean_bytes           r~   Ú_get_booleanrÑ   ¥  sN   € ð �Q‰,€CØ˜ Ð%€LØ�wÒØ�cˆzÐØ	˜Ò	 Ø�SˆyÐÜ
Ð1°LÑ@Ó
AÐAr   c                ó>   — t        t        | |«      d   |«      |dz   fS )z3Decode a BSON datetime to python datetime.datetime.r   rš   )r*   Ú_UNPACK_LONG_FROM)r|   rŠ   r‹   rŒ   r–   r�   s         r~   Ú	_get_daterÔ   ²  s(   € ô Ô0°°xÓ@ÀÑCÀTÓJÈHÐWXÉLÐXÐXr   c                óB   — t        | |||||«      \  }}t        |«      |fS )z%Decode a BSON code to bson.code.Code.)r¡   r!   )r|   r}   r‹   rž   r–   r„   Úcodes          r~   Ú	_get_coder×   ¹  s+   € ô !  t¨X°wÀÀlÓS�N€Dˆ(Ü�‹:�xÐÐr   c                ó´   — |t        | |«      d   z   }t        | ||dz   |||«      \  }}t        | |||||«      \  }}||k7  rt        d«      ‚t	        ||«      |fS )z-Decode a BSON code_w_scope to bson.code.Code.r   r‡   z+scope outside of javascript code boundaries)rˆ   r¡   r±   r-   r!   )	r|   r}   r‹   Ú_obj_endr–   r„   Úcode_endrÖ   Úscopes	            r~   Ú_get_code_w_scoperÜ   Á  su   € ð Ô*¨4°Ó:¸1Ñ=Ñ=€HÜ   t¨X¸©\¸8ÀTÈ<ÓX�N€Dˆ(Ü! $¨¨h¸À$ÈÓU�O€Eˆ8Ø�8ÒÜÐGÓHÐHÜ��eÓ˜hÐ&Ð&r   c                óf   — t        | |||«      \  }}t        | |||«      \  }}t        ||«      }||fS )zCDecode a BSON regex to bson.regex.Regex or a python pattern object.)r˜   r7   )	r|   r}   r‹   rŒ   r–   r�   ÚpatternÚ
bson_flagsÚbson_res	            r~   Ú
_get_regexrá   Í  sE   € ô & d¨D°(¸DÓAÑ€GˆXÜ(¨¨t°X¸tÓDÑ€J�Ü�G˜ZÓ(€GØ�HÐÐr   c                ój   — t        | |||||«      \  }}t        | |||||«      \  }}t        ||«      |fS )z7Decode (deprecated) BSON DBPointer to bson.dbref.DBRef.)r¡   rÎ   r+   )r|   r}   r‹   rž   r–   r„   Ú
collectionÚoids           r~   Ú_get_refrå   ×  sG   € ô ' t¨T°8¸WÀdÈLÓYÑ€J�Ü˜T 4¨°7¸DÀ,ÓO�M€CˆÜ�˜SÓ! 8Ð+Ð+r   c                óB   — t        | |«      \  }}t        ||«      |dz   fS )z4Decode a BSON timestamp to bson.timestamp.Timestamp.rš   )Ú_UNPACK_TIMESTAMP_FROMr:   )r|   rŠ   r‹   rŒ   r�   rŽ   ÚincÚ	timestamps           r~   Ú_get_timestamprê   à  s*   € ô ,¨D°(Ó;�N€CˆÜ�Y Ó$ h°¡lÐ2Ð2r   c                ó<   — t        t        | |«      d   «      |dz   fS )z(Decode a BSON int64 to bson.int64.Int64.r   rš   )r0   rÓ   r‰   s         r~   Ú
_get_int64rì   è  s%   € ô Ô" 4¨Ó2°1Ñ5Ó6¸À1¹ÐDÐDr   c                ó@   — |dz   }t        j                  | || «      |fS )z7Decode a BSON decimal128 to bson.decimal128.Decimal128.é   )r,   Úfrom_bidrÍ   s          r~   Ú_get_decimal128rð   ï  s*   € ð �R‰-€CÜ×Ñ˜t H¨SÐ1Ó2°CÐ7Ð7r   c                ó
   — d |fS rv   © ©ÚuÚvÚwÚxÚyÚzs         r~   ú<lambda>rú     ó
   € ¨D°!¨9€ r   c                ó
   — d |fS rv   rò   ró   s         r~   rú   rú     rû   r   c                ó   — t        «       |fS rv   r3   ró   s         r~   rú   rú     ó   € ¬F«H°a¨=€ r   c                ó   — t        «       |fS rv   r1   ró   s         r~   rú   rú     rþ   r   z)dict[int, Callable[..., Tuple[Any, int]]]r´   c           
     óH   — t        dt        j                  | ||||«      «      S )NúTuple[str, Any, int])r   r@   Ú_element_to_dict)r|   r}   r‹   rž   r–   Ú	raw_arrays         r~   r  r    s*   € ô Ø"Ü×#Ñ# D¨(°G¸TÀ9ÓMó
ð 	
r   c                ó¸  — | |   }|dz  }t        | |||«      \  }}|r9|t        t        «      k(  r't        | |t	        | «      «      \  }}	||||	dz    |	dz   fS 	 t        |   | |||||«      \  }
}|j                  j                  r8|j                  j                  j                  t        
«      «      }|� ||
«      }
|
|fS # t        $ r t        ||«       Y Œjw xY w)z Decode a single key, value pair.r’   )r˜   ÚordrD   r©   Úlenr´   r·   r…   rµ   r¶   r­   r®   )r|   r}   r‹   rž   r–   r  rƒ   r„   Ú_r—   r¼   r½   s               r~   r  r  '  sù   € ð ˜H‘~ˆØ�A‰ˆÜ!.¨t°T¸8ÀTÓ!JÑˆ�hÙ˜¬¬W«Ò5Ü% d¨H´c¸$³iÓ@‰FˆAˆsØ  h°°q±Ð!9¸3À¹7ÐBÐBð	<Ü-¨lÑ;Ø�d˜H g¨t°\ó‰OˆE�8ð ×Ñ×*Ò*Ø!×/Ñ/×<Ñ<×@Ñ@ÄÀeÃÓMˆNØÐ)Ù& uÓ-�à˜U HÐ,Ð,øô ò 	<Ü ¨lÖ;ð	<ús   ÁC ÃCÃCÚ_T)Úboundc                ó^   — t        | «      \  } }t        t        t        | ||||||¬«      «      S )N©r  )rV   r   r  r¬   )r|   r‹   rž   r–   r¹   r  r}   s          r~   Ú_raw_to_dictr  H  s7   € ô # 4Ó(�J€Dˆ$ÜÜ
Ô˜d D¨(°G¸TÀ6ÐU^Ô_óð r   c                óž   — |€|j                  «       }|dz
  }||k  r t        | |||||¬«      \  }}	}|	||<   ||k  rŒ ||k7  rt        d«      ‚|S )z#Decode a BSON document into result.r’   r  úbad object or element length)r«   r  r-   )
r|   r}   r‹   rž   r–   r¹   r  r—   Úkeyr¼   s
             r~   r¬   r¬   V  st   € ð €~Ø×$Ñ$Ó&ˆØ
�A‰+€CØ
�SŠ.Ü/Ø�$˜ '¨4¸9ô 
ÑˆˆU�Hð ˆˆs‰ð	 �S‹.ð
 �7ÒÜÐ8Ó9Ð9Ø€Mr   c           
     óv  — t        | «      \  } }	 t        |j                  «      r|j                  | |«      S t        | dt	        | «      «      \  }}t        dt        | |d||«      «      S # t        $ r ‚ t        $ r= t        j                  «       \  }}}t        t        |«      «      j                  |«      d‚w xY w)z'Decode a BSON string to document_class.r   r>   r‡   N)rV   r%   r«   r©   r  r   r¬   r-   Ú	ExceptionÚsysÚexc_infor¦   Úwith_traceback)r|   r–   r}   r  r—   Ú	exc_valueÚexc_tbs          r~   Ú_bson_to_dictr  m  s²   € ä" 4Ó(�J€Dˆ$ð
KÜ˜t×2Ñ2Ô3Ø×&Ñ& t¨TÓ2Ð2Ü! $¨¬3¨t«9Ó5‰ˆˆ3Ü�OÔ%6°t¸TÀ1ÀcÈ4Ó%PÓQÐQøÜò ØÜò Kä"Ÿ|™|›~Ñˆˆ9�fÜœ#˜i›.Ó)×8Ñ8¸Ó@ÀdÐJðKús   �&A) ·1A) Á)AB8c              #  óV   K  — | ]!  }t        |«      d z   j                  d«      –— Œ# y­w)ú Úutf8N)r¦   rX   )Ú.0Úis     r~   ú	<genexpr>r  †  s#   è ø€ ÒJ¸”S˜“V˜f‘_×,Ñ,¨V×4ÑJùs   ‚')éè  c               #  ó¨   K  — t         E d{  –—†  t        j                  d«      } 	 t        t	        | «      «      dz   j                  d«      –— Œ)7 ŒC­w)zÃGenerate "keys" for encoded lists in the sequence
    b"0 ", b"1 ", b"2 ", ...

    The first 1000 keys are returned from a pre-built cache. All
    subsequent keys are generated on the fly.
    Nr  r  r  )Ú_LIST_NAMESÚ	itertoolsÚcountr¦   ÚnextrX   )Úcounters    r~   rW   rW   ‰  sK   è ø€ ô ×Ðä�o‰o˜dÓ#€GØ
Ü”4˜“=Ó! FÑ*×2Ñ2°6Ó:Ò:ð ð ús   ‚
AŒA�AAc                óÞ   — t        | t        «      r"d| v rt        d«      ‚	 t        | dd«       | dz   S d| v rt        d«      ‚t        | «      d   dz   S # t        $ r t        d| z  «      d‚w xY w)z8Make a 'C' string, checking for embedded NUL characters.r‘   z;BSON keys / regex patterns must not contain a NUL characterNTú,strings in documents must be valid UTF-8: %rr  r   )rw   rx   r.   r”   ÚUnicodeErrorr/   Ú_utf_8_encode©Ústrings    r~   Ú_make_c_string_checkr+  —  s�   € ä�&œ%Ô Ø�fÑÜ!Ð"_Ó`Ð`ð	Ü˜& $¨Ô-Ø˜GÑ#Ð#ð �VÑÜ!Ð"_Ó`Ð`Ü˜VÓ$ QÑ'¨'Ñ1Ð1øô ò 	Ü#Ø>ÀÑGóàðð	ús   ¡A ÁA,c                ó¢   — t        | t        «      r	 t        | dd«       | dz   S t        | «      d   dz   S # t        $ r t	        d| z  «      d‚w xY w)zMake a 'C' string.NTr‘   r&  r   )rw   rx   r”   r'  r/   r(  r)  s    r~   Ú_make_c_stringr-  ©  sh   € ä�&œ%Ô ð	Ü˜& $¨Ô-Ø˜GÑ#Ð#ô ˜VÓ$ QÑ'¨'Ñ1Ð1øô ò 	Ü#Ø>ÀÑGóàðð	ús	   ’5 µAc                óB   — d| v rt        d«      ‚t        | «      d   dz   S )z*Make a 'C' string suitable for a BSON key.r  z*BSON keys must not contain a NUL characterr   r‘   )r.   r(  r)  s    r~   Ú
_make_namer/  ·  s+   € à�ÑÜÐJÓKÐKÜ˜Ó  Ñ# gÑ-Ð-r   c                ó$   — d| z   t        |«      z   S )zEncode a float.r`   )Ú_PACK_FLOAT©Únamer¼   rŒ   r�   s       r~   Ú_encode_floatr4  ¾  s   € à�T‰>œK¨Ó.Ñ.Ð.r   c                óB   — d| z   t        t        |«      «      z   dz   |z   S )zEncode a python bytes.rd   r‘   )Ú	_PACK_INTr  r2  s       r~   Ú_encode_bytesr7  Ã  s&   € ð �T‰>œI¤c¨%£jÓ1Ñ1°GÑ;¸eÑCÐCr   c                ó&  — t        |«      r d| z   t        t        |j                  «      z   S dj	                  |j                  «       D ��cg c]  \  }}t        ||||«      ‘Œ c}}«      }d| z   t        t        |«      dz   «      z   |z   dz   S c c}}w )zEncode a mapping type.rb   r   rÀ   r‘   )	r%   r   rx   ÚrawÚjoinÚitemsÚ_element_to_bsonr6  r  )r3  r¼   Ú
check_keysr–   r  Úvalr|   s          r~   Ú_encode_mappingr?  É  sƒ   € ä˜5Ô!Ø˜‰~¤¤U¨E¯I©IÓ 6Ñ6Ð6Ø�8‰8ÐRW×R]ÑR]ÓR_×`ÁhÀcÈ3Ô% c¨3°
¸DÕAÓ`Óa€DØ�T‰>œI¤c¨$£i°!¡mÓ4Ñ4°tÑ;¸gÑEÐEùó as   Á
B
c                óº  — t        d| z   dz   «      }t        |«      dz
  }|t        d|j                  ||«      z  }|t        d|j                  ||«      z  }|j
                  �|t        d|j
                  ||«      z  }|j                  j                  «       D ]  \  }}|t        ||||«      z  }Œ |dz  }t        t        |«      |z
  «      |||dz    t        |«      S )zEncode bson.dbref.DBRef.rb   s       r‡   s   $ref s   $id s   $db r‘   )ry   r  Ú_name_value_to_bsonrã   ÚidÚdatabaseÚ_DBRef__kwargsr;  r<  r6  rx   )r3  r¼   r=  r–   ÚbufÚbeginr  r>  s           r~   Ú_encode_dbrefrG  Ñ  sè   € ä
�G˜d‘NÐ%8Ñ8Ó
9€CÜ�‹H�q‰L€EàÔ˜{¨E×,<Ñ,<¸jÈ$ÓOÑO€CØÔ˜z¨5¯8©8°ZÀÓFÑF€CØ‡~�~Ð!ØÔ" :¨u¯~©~¸zÈ4ÓPÑPˆØ×(Ñ(×.Ñ.Ó0ò <‰ˆˆSØÔ  S¨*°dÓ;Ñ;‰ð<ð ˆ7�N€CÜ&¤s¨3£x°%Ñ'7Ó8€Cˆ�˜‘	ÐÜ�‹:Ðr   c                óÎ   — t        «       }dj                  |D �cg c]  }t        t        |«      |||«      ‘Œ c}«      }d| z   t	        t        |«      dz   «      z   |z   dz   S c c}w )zEncode a list/tuple.r   rc   rÀ   r‘   )rW   r:  rA  r#  r6  r  )r3  r¼   r=  r–   ÚlnameÚitemr|   s          r~   Ú_encode_listrK  â  sb   € ô ‹O€EØ�8‰8ÐZ_Ö`ÐRVÔ(¬¨e«°d¸JÈÕMÒ`Óa€DØ�T‰>œI¤c¨$£i°!¡mÓ4Ñ4°tÑ;¸gÑEÐEùò as   šA"c                ód   — t        |«      d   }d| z   t        t        |«      dz   «      z   |z   dz   S )zEncode a python str.r   ra   r’   r‘   )r(  r6  r  )r3  r¼   rŒ   r�   Úbvalues        r~   Ú_encode_textrN  ë  s7   € ä˜5Ó! !Ñ$€FØ�T‰>œI¤c¨&£k°A¡oÓ6Ñ6¸Ñ?À'ÑIÐIr   c                óŽ   — |j                   }|dk(  rt        t        |«      «      |z   }d| z   t        t        |«      |«      z   |z   S )zEncode bson.binary.Binary.rÁ   rd   )rÆ   r6  r  Ú_PACK_LENGTH_SUBTYPE)r3  r¼   rŒ   r�   rÆ   s        r~   Ú_encode_binaryrQ  ñ  sE   € à�m‰m€GØ�!‚|Üœ#˜e›*Ó%¨Ñ-ˆØ�T‰>Ô0´°U³¸WÓEÑEÈÑMÐMr   c                ód   — |j                   }t        j                  ||¬«      }t        | |||«      S )zEncode uuid.UUID.)rÃ   )rÃ   r   Ú	from_uuidrQ  )r3  r¼   rŸ   r–   rÃ   Úbinvals         r~   Ú_encode_uuidrU  ù  s2   € à×2Ñ2ÐÜ×Ñ˜eÐ9LÔM€FÜ˜$ ¨¨tÓ4Ð4r   c                ó&   — d| z   |j                   z   S )zEncode bson.objectid.ObjectId.rf   )Úbinary)r3  r¼   rŸ   r�   s       r~   Ú_encode_objectidrX     s   € à�T‰>˜EŸL™LÑ(Ð(r   c                ó"   — d| z   |xr dxs dz   S )z%Encode a python boolean (True/False).rg   r`   r‘   rò   r2  s       r~   Ú_encode_boolrZ    s   € à�T‰>˜UÒ. wÒ9°'Ñ:Ð:r   c                ó:   — t        |«      }d| z   t        |«      z   S ©zEncode datetime.datetime.rh   )r)   Ú
_PACK_LONG©r3  r¼   rŒ   r�   Úmilliss        r~   Ú_encode_datetimer`  
  s    € ä  Ó'€FØ�T‰>œJ vÓ.Ñ.Ð.r   c                ó:   — t        |«      }d| z   t        |«      z   S r\  )Úintr]  r^  s        r~   Ú_encode_datetime_msrc    s   € ä�‹Z€FØ�T‰>œJ vÓ.Ñ.Ð.r   c                ó   — d| z   S )zEncode python None.ri   rò   ©r3  rŒ   r�   rŽ   s       r~   Ú_encode_nonerf    ó   € à�T‰>Ðr   c                ó,  — |j                   }|t        j                  k(  rd| z   t        |j                  «      z   dz   S |dk(  rd| z   t        |j                  «      z   dz   S d}|t        j
                  z  r|dz  }|t        j                  z  r|dz  }|t        j                  z  r|dz  }|t        j                  z  r|d	z  }|t        j                  z  r|d
z  }|t        j                  z  r|dz  }|dz  }d| z   t        |j                  «      z   |z   S )z*Encode a python regex or bson.regex.Regex.rj   s   u r   r‘   r   ó   ió   ló   mó   só   uó   x)
ÚflagsÚreÚUNICODEr+  rÞ   Ú
IGNORECASEÚLOCALEÚ	MULTILINEÚDOTALLÚVERBOSE)r3  r¼   rŒ   r�   ro  Úsflagss         r~   Ú_encode_regexrx    s  € à�K‰K€Eà”—
‘
ÒØ˜‰~Ô 4°U·]±]Ó CÑCÀhÑNÐNØ	�!ŠØ˜‰~Ô 4°U·]±]Ó CÑCÀgÑMÐMàˆØ”2—=‘=Ò Ø�d‰NˆFØ”2—9‘9ÒØ�d‰NˆFØ”2—<‘<ÒØ�d‰NˆFØ”2—9‘9ÒØ�d‰NˆFØ”2—:‘:ÒØ�d‰NˆFØ”2—:‘:ÒØ�d‰NˆFØ�'ÑˆØ˜‰~Ô 4°U·]±]Ó CÑCÀfÑLÐLr   c                ó  — t        |«      }t        |«      }|j                  €d| z   t        |«      z   |z   S t	        |j                  d|d«      }t        d|z   t        |«      z   «      }d| z   |z   t        |«      z   |z   |z   S )zEncode bson.code.Code.rl   Frš   rn   )r-  r  rÛ   r6  Ú_dict_to_bson)r3  r¼   rŸ   r–   ÚcstringÚcstrlenrÛ   Úfull_lengths           r~   Ú_encode_coder~  5  s†   € ä˜UÓ#€GÜ�'‹l€GØ‡{�{ÐØ˜‰~¤	¨'Ó 2Ñ2°WÑ<Ð<Ü˜%Ÿ+™+ u¨d°EÓ:€EÜ˜A ™K¬#¨e«*Ñ4Ó5€KØ�T‰>˜KÑ'¬)°GÓ*<Ñ<¸wÑFÈÑNÐNr   c                óª   — d|cxk  rdk  rn nd| z   t        |«      z   S 	 d| z   t        |«      z   S # t        j                  $ r t	        d«      d‚w xY w)zEncode a python int.i   €iÿÿÿro   rq   ú&BSON can only handle up to 8-byte intsN)r6  r]  r¤   r¥   ÚOverflowErrorr2  s       r~   Ú_encode_intr‚  @  s`   € à�eÔ)˜zÕ)Ø˜‰~¤	¨%Ó 0Ñ0Ð0ð	TØ˜T‘>¤J¨uÓ$5Ñ5Ð5øÜ�|‰|ò 	TÜÐ HÓIÈtÐSð	Tús	   ¡2 ² Ac                óN   — d| z   t        |j                  |j                  «      z   S )z Encode bson.timestamp.Timestamp.rp   )Ú_PACK_TIMESTAMPrè   Útimer2  s       r~   Ú_encode_timestampr†  K  s    € à�T‰>œO¨E¯I©I°u·z±zÓBÑBÐBr   c                ól   — 	 d| z   t        |«      z   S # t        j                  $ r t        d«      d‚w xY w)zEncode a bson.int64.Int64.rq   r€  N)r]  r¤   r¥   r�  r2  s       r~   Ú_encode_longrˆ  P  s?   € ðPØ˜‰~¤
¨5Ó 1Ñ1Ð1øÜ�<‰<ò PÜÐDÓEÈ4ÐOðPús   ‚ “ 3c                ó&   — d| z   |j                   z   S )z"Encode bson.decimal128.Decimal128.rr   )Úbidr2  s       r~   Ú_encode_decimal128r‹  X  s   € à�T‰>˜EŸI™IÑ%Ð%r   c                ó   — d| z   S )zEncode bson.min_key.MinKey.rs   rò   re  s       r~   Ú_encode_minkeyr�  ]  rg  r   c                ó   — d| z   S )zEncode bson.max_key.MaxKey.rt   rò   re  s       r~   Ú_encode_maxkeyr�  b  rg  r   Ú_type_markerc              #  ó    K  — | ]  }|–— Œ y ­wrv   rò   )r  Úts     r~   r  r  �  s   è ø€ Ò-˜aœÑ-ùs   ‚c                ó  — d}	 t        t        |«         | |||«      S # t        $ r Y n!t        $ r t	        |t
        «      s‚ d}Y nw xY wt        |dd«      }t	        |t
        «      r.|t        v r&t        |   }|t         t        |«      <    || |||«      S |s\|j                  j                  rF|j                  j                  j                  t        |«      «      }	|	�t        |  |	|«      ||d¬«      S t        D ]9  }
|rŒt	        ||
«      sŒt         |
   }|t         t        |«      <    || |||«      c S  |j                  j                  }|s|�t        |  ||«      ||d¬«      S |rt        d«      ‚t        d|›d	t        |«      ›�«      ‚)
z!Encode a single name, value pair.FTr�  N)Úin_custom_call)Úin_fallback_callr€  zcannot encode object: z, of type: )Ú	_ENCODERSr®   r·   r�  rw   rb  ÚgetattrÚ_MARKERSrµ   Ú_encoder_mapr­   rA  Ú_BUILT_IN_TYPESÚ_fallback_encoderr.   )r3  r¼   r=  r–   r”  r•  Úwas_integer_overflowÚmarkerÚfuncÚcustom_encoderÚbaseÚfallback_encoders               r~   rA  rA  “  s¦  € ð !Ðð	$Üœ˜e›Ñ% d¨E°:¸tÓDÐDøÜò ÙÜò $Ü˜%¤Ô%Øð  $Òð$úô �U˜N¨DÓ1€FÜ�&œ#Ô 6¬XÑ#5Ü˜Ñˆà!%Œ	”$�u“+ÑÙ�D˜% ¨TÓ2Ð2ñ ˜d×0Ñ0×=Ò=Ø×+Ñ+×8Ñ8×<Ñ<¼TÀ%»[ÓIˆØÐ%Ü&Ø‘n UÓ+¨Z¸Èdôð ô  ò 7ˆÚ#¬
°5¸$Õ(?Ü˜T‘?ˆDà%)ŒI”d˜5“kÑ"Ù˜˜e Z°Ó6Ò6ð7ð ×)Ñ)×;Ñ;ÐÙÐ 0Ð <Ü"ØÑ" 5Ó)¨:°tÈdô
ð 	
ñ ÜÐDÓEÐEÜ
Ð2°5°)¸;ÄtÈEÃ{ÀoÐVÓ
WÐWs   „ ž	A©AÁAc                óÚ   — t        | t        «      st        d| ›�«      ‚|r3| j                  d«      rt        d| ›d�«      ‚d| v rt        d| ›d�«      ‚t	        | «      }t        ||||«      S )z Encode a single key, value pair.z.documents must have only string keys, key was ú$zkey z must not start with '$'ú.z must not contain '.')rw   r¦   r.   Ú
startswithr/  rA  )r  r¼   r=  r–   r3  s        r~   r<  r<  ×  sy   € ä�cœ3ÔÜÐ NÈsÈgÐVÓWÐWÙØ�>‰>˜#ÔÜ! D¨¨Ð/GÐ"HÓIÐIØ�#‰:Ü! D¨¨Ð/DÐ"EÓFÐFä�c‹?€DÜ˜t U¨J¸Ó=Ð=r   c           	     óò  — t        | «      rt        t        | j                  «      S 	 g }|r$d| v r |j	                  t        d| d   ||«      «       | j                  «       D ]+  \  }}|r|dk7  sŒ	 |j	                  t        ||||«      «       Œ- 	 dj                  |«      }t        t        |«      dz   «      |z   dz   S # t        $ r}t        d|› �| «      |‚d}~ww xY w# t        $ r t        d| ›�«      d‚w xY w)	zEncode a document to BSON.Ú_ids   _id zInvalid document: Nz)encoder expected a mapping type but got: r   rÀ   r‘   )r%   r   rx   r9  r³   rA  r;  r<  r.   ÚAttributeErrorÚ	TypeErrorr:  r6  r  )	Údocr=  r–   Ú	top_levelÚelementsr  r¼   ÚerrÚencodeds	            r~   rz  rz  å  s  € ô ˜3ÔÜ”E˜3Ÿ7™7Ó#Ð#ðWØˆÙ˜ #™Ø�O‰OÔ/°
¸CÀ¹JÈ
ÐTXÓYÔZØŸ)™)›+ò 	T‰JˆC�Ù  u£ðTØ—O‘OÔ$4°S¸%ÀÈTÓ$RÕSñ	Tð �h‰h�xÓ €GÜ”S˜“\ AÑ%Ó&¨Ñ0°7Ñ:Ð:øô 'ò TÜ)Ð,>¸s¸eÐ*DÀcÓJÐPSÐSûðTûäò WÜÐCÀCÀ7ÐKÓLÐRVÐVðWús0   §AC Á.B<ÂC Â<	CÃCÃCÃC ÃC6z1codec_options must be an instance of CodecOptionsc                óH   — t        |t        «      st        ‚t        | ||«      S )aŠ  Encode a document to BSON.

    A document can be any mapping type (like :class:`dict`).

    Raises :class:`TypeError` if `document` is not a mapping type,
    or contains keys that are not instances of :class:`str`. Raises
    :class:`~bson.errors.InvalidDocument` if `document` cannot be
    converted to :class:`BSON`.

    :param document: mapping type representing a document
    :param check_keys: check if keys start with '$' or
        contain '.', raising :class:`~bson.errors.InvalidDocument` in
        either case
    :param codec_options: An instance of
        :class:`~bson.codec_options.CodecOptions`.

    .. versionadded:: 3.9
    )rw   r#   Ú_CODEC_OPTIONS_TYPE_ERRORrz  )Údocumentr=  Úcodec_optionss      r~   rX   rX     s#   € ô. �m¤\Ô2Ü'Ð'ä˜ :¨}Ó=Ð=r   c                 ó   — y rv   rò   ©r|   r²  s     r~   rY   rY      ó   € àr   c                 ó   — y rv   rò   r´  s     r~   rY   rY   %  rµ  r   c                ón   — |xs t         }t        |t        «      st        ‚t	        dt        | |«      «      S )a“  Decode BSON to a document.

    By default, returns a BSON document represented as a Python
    :class:`dict`. To use a different :class:`MutableMapping` class,
    configure a :class:`~bson.codec_options.CodecOptions`::

        >>> import collections  # From Python standard library.
        >>> import bson
        >>> from bson.codec_options import CodecOptions
        >>> data = bson.encode({'a': 1})
        >>> decoded_doc = bson.decode(data)
        <type 'dict'>
        >>> options = CodecOptions(document_class=collections.OrderedDict)
        >>> decoded_doc = bson.decode(data, codec_options=options)
        >>> type(decoded_doc)
        <class 'collections.OrderedDict'>

    :param data: the BSON to decode. Any bytes-like object that implements
        the buffer protocol.
    :param codec_options: An instance of
        :class:`~bson.codec_options.CodecOptions`.

    .. versionadded:: 3.9
    ú$Union[dict[str, Any], _DocumentType])r"   rw   r#   r°  r   r  )r|   r²  r–   s      r~   rY   rY   *  s4   € ð6 ,ÒDÔ/D€DÜ�dœLÔ)Ü'Ð'äÐ6¼ÀdÈDÓ8QÓRÐRr   c           	     ó\  — t        | «      \  } }t        | «      }g }d}|dz
  }t        |j                  «      }	 ||k  rœt	        | |«      d   }||z
  |k  rt        d|› d||z
  › �«      ‚||z   dz
  }	| |	   dk7  rt        d«      ‚|r(|j                  |j                  | ||	dz    |«      «       n!|j                  t        | ||dz   |	|«      «       ||z  }||k  rŒœ|S # t
        $ r ‚ t        $ r= t        j                  «       \  }
}}t        t        |«      «      j                  |«      d‚w xY w)z)Decode a BSON data to multiple documents.r   r’   zinvalid object size: expected z, got r£   r‡   N)rV   r  r%   r«   rˆ   r-   r³   r¬   r  r  r  r¦   r  )r|   r–   r}   Údata_lenÚdocsr‹   r—   Úuse_rawr§   rž   r  r  r  s                r~   Ú_decode_allr½  L  s]  € ä" 4Ó(�J€Dˆ$Ü�4‹y€HØ "€DØ€HØ
�Q‰,€CÜ! $×"5Ñ"5Ó6€GðKØ˜ŠnÜ'¨¨hÓ7¸Ñ:ˆHØ˜(Ñ" XÒ-Ü!Ø4°X°J¸fÀXÐPXÑEXÐDYÐZóð ð  Ñ)¨AÑ-ˆGØ�G‰} Ò!Ü! )Ó,Ð,ÙØ—‘˜D×/Ñ/°°XÀÈ!ÁÐ0LÈdÓSÕTà—‘Ô-¨d°D¸(ÀQ¹,ÈÐQUÓVÔWØ˜Ñ ˆHð ˜‹nð ˆøÜò ØÜò Kä"Ÿ|™|›~Ñˆˆ9�fÜœ#˜i›.Ó)×8Ñ8¸Ó@ÀdÐJðKús   ¹B C ÃC ÃAD+c                 ó   — y rv   rò   r´  s     r~   rZ   rZ   p  rµ  r   c                 ó   — y rv   rò   r´  s     r~   rZ   rZ   u  ó   € ð r   c                ój   — |€t        | t        «      S t        |t        «      st        ‚t        | |«      S )a+  Decode BSON data to multiple documents.

    `data` must be a bytes-like object implementing the buffer protocol that
    provides concatenated, valid, BSON-encoded documents.

    :param data: BSON data
    :param codec_options: An instance of
        :class:`~bson.codec_options.CodecOptions`.

    .. versionchanged:: 3.9
       Supports bytes-like objects that implement the buffer protocol.

    .. versionchanged:: 3.0
       Removed `compile_re` option: PyMongo now always represents BSON regular
       expressions as :class:`~bson.regex.Regex` objects. Use
       :meth:`~bson.regex.Regex.try_compile` to attempt to convert from a
       BSON regular expression to a Python regular expression object.

       Replaced `as_class`, `tz_aware`, and `uuid_subtype` options with
       `codec_options`.
    )r½  r"   rw   r#   r°  r´  s     r~   rZ   rZ   |  s5   € ð0 ÐÜ˜4Ô!6Ó7Ð7ä�m¤\Ô2Ü'Ð'ä�t˜]Ó+Ð+r   c                ó
  — t        |j                  «      ri }n|j                  «       }| j                  «       D ]G  \  }}||v r9||   dk(  rt        | j                  |«      |   ||<   Œ/t        |||   |«      ||<   ŒC|||<   ŒI |S )Nr’   )r%   r«   r;  r  r9  Ú_decode_selective)ÚrawdocÚfieldsr²  rª  r  r¼   s         r~   rÃ  rÃ  �  s™   € ô ˜=×7Ñ7Ô8ð  ‰ð ×*Ñ*Ó,ˆØ—l‘l“nò 	‰
ˆˆUØ�&‰=Ø�c‰{˜aÒÜ(¨¯©°]ÓCÀCÑH��C’ä,Ø˜6 #™;¨ó��C’ð ˆC�ŠHð	ð €Jr   c                óT  — d}t        | «      }t        ||t        |«      «      \  }}|dz  }g }|j                  }||dz
  k  rG||   dk7  r|dz  }||   dk7  rŒ|dz  }t        |||«      \  }} |||||z    «       ||z  }||dz
  k  rŒG||k7  rt	        d«      ‚dj                  |«      S )Nr   r‡   r’   r  r   )rz   r©   r  r³   r-   r:  )r|   r‹   r}   r  r—   Úbuffersr³   r§   s           r~   Ú_array_of_documents_to_bufferrÈ  ´  sØ   € à€HÜ�dÓ€DÜ˜d H¬c°$«iÓ8�F€A€sØ��M€HØ "€GØ�^‰^€FØ
�S˜1‘WÒ
à�8‰n Ò!Ø˜‰MˆHð �8‰n Ó!à�A‰ˆÜ& t¨X°sÓ;‰ˆ�!Ùˆt�H˜x¨(Ñ2Ð3Ô4Ø�HÑˆð �S˜1‘WÓ
ð �3‚ÜÐ8Ó9Ð9Ø�8‰8�GÓÐr   c                ó”   — | j                  d«      }|sydD ]/  }|j                  |«      }|sŒt        |«      }|r|g||<   Œ+g ||<   Œ1 y)z=Convert raw array of documents to a stream of BSON documents.ÚcursorN)Ú
firstBatchÚ	nextBatch)r­   rÈ  )r±  rÊ  r  Úbatchr|   s        r~   Ú&_convert_raw_document_lists_to_streamsrÎ  Í  sY   € à�\‰\˜(Ó#€FÙØØ*ò ˆØ—
‘
˜3“ˆÙØÜ,¨UÓ3ˆÙØ˜&ˆF�3ŠKàˆF�3ŠKñr   c                óè   — |j                   j                  st        | |«      S |st        | |j                  d¬«      «      S ddlm} |j                  |d¬«      }t        | |«      }t        |||«      gS )aW  Decode BSON data to a single document while using user-provided
    custom decoding logic.

    `data` must be a string representing a valid, BSON-encoded document.

    :param data: BSON data
    :param codec_options: An instance of
        :class:`~bson.codec_options.CodecOptions` with user-specified type
        decoders. If no decoders are found, this method is the same as
        ``decode_all``.
    :param fields: Map of document namespaces where data that needs
        to be custom decoded lives or None. For example, to custom decode a
        list of objects in 'field1.subfield1', the specified value should be
        ``{'field1': {'subfield1': 1}}``. If ``fields``  is an empty map or
        None, this method is the same as ``decode_all``.

    :return: Single-member list containing the decoded document.

    .. versionadded:: 3.8
    N)rµ   r   r<   )r«   rµ   )rµ   r¶   rZ   Úwith_optionsÚbson.raw_bsonr=   r  rÃ  )r|   r²  rÅ  r=   Úinternal_codec_optionsÚ_docs         r~   Ú_decode_all_selectiverÔ  Ý  s‰   € ð. ×&Ñ&×3Ò3Ü˜$ Ó.Ð.áÜ˜$ × :Ñ :ÈÐ :Ó NÓOÐOõ .à<I×<VÑ<VØ&°dð =Wó =Ðô ˜Ð5Ó6€DäØØØó	
ðð r   c                 ó   — y rv   rò   r´  s     r~   r[   r[   
  rµ  r   c                 ó   — y rv   rò   r´  s     r~   r[   r[     rµ  r   c              #  óØ   K  — |xs t         }t        |t        «      st        ‚d}t	        | «      dz
  }||k  r1t        | |«      d   }| |||z    }||z  }t        ||«      –— ||k  rŒ0yy­w)aô  Decode BSON data to multiple documents as a generator.

    Works similarly to the decode_all function, but yields one document at a
    time.

    `data` must be a string of concatenated, valid, BSON-encoded
    documents.

    :param data: BSON data
    :param codec_options: An instance of
        :class:`~bson.codec_options.CodecOptions`.

    .. versionchanged:: 3.0
       Replaced `as_class`, `tz_aware`, and `uuid_subtype` options with
       `codec_options`.

    .. versionadded:: 2.8
    r   r’   N)r"   rw   r#   r°  r  rˆ   r  )r|   r²  r–   r‹   r—   r§   r¬  s          r~   r[   r[     s~   è ø€ ð* Ò1Ô1€DÜ�dœLÔ)Ü'Ð'à€HÜ
ˆd‹)�a‰-€CØ
�SŠ.Ü# D¨(Ó3°AÑ6ˆØ˜ 8¨hÑ#6Ð7ˆØ�HÑˆä˜H dÓ+Ò+ð �S�.ùs   ‚A%A*Á(A*c                 ó   — y rv   rò   ©Úfile_objr²  s     r~   r\   r\   7  rÀ  r   c                 ó   — y rv   rò   rÙ  s     r~   r\   r\   >  rÀ  r   c              #  óø   K  — |xs t         }	 | j                  d«      }|syt        |«      dk7  rt        d«      ‚t	        |d«      d   dz
  }|| j                  t        d|«      «      z   }t        ||«      –— Œl­w)a  Decode bson data from a file to multiple documents as a generator.

    Works similarly to the decode_all function, but reads from the file object
    in chunks and parses bson in chunks, yielding one document at a time.

    :param file_obj: A file object containing BSON data.
    :param codec_options: An instance of
        :class:`~bson.codec_options.CodecOptions`.

    .. versionchanged:: 3.0
       Replaced `as_class`, `tz_aware`, and `uuid_subtype` options with
       `codec_options`.

    .. versionadded:: 2.8
    r‡   zcut off in middle of objsizer   N)r"   Úreadr  r-   rˆ   Úmaxr  )rÚ  r²  r–   Ú	size_datar§   r¬  s         r~   r\   r\   E  s„   è ø€ ð& Ò1Ô1€DØ
à!Ÿ™ qÓ)ˆ	ÙØÜ�‹^˜qÒ ÜÐ<Ó=Ð=Ü# I¨qÓ1°!Ñ4°qÑ8ˆØ˜xŸ}™}¬S°°HÓ-=Ó>Ñ>ˆÜ˜H dÓ+Ò+ð ùs   ‚A8A:c                ó’   — t        | t        «      st        dt        | «      › �«      ‚	 t	        | t
        «       y# t        $ r Y yw xY w)a  Check that the given string represents valid :class:`BSON` data.

    Raises :class:`TypeError` if `bson` is not an instance of
    :class:`bytes`. Returns ``True``
    if `bson` is valid :class:`BSON`, ``False`` otherwise.

    :param bson: the data to be validated
    z:BSON data must be an instance of a subclass of bytes, not TF)rw   rx   r©  r®   r  r"   r  )Úbsons    r~   r]   r]   e  sN   € ô �dœEÔ"ÜÐTÔUYÐZ^ÓU_ÐT`ÐaÓbÐbðÜ�dÔ1Ô2ØøÜò Ùðús   ©: º	AÁAc                  óL   — e Zd ZdZedef	 	 	 	 	 	 	 	 	 dd„«       Zef	 	 	 dd„Zy)r^   zâBSON (Binary JSON) data.

    .. warning:: Using this class to encode and decode BSON adds a performance
       cost. For better performance use the module level functions
       :func:`encode` and :func:`decode` instead.
    Fc                ó(   —  | t        |||«      «      S )a  Encode a document to a new :class:`BSON` instance.

        A document can be any mapping type (like :class:`dict`).

        Raises :class:`TypeError` if `document` is not a mapping type,
        or contains keys that are not instances of
        :class:`str'. Raises :class:`~bson.errors.InvalidDocument`
        if `document` cannot be converted to :class:`BSON`.

        :param document: mapping type representing a document
        :param check_keys: check if keys start with '$' or
            contain '.', raising :class:`~bson.errors.InvalidDocument` in
            either case
        :param codec_options: An instance of
            :class:`~bson.codec_options.CodecOptions`.

        .. versionchanged:: 3.0
           Replaced `uuid_subtype` option with `codec_options`.
        )rX   )Úclsr±  r=  r²  s       r~   rX   zBSON.encode€  s   € ñ4 ”6˜( J°Ó>Ó?Ð?r   c                ó   — t        | |«      S )a  Decode this BSON data.

        By default, returns a BSON document represented as a Python
        :class:`dict`. To use a different :class:`MutableMapping` class,
        configure a :class:`~bson.codec_options.CodecOptions`::

            >>> import collections  # From Python standard library.
            >>> import bson
            >>> from bson.codec_options import CodecOptions
            >>> data = bson.BSON.encode({'a': 1})
            >>> decoded_doc = bson.BSON(data).decode()
            <type 'dict'>
            >>> options = CodecOptions(document_class=collections.OrderedDict)
            >>> decoded_doc = bson.BSON(data).decode(codec_options=options)
            >>> type(decoded_doc)
            <class 'collections.OrderedDict'>

        :param codec_options: An instance of
            :class:`~bson.codec_options.CodecOptions`.

        .. versionchanged:: 3.0
           Removed `compile_re` option: PyMongo now always represents BSON
           regular expressions as :class:`~bson.regex.Regex` objects. Use
           :meth:`~bson.regex.Regex.try_compile` to attempt to convert from a
           BSON regular expression to a Python regular expression object.

           Replaced `as_class`, `tz_aware`, and `uuid_subtype` options with
           `codec_options`.
        )rY   )Úselfr²  s     r~   rY   zBSON.decodeœ  s   € ô@ �d˜MÓ*Ð*r   N)
rä  z
Type[BSON]r±  úMapping[str, Any]r=  Úboolr²  úCodecOptions[Any]Úreturnr^   )r²  ré  rê  údict[str, Any])Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr"   rX   rY   rò   r   r~   r^   r^   x  ss   „ ñð ð !Ø+@ð	@Øð@à#ð@ð ð@ð )ð	@ð
 
ò@ó ð@ð8 2Gð +Ø.ð +à	ô +r   r^   c                 ó   — t         S )zIs the C extension installed?)Ú_USE_Crò   r   r~   r_   r_   ¿  s   € ä€Mr   c                 ó~   — t         j                  j                  «       rt         j                  j                  «        yy)z!Releases the ObjectID lock child.N)r6   Ú	_inc_lockÚlockedÚreleaserò   r   r~   Ú_after_forkr÷  Ä  s+   € ä×Ñ× Ñ Ô"Ü×Ñ×"Ñ"Õ$ð #r   Úregister_at_fork)Úafter_in_child)r|   r	   rê  zTuple[Any, memoryview])rƒ   rb  r„   r¦   rê  r   )r|   r	   rŠ   r	   r‹   rb  rŒ   r	   r�   r	   rŽ   r	   rê  úTuple[int, int])
r|   r	   r}   r	   r‹   rb  r–   ré  rê  úTuple[str, int])r|   r	   rŠ   r	   r‹   rb  rŒ   r	   r�   r	   rŽ   r	   rê  zTuple[float, int])r|   r	   r}   r	   r‹   rb  rž   rb  r–   ré  rŸ   r	   rê  rû  )r|   r	   r‹   rb  rž   rb  rê  rú  )r|   r	   r}   r	   r‹   rb  rž   rb  r–   ré  rŸ   r	   rê  úTuple[Any, int])r|   r	   r}   r	   r‹   rb  rž   rb  r–   ré  r„   r¦   rê  rü  )r|   r	   rŠ   r	   r‹   rb  rž   rb  r–   ré  r�   r	   rê  z$Tuple[Union[Binary, uuid.UUID], int])r|   r	   rŠ   r	   r‹   rb  rŒ   r	   r�   r	   rŽ   r	   rê  zTuple[ObjectId, int])r|   r	   rŠ   r	   r‹   rb  rŒ   r	   r�   r	   rŽ   r	   rê  zTuple[bool, int])r|   r	   rŠ   r	   r‹   rb  rŒ   rb  r–   ré  r�   r	   rê  z0Tuple[Union[datetime.datetime, DatetimeMS], int])r|   r	   r}   r	   r‹   rb  rž   rb  r–   ré  r„   r¦   rê  úTuple[Code, int])r|   r	   r}   r	   r‹   rb  rÙ   rb  r–   ré  r„   r¦   rê  rý  )r|   r	   r}   r	   r‹   rb  rŒ   r	   r–   ré  r�   r	   rê  zTuple[Regex[Any], int])r|   r	   r}   r	   r‹   rb  rž   rb  r–   ré  r„   r¦   rê  zTuple[DBRef, int])r|   r	   rŠ   r	   r‹   rb  rŒ   r	   r�   r	   rŽ   r	   rê  zTuple[Timestamp, int])r|   r	   rŠ   r	   r‹   rb  rŒ   r	   r�   r	   rŽ   r	   rê  zTuple[Int64, int])r|   r	   rŠ   r	   r‹   rb  rŒ   r	   r�   r	   rŽ   r	   rê  zTuple[Decimal128, int])F)r|   r	   r}   r	   r‹   rb  rž   rb  r–   ré  r  rè  rê  r  )r|   r	   r‹   rb  rž   rb  r–   zCodecOptions[RawBSONDocument]r¹   r  r  rè  rê  r  )NF)r|   r	   r}   r	   r‹   rb  rž   rb  r–   ré  r¹   r	   r  rè  rê  r	   )r|   r	   r–   úCodecOptions[_DocumentType]rê  r>   )rê  zGenerator[bytes, None, None])r*  zUnion[str, bytes]rê  rx   )r*  r¦   rê  rx   )
r3  rx   r¼   ÚfloatrŒ   r	   r�   r	   rê  rx   )
r3  rx   r¼   rx   rŒ   r	   r�   r	   rê  rx   )
r3  rx   r¼   r	   r=  rè  r–   ré  rê  rx   )
r3  rx   r¼   r+   r=  rè  r–   ré  rê  rx   )
r3  rx   r¼   zSequence[Any]r=  rè  r–   ré  rê  rx   )
r3  rx   r¼   r¦   rŒ   r	   r�   r	   rê  rx   )
r3  rx   r¼   r   rŒ   r	   r�   r	   rê  rx   )
r3  rx   r¼   z	uuid.UUIDrŸ   r	   r–   ré  rê  rx   )
r3  rx   r¼   r6   rŸ   r	   r�   r	   rê  rx   )
r3  rx   r¼   rè  rŒ   r	   r�   r	   rê  rx   )
r3  rx   r¼   zdatetime.datetimerŒ   r	   r�   r	   rê  rx   )
r3  rx   r¼   r(   rŒ   r	   r�   r	   rê  rx   )
r3  rx   rŒ   r	   r�   r	   rŽ   r	   rê  rx   )
r3  rx   r¼   z
Regex[Any]rŒ   r	   r�   r	   rê  rx   )
r3  rx   r¼   r!   rŸ   r	   r–   ré  rê  rx   )
r3  rx   r¼   rb  rŒ   r	   r�   r	   rê  rx   )
r3  rx   r¼   r	   rŒ   r	   r�   r	   rê  rx   )
r3  rx   r¼   r,   rŒ   r	   r�   r	   rê  rx   )FF)r3  rx   r¼   r	   r=  rè  r–   ré  r”  rè  r•  rè  rê  rx   )
r  r	   r¼   r	   r=  rè  r–   ré  rê  rx   )T)
rª  r	   r=  rè  r–   ré  r«  rè  rê  rx   )r±  rç  r=  rè  r²  ré  rê  rx   rv   )r|   r?   r²  ÚNonerê  rë  )r|   r?   r²  rþ  rê  r>   )r|   r?   r²  ú%Optional[CodecOptions[_DocumentType]]rê  r¸  )r|   r?   r–   rþ  rê  úlist[_DocumentType])r|   r?   r²  r   rê  zlist[dict[str, Any]])r|   r?   r²  rþ  rê  r  )r|   r?   r²  r  rê  z0Union[list[dict[str, Any]], list[_DocumentType]])rÄ  r	   rÅ  r	   r²  rþ  rê  r>   )r|   zUnion[memoryview, bytes]rê  rx   )r±  r	   rê  r   )r|   r	   r²  rþ  rÅ  r	   rê  r  )r|   rx   r²  r   rê  úIterator[dict[str, Any]])r|   rx   r²  rþ  rê  úIterator[_DocumentType])r|   rx   r²  r  rê  ú8Union[Iterator[dict[str, Any]], Iterator[_DocumentType]])rÚ  úUnion[BinaryIO, IO[bytes]]r²  r   rê  r  )rÚ  r  r²  rþ  rê  r  )rÚ  r  r²  r  rê  r  )rá  rx   rê  rè  )rê  rè  )rê  r   )Ýrï  Ú
__future__r   Údatetimer!  Úosrp  r¤   r  ÚuuidÚcodecsr   r”   r   r(  Úcollectionsr   Ú_abcÚtypingr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úbson.binaryr   r   r   r   r   r   r   r    Ú	bson.coder!   Úbson.codec_optionsr"   r#   r$   r%   Úbson.datetime_msr&   r'   r(   r)   r*   Ú
bson.dbrefr+   Úbson.decimal128r,   Úbson.errorsr-   r.   r/   Ú
bson.int64r0   Úbson.max_keyr2   Úbson.min_keyr4   Úbson.objectidr6   Ú
bson.regexr7   Úbson.sonr8   r9   Úbson.timestampr:   Úbson.tz_utilr;   rÑ  r=   Úbson.typingsr>   r?   rá  r@   rò  ÚImportErrorÚ__all__rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   ÚStructÚunpack_fromr›   ÚunpackÚ_UNPACK_INTrˆ   rÂ   rÓ   rç   rV   r…   r�   r˜   rœ   r¡   r©   r±   r¾   rÊ   rÎ   rÑ   rÔ   r×   rÜ   rá   rå   rê   rì   rð   r  r´   Ú__annotations__r  r¦   r  r  r¬   r  Úpackr1  r6  rP  r]  r„  ÚtupleÚranger   rW   r+  r-  r/  r4  r7  r?  rG  rK  rN  rQ  rU  rX  rZ  r`  rc  rf  rx  r~  r‚  r†  rˆ  r‹  r�  r�  rè  rx   Údictrÿ  rb  Úlistr®   ÚUUIDr–  r˜  Ú_typÚhasattrr�  rš  rA  r<  rz  r©  r°  rX   rY   r½  rZ   rÃ  rÈ  rÎ  rÔ  r[   r\   r]   r^   r_   r÷  rø  rò   r   r~   ú<module>r.     sB  ðò8õr #ã Û Û 	Û 	Û Û 
Û Ý 0Ý 0Ý #÷÷ ÷ ÷ ÷ ÷*	÷ 	ó 	õ ÷ó ÷õ õ Ý &ß GÑ GÝ Ý Ý Ý "Ý ß !Ý $Ý ñ Ý-ß;ðÝà€Fò=€ð~ €Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€ð #�V—]‘] 4Ó(×4Ñ4Ð Øˆf�m‰m˜DÓ!×(Ñ(€Ø �6—=‘= Ó&×2Ñ2Ð Ø+˜fŸm™m¨EÓ2×>Ñ>Ð Ø!�F—M‘M $Ó'×3Ñ3Ð Ø&˜Ÿ™ uÓ-×9Ñ9Ð ó óð=Ø
ð=Øð=Ø%(ð=Ø25ð=Ø?Bð=ØLOð=àó=óbð?Ø
ð?Øð?Ø%(ð?Ø25ð?Ø?Bð?ØLOð?àó?ðbØ
ðbØðbØ$'ðbØ25ðbØ=NðbØWZðbàóbóð"Ø
ðØðØ$'ðØ25ðØ=NðØWZðàóð*' Ø
ð' Øð' Ø$'ð' Ø25ð' Ø=Nð' Ø^að' àó' ðT"Ø
ð"Øð"Ø%(ð"Ø36ð"Ø>Oð"ØY\ð"à)ó"ðJ-Ø
ð-Øð-Ø%(ð-Ø25ð-Ø?Bð-ØLOð-àó-ð
BØ
ð
BØð
BØ%(ð
BØ25ð
BØ?Bð
BØLOð
Bàó
BðYØ
ðYØðYØ%(ðYØ25ðYØ=NðYØX[ðYà5óYð Ø
ð Øð Ø$'ð Ø25ð Ø=Nð Ø^að àó ð	'Ø
ð	'Øð	'Ø$'ð	'Ø36ð	'Ø>Oð	'Ø_bð	'àó	'ðØ
ðØðØ$'ðØ14ðØ<MðØWZðàóð,Ø
ð,Øð,Ø$'ð,Ø25ð,Ø=Nð,Ø^að,àó,ð3Ø
ð3Øð3Ø%(ð3Ø25ð3Ø?Bð3ØLOð3àó3ðEØ
ðEØðEØ%(ðEØ25ðEØ?BðEØLOðEàóEð8Ø
ð8Øð8Ø%(ð8Ø25ð8Ø?Bð8ØLOð8àó8ð>ÙˆƒL�*ð>áˆƒL�+ð>ñ ˆƒL�+ð>ñ ˆƒL�*ð	>ñ
 ˆƒL�+ð>ñ ˆƒLÑ4ð>ñ ˆƒL�(ð>ñ ˆƒL�,ð>ñ ˆƒL�)ð>ñ ˆƒLÑ4ð>ñ ˆƒL�*ð>ñ ˆƒL�(ð>ñ ˆƒL�)ð>ñ ˆƒL�+ð>ñ ˆƒLÐ#ð>ñ  ˆƒL�(ð!>ñ" ˆƒL�.ð#>ñ$ ˆƒL�*ÙˆƒL�/ÙˆƒLÑ8ÙˆƒLÑ8ñ+>€Ð:ó ñ2 
ð  ð
Øð
àð
ð ð
ð ð	
ð
  ð
ð ð
ð 
ô
ð*  ð-Øð-àð-ð ð-ð ð	-ð
  ð-ð ð-ð 
ó-ñ< ˆT˜¨¨S¨Ñ1Ô2€ð ðØ
ðàðð ðð (ð	ð
 ðð ðð óð( ØðØ
ðà
ðð ðð ð	ð
 ðð ðð ðð 	óó.Kñ  
Ø×(Ò(€Mð ˆf�m‰m˜DÓ!×&Ò&€ØˆF�M‰M˜$Ó×$Ò$€	Ø$�v—}‘} UÓ+×0Ò0Ð ØˆV�]‰]˜4Ó ×%Ò%€
Ø�&—-‘- Ó&×+Ò+€ÙÑJ¹eÀD»kÔJÓJ€ó;ó2ó$2ó.ó/ó
DóFóð"FØ
ðFØ%ðFØ37ðFØ?PðFà
óFóJóNó5ó)ó
;ó
/ó/óó
Mó4OóTóCó
Pó&ó
ó
ðØˆ,ðà	ˆ=ðð ×ÑÐ'ðð Ð#ð	ð
 	ˆ/ðð 
ˆ=ðð ˆðð 	ˆ,ðð ˆðð 
ˆ<ðñ 	ˆƒJ�ðð 	‡I‚Iˆ|ðð ˆNðð 
ˆ<ðð 	ˆ,ðð  
ˆ=ð!ð" ˆNð#ð$ ˆNØÐØ	ˆ=Øˆ]ØˆØÐ ØÐ"à‡L�L�/ñ5€	ð< €Øò 6€DÙˆt�^Õ$Ø&/°¡oˆ�×"Ò"Ò#ð6ñ
 Ñ- 9Ô-Ó-€ð !Ø"ðAXØ
ðAXàðAXð ðAXð ð	AXð
 ðAXð ðAXð óAXóH>ð LPð;Ø	ð;Øð;Ø&7ð;ØDHð;à
ó;ñ. 
Ø×(Ò(€Mñ &Ð&YÓZÐ ð
 Ø'<ð>Øð>àð>ð %ð>ð ó	>ð: 
óó 
ðð 
òó 
ðð
 SWðSØ
ðSØ*OðSà)óSóDKñ@ 
Ø×$Ò$€Kð 
óó 
ðð 
ðØ
ðØ*Eðàòó 
ðð SWð,Ø
ð,Ø*Oð,à5ó,ðBØðØðØ-Hðàóó.ñ* 
Ø$*×$HÒ$HÐ!óð *Ø
ð*Ø9ð*ØCFð*àó*ðZ 
óó 
ðð 
òó 
ðð
 IMð ,Ø
ð ,Ø Eð ,à=ó ,ðF 
à@DðØ(ðØ9=ðàòó 
ðð 
ðØ(ðØ9Tðàòó 
ðð <@ð,Ø(ð,à8ð,ð >ó,ó@ô&D+ˆ5ô D+óNó
%ñ ˆ2Ð!Ô"ð €B×Ò {Ö3ð	 #øði) ò ØƒFðús   Ã-\8 Ü8]Ý]