§
    šŠtjƒ ã                  ó  — 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	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 d dlZd dlmZm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d d	l'm(Z( d d
l)m*Z* d dl+m,Z, d dl-m.Z.m/Z/ d dl0m1Z1  ej2        ¦   «         Z3er.d dl4m5Z5 d dl6m7Z7 d dl8m9Z9m:Z: d dl;m<Z< d dl;m9Z= d dl>m?Z?m@Z@mAZAmBZBmCZC  e*ddd¬¦  «        ZD e*ddd¬¦  «        ZE e*ddd¬¦  «        ZF e*ddd¬¦  «        ZGdZHe	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddded>„¦   «         ZIe	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dfdgdB„¦   «         ZI	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dddhdE„ZI G dF„ dGe,¦  «        ZJ G dH„ dIe(¦  «        ZKdidM„ZLdjdO„ZM	 	 dkdldX„ZN	 	 dkdmdY„ZOdnd]„ZPdodpdc„ZQdS )qé    )ÚannotationsN)ÚTracebackType)ÚTYPE_CHECKINGÚAnyÚCallableÚClassVarÚ
CollectionÚDictÚIterableÚListÚLiteralÚOptionalÚTupleÚTypeÚUnionÚcastÚoverload)Ú#AsyncCallbackManagerForRetrieverRunÚCallbackManagerForRetrieverRun)ÚDocument)Ú
Embeddings)ÚLangChainException)ÚBaseRetriever)Úget_from_env)ÚVectorStore)Ú
ConfigDictÚmodel_validator)Úmaximal_marginal_relevance)ÚTokenCredential©ÚAsyncTokenCredential)ÚSearchClientÚSearchItemPaged)ÚAsyncSearchItemPaged©r"   )ÚCorsOptionsÚScoringProfileÚSearchFieldÚSemanticConfigurationÚVectorSearchÚAZURESEARCH_FIELDS_IDÚid)ÚkeyÚenv_keyÚdefaultÚAZURESEARCH_FIELDS_CONTENTÚcontentÚ!AZURESEARCH_FIELDS_CONTENT_VECTORÚcontent_vectorÚAZURESEARCH_FIELDS_TAGÚmetadataiè  ú"langchain-comm-python-azure-searchFÚendpointÚstrÚ
index_namer-   úOptional[str]Úazure_ad_access_tokenÚsemantic_configuration_nameÚfieldsúOptional[List[SearchField]]Úvector_searchúOptional[VectorSearch]Úsemantic_configurationsúCOptional[Union[SemanticConfiguration, List[SemanticConfiguration]]]Úscoring_profilesúOptional[List[ScoringProfile]]Údefault_scoring_profileÚdefault_fieldsÚ
user_agentÚcors_optionsúOptional[CorsOptions]Úasync_úLiteral[False]Ú additional_search_client_optionsúOptional[Dict[str, Any]]Úazure_credentialúOptional[TokenCredential]Úazure_async_credentialúOptional[AsyncTokenCredential]ÚreturnúUnion[SearchClient]c                ó   — d S ©N© ©r7   r9   r-   r;   r<   r=   r?   rA   rC   rE   rF   rG   rH   rJ   rL   rN   rP   s                    új/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/vectorstores/azuresearch.pyÚ_get_search_clientrY   V   s	   € ð* ˜#ó    TúLiteral[True]úUnion[AsyncSearchClient]c                ó   — d S rU   rV   rW   s                    rX   rY   rY   n   s	   € ð*  #˜srZ   Úboolú&Union[SearchClient, AsyncSearchClient]c                ó  ‡2‡3‡4‡5— ddl mŠ2m}m} ddlm} ddlm} ddlm	}m
} ddlm	} ddlm} ddlm} ddlm} dd	lm}m}m}m}m}m} m}!m}"m}#m}$m}%m}&m}'  G ˆ2fd
„d|¦  «        }( G d„ d|¦  «        })|pi }|
pg }
|�_|                     ¦   «         dk    r9tA          d |¦   «         ¦  «        }*|* !                    d¦  «          |)|*¦  «        }+n? ||¦  «        }*|*}+n1|� |(|¦  «        }* |)|*¦  «        }+n|p	 |¦   «         }*|p	 |¦   «         }+ |d1| |*|dœ|¤Ž},	 |, "                    |¬¦  «         �n¼# |$ �r³ |�¸d„ |D ¦   «         Š3d„ |
D ¦   «         Š5ˆ5fd„tG          ‰5 $                    ¦   «         ¦  «        tG          ‰3 $                    ¦   «         ¦  «        z
  D ¦   «         }-tK          |-¦  «        dk    r=d2ˆ3ˆ5fd„Š4d &                    ˆ4fd„|-D ¦   «         ¦  «        }.tO          d|-› d|.› �¦  «        ‚n|
}|€j |$ |d|%j(         |dd d!|&j)        ¬"¦  «        ¬#¦  «         |d$|%j*         ||&j)        ¬%¦  «        ¬#¦  «        g |'d&d¬'¦  «         |'d(d$¬'¦  «        g¬)¦  «        }|r&tW          |tX          ¦  «        s|g} |#||¬*¦  «        }/n9|r5 | | |" |!tZ          ¬+¦  «        g¬,¦  «        ¬-¦  «        }0 |#|0g¬.¦  «        }/nd }/ |||||/||	|¬/¦  «        }1|, .                    |1¦  «         Y nw xY w|s |d1| ||*|d0œ|¤ŽS  |d1| ||+|d0œ|¤ŽS )3Nr   )ÚAccessTokenÚAzureKeyCredentialr   r    )ÚResourceNotFoundError)ÚDefaultAzureCredentialÚInteractiveBrowserCredential)rd   r%   )ÚSearchIndexClient)Ú#ExhaustiveKnnAlgorithmConfigurationÚExhaustiveKnnParametersÚHnswAlgorithmConfigurationÚHnswParametersÚSearchIndexr)   ÚSemanticFieldÚSemanticPrioritizedFieldsÚSemanticSearchr*   ÚVectorSearchAlgorithmKindÚVectorSearchAlgorithmMetricÚVectorSearchProfilec                  ó.   •— e Zd Zdˆ fd„Zddddœdd„ZdS )ú6_get_search_client.<locals>.AzureBearerTokenCredentialÚtokenr8   c                ól   •—  ‰|t          t          j        ¦   «         ¦  «        dz   ¦  «        | _        d S )Ni  )ÚintÚtimeÚ_token)Úselfrt   ra   s     €rX   Ú__init__z?_get_search_client.<locals>.AzureBearerTokenCredential.__init__´   s-   ø€ à%˜+ e­Sµ´±´Ñ-=Ô-=ÀÑ-DÑEÔEˆDŒKˆKˆKrZ   NF©ÚclaimsÚ	tenant_idÚ
enable_caeÚscopesr|   r:   r}   r~   r^   Úkwargsr   rR   ra   c               ó   — | j         S rU   )rx   ©ry   r|   r}   r~   r   r€   s         rX   Ú	get_tokenz@_get_search_client.<locals>.AzureBearerTokenCredential.get_token¸   s   € ð ”;ÐrZ   )rt   r8   ©r   r8   r|   r:   r}   r:   r~   r^   r€   r   rR   ra   )Ú__name__Ú
__module__Ú__qualname__rz   rƒ   )ra   s   €rX   ÚAzureBearerTokenCredentialrs   ³   sb   ø€ € € € € ð	Fð 	Fð 	Fð 	Fð 	Fð 	Fð %)Ø'+Ø$ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	rZ   rˆ   c                  ó@   — e Zd Zdd„Zddddœdd„Zdd„Z	 	 	 dd d„ZdS )!ú7_get_search_client.<locals>.AsyncTokenCredentialWrapperÚ
credentialr   c                ó   — || _         d S rU   )Ú_credential)ry   r‹   s     rX   rz   z@_get_search_client.<locals>.AsyncTokenCredentialWrapper.__init__Ã   s   € Ø)ˆDÔÐÐrZ   NFr{   r   r8   r|   r:   r}   r~   r^   r€   r   rR   ra   c             Ÿ  ó2   K  —  | j         j        ||||dœ|¤ŽS )Nr{   )r�   rƒ   r‚   s         rX   rƒ   zA_get_search_client.<locals>.AsyncTokenCredentialWrapper.get_tokenÆ   s=   è è € ð .�4Ô#Ô-ØØØ#Ø%ð	ð ð
 ðð ð rZ   ÚNonec              “  ó
   K  — d S rU   rV   ©ry   s    rX   Úclosez=_get_search_client.<locals>.AsyncTokenCredentialWrapper.closeÖ   s   è è € ØˆDrZ   Úexc_typeúOptional[Type[BaseException]]Ú	exc_valueúOptional[BaseException]Ú	tracebackúOptional[TracebackType]c              “  ó
   K  — d S rU   rV   )ry   r“   r•   r—   s       rX   Ú	__aexit__zA_get_search_client.<locals>.AsyncTokenCredentialWrapper.__aexit__Ù   s   è è € ð ˆDrZ   )r‹   r   r„   ©rR   r�   )NNN)r“   r”   r•   r–   r—   r˜   rR   r�   )r…   r†   r‡   rz   rƒ   r’   rš   rV   rZ   rX   ÚAsyncTokenCredentialWrapperrŠ   Â   s‰   € € € € € ð	*ð 	*ð 	*ð 	*ð %)Ø'+Ø$ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð
 7;Ø15Ø15ð		ð 	ð 	ð 	ð 	ð 	ð 	rZ   rœ   ÚINTERACTIVEr   z!https://search.azure.com/.default)r7   r‹   rG   ©Únamec                ó(   — i | ]}|j         |j        “ŒS rV   ©rŸ   Útype)Ú.0Úfs     rX   ú
<dictcomp>z&_get_search_client.<locals>.<dictcomp>  s   € Ð;Ð;Ð;¨q˜AœF A¤FÐ;Ð;Ð;rZ   c                ó(   — i | ]}|j         |j        “ŒS rV   r¡   )r£   Údfs     rX   r¥   z&_get_search_client.<locals>.<dictcomp>  s   € ÐJÐJÐJ°R ¤¨¬ÐJÐJÐJrZ   c                ó(   •— i | ]\  }}|‰|         “ŒS rV   rV   )r£   r-   ÚvalueÚmandatory_fieldss      €rX   r¥   z&_get_search_client.<locals>.<dictcomp>  s5   ø€ ð ð ð á�C˜ð Ð% cÔ*ðð ð rZ   Úxr8   rR   c           
     ó¾   •— | › d‰                      | d¦  «        › d‰                      | ¦  «        › d‰                      | ¦  «        › d|                      ¦   «         › d�
S )Nz current type: 'ÚMISSINGz'. It has to be 'z#' or you can point to a different 'z;' field name by using the env variable 'AZURESEARCH_FIELDS_ú')ÚgetÚupper)r«   Úfields_typesrª   s    €€rX   Úfmt_errz#_get_search_client.<locals>.fmt_err  s�   ø€ àð Sð S¨l×.>Ò.>¸qÀ)Ñ.LÔ.Lð Sð SØ)9×)=Ò)=¸aÑ)@Ô)@ðSð Sà+;×+?Ò+?ÀÑ+BÔ+BðSð Sð GHÇgÂgÁiÄiðSð Sð SðrZ   ú
c                ó&   •— g | ]} ‰|¦  «        ‘ŒS rV   rV   )r£   r«   r²   s     €rX   ú
<listcomp>z&_get_search_client.<locals>.<listcomp>  s!   ø€ Ð"FÐ"FÐ"F°! 7 7¨1¡:¤:Ð"FÐ"FÐ"FrZ   z2You need to specify at least the following fields z; or provide alternative field names in the env variables.

