§
    Ý
@gìj  ã                  óž  — d dl mZ d dlmZmZmZ d dlmZ d dlZddl	m
Z
 ddl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 ddlmZmZ ddlmZmZ ddlm Z m!Z! ddl"m#Z#m$Z$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+ ddgZ, G d„ de¦  «        Z- G d„ de¦  «        Z. G d„ d¦  «        Z/ G d„ d¦  «        Z0 G d„ d¦  «        Z1 G d„ d¦  «        Z2dS )é    )Úannotations)ÚUnionÚIterableÚOptional)ÚLiteralNé   )Ú_legacy_response)Ú	NOT_GIVENÚBodyÚQueryÚHeadersÚNotGiven)Úmaybe_transformÚasync_maybe_transform)Úcached_property)ÚSyncAPIResourceÚAsyncAPIResource)Úto_streamed_response_wrapperÚ"async_to_streamed_response_wrapper)ÚSyncCursorPageÚAsyncCursorPage)ÚAsyncPaginatorÚmake_request_options)Úmessage_list_paramsÚmessage_create_paramsÚmessage_update_params)ÚMessage)ÚMessageDeleted)ÚMessageContentPartParamÚMessagesÚAsyncMessagesc            
      ó²   — e Zd Zed.d„¦   «         Zed/d„¦   «         Zeedddedœd0d„Zdddedœd1d„Zedddedœd2d „Z	eeeeeddded!œ	d3d+„Z
dddedœd4d-„ZdS )5r    ÚreturnÚMessagesWithRawResponsec                ó    — t          | ¦  «        S ©a  
        This property can be used as a prefix for any HTTP method call to return the
        the raw response object instead of the parsed content.

        For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
        )r$   ©Úselfs    úZ/var/www/piapp/venv/lib/python3.11/site-packages/openai/resources/beta/threads/messages.pyÚwith_raw_responsezMessages.with_raw_response!   s   € õ ' tÑ,Ô,Ð,ó    ÚMessagesWithStreamingResponsec                ó    — t          | ¦  «        S ©zÌ
        An alternative to `.with_raw_response` that doesn't eagerly read the response body.

        For more information, see https://www.github.com/openai/openai-python#with_streaming_response
        )r,   r'   s    r)   Úwith_streaming_responsez Messages.with_streaming_response+   s   € õ -¨TÑ2Ô2Ð2r+   N©ÚattachmentsÚmetadataÚextra_headersÚextra_queryÚ
extra_bodyÚtimeoutÚ	thread_idÚstrÚcontentú-Union[str, Iterable[MessageContentPartParam]]ÚroleúLiteral['user', 'assistant']r1   ú?Optional[Iterable[message_create_params.Attachment]] | NotGivenr2   úOptional[object] | NotGivenr3   úHeaders | Noner4   úQuery | Noner5   úBody | Noner6   ú'float | httpx.Timeout | None | NotGivenr   c          
     óÚ   — |st          d|›�¦  «        ‚ddi|pi ¥}|                      d|› d�t          ||||dœt          j        ¦  «        t          ||||	¬¦  «        t          ¬¦  «        S )	áØ  
        Create a message.

        Args:
          content: The text contents of the message.

          role:
              The role of the entity that is creating the message. Allowed values include:

              - `user`: Indicates the message is sent by an actual user and should be used in
                most cases to represent user-generated messages.
              - `assistant`: Indicates the message is generated by the assistant. Use this
                value to insert messages from the assistant into the conversation.

          attachments: A list of files attached to the message, and the tools they should be added to.

          metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
              for storing additional information about the object in a structured format. Keys
              can be a maximum of 64 characters long and values can be a maximum of 512
              characters long.

          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        ú8Expected a non-empty value for `thread_id` but received úOpenAI-Betaúassistants=v2ú	/threads/ú	/messages©r9   r;   r1   r2   ©r3   r4   r5   r6   ©ÚbodyÚoptionsÚcast_to)Ú