r/   é   i�  iô  )ÚmÚef_constructionÚ	ef_searchÚmetric)rŸ   ÚkindÚ
parametersÚdefault_exhaustive_knn)rº   ÚmyHnswProfile)rŸ   Úalgorithm_configuration_nameÚmyExhaustiveKnnProfile)Ú
algorithmsÚprofiles)ÚconfigurationsÚdefault_configuration_name)Ú
field_name)Úcontent_fields)rŸ   Úprioritized_fields)rÃ   )rŸ   r=   r?   Úsemantic_searchrC   rE   rH   )r7   r9   r‹   rG   rV   )r«   r8   rR   r8   )/Úazure.core.credentialsra   rb   r   Úazure.core.credentials_asyncr!   Úazure.core.exceptionsrc   Úazure.identityrd   re   Úazure.identity.aioÚazure.search.documentsr"   Úazure.search.documents.aioÚazure.search.documents.indexesrf   Ú%azure.search.documents.indexes.modelsrg   rh   ri   rj   rk   r)   rl   rm   rn   r*   ro   rp   rq   r°   r   rƒ   Ú	get_indexÚsetÚitemsÚlenÚjoinÚ
ValueErrorÚHNSWÚCOSINEÚEXHAUSTIVE_KNNÚ
isinstanceÚlistÚFIELDS_CONTENTÚcreate_index)6r7   r9   r-   r;   r<   r=   r?   rA   rC   rE   rF   rG   rH   rJ   rL   rN   rP   rb   r   r!   rc   rd   re   ÚAsyncDefaultAzureCredentialr"   ÚAsyncSearchClientrf   rg   rh   ri   rj   rk   r)   rl   rm   rn   r*   ro   rp   rq   rˆ   rœ   r‹   Úasync_credentialÚindex_clientÚmissing_fieldsÚerrorrÈ   Úsemantic_configurationÚindexra   r±   r²   rª   s6                                                     @@@@rX   rY   rY   †   sc  øøøø€ ð* XÐWÐWÐWÐWÐWÐWÐWÐWÐWØAÐAÐAÐAÐAÐAØ;Ð;Ð;Ð;Ð;Ð;ØSÐSÐSÐSÐSÐSÐSÐSØXÐXÐXÐXÐXÐXØ3Ð3Ð3Ð3Ð3Ð3ØLÐLÐLÐLÐLÐLØ@Ð@Ð@Ð@Ð@Ð@ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð  _ñ ô ð ðð ð ð ð Ð&:ñ ô ð ð> (HÐ'MÈ2Ð$Ø#Ð) r€Nð
 €Ø�9Š9‰;Œ;˜-Ò'Ð'ÝÐ/Ð1MÐ1MÑ1OÔ1OÑPÔPˆJØ× Ò Ð!DÑEÔEÐEØ:Ð:¸:ÑFÔFÐÐà+Ð+¨CÑ0Ô0ˆJØ)ÐÐØ	Ð	*Ø/Ð/Ð0EÑFÔFˆ
Ø6Ð6°zÑBÔBÐÐà%ÐAÐ)?Ð)?Ñ)AÔ)Aˆ
Ø1ÐRÐ5PÐ5PÑ5RÔ5RÐà&7Ð&7ð 'ØØØð'ð 'ð +ð	'ð '€Lða)Ø×Ò JÐÑ/Ô/Ð/Ñ/øØ ð _)ñ _)ð _)àÐà;Ð;°FÐ;Ñ;Ô;ˆLØJÐJ¸>ÐJÑJÔJÐðð ð ð å"%Ð&6×&<Ò&<Ñ&>Ô&>Ñ"?Ô"?Ý�l×(Ò(Ñ*Ô*Ñ+Ô+ñ#,ðñ ô ˆNõ
 �>Ñ"Ô" QÒ&Ð&ðð ð ð ð ð ð ð Ÿ	š	Ð"FÐ"FÐ"FÐ"F°~Ð"FÑ"FÔ"FÑGÔG�Ý ð-Ø%ð-ð -à%*ð-ð -ñô ð ð 'ð" $ˆFàÐ Ø(˜Là.Ð.Ø&Ø6Ô;Ø#1 >ØØ,/Ø&)Ø#>Ô#Eð	$ñ $ô $ð	ñ 	ô 	ð 8Ð7Ø5Ø6ÔEØ#:Ð#:Ø#>Ô#Eð$ñ $ô $ðñ ô ðð( (Ð'Ø,Ø5>ðñ ô ð (Ð'Ø5Ø5Mðñ ô ð	ð)ñ ô ˆMðB #ð 	#ÝÐ5µtÑ<Ô<ð DØ+BÐ*CÐ'Ø,˜nØ6Ø+Fðñ ô ˆOˆOð )ð 	#à%:Ð%:Ø0Ø#<Ð#<Ø$1 M½^Ð$LÑ$LÔ$LÐ#Mð$ñ $ô $ð&ñ &ô &Ð"ð -˜nÐ=SÐ<TÐUÑUÔUˆOˆOð #ˆOð �ØØØ'Ø+Ø-Ø$;Ø%ð
ñ 
ô 
ˆð 	×!Ò! %Ñ(Ô(Ð(Ð(Ð(ð_)øøøðD ð 
Øˆ|ð 
ØØ!Ø!Ø!ð	
ð 
ð
 /ð
ð 
ð 	
ð !Ð ð 
ØØ!Ø'Ø!ð	
ð 
ð
 /ð
ð 
ð 	
s   ÄD6 Ä6F6K/Ë.K/c                  ó4  — e Zd ZdZ	 	 	 	 	 	 	 	 d�ddddddœd‚d$„Zdƒd'„Zed„d)„¦   «         Zd…d,„Z	 d†dd-œd‡d5„Z		 d†dd-œd‡d6„Z
	 d†dd-œdˆd9„Z	 d†dd-œdˆd:„Zd†d‰d=„Zd†d‰d>„Z	 dŠdd@œd‹dE„Zd?dFœdŒdH„Z	 dŠdd@œd‹dI„Zd?dFœdŒdJ„Z	 dŠddKœd�dN„Z	 dŠddKœd�dO„Z	 dŠddPœdŽdR„Z	 dŠddPœdŽdS„Z	 	 d�d�dT„Z	 	 d�d�dU„Z	 	 	 d‘ddPœd’d[„Z	 	 	 d‘ddPœd’d\„ZdŠd“d]„Z	 dŠd“d^„Z	 	 d�d�d_„Z	 	 d�d�d`„Z	 dŠddKœd�da„Z	 dŠddKœd�db„Z 	 	 	 d‘ddPœd’dc„Z!	 	 	 d‘ddPœd’dd„Z"ddPœd”dh„Z#ddPœd•dj„Z$	 dŠd“dk„Z%	 dŠd“dl„Z&	 	 d–ddKœd—dp„Z'	 	 d–ddKœd—dq„Z(	 dŠddPœd˜ds„Z)	 dŠddPœd˜dt„Z*e+	 	 	 	 	 	 d™dšdz„¦   «         Z,e+	 	 	 	 	 	 d™dšd{„¦   «         Z-e+	 d†dududvdd|œd›d}„¦   «         Z.e+	 d†dududvdd|œd›d~„¦   «         Z/dœd€„Z0dS )�ÚAzureSearchz&`Azure Cognitive Search` vector store.ÚhybridN)Úvector_search_dimensionsrL   r;   rN   rP   Úazure_search_endpointr8   Úazure_search_keyr:   r9   Úembedding_functionúUnion[Callable, Embeddings]Úsearch_typer<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rH   rI   rê   úOptional[int]rL   rM   r;   rN   rO   rP   rQ   r€   r   c               óÔ  — 	 ddl m}m}m}m} n"# t
          $ r}t          d¦  «        |‚d }~ww xY w	 || _        t          | j        t          ¦  «        r| j        j	        | _	        n| j        | _	         |t          |j        dd¬¦  «         |t          |j        ¬¦  «         |t          |                     |j        ¦  «        d|p!t!          |  	                    d¦  «        ¦  «        d¬	¦  «         |t"          |j        ¬¦  «        g}d
}d|v r|d         r|d|d         z   z  }t%          ||||||||	|
||||t'          j        |¦  «        |¬¦  «        | _        t%          ||||||||	|
||||d|||¬¦  «        | _        || _        || _        |r|n|| _        || _        || _        || _        || _        || _        || _        |	| _         |
| _!        || _"        || _#        || _$        || _%        d S )Nr   )ÚSearchableFieldr(   ÚSearchFieldDataTypeÚSimpleFieldzeUnable to import azure.search.documents. Please install with `pip install -U azure-search-documents`.T)rŸ   r¢   r-   Ú
filterabler¡   ÚTextr¾   )rŸ   r¢   Ú
searchablerê   Úvector_search_profile_nameÚ	langchainrG   ú )r<   r=   r?   rA   rC   rE   rF   rG   rH   rL   rN   )r<   r=   r?   rA   rC   rE   rF   rG   rH   rJ   rL   rN   rP   )&rÑ   rò   r(   ró   rô   ÚImportErrorrí   rÛ   r   Úembed_queryÚ	FIELDS_IDÚStringrÝ   ÚFIELDS_CONTENT_VECTORr	   ÚSinglerÕ   ÚFIELDS_METADATArY   ÚcopyÚdeepcopyÚclientÚasync_clientrï   r<   r=   Ú_azure_search_endpointÚ_azure_search_keyÚ_index_nameÚ_semantic_configuration_nameÚ_fieldsÚ_vector_searchÚ_semantic_configurationsÚ_scoring_profilesÚ_default_scoring_profileÚ_default_fieldsÚ_user_agentÚ_cors_options)ry   rë   rì   r9   rí   rï   r<   r=   r?   rA   rC   rE   rH   rê   rL   r;   rN   rP   r€   rò   r(   ró   rô   ÚerF   rG   s                             rX   rz   zAzureSearch.__init__u  sÛ  € ð0	ðð ð ð ð ð ð ð ð ð ð ð ð øõ ð 	ð 	ð 	Ýð;ñô ð ðøøøøð	øøøð 	4à"4ˆÔå�dÔ-­zÑ:Ô:ð 	7Ø#Ô6ÔBˆDÔÐà#Ô6ˆDÔð ˆKÝØ(Ô/ØØð	ñ ô ð ˆOÝ#Ø(Ô/ðñ ô ð ˆKÝ*Ø(×3Ò3Ð4GÔ4NÑOÔOØØ)Að *1Ý�t×'Ò'¨Ñ/Ô/Ñ0Ô0Ø+:ðñ ô ð ˆOÝ$Ø(Ô/ðñ ô ð'
ˆð0 !ˆ
Ø˜6Ð!Ð! f¨\Ô&:Ð!Ø˜#  |Ô 4Ñ4Ñ4ˆJõ )Ø!ØØØ!Ø(CØØ'Ø$;Ø-Ø$;Ø)Ø!Ø%Ý-1¬]Ø0ñ.ô .ð .ð#
ñ 
ô 
ˆŒõ* /Ø!ØØØ!Ø(CØØ'Ø$;Ø-Ø$;Ø)Ø!Ø%ØØ-MØ-Ø#9ð#
ñ 
ô 
ˆÔð& 'ˆÔØ+FˆÔ(Ø &Ð:�f�f¨NˆŒà&;ˆÔ#Ø!1ˆÔØ%ˆÔØ,GˆÔ)ØˆŒØ+ˆÔØ(?ˆÔ%Ø!1ˆÔØ(?ˆÔ%Ø-ˆÔØ%ˆÔØ)ˆÔÐÐs   ‚ �
.™)©.rR   r�   c                óÈ  — t          | d¦  «        r | j        r| j                             ¦   «          t          | d¦  «        �r| j        �r	 t	          j        ¦   «         }|                     ¦   «         r.|                     | j                             ¦   «         ¦  «         d S |                     | j                             ¦   «         ¦  «         d S # t          $ r… t	          j
        ¦   «         }t	          j        |¦  «         	 |                     | j                             ¦   «         ¦  «         |                     ¦   «          Y d S # |                     ¦   «          w xY ww xY wd S d S )Nr  r  )Úhasattrr  r’   r  ÚasyncioÚget_event_loopÚ
is_runningÚcreate_taskÚrun_until_completeÚRuntimeErrorÚnew_event_loopÚset_event_loop)ry   Úloops     rX   Ú__del__zAzureSearch.__del__ù  sd  € å�4˜Ñ"Ô"ð 	  t¤{ð 	 ØŒK×ÒÑÔÐõ �4˜Ñ(Ô(ñ 	!¨TÔ->ñ 	!ð!ÝÔ-Ñ/Ô/�Ø—?’?Ñ$Ô$ð Gà×$Ò$ TÔ%6×%<Ò%<Ñ%>Ô%>Ñ?Ô?Ð?Ð?Ð?ð ×+Ò+¨DÔ,=×,CÒ,CÑ,EÔ,EÑFÔFÐFÐFÐFøÝð !ð !ð !åÔ-Ñ/Ô/�ÝÔ& tÑ,Ô,Ð,ð!Ø×+Ò+¨DÔ,=×,CÒ,CÑ,EÔ,EÑFÔFÐFà—J’J‘L”L�L�L�L�Lø�D—J’J‘L”L�L�Løøøð!øøøð	!ð 	!ð 	!ð 	!s+   ÁAC Â ,C Ã1EÄ ,EÄ,EÅEÅEúOptional[Embeddings]c                óH   — t          | j        t          ¦  «        r| j        nd S rU   )rÛ   rí   r   r‘   s    rX   Ú
embeddingszAzureSearch.embeddings  s)   € õ
 ˜$Ô1µ:Ñ>Ô>ðˆDÔ#Ð#àð	
rZ   ÚtextúList[float]c              ƒ  óš   K  — | j         r | j                              |¦  «        ƒ d {V —†S  t          t          | j        ¦  «        |¦  «        S rU   )r!  Úaembed_queryr   r   rí   )ry   r"  s     rX   Ú_aembed_queryzAzureSearch._aembed_query  sV   è è € ØŒ?ð 	AØœ×5Ò5°dÑ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;à:•4� $Ô"9Ñ:Ô:¸4Ñ@Ô@Ð@rZ   ©ÚkeysÚtextsúIterable[str]Ú	metadatasúOptional[List[dict]]r(  úOptional[List[str]]ú	List[str]c               óô  ‡ — t          ‰ j        t          ¦  «        rG	 ‰ j                             t	          |¦  «        ¦  «        }n,# t
          $ r ˆ fd„|D ¦   «         }Y nw xY wˆ fd„|D ¦   «         }t          |¦  «        dk    rt                               d¦  «         g S |s2d|v r.t          |d         ¦  «        t          |¦  «        k    r|d         }‰  	                    t          ||¦  «        ||¬¦  «        S )z$Add texts data to an existing index.c                óD   •— g | ]}‰j                              |¦  «        ‘ŒS rV   )rí   rü   ©r£   r«   ry   s     €rX   rµ   z)AzureSearch.add_texts.<locals>.<listcomp>/  s*   ø€ ÐTÐTÐTÈ˜dÔ5×AÒAÀ!ÑDÔDÐTÐTÐTrZ   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS rV   ©rí   r1  s     €rX   rµ   z)AzureSearch.add_texts.<locals>.<listcomp>1  ó'   ø€ ÐDÐDÐD¸˜$×1Ò1°!Ñ4Ô4ÐDÐDÐDrZ   r   úNothing to insert, skipping.Úidsr'  )rÛ   rí   r   Úembed_documentsrÜ   ÚNotImplementedErrorrÕ   ÚloggerÚdebugÚadd_embeddingsÚzip©ry   r)  r+  r(  r€   r!  s   `     rX   Ú	add_textszAzureSearch.add_texts!  s  ø€ õ �dÔ-­zÑ:Ô:ð 	EðUØ!Ô4×DÒDÅTÈ%Á[Ä[ÑQÔQ�
�
øÝ&ð Uð Uð UØTÐTÐTÐTÈeÐTÑTÔT�
�
�
ðUøøøð EÐDÐDÐD¸eÐDÑDÔDˆJåˆz‰?Œ?˜aÒÐÝ�LŠLÐ7Ñ8Ô8Ð8ØˆIð
 ð 	!˜5 F˜?˜?µ°V¸E´]Ñ1CÔ1CÅsÈ:ÁÄÒ1VÐ1VØ˜%”=ˆDà×"Ò"¥3 u¨jÑ#9Ô#9¸9È4Ð"ÑPÔPÐPs   �'A ÁA ÁA c             ‹  ó  ‡ K  — t          ‰ j        t          ¦  «        rS	 ‰ j                             t	          |¦  «        ¦  «        ƒ d {V —†}n2# t
          $ r ˆ fd„|D ¦   «         ƒ d {V —†}Y nw xY wˆ fd„|D ¦   «         }t          |¦  «        dk    rt                               d¦  «         g S |s2d|v r.t          |d         ¦  «        t          |¦  «        k    r|d         }‰  	                    t          ||¦  «        ||¬¦  «        ƒ d {V —†S )Nc              “  óT   •K  — g | ]"}‰j                              |¦  «        ƒ d {V —†‘Œ#S rU   )rí   r%  r1  s     €rX   rµ   z*AzureSearch.aadd_texts.<locals>.<listcomp>K  sM   øè è € ð ð ð ØFG˜$Ô1×>Ò>¸qÑAÔAÐAÐAÐAÐAÐAÐAðð ð rZ   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS rV   r3  r1  s     €rX   rµ   z*AzureSearch.aadd_texts.<locals>.<listcomp>O  r4  rZ   r   r5  r6  r'  )rÛ   rí   r   Úaembed_documentsrÜ   r8  rÕ   r9  r:  Úaadd_embeddingsr<  r=  s   `     rX   Ú
aadd_textszAzureSearch.aadd_texts?  sn  øè è € õ �dÔ-­zÑ:Ô:ð 	EðØ#'Ô#:×#KÒ#KÍDÐQVÉKÌKÑ#XÔ#XÐXÐXÐXÐXÐXÐX�
�
øÝ&ð ð ð ðð ð ð ØKPðñ ô ð ð ð ð ð ð �
�
�
ðøøøð
 EÐDÐDÐD¸eÐDÑDÔDˆJåˆz‰?Œ?˜aÒÐÝ�LŠLÐ7Ñ8Ô8Ð8ØˆIð
 ð 	!˜5 F˜?˜?µ°V¸E´]Ñ1CÔ1CÅsÈ:ÁÄÒ1VÐ1VØ˜%”=ˆDà×)Ò)­#¨e°ZÑ*@Ô*@À)ÐRVÐ)ÑWÔWÐWÐWÐWÐWÐWÐWÐWs   Ÿ-A ÁA.Á-A.Útext_embeddingsú!Iterable[Tuple[str, List[float]]]c               ó  ‡ — g }g }t          |¦  «        D �]•\  }\  }}|r	||         }	nUt          t          j        ¦   «         ¦  «        }	t	          j        t          |	d¦  «        ¦  «                             d¦  «        }	|r||         ni }
ddt          |	t          |t          t          j        |t          j        ¬¦  «                             ¦   «         t          t!          j        |
¦  «        i}|
r5ˆ fd„|
                     ¦   «         D ¦   «         }|                     |¦  «         |                     |¦  «         |                     |	¦  «         t+          |¦  «        t,          k    rE‰ j                             |¬¦  «        }t3          d„ |D ¦   «         ¦  «        st5          |¦  «        ‚g }�Œ—t+          |¦  «        d	k    r|S ‰ j                             |¬¦  «        }t3          d
„ |D ¦   «         ¦  «        r|S t5          |¦  «        ‚)ú$Add embeddings to an existing index.úutf-8Úasciiú@search.actionÚupload©Údtypec                óB   •— i | ]\  }}|d „ ‰j         D ¦   «         v ¯||“ŒS )c                ó   — g | ]	}|j         ‘Œ
S rV   rž   ©r£   r«   s     rX   rµ   z9AzureSearch.add_embeddings.<locals>.<dictcomp>.<listcomp>€  ó   € Ð9Ð9Ð9¨˜QœVÐ9Ð9Ð9rZ   ©r=   ©r£   ÚkÚvry   s      €rX   r¥   z.AzureSearch.add_embeddings.<locals>.<dictcomp>}  óE   ø€ ð %ð %ð %á˜˜1ØÐ9Ð9¨T¬[Ð9Ñ9Ô9Ð9Ð9ð �qà9Ð9Ð9rZ   ©Ú	documentsc              3  ó$   K  — | ]}|j         V — Œd S rU   ©Ú	succeeded©r£   Úrs     rX   ú	<genexpr>z-AzureSearch.add_embeddings.<locals>.<genexpr>‰  ó$   è è € Ð9Ð9¨1˜1œ;Ð9Ð9Ð9Ð9Ð9Ð9rZ   r   c              3  ó$   K  — | ]}|j         V — Œd S rU   r[  r]  s     rX   r_  z-AzureSearch.add_embeddings.<locals>.<genexpr>•  ó$   è è € Ð-Ð-˜qˆqŒ{Ð-Ð-Ð-Ð-Ð-Ð-rZ   )Ú	enumerater8   ÚuuidÚuuid4Úbase64Úurlsafe_b64encodeÚbytesÚdecoderý   rÝ   rÿ   ÚnpÚarrayÚfloat32Útolistr  ÚjsonÚdumpsrÔ   ÚupdateÚappendrÕ   ÚMAX_UPLOAD_BATCH_SIZEr  Úupload_documentsÚallr   ©ry   rE  r+  r(  r6  ÚdataÚir"  Ú	embeddingr-   r5   ÚdocÚadditional_fieldsÚresponses   `             rX   r;  zAzureSearch.add_embeddings]  s  ø€ ð ˆð ˆÝ$-¨oÑ$>Ô$>ð #	ñ #	Ñ ˆAÑ ��iàð TØ˜1”g��å�$œ*™,œ,Ñ'Ô'�åÔ.­u°S¸'Ñ/BÔ/BÑCÔC×JÒJÈ7ÑSÔS�à'0Ð8�y ”|�|°bˆHð ! (Ý˜3Ý Ý%¥r¤x°	ÅÄÐ'LÑ'LÔ'L×'SÒ'SÑ'UÔ'UÝ¥¤¨HÑ!5Ô!5ðˆCð ð .ð%ð %ð %ð %à (§¢Ñ 0Ô 0ð%ñ %ô %Ð!ð
 —
’
Ð,Ñ-Ô-Ð-Ø�KŠK˜ÑÔÐØ�JŠJ�s‰OŒOˆOå�4‰yŒyÕ1Ò1Ð1Øœ;×7Ò7À$Ð7ÑGÔG�åÐ9Ð9°Ð9Ñ9Ô9Ñ9Ô9ð 7Ý,¨XÑ6Ô6Ð6à�ùõ ˆt‰9Œ9˜Š>ˆ>ØˆJð ”;×/Ò/¸$Ð/Ñ?Ô?ˆåÐ-Ð- HÐ-Ñ-Ô-Ñ-Ô-ð 	/ØˆJå$ XÑ.Ô.Ð.rZ   c             ƒ  ó(  ‡ K  — g }g }t          |¦  «        D �]›\  }\  }}|r	||         }	nUt          t          j        ¦   «         ¦  «        }	t	          j        t          |	d¦  «        ¦  «                             d¦  «        }	|r||         ni }
ddt          |	t          |t          t          j        |t          j        ¬¦  «                             ¦   «         t          t!          j        |
¦  «        i}|
r5ˆ fd„|
                     ¦   «         D ¦   «         }|                     |¦  «         |                     |¦  «         |                     |	¦  «         t+          |¦  «        t,          k    rK‰ j                             |¬¦  «        ƒ d{V —†}t3          d	„ |D ¦   «         ¦  «        st5          |¦  «        ‚g }�Œ�t+          |¦  «        d
k    r|S ‰ j                             |¬¦  «        ƒ d{V —†}t3          d„ |D ¦   «         ¦  «        r|S t5          |¦  «        ‚)rH  rI  rJ  rK  rL  rM  c                óB   •— i | ]\  }}|d „ ‰j         D ¦   «         v ¯||“ŒS )c                ó   — g | ]	}|j         ‘Œ
S rV   rž   rQ  s     rX   rµ   z:AzureSearch.aadd_embeddings.<locals>.<dictcomp>.<listcomp>½  rR  rZ   rS  rT  s      €rX   r¥   z/AzureSearch.aadd_embeddings.<locals>.<dictcomp>º  rW  rZ   rX  Nc              3  ó$   K  — | ]}|j         V — Œd S rU   r[  r]  s     rX   r_  z.AzureSearch.aadd_embeddings.<locals>.<genexpr>Æ  r`  rZ   r   c              3  ó$   K  — | ]}|j         V — Œd S rU   r[  r]  s     rX   r_  z.AzureSearch.aadd_embeddings.<locals>.<genexpr>Ò  rb  rZ   )rc  r8   rd  re  rf  rg  rh  ri  rý   rÝ   rÿ   rj  rk  rl  rm  r  rn  ro  rÔ   rp  rq  rÕ   rr  r  rs  rt  r   ru  s   `             rX   rC  zAzureSearch.aadd_embeddingsš  s8  øè è € ð ˆð ˆÝ$-¨oÑ$>Ô$>ð #	ñ #	Ñ ˆAÑ ��iàð TØ˜1”g��å�$œ*™,œ,Ñ'Ô'�åÔ.­u°S¸'Ñ/BÔ/BÑCÔC×JÒJÈ7ÑSÔS�à'0Ð8�y ”|�|°bˆHð ! (Ý˜3Ý Ý%¥r¤x°	ÅÄÐ'LÑ'LÔ'L×'SÒ'SÑ'UÔ'UÝ¥¤¨HÑ!5Ô!5ðˆCð ð .ð%ð %ð %ð %à (§¢Ñ 0Ô 0ð%ñ %ô %Ð!ð
 —