ValueErrorÚ_postr   r   ÚMessageCreateParamsr   r   ©
r(   r7   r9   r;   r1   r2   r3   r4   r5   r6   s
             r)   ÚcreatezMessages.create4   s²   € ðX ð 	gÝÐeÐXaÐeÐeÑfÔfÐfØ&¨ÐQ¸MÐ<OÈRÐQˆØ�zŠzØ,˜	Ð,Ð,Ð,Ý à&Ø Ø#.Ø (ð	ð õ &Ô9ñô õ )Ø+¸ÐQ[Ðelðñ ô õ ð ñ 
ô 
ð 	
r+   rK   Ú
message_idc          	     óÊ   — |st          d|›�¦  «        ‚|st          d|›�¦  «        ‚ddi|pi ¥}|                      d|› d|› �t          ||||¬¦  «        t          ¬¦  «        S )	áG  
        Retrieve a message.

        Args:
          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        rE   ú9Expected a non-empty value for `message_id` but received rF   rG   rH   ú
/messages/rK   ©rN   rO   ©rP   Ú_getr   r   ©r(   rU   r7   r3   r4   r5   r6   s          r)   ÚretrievezMessages.retrievet   sª   € ð0 ð 	gÝÐeÐXaÐeÐeÑfÔfÐfØð 	iÝÐgÐYcÐgÐgÑhÔhÐhØ&¨ÐQ¸MÐ<OÈRÐQˆØ�yŠyØ9˜	Ð9Ð9¨ZÐ9Ð9Ý(Ø+¸ÐQ[Ðelðñ ô õ ð ñ 
ô 
ð 	
r+   ©r2   r3   r4   r5   r6   c          
     ó   — |st          d|›�¦  «        ‚|st          d|›�¦  «        ‚ddi|pi ¥}|                      d|› d|› �t          d|it          j        ¦  «        t          ||||¬¦  «        t          ¬	¦  «        S )
á‚  
        Modifies a message.

        Args:
          metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
              for storing additional information about the object in a structured format. Keys
              can be a maximum of 64 characters long and values can be a maximum of 512
              characters long.

          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        rE   rX   rF   rG   rH   rY   r2   rK   rL   )rP   rQ   r   r   ÚMessageUpdateParamsr   r   ©r(   rU   r7   r2   r3   r4   r5   r6   s           r)   ÚupdatezMessages.update™   sÀ   € ð< ð 	gÝÐeÐXaÐeÐeÑfÔfÐfØð 	iÝÐgÐYcÐgÐgÑhÔhÐhØ&¨ÐQ¸MÐ<OÈRÐQˆØ�zŠzØ9˜	Ð9Ð9¨ZÐ9Ð9Ý  *¨hÐ!7Õ9NÔ9bÑcÔcÝ(Ø+¸ÐQ[Ðelðñ ô õ ð ñ 
ô 
ð 	
r+   ©	ÚafterÚbeforeÚlimitÚorderÚrun_idr3   r4   r5   r6   rf   ústr | NotGivenrg   rh   úint | NotGivenri   ú!Literal['asc', 'desc'] | NotGivenrj   úSyncCursorPage[Message]c       	        óþ   — |st          d|›�¦  «        ‚ddi|pi ¥}|                      d|› d�t          t                   t	          |||	|
t          |||||dœt          j        ¦  «        ¬¦  «        t          ¬¦  «        S ©	ah  
        Returns a list of messages for a given thread.

        Args:
          after: A cursor for use in pagination. `after` is an object ID that defines your place
              in the list. For instance, if you make a list request and receive 100 objects,
              ending with obj_foo, your subsequent call can include after=obj_foo in order to
              fetch the next page of the list.

          before: A cursor for use in pagination. `before` is an object ID that defines your place
              in the list. For instance, if you make a list request and receive 100 objects,
              starting with obj_foo, your subsequent call can include before=obj_foo in order
              to fetch the previous page of the list.

          limit: A limit on the number of objects to be returned. Limit can range between 1 and
              100, and the default is 20.

          order: Sort order by the `created_at` timestamp of the objects. `asc` for ascending
              order and `desc` for descending order.

          run_id: Filter messages by the run ID that generated them.

          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        rE   rF   rG   rH   rI   )rf   rg   rh   ri   rj   )r3   r4   r5   r6   Úquery)ÚpagerN   Úmodel)rP   Ú_get_api_listr   r   r   r   r   ÚMessageListParams©r(   r7   rf   rg   rh   ri   rj   r3   r4   r5   r6   s              r)   ÚlistzMessages.listÅ   s¾   € ð\ ð 	gÝÐeÐXaÐeÐeÑfÔfÐfØ&¨ÐQ¸MÐ<OÈRÐQˆØ×!Ò!Ø,˜	Ð,Ð,Ð,Ý¥Ô(Ý(Ø+Ø'Ø%ØÝ%à!&Ø"(Ø!&Ø!&Ø"(ðð õ (Ô9ñ	ô 	ðñ ô õ  ð' "ñ 
ô 
ð 	
r+   r   c          	     óÊ   — |st          d|›�¦  «        ‚|st          d|›�¦  «        ‚ddi|pi ¥}|                      d|› d|› �t          ||||¬¦  «        t          ¬¦  «        S )	áF  
        Deletes a message.

        Args:
          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        rE   rX   rF   rG   rH   rY   rK   rZ   ©rP   Ú_deleter   r   r]   s          r)   ÚdeletezMessages.delete  sª   € ð0 ð 	gÝÐeÐXaÐeÐeÑfÔfÐfØð 	iÝÐgÐYcÐgÐgÑhÔhÐhØ&¨ÐQ¸MÐ<OÈRÐQˆØ�|Š|Ø9˜	Ð9Ð9¨ZÐ9Ð9Ý(Ø+¸ÐQ[Ðelðñ ô õ #ð ñ 
ô 
ð 	
r+   )r#   r$   )r#   r,   ©r7   r8   r9   r:   r;   r<   r1   r=   r2   r>   r3   r?   r4   r@   r5   rA   r6   rB   r#   r   ©rU   r8   r7   r8   r3   r?   r4   r@   r5   rA   r6   rB   r#   r   ©rU   r8   r7   r8   r2   r>   r3   r?   r4   r@   r5   rA   r6   rB   r#   r   )r7   r8   rf   rk   rg   rk   rh   rl   ri   rm   rj   rk   r3   r?   r4   r@   r5   rA   r6   rB   r#   rn   ©rU   r8   r7   r8   r3   r?   r4   r@   r5   rA   r6   rB   r#   r   ©Ú__name__Ú
__module__Ú__qualname__r   r*   r/   r
   rT   r^   rd   rw   r|   © r+   r)   r    r        sX  € € € € € Øð-ð -ð -ñ „_ð-ð ð3ð 3ð 3ñ „_ð3ð XaØ09ð )-Ø$(Ø"&Ø;Dð>
ð >
ð >
ð >
ð >
ð >
ðN )-Ø$(Ø"&Ø;Dð#
ð #
ð #
ð #
ð #
ð #
ðT 1:ð )-Ø$(Ø"&Ø;Dð*
ð *
ð *
ð *
ð *
ð *
ð` !*Ø!*Ø )Ø3<Ø!*ð )-Ø$(Ø"&Ø;DðE
ð E
ð E
ð E
ð E
ð E
ð\ )-Ø$(Ø"&Ø;Dð#
ð #
ð #
ð #
ð #
ð #
ð #
ð #
r+   c            
      ó²   — e Zd Zed.d„¦   «         Zed/d„¦   «         Zeedddedœd0d„Zdddedœd1d„Zedddedœd2d „Z	eeeeeddded!œ	d3d+„Z
dddedœd4d-„ZdS )5r!   r#   ÚAsyncMessagesWithRawResponsec                ó    — t          | ¦  «        S r&   )r‡   r'   s    r)   r*   zAsyncMessages.with_raw_response3  s   € õ ,¨DÑ1Ô1Ð1r+   Ú"AsyncMessagesWithStreamingResponsec                ó    — t          | ¦  «        S r.   )r‰   r'   s    r)   r/   z%AsyncMessages.with_streaming_response=  s   € õ 2°$Ñ7Ô7Ð7r+   Nr0   r7   r8   r9   r:   r;   r<   r1   r=   r2   r>   r3   r?   r4   r@   r5   rA   r6   rB   r   c          
   ƒ  óö   K  — |st          d|›�¦  «        ‚ddi|pi ¥}|                      d|› d�t          ||||dœt          j        ¦  «        ƒ d{V —†t          ||||	¬¦  «        t          ¬	¦  «        ƒ d{V —†S )
rD   rE   rF   rG   rH   rI   rJ   NrK   rL   )rP   rQ   r   r   rR   r   r   rS   s
             r)   rT   zAsyncMessages.createF  sò   è è € ðX ð 	gÝÐeÐXaÐeÐeÑfÔfÐfØ&¨ÐQ¸MÐ<OÈRÐQˆØ—Z’ZØ,˜	Ð,Ð,Ð,Ý,à&Ø Ø#.Ø (ð	ð õ &Ô9ñô ð ð ð ð ð ð õ )Ø+¸ÐQ[Ðelðñ ô õ ð  ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r+   rK   rU   c          	   ƒ  óÚ   K  — |st          d|›�¦  «        ‚|st          d|›�¦  «        ‚ddi|pi ¥}|                      d|› d|› �t          ||||¬¦  «        t          ¬¦  «        ƒ d	{V —†S )
rW   rE   rX   rF   rG   rH   rY   rK   rZ   Nr[   r]   s          r)   r^   zAsyncMessages.retrieve†  sÌ   è è € ð0 ð 	gÝÐeÐXaÐeÐeÑfÔfÐfØð 	iÝÐgÐYcÐgÐgÑhÔhÐhØ&¨ÐQ¸MÐ<OÈRÐQˆØ—Y’YØ9˜	Ð9Ð9¨ZÐ9Ð9Ý(Ø+¸ÐQ[Ðelðñ ô õ ð ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r+   r_   c          
   ƒ  ó  K  — |st          d|›�¦  «        ‚|st          d|›�¦  «        ‚ddi|pi ¥}|                      d|› d|› �t          d|it          j        ¦  «        ƒ d{V —†t          ||||¬	¦  «        t          ¬
¦  «        ƒ d{V —†S )ra   rE   rX   rF   rG   rH   rY   r2   NrK   rL   )rP   rQ   r   r   rb   r   r   rc   s           r)   rd   zAsyncMessages.update«  sô   è è € ð< ð 	gÝÐeÐXaÐeÐeÑfÔfÐfØð 	iÝÐgÐYcÐgÐgÑhÔhÐhØ&¨ÐQ¸MÐ<OÈRÐQˆØ—Z’ZØ9˜	Ð9Ð9¨ZÐ9Ð9Ý,¨j¸(Ð-CÕEZÔEnÑoÔoÐoÐoÐoÐoÐoÐoÝ(Ø+¸ÐQ[Ðelðñ ô õ ð  ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r+   re   rf   rk   rg   rh   rl   ri   rm   rj   ú1AsyncPaginator[Message, AsyncCursorPage[Message]]c       	        óþ   — |st          d|›�¦  «        ‚ddi|pi ¥}|                      d|› d�t          t                   t	          |||	|
t          |||||dœt          j        ¦  «        ¬¦  «        t          ¬¦  «        S rp   )rP   rt   r   r   r   r   r   ru   rv   s              r)   rw   zAsyncMessages.list×  s¾   € ð\ ð 	gÝÐeÐXaÐeÐeÑfÔfÐfØ&¨ÐQ¸MÐ<OÈRÐQˆØ×!Ò!Ø,˜	Ð,Ð,Ð,Ý ¥Ô)Ý(Ø+Ø'Ø%ØÝ%à!&Ø"(Ø!&Ø!&Ø"(ðð õ (Ô9ñ	ô 	ðñ ô õ  ð' "ñ 
ô 
ð 	
r+   r   c          	   ƒ  óÚ   K  — |st          d|›�¦  «        ‚|st          d|›�¦  «        ‚ddi|pi ¥}|                      d|› d|› �t          ||||¬¦  «        t          ¬¦  «        ƒ d	{V —†S )
ry   rE   rX   rF   rG   rH   rY   rK   rZ   Nrz   r]   s          r)   r|   zAsyncMessages.delete  sÌ   è è € ð0 ð 	gÝÐeÐXaÐeÐeÑfÔfÐfØð 	iÝÐgÐYcÐgÐgÑhÔhÐhØ&¨ÐQ¸MÐ<OÈRÐQˆØ—\’\Ø9˜	Ð9Ð9¨ZÐ9Ð9Ý(Ø+¸ÐQ[Ðelðñ ô õ #ð "ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r+   )r#   r‡   )r#   r‰   r}   r~   r   )r7   r8   rf   rk   rg   rk   rh   rl   ri   rm   rj   rk   r3   r?   r4   r@   r5   rA   r6   rB   r#   rŽ   r€   r�   r…   r+   r)   r!   r!   2  sX  € € € € € Øð2ð 2ð 2ñ „_ð2ð ð8ð 8ð 8ñ „_ð8ð XaØ09ð )-Ø$(Ø"&Ø;Dð>
ð >
ð >
ð >
ð >
ð >
ðN )-Ø$(Ø"&Ø;Dð#
ð #
ð #
ð #
ð #
ð #
ðT 1:ð )-Ø$(Ø"&Ø;Dð*
ð *
ð *
ð *
ð *
ð *
ð` !*Ø!*Ø )Ø3<Ø!*ð )-Ø$(Ø"&Ø;DðE
ð E
ð E
ð E
ð E
ð E
ð\ )-Ø$(Ø"&Ø;Dð#
ð #
ð #
ð #
ð #
ð #
ð #
ð #
r+   c                  ó   — e Zd Zdd„ZdS )r$   Úmessagesr    r#   ÚNonec                ó@  — || _         t          j        |j        ¦  «        | _        t          j        |j        ¦  «        | _        t          j        |j        ¦  «        | _        t          j        |j        ¦  «        | _        t          j        |j        ¦  «        | _        d S ©N)Ú	_messagesr	   Úto_raw_response_wrapperrT   r^   rd   rw   r|   ©r(   r’   s     r)   Ú__init__z MessagesWithRawResponse.__init__E  s“   € Ø!ˆŒå&Ô>ØŒOñ
ô 
ˆŒõ )Ô@ØÔñ
ô 
ˆŒõ 'Ô>ØŒOñ
ô 
ˆŒõ %Ô<ØŒMñ
ô 
ˆŒ	õ 'Ô>ØŒOñ
ô 
ˆŒˆˆr+   N©r’   r    r#   r“   ©r‚   rƒ   r„   r™   r…   r+   r)   r$   r$   D  ó(   € € € € € ð
ð 
ð 
ð 
ð 
ð 
r+   r$   c                  ó   — e Zd Zdd„ZdS )r‡   r’   r!   r#   r“   c                ó@  — || _         t          j        |j        ¦  «        | _        t          j        |j        ¦  «        | _        t          j        |j        ¦  «        | _        t          j        |j        ¦  «        | _        t          j        |j        ¦  «        | _        d S r•   )r–   r	   Úasync_to_raw_response_wrapperrT   r^   rd   rw   r|   r˜   s     r)   r™   z%AsyncMessagesWithRawResponse.__init__Z  s“   € Ø!ˆŒå&ÔDØŒOñ
ô 
ˆŒõ )ÔFØÔñ
ô 
ˆŒõ 'ÔDØŒOñ
ô 
ˆŒõ %ÔBØŒMñ
ô 
ˆŒ	õ 'ÔDØŒOñ
ô 
ˆŒˆˆr+   N©r’   r!   r#   r“   r›   r…   r+   r)   r‡   r‡   Y  rœ   r+   r‡   c                  ó   — e Zd Zdd„ZdS )r,   r’   r    r#   r“   c                ó  — || _         t          |j        ¦  «        | _        t          |j        ¦  «        | _        t          |j        ¦  «        | _        t          |j        ¦  «        | _        t          |j        ¦  «        | _        d S r•   )r–   r   rT   r^   rd   rw   r|   r˜   s     r)   r™   z&MessagesWithStreamingResponse.__init__o  s„   € Ø!ˆŒå2ØŒOñ
ô 
ˆŒõ 5ØÔñ
ô 
ˆŒõ 3ØŒOñ
ô 
ˆŒõ 1ØŒMñ
ô 
ˆŒ	õ 3ØŒOñ
ô 
ˆŒˆˆr+   Nrš   r›   r…   r+   r)   r,   r,   n  rœ   r+   r,   c                  ó   — e Zd Zdd„ZdS )r‰   r’   r!   r#   r“   c                ó  — || _         t          |j        ¦  «        | _        t          |j        ¦  «        | _        t          |j        ¦  «        | _        t          |j        ¦  «        | _        t          |j        ¦  «        | _        d S r•   )r–   r   rT   r^   rd   rw   r|   r˜   s     r)   r™   z+AsyncMessagesWithStreamingResponse.__init__„  s„   € Ø!ˆŒå8ØŒOñ
ô 
ˆŒõ ;ØÔñ
ô 
ˆŒõ 9ØŒOñ
ô 
ˆŒõ 7ØŒMñ
ô 
ˆŒ	õ 9ØŒOñ
ô 
ˆŒˆˆr+   Nr    r›   r…   r+   r)   r‰   r‰   ƒ  rœ   r+   r‰   )3Ú
__future__r   Útypingr   r   r   Útyping_extensionsr   ÚhttpxÚ r	   Ú_typesr
   r   r   r   r   Ú_utilsr   r   Ú_compatr   Ú	_resourcer   r   Ú	_responser   r   Ú
paginationr   r   Ú_base_clientr   r   Útypes.beta.threadsr   r   r   Útypes.beta.threads.messager   Ú"types.beta.threads.message_deletedr   Ú-types.beta.threads.message_content_part_paramr   Ú__all__r    r!   r$   r‡   r,   r‰   r…   r+   r)   ú<module>r¶      s¬  ðð #Ð "Ð "Ð "Ð "Ð "à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø %Ð %Ð %Ð %Ð %Ð %à €€€à !Ð !Ð !Ð !Ð !Ð !Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @ðð ð ð ð ð ð ð ð (Ð 'Ð 'Ð 'Ð 'Ð 'Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZØ :Ð :Ð :Ð :Ð :Ð :Ð :Ð :ðð ð ð ð ð ð ð ð eÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dØ 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø AÐ AÐ AÐ AÐ AÐ AØ UÐ UÐ UÐ UÐ UÐ Uà�Ð
'€ðO
ð O
ð O
ð O
ð O
ˆñ O
ô O
ð O
ðdO
ð O
ð O
ð O
ð O
Ð$ñ O
ô O
ð O
ðd
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð*
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð*
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð*
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
r+   