’
Ð,Ñ-Ô-Ð-Ø�KŠK˜ÑÔÐØ�JŠJ�s‰OŒOˆOå�4‰yŒyÕ1Ò1Ð1Ø!%Ô!2×!CÒ!CÈdÐ!CÑ!SÔ!SÐSÐSÐSÐSÐSÐS�åÐ9Ð9°Ð9Ñ9Ô9Ñ9Ô9ð 7Ý,¨XÑ6Ô6Ð6à�ùõ ˆt‰9Œ9˜Š>ˆ>ØˆJð Ô*×;Ò;ÀdÐ;ÑKÔKÐKÐKÐKÐKÐKÐKˆåÐ-Ð- HÐ-Ñ-Ô-Ñ-Ô-ð 	/ØˆJå$ XÑ.Ô.Ð.rZ   r6  r^   c                óx   — |r7| j                              d„ |D ¦   «         ¦  «        }t          |¦  «        dk    S dS )úµDelete by vector ID.

        Args:
            ids: List of ids to delete.

        Returns:
            bool: True if deletion is successful,
            False otherwise.
        c                ó    — g | ]}t           |i‘ŒS rV   )rý   ©r£   rw  s     rX   rµ   z&AzureSearch.delete.<locals>.<listcomp>â  s   € Ð/LÐ/LÐ/LÀ1µ¸A°Ð/LÐ/LÐ/LrZ   r   F)r  Údelete_documentsrÕ   ©ry   r6  r€   Úress       rX   ÚdeletezAzureSearch.delete×  sE   € ð ð 	Ø”+×.Ò.Ð/LÐ/LÈÐ/LÑ/LÔ/LÑMÔMˆCÝ�s‘8”8˜a’<Ðà�5rZ   c              ‹  óˆ   K  — |r=| j                              d„ |D ¦   «         ¦  «        ƒ d{V —†}t          |¦  «        dk    S dS )r‚  c                ó   — g | ]}d |i‘ŒS )r,   rV   r„  s     rX   rµ   z'AzureSearch.adelete.<locals>.<listcomp>ò  s   € Ð;SÐ;SÐ;SÈ!¸TÀ1¸IÐ;SÐ;SÐ;SrZ   Nr   F)r  r…  rÕ   r†  s       rX   ÚadeletezAzureSearch.adeleteç  s\   è è € ð ð 	ØÔ)×:Ò:Ð;SÐ;SÈsÐ;SÑ;SÔ;SÑTÔTÐTÐTÐTÐTÐTÐTˆCÝ�s‘8”8˜a’<Ðà�5rZ   r¶   )rï   ÚqueryrU  rv   úList[Document]c               óÈ   — |p| j         }|dk    r | j        |fd|i|¤Ž}nA|dk    r | j        |fd|i|¤Ž}n*|dk    r | j        |fd|i|¤Ž}nt	          d|› d�¦  «        ‚|S ©NÚ
similarityrU  ré   Úsemantic_hybridúsearch_type of ú not allowed.)rï   r?   Úhybrid_searchÚsemantic_hybrid_searchr×   ©ry   rŒ  rU  rï   r€   Údocss         rX   Úsimilarity_searchzAzureSearch.similarity_search÷  sµ   € ð "Ð5 TÔ%5ˆØ˜,Ò&Ð&Ø%�4Ô% eÐ;Ð;¨qÐ;°FÐ;Ð;ˆDˆDØ˜HÒ$Ð$Ø%�4Ô% eÐ;Ð;¨qÐ;°FÐ;Ð;ˆDˆDØÐ-Ò-Ð-Ø.�4Ô.¨uÐDÐD¸ÐD¸VÐDÐDˆDˆDåÐI¨{ÐIÐIÐIÑJÔJÐJØˆrZ   )rU  úList[Tuple[Document, float]]c               óâ   — |                      d| j        ¦  «        }|dk    r | j        |fd|i|¤ŽS |dk    r | j        |fd|i|¤ŽS |dk    r | j        |fd|i|¤ŽS t          d|› d�¦  «        ‚)ú$Run similarity search with distance.rï   r�  rU  ré   r‘  r’  r“  )Úpoprï   Úvector_search_with_scoreÚhybrid_search_with_scoreÚ!semantic_hybrid_search_with_scorer×   ©ry   rŒ  rU  r€   rï   s        rX   Úsimilarity_search_with_scorez(AzureSearch.similarity_search_with_score
  s¶   € ð
 —j’j °Ô0@ÑAÔAˆØ˜,Ò&Ð&Ø0�4Ô0°ÐFÐF¸!ÐF¸vÐFÐFÐFØ˜HÒ$Ð$Ø0�4Ô0°ÐFÐF¸!ÐF¸vÐFÐFÐFØÐ-Ò-Ð-Ø9�4Ô9¸%ÐOÐOÀ1ÐOÈÐOÐOÐOåÐI¨{ÐIÐIÐIÑJÔJÐJrZ   c             ‹  óð   K  — |p| j         }|dk    r | j        |fd|i|¤Žƒ d {V —†}nM|dk    r | j        |fd|i|¤Žƒ d {V —†}n0|dk    r | j        |fd|i|¤Žƒ d {V —†}nt	          d|› d�¦  «        ‚|S r�  )rï   Úavector_searchÚahybrid_searchÚasemantic_hybrid_searchr×   r–  s         rX   Úasimilarity_searchzAzureSearch.asimilarity_search  sï   è è € ð "Ð5 TÔ%5ˆØ˜,Ò&Ð&Ø,˜Ô,¨UÐBÐB°aÐB¸6ÐBÐBÐBÐBÐBÐBÐBÐBˆDˆDØ˜HÒ$Ð$Ø,˜Ô,¨UÐBÐB°aÐB¸6ÐBÐBÐBÐBÐBÐBÐBÐBˆDˆDØÐ-Ò-Ð-Ø5˜Ô5°eÐKÐK¸qÐKÀFÐKÐKÐKÐKÐKÐKÐKÐKˆDˆDåÐI¨{ÐIÐIÐIÑJÔJÐJØˆrZ   c             ‹  ó
  K  — |                      d| j        ¦  «        }|dk    r | j        |fd|i|¤Žƒ d{V —†S |dk    r | j        |fd|i|¤Žƒ d{V —†S |dk    r | j        |fd|i|¤Žƒ d{V —†S t          d|› d�¦  «        ‚)	r›  rï   r�  rU  Nré   r‘  r’  r“  )r¯   rï   Úavector_search_with_scoreÚahybrid_search_with_scoreÚ"asemantic_hybrid_search_with_scorer×   r   s        rX   Úasimilarity_search_with_scorez)AzureSearch.asimilarity_search_with_score,  sð   è è € ð —j’j °Ô0@ÑAÔAˆØ˜,Ò&Ð&Ø7˜Ô7¸ÐMÐMÀÐMÀfÐMÐMÐMÐMÐMÐMÐMÐMÐMØ˜HÒ$Ð$Ø7˜Ô7¸ÐMÐMÀÐMÀfÐMÐMÐMÐMÐMÐMÐMÐMÐMØÐ-Ò-Ð-Ø@˜Ô@ÀÐVÐVÈ!ÐVÈvÐVÐVÐVÐVÐVÐVÐVÐVÐVåÐI¨{ÐIÐIÐIÑJÔJÐJrZ   )Úscore_thresholdr¬  úOptional[float]c               óH   ‡—  | j         |fd|i|¤Ž}‰€|nˆfd„|D ¦   «         S )NrU  c                ó,   •— g | ]}|d          ‰k    ¯|‘ŒS ©é   rV   ©r£   r^  r¬  s     €rX   rµ   zGAzureSearch.similarity_search_with_relevance_scores.<locals>.<listcomp>F  ó'   ø€ Ð?Ð?Ð?˜ q¨¤t¨Ò'>Ð'>�!Ð'>Ð'>Ð'>rZ   ©r�  ©ry   rŒ  rU  r¬  r€   Úresults      `  rX   Ú'similarity_search_with_relevance_scoresz3AzureSearch.similarity_search_with_relevance_scores:  óO   ø€ ð /�Ô.¨uÐDÐD¸ÐD¸VÐDÐDˆð Ð&ð ˆFà?Ð?Ð?Ð?˜VÐ?Ñ?Ô?ð	
rZ   c             ‹  óX   ‡K  —  | j         |fd|i|¤Žƒ d {V —†}‰€|nˆfd„|D ¦   «         S )NrU  c                ó,   •— g | ]}|d          ‰k    ¯|‘ŒS r°  rV   r²  s     €rX   rµ   zHAzureSearch.asimilarity_search_with_relevance_scores.<locals>.<listcomp>U  r³  rZ   ©r¨  rµ  s      `  rX   Ú(asimilarity_search_with_relevance_scoresz4AzureSearch.asimilarity_search_with_relevance_scoresI  óe   øè è € ð 6�tÔ5°eÐKÐK¸qÐKÀFÐKÐKÐKÐKÐKÐKÐKÐKˆð Ð&ð ˆFà?Ð?Ð?Ð?˜VÐ?Ñ?Ô?ð	
rZ   )Úfiltersr¾  c               óJ   — |                       |||¬¦  «        }d„ |D ¦   «         S )á\  
        Returns the most similar indexed documents to the query text.

        Args:
            query (str): The query text for which to find similar documents.
            k (int): The number of documents to return. Default is 4.

        Returns:
            List[Document]: A list of documents that are most similar to the query text.
        ©rU  r¾  c                ó   — g | ]\  }}|‘ŒS rV   rV   ©r£   ry  Ú_s      rX   rµ   z-AzureSearch.vector_search.<locals>.<listcomp>f  ó   € Ð2Ð2Ð2™˜˜Q�Ð2Ð2Ð2rZ   r´  ©ry   rŒ  rU  r¾  r€   Údocs_and_scoress         rX   r?   zAzureSearch.vector_searchX  s2   € ð ×7Ò7¸ÀÈGÐ7ÑTÔTˆØ2Ð2 /Ð2Ñ2Ô2Ð2rZ   c             ‹  óZ   K  — |                       |||¬¦  «        ƒ d{V —†}d„ |D ¦   «         S )rÀ  rÁ  Nc                ó   — g | ]\  }}|‘ŒS rV   rV   rÃ  s      rX   rµ   z.AzureSearch.avector_search.<locals>.<listcomp>x  rÅ  rZ   r»  rÆ  s         rX   r£  zAzureSearch.avector_searchh  s]   è è € ð !%× >Ò >Ø�Q ð !?ñ !
ô !
ð 
ð 
ð 
ð 
ð 
ð 
ˆð 3Ð2 /Ð2Ñ2Ô2Ð2rZ   c                ón   — |                       |¦  «        } | j        |d|fd|i|¤Ž}t          |¦  «        S )áž  Return docs most similar to query.

        Args:
            query (str): Text to look up documents similar to.
            k (int, optional): Number of Documents to return. Defaults to 4.
            filters (str, optional): Filtering expression. Defaults to None.

        Returns:
            List[Tuple[Document, float]]: List of Documents most similar
                to the query and score for each
        Ú r¾  ©rü   Ú_simple_searchÚ_results_to_documents©ry   rŒ  rU  r¾  r€   rx  Úresultss          rX   r�  z$AzureSearch.vector_search_with_scorez  sH   € ð$ ×$Ò$ UÑ+Ô+ˆ	Ø%�$Ô% i°°QÐRÐRÀÐRÈ6ÐRÐRˆå$ WÑ-Ô-Ð-rZ   c              ‹  ó–   K  — |                       |¦  «        ƒ d{V —†} | j        |d|fd|i|¤Žƒ d{V —†}t          |¦  «        ƒ d{V —†S )rË  NrÌ  r¾  ©r&  Ú_asimple_searchÚ_aresults_to_documentsrÐ  s          rX   r¨  z%AzureSearch.avector_search_with_score‘  s�   è è € ð$ ×,Ò,¨UÑ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3ˆ	Ø,˜Ô,Ø�r˜1ð
ð 
Ø&-ð
Ø17ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ˆõ ,¨GÑ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4rZ   é   ç      à?Úfetch_kÚlambda_multÚfloatc               óš   — |                       |¦  «        } | j        |d|fd|i|¤Ž}t          |t          j        |¦  «        ||¬¦  «        S )á"  Perform a search and return results that are reordered by MMR.

        Args:
            query (str): Text to look up documents similar to.
            k (int, optional): How many results to give. Defaults to 4.
            fetch_k (int, optional): Total results to select k from.
                Defaults to 20.
            lambda_mult: Number between 0 and 1 that determines the degree
                        of diversity among the results with 0 corresponding
                        to maximum diversity and 1 to minimum diversity.
                        Defaults to 0.5
            filters (str, optional): Filtering expression. Defaults to None.

        Returns:
            List[Tuple[Document, float]]: List of Documents most similar
                to the query and score for each
        rÌ  r¾  ©Úquery_embeddingrÙ  rU  ©rü   rÎ  Ú0_reorder_results_with_maximal_marginal_relevancerj  rk  ©	ry   rŒ  rU  rØ  rÙ  r¾  r€   rx  rÑ  s	            rX   Ú(max_marginal_relevance_search_with_scorez4AzureSearch.max_marginal_relevance_search_with_scoreª  sf   € ð6 ×$Ò$ UÑ+Ô+ˆ	Ø%�$Ô% i°°WÐXÐXÀgÐXÐQWÐXÐXˆå?Ø¥R¤X¨iÑ%8Ô%8ÀkÐUVð
ñ 
ô 
ð 	
rZ   c             ‹  óÂ   K  — |                       |¦  «        ƒ d{V —†} | j        |d|fd|i|¤Žƒ d{V —†}t          |t          j        |¦  «        ||¬¦  «        ƒ d{V —†S )rÜ  NrÌ  r¾  rÝ  ©r&  rÔ  Ú1_areorder_results_with_maximal_marginal_relevancerj  rk  rá  s	            rX   Ú)amax_marginal_relevance_search_with_scorez5AzureSearch.amax_marginal_relevance_search_with_scoreÌ  sÉ   è è € ð6 ×,Ò,¨UÑ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3ˆ	Ø,˜Ô,Ø�r˜7ð
ð 
Ø,3ð
Ø7=ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ˆõ GØÝœH YÑ/Ô/Ø#Øð	
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
rZ   c                ó:   —  | j         |fd|i|¤Ž}d„ |D ¦   «         S )rÀ  rU  c                ó   — g | ]\  }}|‘ŒS rV   rV   rÃ  s      rX   rµ   z-AzureSearch.hybrid_search.<locals>.<listcomp>ÿ  rÅ  rZ   ©rž  ©ry   rŒ  rU  r€   rÇ  s        rX   r”  zAzureSearch.hybrid_searchó  s7   € ð 8˜$Ô7¸ÐMÐMÀÐMÀfÐMÐMˆØ2Ð2 /Ð2Ñ2Ô2Ð2rZ   c              ‹  óJ   K  —  | j         |fd|i|¤Žƒ d{V —†}d„ |D ¦   «         S )rÀ  rU  Nc                ó   — g | ]\  }}|‘ŒS rV   rV   rÃ  s      rX   rµ   z.AzureSearch.ahybrid_search.<locals>.<listcomp>  rÅ  rZ   ©r©  rê  s        rX   r¤  zAzureSearch.ahybrid_search  sM   è è € ð !? Ô >¸uÐ TÐ TÈÐ TÈVÐ TÐ TÐTÐTÐTÐTÐTÐTˆØ2Ð2 /Ð2Ñ2Ô2Ð2rZ   c                ón   — |                       |¦  «        } | j        |||fd|i|¤Ž}t          |¦  «        S )á!  Return docs most similar to query with a hybrid query.

        Args:
            query: Text to look up documents similar to.
            k: Number of Documents to return. Defaults to 4.

        Returns:
            List of Documents most similar to the query and score for each
        r¾  rÍ  rÐ  s          rX   rž  z$AzureSearch.hybrid_search_with_score  sH   € ð" ×$Ò$ UÑ+Ô+ˆ	Ø%�$Ô% i°¸ÐUÐUÀ7ÐUÈfÐUÐUˆå$ WÑ-Ô-Ð-rZ   c              ‹  ó–   K  — |                       |¦  «        ƒ d{V —†} | j        |||fd|i|¤Žƒ d{V —†}t          |¦  «        ƒ d{V —†S )rï  Nr¾  rÓ  rÐ  s          rX   r©  z%AzureSearch.ahybrid_search_with_score'  s�   è è € ð" ×,Ò,¨UÑ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3ˆ	Ø,˜Ô,Ø�u˜að
ð 
Ø)0ð
Ø4:ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ˆõ ,¨GÑ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4rZ   c               óH   ‡—  | j         |fd|i|¤Ž}‰€|nˆfd„|D ¦   «         S )NrU  c                ó,   •— g | ]}|d          ‰k    ¯|‘ŒS r°  rV   r²  s     €rX   rµ   zCAzureSearch.hybrid_search_with_relevance_scores.<locals>.<listcomp>K  r³  rZ   ré  rµ  s      `  rX   Ú#hybrid_search_with_relevance_scoresz/AzureSearch.hybrid_search_with_relevance_scores?  r¸  rZ   c             ‹  óX   ‡K  —  | j         |fd|i|¤Žƒ d {V —†}‰€|nˆfd„|D ¦   «         S )NrU  c                ó,   •— g | ]}|d          ‰k    ¯|‘ŒS r°  rV   r²  s     €rX   rµ   zDAzureSearch.ahybrid_search_with_relevance_scores.<locals>.<listcomp>Z  r³  rZ   rí  rµ  s      `  rX   Ú$ahybrid_search_with_relevance_scoresz0AzureSearch.ahybrid_search_with_relevance_scoresN  r½  rZ   c               óš   — |                       |¦  «        } | j        |||fd|i|¤Ž}t          |t          j        |¦  «        ||¬¦  «        S )á  Return docs most similar to query with a hybrid query
            and reorder results by MMR.

        Args:
            query (str): Text to look up documents similar to.
            k (int, optional): Number of Documents to return. Defaults to 4.
            fetch_k (int, optional): Total results to select k from.
                Defaults to 20.
            lambda_mult: Number between 0 and 1 that determines the degree
                        of diversity among the results with 0 corresponding
                        to maximum diversity and 1 to minimum diversity.
                        Defaults to 0.5
            filters (str, optional): Filtering expression. Defaults to None.

        Returns:
            List of Documents most similar to the query and score for each
        r¾  rÝ  rß  rá  s	            rX   Ú/hybrid_max_marginal_relevance_search_with_scorez;AzureSearch.hybrid_max_marginal_relevance_search_with_score]  su   € ð8 ×$Ò$ UÑ+Ô+ˆ	Ø%�$Ô%Ø�u˜gð
ð 
Ø/6ð
Ø:@ð
ð 
ˆõ @Ø¥R¤X¨iÑ%8Ô%8ÀkÐUVð
ñ 
ô 
ð 	
rZ   c             ‹  óÂ   K  — |                       |¦  «        ƒ d{V —†} | j        |||fd|i|¤Žƒ d{V —†}t          |t          j        |¦  «        ||¬¦  «        ƒ d{V —†S )rø  Nr¾  rÝ  rä  rá  s	            rX   Ú0ahybrid_max_marginal_relevance_search_with_scorez<AzureSearch.ahybrid_max_marginal_relevance_search_with_score‚  sÉ   è è € ð8 ×,Ò,¨UÑ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3ˆ	Ø,˜Ô,Ø�u˜gð
ð 
Ø/6ð
Ø:@ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ˆõ GØÝœH YÑ/Ô/Ø#Øð	
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
rZ   rx  Ú
text_queryúSearchItemPaged[dict]c          	     ó`   — ddl m}  | j        j        d| |||t          ¬¦  «        g||dœ|¤ŽS )á©  Perform vector or hybrid search in the Azure search index.

        Args:
            embedding: A vector embedding to search in the vector space.
            text_query: A full-text search query expression;
                Use "*" or omit this parameter to perform only vector search.
            k: Number of documents to return.
            filters: Filtering expression.
        Returns:
            Search items
        r   ©ÚVectorizedQuery©ÚvectorÚk_nearest_neighborsr=   ©Úsearch_textÚvector_queriesÚfilterÚtoprV   )Úazure.search.documents.modelsr  r  Úsearchrÿ   ©ry   rx  rü  rU  r¾  r€   r  s          rX   rÎ  zAzureSearch._simple_searchª  sq   € ð( 	BÐAÐAÐAÐAÐAà!ˆtŒ{Ô!ð 
Ø"à�Ø$Ø()Ý0ðñ ô ðð Øð
ð 
ð ð
ð 
ð 	
rZ   úAsyncSearchItemPaged[dict]c          	   ‹  óp   K  — ddl m}  | j        j        d| |||t          ¬¦  «        g||dœ|¤Žƒ d{V —†S )rÿ  r   r   r  r  NrV   )r
  r  r  r  rÿ   r  s          rX   rÔ  zAzureSearch._asimple_searchÎ  s”   è è € ð( 	BÐAÐAÐAÐAÐAà-�TÔ&Ô-ð 
Ø"à�Ø$Ø()Ý0ðñ ô ðð Øð
ð 
ð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
rZ   c                ó:   —  | j         |fd|i|¤Ž}d„ |D ¦   «         S )á‡  
        Returns the most similar indexed documents to the query text.

        Args:
            query (str): The query text for which to find similar documents.
            k (int): The number of documents to return. Default is 4.
            filters: Filtering expression.

        Returns:
            List[Document]: A list of documents that are most similar to the query text.
        rU  c                ó   — g | ]\  }}}|‘Œ	S rV   rV   rÃ  s      rX   rµ   z6AzureSearch.semantic_hybrid_search.<locals>.<listcomp>  ó   € Ð5Ð5Ð5™	˜˜Q �Ð5Ð5Ð5rZ   ©Ú,semantic_hybrid_search_with_score_and_rerankrê  s        rX   r•  z"AzureSearch.semantic_hybrid_searchò  sG   € ð L˜$ÔKØð
ð 
Øð
Ø ð
ð 
ˆð 6Ð5 _Ð5Ñ5Ô5Ð5rZ   c              ‹  óJ   K  —  | j         |fd|i|¤Žƒ d{V —†}d„ |D ¦   «         S )r  rU  Nc                ó   — g | ]\  }}}|‘Œ	S rV   rV   rÃ  s      rX   rµ   z7AzureSearch.asemantic_hybrid_search.<locals>.<listcomp>  r  rZ   ©Ú-asemantic_hybrid_search_with_score_and_rerankrê  s        rX   r¥  z#AzureSearch.asemantic_hybrid_search  si   è è € ð !S Ô RØð!
ð !
Øð!
Ø ð!
ð !
ð 
ð 
ð 
ð 
ð 
ð 
ˆð 6Ð5 _Ð5Ñ5Ô5Ð5rZ   ÚscoreÚ
score_typeú"Literal['score', 'reranker_score']c               óx   ‡—  | j         |fd|i|¤Ž}|dk    rˆfd„|D ¦   «         S |dk    rˆfd„|D ¦   «         S dS )á  
        Returns the most similar indexed documents to the query text.

        Args:
            query (str): The query text for which to find similar documents.
            k (int): The number of documents to return. Default is 4.
            score_type: Must either be "score" or "reranker_score".
                Defaulted to "score".
            filters: Filtering expression.

        Returns:
            List[Tuple[Document, float]]: A list of documents and their
                corresponding scores.
        rU  r  c                ó0   •— g | ]\  }}}‰�|‰k    ¯||f‘ŒS rU   rV   ©r£   ry  r  rÄ  r¬  s       €rX   rµ   zAAzureSearch.semantic_hybrid_search_with_score.<locals>.<listcomp>3  ó=   ø€ ð ð ð á!�C˜ Ø"Ð*¨e°Ò.FÐ.Fð �e�à.FÐ.FÐ.FrZ   Úreranker_scorec                ó0   •— g | ]\  }}}‰�|‰k    ¯||f‘ŒS rU   rV   ©r£   ry  rÄ  r!  r¬  s       €rX   rµ   zAAzureSearch.semantic_hybrid_search_with_score.<locals>.<listcomp>9  ó>   ø€ ð ð ð á*�C˜˜NØ"Ð*¨nÀÒ.OÐ.Oð �nÐ%à.OÐ.OÐ.OrZ   Nr  ©ry   rŒ  rU  r  r¬  r€   rÇ  s       `  rX   rŸ  z-AzureSearch.semantic_hybrid_search_with_score  s«   ø€ ð. L˜$ÔKØð
ð 
Øð
Ø ð
ð 
ˆð ˜Ò Ð ðð ð ð à%4ðñ ô ð ð
 Ð+Ò+Ð+ðð ð ð à.=ðñ ô ð ð ,Ð+rZ   c             ‹  óˆ   ‡K  —  | j         |fd|i|¤Žƒ d{V —†}|dk    rˆfd„|D ¦   «         S |dk    rˆfd„|D ¦   «         S dS )r  rU  Nr  c                ó0   •— g | ]\  }}}‰�|‰k    ¯||f‘ŒS rU   rV   r  s       €rX   rµ   zBAzureSearch.asemantic_hybrid_search_with_score.<locals>.<listcomp>Z  r   rZ   r!  c                ó0   •— g | ]\  }}}‰�|‰k    ¯||f‘ŒS rU   rV   r#  s       €rX   rµ   zBAzureSearch.asemantic_hybrid_search_with_score.<locals>.<listcomp>`  r$  rZ   r  r%  s       `  rX   rª  z.AzureSearch.asemantic_hybrid_search_with_score?  sÍ   øè è € ð. !S Ô RØð!
ð !
Øð!
Ø ð!
ð !
ð 
ð 
ð 
ð 
ð 
ð 
ˆð ˜Ò Ð ðð ð ð à%4ðñ ô ð ð
 Ð+Ò+Ð+ðð ð ð à.=ðñ ô ð ð ,Ð+rZ   ú#List[Tuple[Document, float, float]]c               ó"  ‡
— ddl m}  | j        j        d	| ||                      |¦  «        |t
          ¬¦  «        g|d| j        dd|dœ|¤Ž}|                     ¦   «         pg }i Š
|D ]}|j        |j	        dœ‰
|j
        <   Œˆ
fd„|D ¦   «         }	|	S )
áL  Return docs most similar to query with a hybrid query.

        Args:
            query: Text to look up documents similar to.
            k: Number of Documents to return. Defaults to 4.
            filters: Filtering expression.

        Returns:
            List of Documents most similar to the query and score for each
        r   r   r  ÚsemanticÚ
extractive©r  r  r  Ú
query_typer<   Úquery_captionÚquery_answerr	  ©r"  Ú
highlightsc                ó´  •— g | �]S}t          |                     t          ¦  «        i t          |v r!t          |                     t          ¦  «        ini ¥t          |v rt          j        |t                   ¦  «        nd „ |                     ¦   «         D ¦   «         ¥|                     d¦  «        rE|                     di g¦  «        d         j	        |                     di g¦  «        d         j
        dœni ‰                     |                     t          d¦  «        d¦  «        dœ¥¬¦  «        t          |d         ¦  «        t          |d         ¦  «        f‘�ŒUS )	c                ó0   — i | ]\  }}|t           k    ¯||“ŒS rV   ©rÿ   ©r£   rU  rV  s      rX   r¥   zWAzureSearch.semantic_hybrid_search_with_score_and_rerank.<locals>.<listcomp>.<dictcomp>œ  ó4   € ð "ð "ð "á$( A qØ#$Õ(=Ò#=Ð#=ð !" 1à#=Ð#=Ð#=rZ   ú@search.captionsr   r2  rÌ  ©ÚcaptionsÚanswers©Úpage_contentr5   ú@search.scoreú@search.reranker_score©r   rœ  rÝ   rý   r  rn  ÚloadsrÔ   r¯   r"  r3  rÚ  ©r£   r¶  Úsemantic_answers_dicts     €rX   rµ   zLAzureSearch.semantic_hybrid_search_with_score_and_rerank.<locals>.<listcomp>�  s–  ø€ ð +
ð +
ñ +
ðT õQ Ø!'§¢­NÑ!;Ô!;ð!õ  )¨FÐ2Ð2õ '¨¯
ª
µ9Ñ(=Ô(=Ð>Ð>à!#ð	!õ  /°&Ð8Ð8õ !œJ v­oÔ'>Ñ?Ô?Ð?ð"ð "à,2¯LªL©N¬Nð"ñ "ô "ð!ð2 $*§:¢:Ð.@Ñ#AÔ#Að	!(Ø,2¯JªJÐ7IÈBÈ4Ñ,PÔ,PØ()ô-&ä&*Ø28·*²*Ð=OÐRTÐQUÑ2VÔ2VØ()ô3&ä&0ð!"ð !"ð !"ð &(à'<×'@Ò'@Ø &§
¢
­9°bÑ 9Ô 9Ø "ñ(ô (ðð ð!ð$ñ $ô $õJ �f˜_Ô-Ñ.Ô.Ý�fÐ5Ô6Ñ7Ô7ðO(ð+
ñ +
ð +
rZ   rV   )r
  r  r  r  rü   rÿ   r<   Úget_answersr"  r3  r-   )ry   rŒ  rU  r¾  r€   r  rÑ  Úsemantic_answersÚsemantic_answerr—  rD  s             @rX   r  z8AzureSearch.semantic_hybrid_search_with_score_and_rerankf  s  ø€ ð 	BÐAÐAÐAÐAÐAà$�$”+Ô$ð 
Øà�Ø×+Ò+¨EÑ2Ô2Ø()Ý0ðñ ô ðð Ø!Ø(,Ô(HØ&Ø%Øð
ð 
ð ð
ð 
ˆð$ #×.Ò.Ñ0Ô0Ð6°BÐØ&(ÐØ/ð 	ð 	ˆOà'Ô,Ø-Ô8ð:ð :Ð! /Ô"5Ñ6Ð6ð
+
ð +
ð +
ð +
ðT "ðU+
ñ +
ô +
ˆðX ˆrZ   c             ‹  óZ  ‡K  — ddl m} |                      |¦  «        ƒ d{V —†} | j        j        d
| |||t
          ¬¦  «        g|d| j        dd|dœ|¤Žƒ d{V —†}|                     ¦   «         ƒ d{V —†pg }i Š|D ]}	|	j        |	j	        dœ‰|	j
        <   Œˆfd	„|2 ¦   «         ƒ d{V —†}
|
S )r+  r   r   Nr  r,  r-  r.  r2  c              “  óÄ  •K  — g | 3 d {V —†	 }t          |                     t          ¦  «        i t          |v r!t          |                     t          ¦  «        ini ¥t          |v rt          j        |t                   ¦  «        nd„ |                     ¦   «         D ¦   «         ¥|                     d¦  «        rE|                     di g¦  «        d         j	        |                     di g¦  «        d         j
        dœni ‰                     |                     t          d¦  «        d¦  «        dœ¥¬¦  «        t          |d         ¦  «        t          |d	         ¦  «        f‘�ŒZ6 S )
Nc                ó0   — i | ]\  }}|t           k    ¯||“ŒS rV   r6  r7  s      rX   r¥   zXAzureSearch.asemantic_hybrid_search_with_score_and_rerank.<locals>.<listcomp>.<dictcomp>ô  r8  rZ   r9  r   r2  rÌ  r:  r=  r?  r@  rA  rC  s     €rX   rµ   zMAzureSearch.asemantic_hybrid_search_with_score_and_rerank.<locals>.<listcomp>ç  s½  øè è € ð +
ð +
ð +
ð +
ð +
ð +
ð +
ð +
ð +
ðT õQ Ø!'§¢­NÑ!;Ô!;ð!õ  )¨FÐ2Ð2õ '¨¯
ª
µ9Ñ(=Ô(=Ð>Ð>à!#ð	!õ  /°&Ð8Ð8õ !œJ v­oÔ'>Ñ?Ô?Ð?ð"ð "à,2¯LªL©N¬Nð"ñ "ô "ð!ð2 $*§:¢:Ð.@Ñ#AÔ#Að	!(Ø,2¯JªJÐ7IÈBÈ4Ñ,PÔ,PØ()ô-&ä&*Ø28·*²*Ð=OÐRTÐQUÑ2VÔ2VØ()ô3&ä&0ð!"ð !"ð !"ð &(à'<×'@Ò'@Ø &§
¢
­9°bÑ 9Ô 9Ø "ñ(ô (ðð ð!ð$ñ $ô $õJ �f˜_Ô-Ñ.Ô.Ý�fÐ5Ô6Ñ7Ô7ðO(ð+
ñ +
ð +
ð +
s   †E rV   )r
  r  r&  r  r  rÿ   r<   rE  r"  r3  r-   )ry   rŒ  rU  r¾  r€   r  r  rÑ  rF  rG  r—  rD  s              @rX   r  z9AzureSearch.asemantic_hybrid_search_with_score_and_rerank½  s|  øè è € ð 	BÐAÐAÐAÐAÐAà×)Ò)¨%Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0ˆØ0˜Ô)Ô0ð 
Øà�Ø!Ø()Ý0ðñ ô ðð Ø!Ø(,Ô(HØ&Ø%Øð
ð 
ð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ˆð$ #*×"5Ò"5Ñ"7Ô"7Ð7Ð7Ð7Ð7Ð7Ð7Ð>¸BÐØ&(ÐØ/ð 	ð 	ˆOà'Ô,Ø-Ô8ð:ð :Ð! /Ô"5Ñ6Ð6ð
+
ð +
ð +
ð +
ðT !(ðU+
ñ +
ô +
ð +
ð +
ð +
ð +
ð +
ð +
ˆðX ˆrZ   rÌ  úlangchain-indexÚclsúType[AzureSearch]r   c	                óB   —  | ||||f||dœ|	¤Ž}
 |
j         ||fi |	¤Ž |
S ©N)r=   r;   )r>  ©rL  r)  rx  r+  rë   rì   r;   r9   r=   r€   Úazure_searchs              rX   Ú
from_textszAzureSearch.from_texts  sb   € ð �sØ!ØØØð	
ð
 Ø"7ð
ð 
ð ð
ð 
ˆð 	ˆÔ˜u iÐ:Ð:°6Ð:Ð:Ð:ØÐrZ   c	              ‹  óR   K  —  | ||||f||dœ|	¤Ž}
 |
j         ||fi |	¤Žƒ d {V —† |
S rO  )rD  rP  s              rX   Úafrom_textszAzureSearch.afrom_texts/  sx   è è € ð �sØ!ØØØð	
ð
 Ø"7ð
ð 
ð ð
ð 
ˆð &ˆlÔ% e¨YÐAÐA¸&ÐAÐAÐAÐAÐAÐAÐAÐAÐAØÐrZ   )rë   rì   r9   r=   c          
   ‹  óÂ   K  — t          |¦  «        \  }}	|	€t          d¦  «        ‚t          |	d         ¦  «        }
 | d||||||
dœ|¤Ž} |j        ||fi |¤Žƒ d {V —† |S ©Nz0Cannot create AzureSearch from empty embeddings.r±  )rë   rì   r9   rí   r=   rê   rV   )Ú_peekr×   rÕ   rC  ©rL  rE  rx  r+  rë   rì   r9   r=   r€   Úfirst_text_embeddingrê   rQ  s               rX   Úafrom_embeddingszAzureSearch.afrom_embeddingsI  s²   è è € õ 16°oÑ0FÔ0FÑ-ˆÐ-ØÐ'ÝÐOÑPÔPÐPÝ#&Ð';¸AÔ'>Ñ#?Ô#?Ð à�sð 
Ø"7Ø-Ø!Ø(ØØ%=ð
ð 
ð ð
ð 
ˆð +ˆlÔ*¨?¸IÐPÐPÈÐPÐPÐPÐPÐPÐPÐPÐPÐPØÐrZ   c          
     ó²   — t          |¦  «        \  }}	|	€t          d¦  «        ‚t          |	d         ¦  «        }
 | d||||||
dœ|¤Ž} |j        ||fi |¤Ž |S rV  )rW  r×   rÕ   r;  rX  s               rX   Úfrom_embeddingszAzureSearch.from_embeddingsg  sœ   € õ 16°oÑ0FÔ0FÑ-ˆÐ-ØÐ'ÝÐOÑPÔPÐPÝ#&Ð';¸AÔ'>Ñ#?Ô#?Ð à�sð 
Ø"7Ø-Ø!Ø(ØØ%=ð
ð 
ð ð
ð 
ˆð 	$ˆÔ# O°YÐIÐIÀ&ÐIÐIÐIØÐrZ   ÚAzureSearchVectorStoreRetrieverc                óä   — |                      d| j        ¦  «        }||d<   |                     dd¦  «        pg }|                     |                      ¦   «         ¦  «         t          dd| i|¤d|i¤ŽS )aÇ  Return AzureSearchVectorStoreRetriever initialized from this VectorStore.

        Args:
            search_type (Optional[str]): Overrides the type of search that
                the Retriever should perform. Defaults to `self.search_type`.
                Can be "similarity", "hybrid", or "semantic_hybrid".
            search_kwargs (Optional[Dict]): Keyword arguments to pass to the
                search function. Can include things like:
                    score_threshold: Minimum relevance threshold
                        for similarity_score_threshold
                    fetch_k: Amount of documents to pass to MMR algorithm (Default: 20)
                    lambda_mult: Diversity of results returned by MMR;
                        1 for minimum diversity and 0 for maximum. (Default: 0.5)
                    filter: Filter by document metadata

        Returns:
            AzureSearchVectorStoreRetriever: Retriever class for VectorStore.
        rï   ÚtagsNÚvectorstorerV   )r¯   rï   rœ  ÚextendÚ_get_retriever_tagsr]  )ry   r€   rï   r_  s       rX   Úas_retrieverzAzureSearch.as_retriever†  s   € ð& —j’j °Ô0@ÑAÔAˆØ +ˆˆ}Ñà�zŠz˜& $Ñ'Ô'Ð-¨2ˆØ�Š�D×,Ò,Ñ.Ô.Ñ/Ô/Ð/Ý.ÐUÐU¸4ÐUÀ6ÐUÐUÐPTÐUÐUÐUÐUrZ   )ré   NNNNNNN)$rë   r8   rì   r:   r9   r8   rí   rî   rï   r8   r<   r:   r=   r>   r?   r@   rA   rB   rC   rD   rE   r:   rH   rI   rê   rð   rL   rM   r;   r:   rN   rO   rP   rQ   r€   r   r›   )rR   r  )r"  r8   rR   r#  rU   )
r)  r*  r+  r,  r(  r-  r€   r   rR   r.  )rE  rF  r+  r,  r(  r-  rR   r.  )r6  r-  r€   r   rR   r^   )r¶   )
rŒ  r8   rU  rv   rï   r:   r€   r   rR   r�  )rŒ  r8   rU  rv   r€   r   rR   r™  )
rŒ  r8   rU  rv   r¬  r­  r€   r   rR   r™  )
rŒ  r8   rU  rv   r¾  r:   r€   r   rR   r�  )r¶   N)
rŒ  r8   rU  rv   r¾  r:   r€   r   rR   r™  )r¶   rÖ  r×  )rŒ  r8   rU  rv   rØ  rv   rÙ  rÚ  r¾  r:   r€   r   rR   r™  )rŒ  r8   rU  rv   r€   r   rR   r�  )rx  r#  rü  r8   rU  rv   r¾  r:   r€   r   rR   rý  )rx  r#  rü  r8   rU  rv   r¾  r:   r€   r   rR   r  )r¶   r  )rŒ  r8   rU  rv   r  r  r¬  r­  r€   r   rR   r™  )
rŒ  r8   rU  rv   r¾  r:   r€   r   rR   r)  )NrÌ  rÌ  NrK  N)rL  rM  r)  r.  rx  r   r+  r,  rë   r8   rì   r8   r;   r:   r9   r8   r=   r>   r€   r   rR   rè   )rL  rM  rE  rF  rx  r   r+  r,  rë   r8   rì   r8   r9   r8   r=   r>   r€   r   rR   rè   )r€   r   rR   r]  )1r…   r†   r‡   Ú__doc__rz   r  Úpropertyr!  r&  r>  rD  r;  rC  rˆ  r‹  r˜  r¡  r¦  r«  r·  r¼  r?   r£  r�  r¨  râ  ræ  r”  r¤  rž  r©  ró  rö  rù  rû  rÎ  rÔ  r•  r¥  rŸ  rª  r  r  ÚclassmethodrR  rT  rZ  r\  rc  rV   rZ   rX   rè   rè   r  sS  € € € € € Ø0Ð0ð $Ø59Ø.2Ø04ð Ø;?Ø15Ø.2ðB*ð" 37ØEIØ/3Ø6:ØAEð+B*ð B*ð B*ð B*ð B*ð B*ðH!ð !ð !ð !ð2 ð
ð 
ð 
ñ „Xð
ðAð Að Að Að +/ðQð
 %)ðQð Qð Qð Qð Qð QðB +/ðXð
 %)ðXð Xð Xð Xð Xð XðB +/ð;/ð
 %)ð;/ð ;/ð ;/ð ;/ð ;/ð ;/ð@ +/ð;/ð
 %)ð;/ð ;/ð ;/ð ;/ð ;/ð ;/ðzð ð ð ð ð ð ð ð ð ð& ðð
 &*ðð ð ð ð ð ð( '(ðKð Kð Kð Kð Kð Kð$ ðð
 &*ðð ð ð ð ð ð( '(ðKð Kð Kð Kð Kð Kð" ð
ð
 ,0ð
ð 
ð 
ð 
ð 
ð 
ð$ ð
ð
 ,0ð
ð 
ð 
ð 
ð 
ð 
ð  $%ð3ØBFð3ð 3ð 3ð 3ð 3ð 3ð" $%ð3ØBFð3ð 3ð 3ð 3ð 3ð 3ð* Ø!%ð	.ð .ð .ð .ð .ð4 Ø!%ð	5ð 5ð 5ð 5ð 5ð8 ØØ ð 
ð "&ð 
ð  
ð  
ð  
ð  
ð  
ðJ ØØ ð%
ð "&ð%
ð %
ð %
ð %
ð %
ð %
ðN3ð 3ð 3ð 3ð 3ð $%ð3ð 3ð 3ð 3ð 3ð& Ø!%ð	.ð .ð .ð .ð .ð2 Ø!%ð	5ð 5ð 5ð 5ð 5ð6 ð
ð
 ,0ð
ð 
ð 
ð 
ð 
ð 
ð$ ð
ð
 ,0ð
ð 
ð 
ð 
ð 
ð 
ð$ ØØ ð#
ð "&ð#
ð #
ð #
ð #
ð #
ð #
ðP ØØ ð&
ð "&ð&
ð &
ð &
ð &
ð &
ð &
ð\ "&ð"
ð "
ð "
ð "
ð "
ð "
ðT "&ð"
ð "
ð "
ð "
ð "
ð "
ðJ $%ð6ð 6ð 6ð 6ð 6ð( $%ð6ð 6ð 6ð 6ð 6ð, Ø9@ð	%ð ,0ð%ð %ð %ð %ð %ð %ðT Ø9@ð	%ð ,0ð%ð %ð %ð %ð %ð %ðP $%ðUØBFðUð Uð Uð Uð Uð Uðp $%ðVØBFðVð Vð Vð Vð Vð Vðp ð
 +/Ø%'Ø "Ø/3Ø+Ø.2ðð ð ð ñ „[ðð2 ð
 +/Ø%'Ø "Ø/3Ø+Ø.2ðð ð ð ñ „[ðð2 ð
 +/ð	ð &(Ø "Ø+Ø.2ðð ð ð ð ñ „[ðð: ð
 +/ð	ð &(Ø "Ø+Ø.2ðð ð ð ð ñ „[ðð<Vð Vð Vð Vð Vð VrZ   rè   c                  óÂ   — e Zd ZU dZded<   	 dZded<   	 dZded	<   	 i Zd
ed<   	 dZded<    e	d¬¦  «        Z
 ed¬¦  «        ed!d„¦   «         ¦   «         Zd"d„Zd#d„Zd S )$r]  z-Retriever that uses `Azure Cognitive Search`.rè   r`  ré   r8   rï   r¶   rv   rU  ÚdictÚsearch_kwargs)r�  Úsimilarity_score_thresholdré   Úhybrid_score_thresholdr‘  Úsemantic_hybrid_score_thresholdzClassVar[Collection[str]]Úallowed_search_typesT)Úarbitrary_types_allowedÚbefore)ÚmodeÚvaluesr
   rR   r   c                ód   — d|v r+|d         }|| j         vrt          d|› d| j         › �¦  «        ‚|S )zValidate search type.rï   r’  z  not allowed. Valid values are: )rm  r×   )rL  rq  rï   s      rX   Úvalidate_search_typez4AzureSearchVectorStoreRetriever.validate_search_typeÃ  sa   € ð ˜FÐ"Ð"Ø  Ô/ˆKØ #Ô":Ð:Ð:Ý ð2 kð 2ð 2ØÔ/ð2ð 2ñô ð ð ˆrZ   rŒ  Úrun_managerr   r€   r�  c                óP  — i | j         ¥|¥}| j        dk    r | j        j        |fd| j        i|¤Ž}nô| j        dk    r%d„  | j        j        |fd| j        i|¤ŽD ¦   «         }nÄ| j        dk    r | j        j        |fd| j        i|¤Ž}nž| j        dk    r%d„  | j        j        |fd| j        i|¤ŽD ¦   «         }nn| j        dk    r | j        j        |fd| j        i|¤Ž}nH| j        d	k    r%d
„  | j        j	        |fd| j        i|¤ŽD ¦   «         }nt          d| j        › d�¦  «        ‚|S )Nr�  rU  rj  c                ó   — g | ]\  }}|‘ŒS rV   rV   rÃ  s      rX   rµ   zKAzureSearchVectorStoreRetriever._get_relevant_documents.<locals>.<listcomp>Û  ó,   € ð ð ð á�C˜ð ðð ð rZ   ré   rk  c                ó   — g | ]\  }}|‘ŒS rV   rV   rÃ  s      rX   rµ   zKAzureSearchVectorStoreRetriever._get_relevant_documents.<locals>.<listcomp>ä  rw  rZ   r‘  rl  c                ó   — g | ]\  }}|‘ŒS rV   rV   rÃ  s      rX   rµ   zKAzureSearchVectorStoreRetriever._get_relevant_documents.<locals>.<listcomp>í  rw  rZ   r’  r“  )ri  rï   r`  r?   rU  r·  r”  ró  r•  rŸ  r×   )ry   rŒ  rt  r€   Úparamsr—  s         rX   Ú_get_relevant_documentsz7AzureSearchVectorStoreRetriever._get_relevant_documentsÐ  sì  € ð 2�DÔ&Ð1¨&Ð1ˆàÔ˜|Ò+Ð+Ø1�4Ô#Ô1°%ÐLÐL¸4¼6ÐLÀVÐLÐLˆDˆDØÔÐ!=Ò=Ð=ðð àV˜dÔ.ÔVØðð Ø!œVðØ'-ðð ðñ ô ˆDˆDð Ô Ò)Ð)Ø1�4Ô#Ô1°%ÐLÐL¸4¼6ÐLÀVÐLÐLˆDˆDØÔÐ!9Ò9Ð9ðð àR˜dÔ.ÔRØðð Ø!œVðØ'-ðð ðñ ô ˆDˆDð ÔÐ!2Ò2Ð2Ø:�4Ô#Ô:¸5ÐUÐUÀDÄFÐUÈfÐUÐUˆDˆDØÔÐ!BÒBÐBðð àP˜dÔ.ÔPØðð Ø!œVðØ'-ðð ðñ ô ˆDˆDõ ÐN¨tÔ/?ÐNÐNÐNÑOÔOÐOØˆrZ   r   c             ‹  ó¦  K  — i | j         ¥|¥}| j        dk    r" | j        j        |fd| j        i|¤Žƒ d {V —†}�n| j        dk    r- | j        j        |fd| j        i|¤Žƒ d {V —†}d„ |D ¦   «         }nÞ| j        dk    r! | j        j        |fd| j        i|¤Žƒ d {V —†}n²| j        dk    r- | j        j        |fd| j        i|¤Žƒ d {V —†}d„ |D ¦   «         }nz| j        dk    r! | j        j        |fd| j        i|¤Žƒ d {V —†}nN| j        d	k    r+d
„  | j        j	        |fd| j        i|¤Žƒ d {V —†D ¦   «         }nt          d| j        › d�¦  «        ‚|S )Nr�  rU  rj  c                ó   — g | ]\  }}|‘ŒS rV   rV   rÃ  s      rX   rµ   zLAzureSearchVectorStoreRetriever._aget_relevant_documents.<locals>.<listcomp>  ó   € Ð6Ð6Ð6™F˜C �CÐ6Ð6Ð6rZ   ré   rk  c                ó   — g | ]\  }}|‘ŒS rV   rV   rÃ  s      rX   rµ   zLAzureSearchVectorStoreRetriever._aget_relevant_documents.<locals>.<listcomp>  r~  rZ   r‘  rl  c                ó   — g | ]\  }}|‘ŒS rV   rV   rÃ  s      rX   rµ   zLAzureSearchVectorStoreRetriever._aget_relevant_documents.<locals>.<listcomp>  rw  rZ   r’  r“  )ri  rï   r`  r£  rU  r¼  r¤  rö  r¥  rª  r×   )ry   rŒ  rt  r€   rz  r—  rÇ  s          rX   Ú_aget_relevant_documentsz8AzureSearchVectorStoreRetriever._aget_relevant_documents÷  s•  è è € ð 2�DÔ&Ð1¨&Ð1ˆàÔ˜|Ò+Ð+Ø8˜Ô)Ô8¸ÐSÐSÀ$Ä&ÐSÈFÐSÐSÐSÐSÐSÐSÐSÐSˆD‰DØÔÐ!=Ò=Ð=àO�dÔ&ÔOØðð Ø!œVðØ'-ðð ð ð ð ð ð ð ð ð
 7Ð6 oÐ6Ñ6Ô6ˆDˆDØÔ Ò)Ð)Ø8˜Ô)Ô8¸ÐSÐSÀ$Ä&ÐSÈFÐSÐSÐSÐSÐSÐSÐSÐSˆDˆDØÔÐ!9Ò9Ð9àK�dÔ&ÔKØðð Ø!œVðØ'-ðð ð ð ð ð ð ð ð ð
 7Ð6 oÐ6Ñ6Ô6ˆDˆDØÔÐ!2Ò2Ð2ØA˜Ô)ÔAØðð ØœðØ#)ðð ð ð ð ð ð ð ˆDˆDð ÔÐ!BÒBÐBðð à$W DÔ$4Ô$WØð%ð %Ø!œVð%Ø'-ð%ð %ð ð ð ð ð ð ðñ ô ˆDˆDõ ÐN¨tÔ/?ÐNÐNÐNÑOÔOÐOØˆrZ   N)rq  r
   rR   r   )rŒ  r8   rt  r   r€   r   rR   r�  )rŒ  r8   rt  r   r€   r   rR   r�  )r…   r†   r‡   rd  Ú__annotations__rï   rU  ri  rm  r   Úmodel_configr   rf  rs  r{  r�  rV   rZ   rX   r]  r]  ¡  s  € € € € € € Ø7Ð7àÐÐÑØ?Ø€KÐÐÐÑð-ð €A€J€J€J�JØ(Ø€MÐÐÐÑðð7Ðð ð ð ñ ð �:Ø $ðñ ô €Lð €_˜(Ð#Ñ#Ô#Øð	ð 	ð 	ñ „[ñ $Ô#ð	ð%ð %ð %ð %ðN(ð (ð (ð (ð (ð (rZ   r]  rÑ  úSearchItemPaged[Dict]r™  c                ó   — d„ | D ¦   «         }|S )Nc                óV   — g | ]&}t          |¦  «        t          |d          ¦  «        f‘Œ'S ©r?  ©Ú_result_to_documentrÚ  ©r£   r¶  s     rX   rµ   z)_results_to_documents.<locals>.<listcomp>%  sG   € ð ð ð ð
 õ   Ñ'Ô'Ý�&˜Ô)Ñ*Ô*ð	
ðð ð rZ   rV   ©rÑ  r—  s     rX   rÏ  rÏ  "  s)   € ðð ð
 ðñ ô €Dð €KrZ   úAsyncSearchItemPaged[Dict]c              ƒ  ó.   K  — d„ | 2 ¦   «         ƒ d {V —†}|S )Nc              “  óh   K  — g | 3 d {V —†	 }t          |¦  «        t          |d         ¦  «        f‘Œ-6 S ©Nr?  rˆ  rŠ  s     rX   rµ   z*_aresults_to_documents.<locals>.<listcomp>2  sn   è è € ð ð ð ð ð ð ð ð ð ð
 õ   Ñ'Ô'Ý�&˜Ô)Ñ*Ô*ð	
ðð ð ð s   …2rV   r‹  s     rX   rÕ  rÕ  /  sK   è è € ðð ð
 $ðñ ô ð ð ð ð ð ð €Dð €KrZ   r×  r¶   rÞ  ú
np.ndarrayrÙ  rÚ  rU  rv   c              ƒ  óø   K  — d„ | 2 ¦   «         ƒ d {V —†}t          t          t          |Ž ¦  «        \  }}}t          ||||¬¦  «        }g }	|D ]-}
|
dk    r n$|	                     ||
         ||
         f¦  «         Œ.|	S )Nc              “  ó€   K  — g | 3 d {V —†	 }t          |¦  «        t          |d         ¦  «        |t                   f‘Œ96 S r�  ©r‰  rÚ  rÿ   rŠ  s     rX   rµ   zE_areorder_results_with_maximal_marginal_relevance.<locals>.<listcomp>C  sw   è è € ð ð ð ð ð ð ð ð ð ð õ	   Ñ'Ô'Ý�&˜Ô)Ñ*Ô*ØÕ(Ô)ð	
ðð ð ð s   …>©rU  rÙ  éÿÿÿÿ©ÚmaprÜ   r<  r   rq  ©rÑ  rÞ  rÙ  rU  r—  rY  ÚscoresÚvectorsÚnew_orderingÚretr«   s              rX   rå  rå  <  sÊ   è è € ðð ð $ðñ ô ð ð ð ð ð ð €Dõ "%¥T­3°¨:Ñ!6Ô!6Ñ€Iˆv�wõ .Ø˜ A°;ðñ ô €Lð
 )+€CØð .ð .ˆà�Š7ˆ7ØˆEØ�
Š
�I˜a”L &¨¤)Ð,Ñ-Ô-Ð-Ð-à€JrZ   c                óð   — d„ | D ¦   «         }|sg S t          t          t          |Ž ¦  «        \  }}}t          ||||¬¦  «        }g }	|D ]-}
|
dk    r n$|	                     ||
         ||
         f¦  «         Œ.|	S )Nc                ón   — g | ]2}t          |¦  «        t          |d          ¦  «        |t                   f‘Œ3S r‡  r“  rŠ  s     rX   rµ   zD_reorder_results_with_maximal_marginal_relevance.<locals>.<listcomp>d  sP   € ð ð ð ð õ	   Ñ'Ô'Ý�&˜Ô)Ñ*Ô*ØÕ(Ô)ð	
ðð ð rZ   r”  r•  r–  r˜  s              rX   rà  rà  ]  sµ   € ðð ð ðñ ô €Dð ð Øˆ	Ý!$¥T­3°¨:Ñ!6Ô!6Ñ€Iˆv�wõ .Ø˜ A°;ðñ ô €Lð
 )+€CØð .ð .ˆà�Š7ˆ7ØˆEØ�
Š
�I˜a”L &¨¤)Ð,Ñ-Ô-Ð-Ð-à€JrZ   r¶  r
   r   c                ó†  — t           | v rNt          | t                    t          ¦  «        r| t                    }n>t          j        | t                    ¦  «        }nd„ |                      ¦   «         D ¦   «         }t          | v r"t          |                      t          ¦  «        i}ni }t          | t                   i |¥|¥¬¦  «        S )Nc                ó:   — i | ]\  }}|t           t          fv¯||“ŒS rV   )rÿ   rÝ   )r£   r-   r©   s      rX   r¥   z'_result_to_document.<locals>.<dictcomp>ˆ  s9   € ð 
ð 
ð 
á��UØÕ0µ.ÐAÐAÐAð �àAÐAÐArZ   r=  )
r  rÛ   rh  rn  rB  rÔ   rý   rœ  r   rÝ   )r¶  Úfields_metadataÚ	fields_ids      rX   r‰  r‰  €  sË   € å˜&Ð Ð Ý�f�_Ô-­tÑ4Ô4ð 	BØ$¥_Ô5ˆOˆOå"œj¨µÔ)@ÑAÔAˆOˆOð
ð 
à$Ÿlšl™nœnð
ñ 
ô 
ˆõ �FÐÐÝ §
¢
­9Ñ 5Ô 5Ð6ˆ	ˆ	àˆ	ÝØ�NÔ+ð
Øð
àð
ðñ ô ð rZ   Úiterabler   r/   úOptional[Any]úTuple[Iterable, Any]c                óœ   — 	 t          | ¦  «        }t          |¦  «        }t          j        |g|¦  «        } | |fS # t          $ r | |fcY S w xY wrU   )ÚiterÚnextÚ	itertoolsÚchainÚStopIteration)r£  r/   Úiteratorr©   s       rX   rW  rW  ›  sf   € ð!Ý˜‘>”>ˆÝ�X‘”ˆÝ”? E 7¨HÑ5Ô5ˆØ˜ˆÐøÝð !ð !ð !Ø˜Ð Ð Ð Ð ð!øøøs   ‚7: ºAÁ
A)NNNNNNNNNr6   NFNNN)$r7   r8   r9   r8   r-   r:   r;   r:   r<   r:   r=   r>   r?   r@   rA   rB   rC   rD   rE   r:   rF   r>   rG   r:   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   )NNNNNNNNNr6   NTNNN)$r7   r8   r9   r8   r-   r:   r;   r:   r<   r:   r=   r>   r?   r@   rA   rB   rC   rD   rE   r:   rF   r>   rG   r:   rH   rI   rJ   r[   rL   rM   rN   rO   rP   rQ   rR   r\   )$r7   r8   r9   r8   r-   r:   r;   r:   r<   r:   r=   r>   r?   r@   rA   rB   rC   rD   rE   r:   rF   r>   rG   r:   rH   rI   rJ   r^   rL   rM   rN   rO   rP   rQ   rR   r_   )rÑ  r„  rR   r™  )rÑ  rŒ  rR   r™  )r×  r¶   )
rÑ  rŒ  rÞ  r�  rÙ  rÚ  rU  rv   rR   r™  )
rÑ  r„  rÞ  r�  rÙ  rÚ  rU  rv   rR   r™  )r¶  r
   rR   r   rU   )r£  r   r/   r¤  rR   r¥  )RÚ
__future__r   r  rf  r  r©  rn  Úloggingrw   rd  Útypesr   Útypingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Únumpyrj  Úlangchain_core.callbacksr   r   Úlangchain_core.documentsr   Úlangchain_core.embeddingsr   Úlangchain_core.exceptionsr   Úlangchain_core.retrieversr   Úlangchain_core.utilsr   Úlangchain_core.vectorstoresr   Úpydanticr   r   Ú&langchain_community.vectorstores.utilsr   Ú	getLoggerr9  rÉ   r   rÊ   r!   rÎ   r"   r#   rÏ   r$   rà   rÑ   r&   r'   r(   r)   r*   rý   rÝ   rÿ   r  rr  rY   rè   r]  rÏ  rÕ  rå  rà  r‰  rW  rV   rZ   rX   ú<module>r¼     sZ  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð$ Ð Ð Ð ðð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø -Ð -Ð -Ð -Ð -Ð -Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0à MÐ MÐ MÐ MÐ MÐ Mà	ˆÔ	Ñ	Ô	€àð Ø6Ð6Ð6Ð6Ð6Ð6ØAÐAÐAÐAÐAÐAØDÐDÐDÐDÐDÐDÐDÐDðð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ˆLØÐ)@È$ðñ ô €	ð �Ø$Ø(Øðñ ô €ð
 %˜Ø+Ø/Øðñ ô Ð ð
 �,Ø Ð*BÈJðñ ô €ð Ð ð 
ð Ø+/Ø15Ø*.Ø,0ð 	Ø7;Ø-1Ø26Ø DØ*.Ø"ØAEØ26Ø=Að'ð ð ð ñ 
„ðð. 
ð Ø+/Ø15Ø*.Ø,0ð 	Ø7;Ø-1Ø26Ø DØ*.Ø ØAEØ26Ø=Að'#ð #ð #ð #ñ 
„ð#ð4 Ø+/Ø15Ø*.Ø,0ð 	Ø7;Ø-1Ø26Ø DØ*.ØØAEØ26Ø=Að'i
ð i
ð i
ð i
ð i
ðXlVð lVð lVð lVð lV�+ñ lVô lVð lVð^)~ð ~ð ~ð ~ð ~ mñ ~ô ~ð ~ðB
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð  Øð	ð ð ð ð ðH Øð	 ð  ð  ð  ð  ðFð ð ð ð6!ð !ð !ð !ð !ð !ð !rZ   