Ë
    ÂXÕi
Í  ã                  óþ  — d Z ddlmZ ddl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lmZmZmZmZmZmZmZ dd	lmZ dd
lmZmZmZmZmZmZmZ ddl m!Z!m"Z"m#Z# eeeedf   Z$ee%e&eeedf   Z' G d„ de«      Z(e%e&ee)e&e*f   e(e)e&ef   f   f   Z+	 e G d„ de«      «       Z, G d„ de«      Z- G d„ de#«      Z.ee(e.e)e&e*f   e)e&ef   f   Z/ G d„ de«      Z0e0Z1 G d„ de0«      Z2 G d„ de#«      Z3 G d„ de-«      Z4 G d„ de«      Z5 G d„ d e«      Z6e6Z7 G d!„ d"e&e«      Z8 G d#„ d$e«      Z9e!d%   Z: G d&„ d'e#d(¬)«      Z; G d*„ d+e9«      Z< G d,„ d-e«      Z=d.„ Z> G d/„ d0e«      Z? G d1„ d2e?«      Z@ G d3„ d4e&e«      ZA G d5„ d6e#d(¬)«      ZB G d7„ d8e?«      ZC G d9„ d:e«      ZD G d;„ d<eD«      ZE G d=„ d>eD«      ZF G d?„ d@e«      ZG G dA„ dBe«      ZH G dC„ dDe#d(¬)«      ZI G dE„ dFe#d(¬)«      ZJ G dG„ dHeH«      ZK G dI„ dJeH«      ZL G dK„ dLe«      ZM G dM„ dNeM«      ZNe G dO„ dPe«      «       ZO G dQ„ dRe#d(¬)«      ZP G dS„ dTe#d(¬)«      ZQ G dU„ dVe«      ZR G dW„ dXeR«      ZS G dY„ dZe#d(¬)«      ZT G d[„ d\e«      ZUe4j­                  «         G d]„ d^e«      ZW G d_„ d`e«      ZX G da„ dbe#d(¬)«      ZY G dc„ dde#d(¬)«      ZZ G de„ dfe«      Z[ G dg„ dhe«      Z\ G di„ dje«      Z] G dk„ dle«      Z^ G dm„ dne«      Z_ G do„ dpe«      Z` G dq„ dre&e«      Za G ds„ dte#d(¬)«      Zb G du„ dve#d(¬)«      Zc G dw„ dxe#d(¬)«      Zd G dy„ dze#d(¬)«      Ze G d{„ d|e#«      Zf G d}„ d~e#d(¬)«      Zg G d„ d€e#«      Zh G d�„ d‚e4«      Zi G dƒ„ d„e#«      Zj G d…„ d†e#«      Zk G d‡„ dˆe«      Zl G d‰„ dŠe«      Zm G d‹„ dŒe«      Zn G d�„ dŽe«      Zodd�œ	 	 	 	 	 	 	 	 	 d¡d�„Zp G d‘„ d’«      Zq G d“„ d”«      Zr G d•„ d–e«      Zs G d—„ d˜e«      Zt G d™„ dše«      Zu G d›„ dœe«      Zv G d�„ džeu«      Zw G dŸ„ d e«      Zxy)¢zSchemas for the LangSmith API.é    )Úannotations)ÚIterator)ÚdatetimeÚ	timedeltaÚtimezone)ÚDecimal)ÚEnum)ÚPath)Ú	AnnotatedÚAnyÚ
NamedTupleÚOptionalÚProtocolÚUnionÚruntime_checkable)ÚUUID)Ú	BaseModelÚ
ConfigDictÚFieldÚPrivateAttrÚ
StrictBoolÚStrictFloatÚ	StrictInt)ÚLiteralÚNotRequiredÚ	TypedDictNc                  ó&   — e Zd ZU dZded<   ded<   y)Ú
AttachmentaŠ  Annotated type that will be stored as an attachment if used.

    Examples:
        ```python
        from langsmith import traceable
        from langsmith.schemas import Attachment


        @traceable
        def my_function(bar: int, my_val: Attachment):
            # my_val will be stored as an attachment
            # bar will be stored as inputs
            return bar
        ```
    ÚstrÚ	mime_typeúUnion[bytes, Path]ÚdataN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__© ó    ú]/root/rosshost/parking-map/parking-api/venv/lib/python3.12/site-packages/langsmith/schemas.pyr   r   $   s   … ñð  ƒNØ
Ôr*   r   c                  ó,   — e Zd ZdZddd„Zdd	d„Zd
d„Zy)ÚBinaryIOLikez$Protocol for binary IO-like objects.c                 ó   — y)zRead function.Nr)   )ÚselfÚsizes     r+   ÚreadzBinaryIOLike.readD   ó   € àr*   c                 ó   — y)zSeek function.Nr)   )r/   ÚoffsetÚwhences      r+   ÚseekzBinaryIOLike.seekH   r2   r*   c                 ó   — y)zGet value function.Nr)   ©r/   s    r+   ÚgetvaluezBinaryIOLike.getvalueL   r2   r*   N)éÿÿÿÿ)r0   ÚintÚreturnÚbytes)r   )r4   r;   r5   r;   r<   r;   )r<   r=   )r$   r%   r&   r'   r1   r6   r9   r)   r*   r+   r-   r-   @   s   „ á.ôôôr*   r-   c                  ó„   — e Zd ZU dZded<    ed¬«      Zded<    ed¬«      Zded<    ed¬«      Zded	<    e	d
d
¬«      Z
y)ÚExampleBasezExample base model.r   Ú
dataset_idN©ÚdefaultúOptional[dict[str, Any]]ÚinputsÚoutputsÚmetadataT)ÚfrozenÚarbitrary_types_allowed)r$   r%   r&   r'   r(   r   rD   rE   rF   r   Úmodel_configr)   r*   r+   r?   r?   Q   sG   … ÙàÓÙ',°TÔ':€FÐ$Ó:Ù(-°dÔ(;€GÐ%Ó;Ù).°tÔ)<€HÐ&Ó<á TÀ4ÔH�Lr*   r?   c                  ó"   — e Zd ZU ded<   ded<   y)Ú_AttachmentDictr   r    r!   r"   N)r$   r%   r&   r(   r)   r*   r+   rK   rK   \   s   … ØƒNØ
Ôr*   rK   c                  óê   ‡ — e Zd ZU dZdZded<    ed„ ¬«      Zded<    ed¬	«      Zd
ed<    ed¬	«      Z	d
ed<    ed¬	«      Z
d
ed<   dZded<   dZded<   dZded<   dZded<   dZded<   ˆ fd„Zˆ xZS )ÚExampleCreatez Example upload with attachments.NúOptional[UUID]Úidc                 óH   — t        j                  t        j                  «      S ©N©r   Únowr   Úutcr)   r*   r+   ú<lambda>zExampleCreate.<lambda>j   ó   € ¼¿¹ÄhÇlÁlÓ9S€ r*   ©Údefault_factoryr   Ú
created_atrA   rC   rD   rE   rF   úOptional[Union[str, list[str]]]Úsplitz$Optional[dict[str, _AttachmentLike]]ÚattachmentsFÚboolÚuse_source_run_ioúOptional[list[str]]Úuse_source_run_attachmentsÚsource_run_idc                ó$   •— t        ‰| �  di |¤Ž y©zInitialize from dict.Nr)   ©ÚsuperÚ__init__©r/   r"   Ú	__class__s     €r+   rf   zExampleCreate.__init__t   ó   ø€ ä‰ÑÑ ˜4Ó r*   )r$   r%   r&   r'   rO   r(   r   rY   rD   rE   rF   r[   r\   r^   r`   ra   rf   Ú__classcell__©rh   s   @r+   rM   rM   f   s‘   ø… Ù*à€BˆÓÙ Ñ1SÔT€J�ÓTÙ',°TÔ':€FÐ$Ó:Ù(-°dÔ(;€GÐ%Ó;Ù).°tÔ)<€HÐ&Ó<Ø-1€EÐ*Ó1Ø8<€KÐ5Ó<Ø#Ð�tÓ#Ø6:ÐÐ 3Ó:Ø$(€M�>Ó(÷!ð !r*   rM   c                  ó   — e Zd ZU dZded<   y)ÚExampleUpsertWithAttachmentsz Example create with attachments.r   r@   Nr#   r)   r*   r+   rm   rm   |   s   … Ù*àÔr*   rm   c                  ó0   — e Zd ZU dZded<   ded<   ded<   y)	ÚAttachmentInfozInfo for an attachment.r   Úpresigned_urlr-   ÚreaderúOptional[str]r    Nr#   r)   r*   r+   ro   ro   ‚   s   … Ù!àÓØÓØÔr*   ro   c                  ó"  ‡ — e Zd ZU dZded<    ed„ ¬«      Zded<    e ed«      ¬	«      Zded
<    ed¬	«      Z	ded<   dZ
ded<    ed¬	«      Zded<   	  ed¬	«      Zded<    ed¬	«      Zded<   	 	 d	 	 	 	 	 	 	 dˆ fd„Zedd„«       Zd„ Zˆ xZS )ÚExamplezExample model.r   rO   c                 óL   — t        j                  dt        j                  ¬«      S )Nr   )Útz)r   Úfromtimestampr   rT   r)   r*   r+   rU   zExample.<lambda>�   s   € ¤× 6Ñ 6°q¼X¿\¹\Ô J€ r*   rW   r   rY   z$00000000-0000-0000-0000-000000000000rA   r@   NúOptional[datetime]Úmodified_atrN   ra   z#Optional[dict[str, AttachmentInfo]]r\   rr   Ú	_host_urlÚ
_tenant_idc                ó@   •— t        ‰| �  di |¤Ž || _        || _        y)úInitialize a Dataset object.Nr)   )re   rf   rz   r{   )r/   rz   r{   Úkwargsrh   s       €r+   rf   zExample.__init__š   s#   ø€ ô 	‰ÑÑ"˜6Ò"Ø"ˆŒØ$ˆ�r*   c                óØ   — | j                   r^d| j                  › d| j                  › �}| j                  r&| j                   › dt	        | j                  «      › |› �S | j                   › |› �S y)úURL of this run within the app.ú
/datasets/z/e/ú/o/N)rz   r@   rO   r{   r   )r/   Úpaths     r+   ÚurlzExample.url¥   sh   € ð �>Š>Ø §¡Ð0°°D·G±G°9Ð=ˆDØ�ŠØŸ.™.Ð)¨¬S°·±Ó-AÐ,BÀ4À&ÐIÐIØ—n‘nÐ% d VÐ,Ð,Ør*   c                ón   — | j                   › d| j                  › d| j                  › d| j                  › d�S )ú5Return a string representation of the RunBase object.ú(id=z, dataset_id=z, link='ú'))rh   rO   r@   r„   r8   s    r+   Ú__repr__zExample.__repr__¯   s8   € à—.‘.Ð!  d§g¡g Y¨m¸D¿O¹OÐ;LÈHÐUY×U]ÑU]ÐT^Ð^`ÐaÐar*   )NN)rz   rr   r{   rN   r~   r   r<   ÚNone©r<   rr   )r$   r%   r&   r'   r(   r   rY   r   r@   ry   ra   r\   r   rz   r{   rf   Úpropertyr„   r‰   rj   rk   s   @r+   rt   rt   Š   sÐ   ø… ÙàƒHÙ ÙJô€J�ó ñ ¡TÐ*PÓ%QÔR€J�ÓRÙ&+°DÔ&9€KÐ#Ó9Ø$(€M�>Ó(Ù7<ÀTÔ7J€KÐ4ÓJð.á*°4Ô8€Iˆ}Ó8Ù!,°TÔ!:€J�Ó:ð $(Ø%)ð	%à ð	%ð #ð	%ð ð		%ð
 
õ	%ð òó ðöbr*   rt   c                  óN   — e Zd ZU dZ eed¬«      Zded<    eed¬«      Z	ded<   y	)
ÚAttachmentsOperationsz%Operations to perform on attachments.z,Mapping of old attachment names to new names)rX   Údescriptionzdict[str, str]Úrenamez List of attachment names to keepú	list[str]ÚretainN)
r$   r%   r&   r'   r   Údictr�   r(   Úlistr’   r)   r*   r+   rŽ   rŽ   ´   s5   … Ù/á"ØÐ*Xô€FˆNó ñ ØÐ*Lô€FˆIô r*   rŽ   c                  óÌ   ‡ — e Zd ZU dZded<   dZded<    ed¬«      Zded	<    ed¬«      Zded
<    ed¬«      Z	ded<   dZ
ded<   dZded<   dZded<    ed¬«      Zˆ fd„Zˆ xZS )ÚExampleUpdatez Example update with attachments.r   rO   NrN   r@   rA   rC   rD   rE   rF   rZ   r[   zOptional[Attachments]r\   zOptional[AttachmentsOperations]Úattachments_operationsT©rG   c                ó$   •— t        ‰| �  di |¤Ž yrc   rd   rg   s     €r+   rf   zExampleUpdate.__init__Í   ri   r*   )r$   r%   r&   r'   r(   r@   r   rD   rE   rF   r[   r\   r—   r   rI   rf   rj   rk   s   @r+   r–   r–   ¿   s{   ø… Ù*àƒHØ!%€J�Ó%Ù',°TÔ':€FÐ$Ó:Ù(-°dÔ(;€GÐ%Ó;Ù).°tÔ)<€HÐ&Ó<Ø-1€EÐ*Ó1Ø)-€KÐ&Ó-Ø>BÐÐ;ÓBá TÔ*€L÷!ð !r*   r–   c                  ó   — e Zd ZdZdZdZdZy)ÚDataTypezEnum for dataset data types.ÚkvÚllmÚchatN)r$   r%   r&   r'   rœ   r�   rž   r)   r*   r+   r›   r›   Õ   s   „ Ù&à	€BØ
€CØ�Dr*   r›   c                  óJ   — e Zd ZU dZded<   dZded<   dZded<    ed	¬
«      Zy)ÚDatasetBasezDataset base model.r   ÚnameNrr   r�   zOptional[DataType]Ú	data_typeTr˜   )	r$   r%   r&   r'   r(   r�   r¢   r   rI   r)   r*   r+   r    r    Ý   s)   … Ùà
ƒIØ!%€K�Ó%Ø$(€IÐ!Ó(á TÔ*�Lr*   r    )Úremove_system_messagesÚconvert_to_openai_messageÚconvert_to_openai_toolÚremove_extra_fieldsÚextract_tools_from_runc                  ó&   — e Zd ZU dZded<   ded<   y)ÚDatasetTransformationz#Schema for dataset transformations.r‘   rƒ   z%Union[DatasetTransformationType, str]Útransformation_typeNr#   r)   r*   r+   r©   r©   ð   s   … Ù-à
ƒOØ>Ô>r*   r©   F)Útotalc                  ó8  ‡ — e Zd ZU dZded<   ded<    ed¬«      Zded	<   dZd
ed<   dZd
ed<   dZ	ded<   dZ
ded<   dZded<   dZded<   dZded<    ed¬«      Zded<    ed¬«      Zded<    ed¬«      Zded<   	 	 	 d	 	 	 	 	 	 	 	 	 dˆ fd„Zedd„«       Zˆ xZS )ÚDatasetzDataset ORM model.r   rO   r   rY   NrA   rx   ry   úOptional[int]Úexample_countÚsession_countÚlast_session_start_timerC   Úinputs_schemaÚoutputs_schemaz%Optional[list[DatasetTransformation]]ÚtransformationsrF   rr   rz   rN   r{   Ú_public_pathc                ó®   •— d|v r|j                  d«      |d<   d|v r|j                  d«      |d<   t        ‰| �  di |¤Ž || _        || _        || _        y)r}   Úinputs_schema_definitionr²   Úoutputs_schema_definitionr³   Nr)   )Úpopre   rf   rz   r{   rµ   )r/   rz   r{   rµ   r~   rh   s        €r+   rf   zDataset.__init__  sd   ø€ ð &¨Ñ/Ø&,§j¡jÐ1KÓ&LˆF�?Ñ#à&¨&Ñ0Ø'-§z¡zÐ2MÓ'NˆFÐ#Ñ$ä‰ÑÑ"˜6Ò"Ø"ˆŒØ$ˆŒØ(ˆÕr*   c                ó  — | j                   r~| j                  r| j                   › | j                  › �S | j                  r1| j                   › dt        | j                  «      › d| j                  › �S | j                   › d| j                  › �S y)r€   r‚   r�   N)rz   rµ   r{   r   rO   r8   s    r+   r„   zDataset.url  s}   € ð �>Š>Ø× Ò ØŸ.™.Ð)¨$×*;Ñ*;Ð)<Ð=Ð=Ø�ŠØŸ.™.Ð)¨¬S°·±Ó-AÐ,BÀ*ÈTÏWÉWÈIÐVÐVØ—n‘nÐ% Z°·±¨yÐ9Ð9Ør*   )NNN)
rz   rr   r{   rN   rµ   rr   r~   r   r<   rŠ   r‹   )r$   r%   r&   r'   r(   r   ry   r¯   r°   r±   r²   r³   r´   rF   r   rz   r{   rµ   rf   rŒ   r„   rj   rk   s   @r+   r­   r­   ÷   sî   ø… ÙàƒHØÓÙ&+°DÔ&9€KÐ#Ó9Ø#'€M�=Ó'Ø#'€M�=Ó'Ø26ÐÐ/Ó6Ø.2€MÐ+Ó2Ø/3€NÐ,Ó3Ø=A€OÐ:ÓAØ)-€HÐ&Ó-Ù*°4Ô8€Iˆ}Ó8Ù!,°TÔ!:€J�Ó:Ù"-°dÔ";€L�-Ó;ð $(Ø%)Ø&*ð	)à ð)ð #ð)ð $ð	)ð
 ð)ð 
õ)ð& òó ôr*   r­   c                  ó*   — e Zd ZU dZdZded<   ded<   y)ÚDatasetVersionz%Class representing a dataset version.Nr_   Útagsr   Úas_of)r$   r%   r&   r'   r½   r(   r)   r*   r+   r¼   r¼   '  s   … Ù/à $€DÐ
Ó$Ø„Or*   r¼   c                 ó
   — di iS )NrF   r)   r)   r*   r+   Ú_default_extrarÀ   .  s   € Ø˜ÐÐr*   c                  ój  — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 d	Zd
ed<   	  ee¬«      Zded<   	 d	Z	ded<   	 d	Z
ded<   	 d	Zded<   	  ee¬«      Zded<   	 d	Zded<   	 d	Zded<   	 d	Zded<   	 d	Zded<   	  ee¬«      Zded<   	 ed$d„«       Zed%d„«       Zed&d „«       Zd!„ Z ed"¬#«      Zy	)'ÚRunBasea3  Base Run schema.

    A Run is a span representing a single unit of work or operation within your LLM app.
    This could be a single call to an LLM or chain, to a prompt formatting call,
    to a runnable lambda invocation. If you are familiar with OpenTelemetry,
    you can think of a run as a span.
    r   rO   r   r¡   r   Ú
start_timeÚrun_typeNrx   Úend_timerW   úOptional[dict]Úextrarr   ÚerrorÚ
serializedúOptional[list[dict]]Úeventsr“   rD   rE   rN   Úreference_example_idÚparent_run_idr_   r½   z-Union[Attachments, dict[str, AttachmentInfo]]r\   c                ó`   — | j                   €i | _         | j                   j                  di «      S ©zRetrieve the metadata (if any).rF   )rÇ   Ú
setdefaultr8   s    r+   rF   zRunBase.metadatao  s,   € ð �:‰:ÐØˆDŒJØ�z‰z×$Ñ$ Z°Ó4Ð4r*   c                ó8   — | j                   j                  d«      S )z"Retrieve the revision ID (if any).Úrevision_id)rF   Úgetr8   s    r+   rÒ   zRunBase.revision_idv  s   € ð �}‰}× Ñ  Ó/Ð/r*   c                ój   — | j                   €y| j                   | j                  z
  j                  «       S )zLatency in seconds.N)rÅ   rÃ   Útotal_secondsr8   s    r+   ÚlatencyzRunBase.latency{  s-   € ð �=‰=Ð ØØ—‘ §¡Ñ/×>Ñ>Ó@Ð@r*   c                ón   — | j                   › d| j                  › d| j                  › d| j                  › d�S )r†   r‡   z, name='z', run_type='rˆ   )rh   rO   r¡   rÄ   r8   s    r+   r‰   zRunBase.__repr__‚  s3   € à—.‘.Ð!  d§g¡g Y¨h°t·y±y°kÀÈtÏ}É}ÈoÐ]_Ð`Ð`r*   T)rH   ©r<   údict[str, Any])r<   rN   )r<   úOptional[float])r$   r%   r&   r'   r(   rÅ   r   rÀ   rÇ   rÈ   rÉ   rË   r“   rD   rE   rÌ   rÍ   r½   r\   rŒ   rF   rÒ   rÖ   r‰   r   rI   r)   r*   r+   rÂ   rÂ   2  s-  … ñð 	ƒHØ(à
ƒIØ*àÓØ àƒMð"ð $(€HÐ Ó'Ø-á!°.ÔA€Eˆ>ÓAØ=à€Eˆ=ÓØ;à!%€J�Ó%ØFà#'€FÐ Ó'ðñ ¨Ô.€FˆDÓ.Ø"à"€Gˆ^Ó"Ø/à+/Ð˜.Ó/Ø@à$(€M�>Ó(Ø@à $€DÐ
Ó$Ø6áAFØôB€KÐ>ó ðð
 ò5ó ð5ð ò0ó ð0ð òAó ðAòañ °dÔ;�Lr*   rÂ   c                  óP  ‡ — e Zd ZU dZdZded<   	 dZded<   	 dZded<   	 dZd	ed
<   	 dZ	ded<   	 dZ
ded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 d ed!<   	  ed"¬#«      Zd$ed%<   	 dZd&ed'<   	  ed¬#«      Zded(<   d3d4ˆ fd)„Zed5d*„«       Zed6d+„«       Z ed6d,„«       Z!ed7d-„«       Z"ed7d.„«       Z#ed8d/„«       Z$ed8d0„«       Z%ed9d1„«       Z&ed9d2„«       Z'ˆ xZ(S ):ÚRunz$Run schema when loading from the DB.NrN   Ú
session_idúOptional[list[UUID]]Úchild_run_idszOptional[list[Run]]Ú
child_runsrC   Úfeedback_statsrr   Úapp_pathÚmanifest_idÚstatusr®   Úprompt_tokensÚcompletion_tokensÚtotal_tokenszOptional[dict[str, int]]Úprompt_token_detailsÚcompletion_token_detailsrx   Úfirst_token_timeúOptional[Decimal]Ú
total_costÚprompt_costÚcompletion_costzOptional[dict[str, Decimal]]Úprompt_cost_detailsÚcompletion_cost_detailsÚparent_run_idsr   Útrace_idÚ rA   r   Údotted_orderúOptional[bool]Ú
in_datasetrz   c                óˆ  •— |j                  d«      sd|j                  d«      i|¥}|j                  dd«      xs i }t        ‰| �  di |¤d|i¤Ž || _        | j
                  j                  €/| j
                  j                  t        j                  ¬«      | _        | j                  �E| j                  j                  €/| j                  j                  t        j                  ¬«      | _
        | j                  j                  «       s;| j                  s.| j
                  j                  «       › | j                  › �| _        yyy)úInitialize a Run object.rò   rO   rD   N©Útzinfor)   )rÓ   r¹   re   rf   rz   rÃ   rú   Úreplacer   rT   rÅ   rô   ÚstriprÍ   Ú	isoformatrO   )r/   rz   r~   rD   rh   s       €r+   rf   zRun.__init__Ñ  s  ø€ à�z‰z˜*Ô%Ø  &§*¡*¨TÓ"2Ð=°fÐ=ˆFØ—‘˜H dÓ+Ò1¨rˆÜ‰ÑÑ1˜6Ñ1¨&Ó1Ø"ˆŒØ�?‰?×!Ñ!Ð)Ø"Ÿo™o×5Ñ5¼X¿\¹\Ð5ÓJˆDŒOØ�=‰=Ð$¨¯©×)=Ñ)=Ð)EØ ŸM™M×1Ñ1¼¿¹Ð1ÓFˆDŒMØ× Ñ ×&Ñ&Ô(°×1CÒ1CØ#'§?¡?×#<Ñ#<Ó#>Ð"?ÀÇÁ¸yÐ IˆDÕð 2DÐ(r*   c                óh   — | j                   r&| j                  r| j                   › | j                  › �S y)r€   N)rz   râ   r8   s    r+   r„   zRun.urlß  s,   € ð �>Š>˜dŸmšmØ—n‘nÐ% d§m¡m _Ð5Ð5Ør*   c                ó   — | j                   S )zAlias for prompt_tokens.)rå   r8   s    r+   Úinput_tokenszRun.input_tokensæ  s   € ð ×!Ñ!Ð!r*   c                ó   — | j                   S )zAlias for completion_tokens.)ræ   r8   s    r+   Úoutput_tokenszRun.output_tokensë  s   € ð ×%Ñ%Ð%r*   c                ó   — | j                   S )zAlias for prompt_cost.)rí   r8   s    r+   Ú
input_costzRun.input_costð  s   € ð ×ÑÐr*   c                ó   — | j                   S )zAlias for completion_cost.)rî   r8   s    r+   Úoutput_costzRun.output_costõ  s   € ð ×#Ñ#Ð#r*   c                ó   — | j                   S )zAlias for prompt_token_details.)rè   r8   s    r+   Úinput_token_detailszRun.input_token_detailsú  s   € ð ×(Ñ(Ð(r*   c                ó   — | j                   S )zAlias for output_token_details.)ré   r8   s    r+   Úoutput_token_detailszRun.output_token_detailsÿ  s   € ð ×,Ñ,Ð,r*   c                ó   — | j                   S )zAlias for prompt_cost_details.)rï   r8   s    r+   Úinput_cost_detailszRun.input_cost_details  s   € ð ×'Ñ'Ð'r*   c                ó   — | j                   S )z"Alias for completion_cost_details.)rð   r8   s    r+   Úoutput_cost_detailszRun.output_cost_details	  s   € ð ×+Ñ+Ð+r*   rQ   ©rz   rr   r~   r   r<   rŠ   r‹   )r<   z
int | None)r<   zDecimal | None)r<   údict[str, int] | None)r<   zdict[str, Decimal] | None))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   rz   rf   rŒ   r„   r   r  r  r  r  r
  r  r  rj   rk   s   @r+   rÜ   rÜ   ‰  s  ø… Ù.à!%€J�Ó%Ø-Ø*.€MÐ'Ó.Ø4Ø&*€JÐ#Ó*ðMà/3€NÐ,Ó3Ø&Ø"€HˆmÓ"Ø7Ø"&€K�Ó&Ø:Ø €FˆMÓ Ø.Ø#'€M�=Ó'Ø/Ø'+Ð�}Ó+Ø/Ø"&€L�-Ó&Ø1Ø59ÐÐ2Ó9ðð :>ÐÐ6Ó=ðð ,0ÐÐ(Ó/Ø-Ø$(€JÐ!Ó(ØMØ%)€KÐ"Ó)ØGØ)-€OÐ&Ó-ØCØ8<ÐÐ5Ó<ðð =AÐÐ9Ó@ðð ,0€NÐ(Ó/Ø!ØƒNØCÙ bÔ)€L�#Ó)ð
ð "&€J�Ó%Ø+Ù*°4Ô8€Iˆ}Ó8öJð òó ðð ò"ó ð"ð ò&ó ð&ð ò ó ð ð ò$ó ð$ð ò)ó ð)ð ò-ó ð-ð ò(ó ð(ð ò,ó ô,r*   rÜ   c                  ó,   — e Zd ZdZdZdZdZdZdZdZ	dZ
y	)
ÚRunTypeEnumz5(Deprecated) Enum for run types. Use string directly.ÚtoolÚchainr�   Ú	retrieverÚ	embeddingÚpromptÚparserN)r$   r%   r&   r'   r  r  r�   r  r  r  r  r)   r*   r+   r  r    s(   „ Ù?à€DØ€EØ
€CØ€IØ€IØ€FØ�Fr*   r  c                  ó  — e Zd ZU dZded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   d ed!<   ded"<   d#ed$<   y%)&ÚRunLikeDictz&Run-like dictionary, for type-hinting.r   r¡   r  rÄ   r   rÃ   rÆ   rD   rE   rx   rÅ   rÇ   rr   rÈ   rÉ   rN   rÍ   rã   rÊ   rË   r_   r½   Úinputs_s3_urlsÚoutputs_s3_urlsrO   rÝ   Úsession_namerÌ   Úinput_attachmentsÚoutput_attachmentsr   rò   rô   ÚAttachmentsr\   Nr#   r)   r*   r+   r  r    s“   … Ù0à
ƒIØÓØÓØÓØÓØ Ó ØÓØÓØÓØ!Ó!ØÓØ Ó Ø
ÓØ"Ó"Ø#Ó#ØÓØÓØÓØ(Ó(Ø%Ó%Ø&Ó&ØƒNØÓØÔr*   r  c                  ó0   — e Zd ZU dZdZded<   	 dZded<   y)ÚRunWithAnnotationQueueInfoz&Run schema with annotation queue info.Nrx   Úlast_reviewed_timeÚadded_at)r$   r%   r&   r'   r#  r(   r$  r)   r*   r+   r"  r"  8  s"   … Ù0à-1ÐÐ*Ó1Ø.Ø#'€HÐ Ó'Ø3r*   r"  c                  óZ   — e Zd ZU dZded<   	  ee¬«      Zded<   	 dZded	<   	 dZ	d
ed<   y)ÚFeedbackSourceBasez‰Base class for feedback sources.

    This represents whether feedback is submitted from the API, model, human labeler,
        etc.
    r   ÚtyperW   rC   rF   NzOptional[Union[UUID, str]]Úuser_idrr   Ú	user_name)
r$   r%   r&   r'   r(   r   r“   rF   r(  r)  r)   r*   r+   r&  r&  A  s?   … ñð ƒIØ*Ù).¸tÔ)D€HÐ&ÓDØ6Ø*.€GÐ'Ó.Ø:Ø#€Iˆ}Ó#Ø<r*   r&  c                  ó    — e Zd ZU dZdZded<   y)ÚAPIFeedbackSourcezAPI feedback source.ÚapizLiteral['api']r'  N©r$   r%   r&   r'   r'  r(   r)   r*   r+   r+  r+  R  s   … Ùà €Dˆ.Ô r*   r+  c                  ó    — e Zd ZU dZdZded<   y)ÚModelFeedbackSourcezModel feedback source.ÚmodelzLiteral['model']r'  Nr-  r)   r*   r+   r/  r/  X  s   … Ù à$€DÐ
Ô$r*   r/  c                  ó   — e Zd ZdZdZ	 dZy)ÚFeedbackSourceTypezFeedback source type.r,  r0  N)r$   r%   r&   r'   ÚAPIÚMODELr)   r*   r+   r2  r2  ^  s   „ Ùà
€CØ2Ø€EØ"r*   r2  c                  ó  — e Zd ZU dZded<   	 dZded<   	 dZded<   	 ded	<   	 ded
<   	 ded<   	 dZded<   	 dZded<   	 dZ	ded<   	 dZ
ded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	  ed¬«      Zy)ÚFeedbackBasezFeedback schema.r   rO   Nrx   rY   ry   rN   Úrun_idrò   r   ÚkeyÚ
SCORE_TYPEÚscoreÚ
VALUE_TYPEÚvaluerr   ÚcommentzUnion[str, dict, None]Ú
correctionúOptional[FeedbackSourceBase]Úfeedback_sourcerÝ   rÃ   Úcomparative_experiment_idÚfeedback_group_idrÆ   rÇ   Tr˜   )r$   r%   r&   r'   r(   rY   ry   r:  r<  r=  r>  r@  rÝ   rÃ   rA  rB  rÇ   r   rI   r)   r*   r+   r6  r6  g  sØ   … ÙàƒHØ(Ø%)€JÐ"Ó)Ø,Ø&*€KÐ#Ó*Ø2ØÓØ<ØÓØ>Ø	ƒHØAØ€Eˆ:ÓØ+Ø€Eˆ:ÓØQØ!€Gˆ]Ó!Ø2Ø)-€JÐ&Ó-Ø!Ø48€OÐ1Ó8Ø%Ø!%€J�Ó%ØTØ%)€JÐ"Ó)ØEØ04Ð˜~Ó4ØXØ(,Ð�~Ó,ð1ð !€Eˆ>Ó Ø'á TÔ*�Lr*   r6  c                  ó(   — e Zd ZU dZded<   	 ded<   y)ÚFeedbackCategoryz+Specific value and label pair for feedback.Úfloatr<  rr   ÚlabelNr#   r)   r*   r+   rD  rD  �  s   … Ù5àƒLØCØÓØNr*   rD  c                  ó@   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   y	)
ÚFeedbackConfigz:Represents _how_ a feedback value ought to be interpreted.z0Literal['continuous', 'categorical', 'freeform']r'  rÚ   ÚminÚmaxz Optional[list[FeedbackCategory]]Ú
categoriesNr#   r)   r*   r+   rH  rH  ™  s,   … ÙDà
:Ó:ØØ	ÓØ4Ø	ÓØ4Ø0Ó0ð@r*   rH  c                  ó<   — e Zd ZU dZded<   	 dZded<   	 dZded<   y)	ÚFeedbackCreatez"Schema used for creating feedback.r&  r@  NzOptional[FeedbackConfig]Úfeedback_configrõ   rÈ   )r$   r%   r&   r'   r(   rN  rÈ   r)   r*   r+   rM  rM  §  s&   … Ù,à'Ó'Ø%Ø04€OÐ-Ó4Ø%Ø €Eˆ>Ô r*   rM  c                  óB   — e Zd ZU dZded<   ded<   	 ded<   	 dZded	<   y)
ÚFeedbackzSchema for getting feedback.r   rO   r   rY   ry   Nr?  r@  )r$   r%   r&   r'   r(   r@  r)   r*   r+   rP  rP  ±  s*   … Ù&àƒHØÓØ,ØÓØ2Ø48€OÐ1Ó8Ø2r*   rP  c                  óþ   ‡ — e Zd ZU dZded<   	  ed„ ¬«      Zded<   	 dZd	ed
<   	 dZded<   	 dZ	ded<   	 dZ
ded<   	 ded<   	 ded<   	  ed¬«      Zded<   ddˆ fd„Zedd„«       Zedd„«       Zedd„«       Zˆ xZS )ÚTracerSessionzbTracerSession schema for the API.

    Sessions are also referred to as "Projects" in the UI.
    r   rO   c                 óH   — t        j                  t        j                  «      S rQ   rR   r)   r*   r+   rU   zTracerSession.<lambda>Å  rV   r*   rW   r   rÃ   Nrx   rÅ   rr   r�   r¡   rC   rÇ   Ú	tenant_idrN   Úreference_dataset_idrA   rz   c                ó¾   •— t        ‰| �  di |¤Ž || _        | j                  j                  €0| j                  j                  t        j                  ¬«      | _        yy)rø   Nrù   r)   )re   rf   rz   rÃ   rú   rû   r   rT   )r/   rz   r~   rh   s      €r+   rf   zTracerSession.__init__Ö  sL   ø€ ä‰ÑÑ"˜6Ò"Ø"ˆŒØ�?‰?×!Ñ!Ð)Ø"Ÿo™o×5Ñ5¼X¿\¹\Ð5ÓJˆD�Oð *r*   c                ól   — | j                   r(| j                   › d| j                  › d| j                  › �S y)r€   r‚   ú/projects/p/N)rz   rT  rO   r8   s    r+   r„   zTracerSession.urlÝ  s3   € ð �>Š>Ø—n‘nÐ% S¨¯©Ð(8¸ÀTÇWÁWÀIÐNÐNØr*   c                óX   — | j                   �d| j                   vri S | j                   d   S rÏ   ©rÇ   r8   s    r+   rF   zTracerSession.metadataä  ó-   € ð �:‰:Ð °4·:±:Ñ!=ØˆIØ�z‰z˜*Ñ%Ð%r*   c                óX   — | j                   �d| j                   vrg S | j                   d   S )zRetrieve the tags (if any).r½   rZ  r8   s    r+   r½   zTracerSession.tagsë  s-   € ð �:‰:Ð ¨t¯z©zÑ!9ØˆIØ�z‰z˜&Ñ!Ð!r*   rQ   r  r‹   rØ   ©r<   r‘   )r$   r%   r&   r'   r(   r   rÃ   rÅ   r�   r¡   rÇ   r   rz   rf   rŒ   r„   rF   r½   rj   rk   s   @r+   rR  rR  ½  s½   ø… ñð
 	ƒHØ Ù Ñ1SÔT€J�ÓTØ+Ø#'€HÐ Ó'Ø)Ø!%€K�Ó%Ø)Ø€Dˆ-ÓØ"Ø&*€EÐ#Ó*Ø)ØƒOØ0Ø(Ó(ØJá*°4Ô8€Iˆ}Ó8öKð òó ðð ò&ó ð&ð ò"ó ô"r*   rR  c                  ó  — e Zd ZU dZdZded<   	 dZded<   	 dZded<   	 dZded<   	 dZ	ded	<   	 dZ
ded
<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   y)ÚTracerSessionResultzqA project, hydrated with additional information.

    Sessions are also referred to as "Projects" in the UI.
    Nr®   Ú	run_countúOptional[timedelta]Úlatency_p50Úlatency_p99rç   rå   ræ   rx   Úlast_run_start_timerC   rá   Úsession_feedback_statsúOptional[list[dict[str, Any]]]Ú
run_facetsrë   rì   rí   rî   Úfirst_token_p50Úfirst_token_p99rÚ   Ú
error_rate)r$   r%   r&   r'   r`  r(   rb  rc  rç   rå   ræ   rd  rá   re  rg  rì   rí   rî   rh  ri  rj  r)   r*   r+   r_  r_  ó  sç   … ñð
  $€Iˆ}Ó#Ø,Ø'+€KÐ$Ó+Ø?Ø'+€KÐ$Ó+Ø6Ø"&€L�-Ó&Ø=Ø#'€M�=Ó'ØDØ'+Ð�}Ó+ØHØ.2ÐÐ+Ó2Ø8Ø/3€NÐ,Ó3Ø)Ø7;ÐÐ4Ó;Ø1Ø15€JÐ.Ó5Ø-Ø$(€JÐ!Ó(ØMØ%)€KÐ"Ó)ØGØ)-€OÐ&Ó-ØCØ+/€OÐ(Ó/ØGØ+/€OÐ(Ó/Ø>Ø"&€J�Ó&Ø)r*   r_  c                  ó<   — e Zd ZU dZded<   	 ded<   	 edd„«       Zy)	ÚBaseMessageLikez7A protocol representing objects similar to BaseMessage.r   Úcontentzdict[Any, Any]Úadditional_kwargsc                 ó   — y)z,Type of the Message, used for serialization.Nr)   r8   s    r+   r'  zBaseMessageLike.type$  s   � r*   N©r<   r   )r$   r%   r&   r'   r(   rŒ   r'  r)   r*   r+   rl  rl    s(   … áAàƒLØ%Ø%Ó%ØCàò;ó ñ;r*   rl  c                  ó4   — e Zd ZU dZded<   	 ded<   	 ded<   y)ÚDatasetShareSchemaz*Represents the schema for a dataset share.r   r@   Úshare_tokenr   r„   Nr#   r)   r*   r+   rr  rr  )  s   … Ù4àÓØ ØÓØ,Ø	ƒHØ(r*   rr  c                  óL   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 d	ed
<   y)ÚAnnotationQueueRubricItemz�Represents a rubric item assigned to an annotation queue.

    Links a feedback config to a queue with optional per-queue customization.
    r   Úfeedback_keyrr   r�   zOptional[dict[str, str]]Úvalue_descriptionsÚscore_descriptionsrõ   Úis_requiredNr#   r)   r*   r+   ru  ru  4  s6   … ñð
 ÓØ=ØÓØCØ0Ó0Ø7Ø0Ó0Ø(ØÓØNr*   ru  c                  ó„   — e Zd ZU dZded<   	 ded<   	 dZded<   	  ed	„ ¬
«      Zded<   	  ed„ ¬
«      Zded<   	 ded<   y)ÚAnnotationQueuezRepresents an annotation queue.r   rO   r   r¡   Nrr   r�   c                 óH   — t        j                  t        j                  «      S rQ   rR   r)   r*   r+   rU   zAnnotationQueue.<lambda>O  rV   r*   rW   r   rY   c                 óH   — t        j                  t        j                  «      S rQ   rR   r)   r*   r+   rU   zAnnotationQueue.<lambda>Q  rV   r*   Ú
updated_atrT  )	r$   r%   r&   r'   r(   r�   r   rY   r~  r)   r*   r+   r{  r{  F  sP   … Ù)àƒHØ8Ø
ƒIØ+Ø!%€K�Ó%Ø:Ù Ñ1SÔT€J�ÓTØ>Ù Ñ1SÔT€J�ÓTØCØƒOØDr*   r{  c                  ó    — e Zd ZU dZdZded<   y)ÚAnnotationQueueWithDetailsz,Represents an annotation queue with details.Nrr   Úrubric_instructions)r$   r%   r&   r'   r�  r(   r)   r*   r+   r€  r€  W  s   … Ù6à)-Ð˜Ó-Ø;r*   r€  c                  óX   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 ded<   	 d	ed
<   y)ÚBatchIngestConfigz"Configuration for batch ingestion.r]   Úuse_multipart_endpointr;   Úscale_up_qsize_triggerÚscale_up_nthreads_limitÚscale_down_nempty_triggerÚ
size_limitr®   Úsize_limit_bytesNr#   r)   r*   r+   rƒ  rƒ  ^  s:   … Ù,à Ó ØDØÓØ<Ø Ó Ø7Ø"Ó"ØAØƒOØ/Ø#Ó#Ø8r*   rƒ  c                  óP   — e Zd ZU dZdZded<   	 dZded<   	 dZded	<   	 dZd
ed<   y)ÚLangSmithInfoz'Information about the LangSmith server.ró   r   ÚversionNrx   Úlicense_expiration_timezOptional[BatchIngestConfig]Úbatch_ingest_configrC   Úinstance_flags)	r$   r%   r&   r'   rŒ  r(   r�  rŽ  r�  r)   r*   r+   r‹  r‹  o  s;   … Ù1à€GˆSÓØ.Ø26ÐÐ/Ó6Ø+Ø7;ÐÐ4Ó;ØØ/3€NÐ,Ô3r*   r‹  c                  óD   — e Zd ZU dZded<   	 ded<   	 ded<   	 dZded	<   y)
ÚLangSmithSettingsz"Settings for the LangSmith tenant.r   rO   Údisplay_namer   rY   Nrr   Útenant_handle)r$   r%   r&   r'   r(   r“  r)   r*   r+   r‘  r‘  ~  s)   … Ù,àƒGØØÓØ)ØÓØ*Ø#'€M�=Ô'r*   r‘  c                  ó4   — e Zd ZU dZded<   	 ded<   	 ded<   y)	ÚFeedbackIngestTokenz2Represents the schema for a feedback ingest token.r   rO   r   r„   r   Ú
expires_atNr#   r)   r*   r+   r•  r•  Š  s   … Ù<àƒHØ.Ø	ƒHØ3ØÓØ+r*   r•  c                  ó4   — e Zd ZU dZded<   	 ded<   	 ded<   y)	ÚRunEventzRun event schema.r   r¡   zUnion[datetime, str]ÚtimerC   r~   Nr#   r)   r*   r+   r˜  r˜  •  s   … Ùà
ƒIØØ
ÓØØ$Ó$Ø,r*   r˜  c                  ó4   — e Zd ZU dZded<   	 ded<   	 ded<   y)ÚTimeDeltaInputzTimedelta input schema.r;   ÚdaysÚhoursÚminutesNr#   r)   r*   r+   r›  r›     s   … Ù!à
ƒIØØƒJØØƒLØr*   r›  c                  ó4   — e Zd ZU dZded<   	 ded<   	 ded<   y)ÚDatasetDiffInfoz;Represents the difference information between two datasets.z
list[UUID]Úexamples_modifiedÚexamples_addedÚexamples_removedNr#   r)   r*   r+   r   r   «  s    … ÙEà!Ó!Ø=ØÓØ:Ø Ó Ø<r*   r   c                  ó°   — e Zd ZU dZded<   	 dZded<   	 dZded<   	 ded<   	 d	ed
<   	 d	ed<   	 ded<   	 dZded<   	 dZded<   	 dZ	ded<   	 e
dd„«       Zy)ÚComparativeExperimentz’Represents a comparative experiment.

    This information summarizes evaluation results comparing
    two or more models on a given dataset.
    r   rO   Nrr   r¡   r�   rT  r   rY   ry   rU  rC   rÇ   rÊ   Úexperiments_inforá   c                óX   — | j                   �d| j                   vri S | j                   d   S rÏ   rZ  r8   s    r+   rF   zComparativeExperiment.metadataÒ  r[  r*   rØ   )r$   r%   r&   r'   r(   r¡   r�   rÇ   r¦  rá   rŒ   rF   r)   r*   r+   r¥  r¥  ¶  s‹   … ñð 	ƒHØ?Ø€Dˆ-ÓØ:Ø!%€K�Ó%Ø@ØƒOØGØÓØDØÓØJØÓØJØ&*€EÐ#Ó*Ø?Ø-1ÐÐ*Ó1Ø\Ø/3€NÐ,Ó3ØPàò&ó ñ&r*   r¥  c                  ó\   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 ded	<   	 d
Zded<   y
)ÚPromptCommitz$Represents a Prompt with a manifest.r   ÚownerÚrepoÚcommit_hashrÙ   Úmanifestz
list[dict]ÚexamplesNrr   r�   )r$   r%   r&   r'   r(   r�   r)   r*   r+   r©  r©  Ú  s=   … Ù.àƒJØ0Ø
ƒIØ!ØÓØ(ØÓØ%ØÓØØ!%€K�Ó%Ø=r*   r©  c                  óò   — e Zd ZU dZded<   	 ded<   	 ded<   	 dZded	<   	 dZded
<   	 dZded<   	 dZded<   	 dZ	ded<   	 dZ
ded<   	  ee¬«      Zded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   y)ÚListedPromptCommitz;Represents a listed prompt commit with associated metadata.r   rO   r   rª  r«  NrN   rã   Úrepo_idÚ	parent_idrr   r¬  rx   rY   r~  rW   rÞ   Úexample_run_idsr   r®   Únum_downloadsÚ	num_viewsÚparent_commit_hashr�   )r$   r%   r&   r'   r(   rã   r±  r²  r¬  rY   r~  r   r”   r³  r´  rµ  r¶  r�   r)   r*   r+   r°  r°  ë  sµ   … ÙEàƒHØ6àƒJØ)à
ƒIØ3à"&€K�Ó&ØOà"€Gˆ^Ó"Ø5à $€Iˆ~Ó$Ø8à!%€K�Ó%Ø*à%)€JÐ"Ó)Ø=à%)€JÐ"Ó)ØBá,1À$Ô,G€OÐ)ÓGØHà#$€M�=Ó$Ø>à €Iˆ}Ó Ø:à(,Ð˜Ó,Ø1à!%€K�Ó%Ø=r*   r°  c                  ó8  — e Zd ZU dZded<   	 dZded<   	 dZded<   	 ded<   	 ded	<   	 d
ed<   	 d
ed<   	 ded<   	 ded<   	 ded<   	 dZded<   	 dZded<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded<   	 dZ	ded<   	 dZ
ded<   	 ded<   	 dZded<   	 dZded<   y) ÚPromptz"Represents a Prompt with metadata.r   Úrepo_handleNrr   r�   ÚreadmerO   rT  r   rY   r~  r]   Ú	is_publicÚis_archivedr‘   r½   Úoriginal_repo_idÚupstream_repo_idrª  Ú	full_namer;   Ú	num_likesr´  rµ  rõ   Úliked_by_auth_userÚlast_commit_hashÚnum_commitsÚoriginal_repo_full_nameÚupstream_repo_full_name)r$   r%   r&   r'   r(   r�   rº  r½  r¾  rÁ  rÂ  rÄ  rÅ  r)   r*   r+   r¸  r¸    sê   … Ù,àÓØ!Ø!%€K�Ó%Ø(Ø €FˆMÓ Ø#ØƒGØØƒNØ,ØÓØ*ØÓØ-ØƒOØ'ØÓØ)Ø
ƒOØ.Ø&*Ð�mÓ*Ø3Ø&*Ð�mÓ*Ø3ØÓØ0ØƒNØ<ØƒNØØÓØ"ØƒNØØ)-Ð˜Ó-Ø@Ø&*Ð�mÓ*Ø&ØÓØ Ø-1Ð˜]Ó1Ø:Ø-1Ð˜]Ó1Ø:r*   r¸  c                  ó(   — e Zd ZU dZded<   	 ded<   y)ÚListPromptsResponsez A list of prompts with metadata.zlist[Prompt]Úreposr;   r«   Nr#   r)   r*   r+   rÇ  rÇ  J  s   … Ù*àÓØØƒJØ&r*   rÇ  c                  ó&   — e Zd ZdZdZ	 dZ	 dZ	 dZy)ÚPromptSortFieldz$Enum for sorting fields for prompts.r´  rµ  r~  rÀ  N)r$   r%   r&   r'   r´  rµ  r~  rÀ  r)   r*   r+   rÊ  rÊ  S  s%   „ Ù.à#€MØØ€IØØ€JØØ€IØr*   rÊ  c                  óX   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded<   y	)
ÚInputTokenDetailsz~Breakdown of input token counts.

    Does *not* need to sum to full input token count. Does *not* need to have all keys.
    r;   ÚaudioÚcache_creationÚ
cache_readÚcache_read_over_200kÚephemeral_5m_input_tokensÚephemeral_1h_input_tokensNr#   r)   r*   r+   rÌ  rÌ  `  sG   … ñð
 ƒJØØÓðð ƒOðð Óðà"Ó"ØSØ"Ó"ØQr*   rÌ  c                  ó(   — e Zd ZU dZded<   	 ded<   y)ÚOutputTokenDetailsz€Breakdown of output token counts.

    Does *not* need to sum to full output token count. Does *not* need to have all keys.
    r;   rÍ  Ú	reasoningNr#   r)   r*   r+   rÔ  rÔ  {  s   … ñð
 ƒJØØƒNðr*   rÔ  c                  ó4   — e Zd ZU dZded<   	 ded<   	 ded<   y)ÚInputCostDetailszvBreakdown of input token costs.

    Does *not* need to sum to full input cost. Does *not* need to have all keys.
    rE  rÍ  rÎ  rÏ  Nr#   r)   r*   r+   r×  r×  ‹  s)   … ñð
 ƒLØ%ØÓðð Óðr*   r×  c                  ó(   — e Zd ZU dZded<   	 ded<   y)ÚOutputCostDetailszxBreakdown of output token costs.

    Does *not* need to sum to full output cost. Does *not* need to have all keys.
    rE  rÍ  rÕ  Nr#   r)   r*   r+   rÙ  rÙ     s   … ñð
 ƒLØ&ØÓðr*   rÙ  c                  óˆ   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 ded	<   	 d
ed<   	 d
ed<   	 d
ed<   	 ded<   	 ded<   y)ÚUsageMetadataz�Usage metadata for a message, such as token counts.

    This is a standard representation of token usage that is consistent across models.
    r;   r   r  rç   zNotRequired[InputTokenDetails]r  zNotRequired[OutputTokenDetails]r
  zNotRequired[float]r  r  rì   zNotRequired[InputCostDetails]r  zNotRequired[OutputCostDetails]r  Nr#   r)   r*   r+   rÛ  rÛ  °  sk   … ñð
 ÓØJØÓØPØÓØAØ7Ó7ðð :Ó9ðð #Ó"Ø'Ø#Ó#Ø(Ø"Ó"Ø'Ø5Ó5Ø/Ø7Ó7Ø0r*   rÛ  c                  óˆ   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 ded	<   	 d
ed<   	 d
ed<   	 d
ed<   	 ded<   	 ded<   y)ÚExtractedUsageMetadataz�Usage metadata dictionary extracted from a run.

    Should be the same as UsageMetadata, but does not require all
    keys to be present.
    r;   r   r  rç   rÌ  r  rÔ  r
  rE  r  r  rì   r×  r  rÙ  r  Nr#   r)   r*   r+   rÝ  rÝ  Ò  sc   … ñð ÓØ3ØÓØ3ØÓØ*Ø*Ó*Ø*Ø,Ó,Ø+ØÓØ'ØÓØ(ØÓØ'Ø(Ó(Ø/Ø*Ó*Ø0r*   rÝ  c                  ó4   — e Zd ZU dZded<   	 ded<   	 ded<   y)	ÚUpsertExamplesResponsezCResponse object returned from the upsert_examples_multipart method.r;   Úcountr‘   Úexample_idszNotRequired[str | None]r¾   Nr#   r)   r*   r+   rß  rß  ï  s   … ÙMàƒJØ4ØÓØ5Ø"Ó"Øcr*   rß  c                  ó.   — e Zd ZU dZ ee¬«      Zded<   y)ÚExampleWithRunszExample with runs.rW   z	list[Run]ÚrunsN)r$   r%   r&   r'   r   r”   rä  r(   r)   r*   r+   rã  rã  ú  s   … Ùá¨DÔ1€Dˆ)Ó1à"r*   rã  c                  ó¸   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded	<   	 d
ed<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded<   y)ÚExperimentRunStatsz!Run statistics for an experiment.r®   r`  ra  rb  rc  rç   rå   ræ   rx   rd  rf  rg  rë   rì   rí   rî   rh  ri  rÚ   rj  Nr#   r)   r*   r+   ræ  ræ    sƒ   … Ù+àÓØ,Ø$Ó$Ø?Ø$Ó$Ø6ØÓØ=Ø Ó ØDØ$Ó$ØHØ+Ó+Ø8Ø.Ó.Ø-Ø!Ó!ØMØ"Ó"ØGØ&Ó&ØCØ(Ó(ØGØ(Ó(Ø>ØÓØ)r*   ræ  c                  ó4   — e Zd ZU dZded<   	 ded<   	 ded<   y)	ÚExperimentResultsz´Results container for experiment data with stats and examples.

    Breaking change in v0.4.32:
        The 'stats' field has been split into 'feedback_stats' and 'run_stats'.
    r“   rá   ræ  Ú	run_statszIterator[ExampleWithRuns]Úexamples_with_runsNr#   r)   r*   r+   rè  rè  #  s!   … ñð ÓØ1Ø!Ó!Ø6Ø1Ô1r*   rè  c                  óv   — e Zd ZU dZded<   ded<   ded<   dZded	<   ded
<   ded<   ded<   edd„«       Zdd„Zy)ÚInsightsReportzHAn Insights Report created by the Insights Agent over a tracing project.ú
UUID | strrO   r   r¡   rä   Nú
str | NonerÈ   Ú
project_idÚhost_urlrT  c           	     ó¢   — | j                   › dt        | j                  «      › dt        | j                  «      › dt        | j                  «      › �S )z1URL to view this Insights Report in LangSmith UI.r‚   rX  z?tab=4&clusterJobId=)rð  r   rT  rï  rO   r8   s    r+   ÚlinkzInsightsReport.link<  sH   € ð —-‘-� ¤C¨¯©Ó$7Ð#8¸ÄSÈÏÉÓEYÐDZÐZnÔorÐsw×szÑszÓo{Ðn|Ð}Ð}r*   c                ó<   — d| j                   › d| j                  › d�S )Nz	<a href="z2", target="_blank" rel="noopener">InsightsReport('z')</a>)rò  r¡   r8   s    r+   Ú_repr_html_zInsightsReport._repr_html_A  s%   € Ø˜4Ÿ9™9˜+Ð%XÐY]×YbÑYbÐXcÐcjÐkÐkr*   rp  )	r$   r%   r&   r'   r(   rÈ   rŒ   rò  rô  r)   r*   r+   rì  rì  1  sI   … ÙRàƒNØ
ƒIØƒKØ€Eˆ:ÓØÓØƒMØÓàò~ó ð~ôlr*   rì  c                  óZ   — e Zd ZU dZded<   dZded<   dZded<   d	ed
<   ded<   dZded<   y)ÚInsightsHighlightedTracez2A trace highlighted in an insights report summary.rí  r7  NúUUID | str | NoneÚ
cluster_idrî  Úcluster_namer;   Úrankr   Úhighlight_reasonÚsummary)r$   r%   r&   r'   r(   rø  rù  rü  r)   r*   r+   rö  rö  E  s5   … Ù<àÓØ$(€JÐ!Ó(Ø#€L�*Ó#Ø
ƒIØÓØ€GˆZÔr*   rö  c                  óf   — e Zd ZU dZ ee¬«      Zded<   dZded<    ee¬«      Z	ded	<   dZ
d
ed<   y)ÚInsightsSummaryReportzIHigh-level summary of an insights job: key points and highlighted traces.rW   r‘   Ú
key_pointsNrî  Útitlezlist[InsightsHighlightedTrace]Úhighlighted_traceszdatetime | NonerY   )r$   r%   r&   r'   r   r”   rÿ  r(   r   r  rY   r)   r*   r+   rþ  rþ  P  s9   … ÙSá!°$Ô7€J�	Ó7Ø€Eˆ:ÓÙ9>ÈtÔ9TÐÐ6ÓTØ"&€J�Ô&r*   rþ  c                  ón   — e Zd ZU dZded<   dZded<   ded<   d	ed
<   d	ed<   dZded<   ded<   dZded<   y)ÚInsightsClusterz/A single cluster of runs in an insights report.rí  rO   Nr÷  r²  r;   Úlevelr   r¡   r�   rî  Úparent_nameÚnum_runsúdict[str, Any] | NoneÚstats)r$   r%   r&   r'   r(   r²  r  r  r)   r*   r+   r  r  Y  s?   … Ù9àƒNØ#'€IÐ Ó'ØƒJØ
ƒIØÓØ"€K�Ó"ØƒMØ#'€EÐ Ô'r*   r  )rø  c               ób  — ddl m} g }d}d}|� ||dœ}|�t        |«      |d<   | j                  dd|› d	|› d
�|¬«      }	|j	                  |	«       |	j                  «       }
|
j                  dg «      xs g }|j                  |«       |
j                  d«      }|€d}nt        |«      }|sd}|�Œ |S )zHFetch runs for an Insights job, optionally filtered to a single cluster.r   )Úutilséd   N)Úlimitr4   rø  ÚGETz
/sessions/z
/insights/z/runs)Úparamsrä  r4   )	Ú	langsmithr
  r   Úrequest_with_retriesÚraise_for_status_with_textÚjsonrÓ   Úextendr;   )ÚclientrÝ   Újob_idrø  Úls_utilsÚall_runsr  Únext_offsetr  ÚrespÚbodyÚbatchÚreturned_offsets                r+   Ú_fetch_insights_runsr  f  sÝ   € õ ,à%'€HØ€EØ€KØ
Ð
!Ø+0¸KÑ!HˆØÐ!Ü#& z£?ˆF�<Ñ à×*Ñ*ØØ˜˜ J¨v¨h°eÐ<Øð +ó 
ˆð
 	×+Ñ+¨DÔ1Ø�y‰y‹{ˆØ—‘˜ Ó$Ò*¨ˆØ�‰˜ÔØŸ(™( 8Ó,ˆØÐ"Ø‰Kä˜oÓ.ˆKÙØ"�ð) Ñ
!ð* €Or*   c                  ó<   — e Zd ZdZdZd	d„Zd
d„Zdd„Zdd„Zdd„Z	y)Ú_ClusterWithTraceszYCluster wrapper that can load its traces from the API. Returned by report.clusters[name].©Ú_clusterÚ_reportc                ó    — || _         || _        y rQ   r   )r/   ÚclusterÚreports      r+   rf   z_ClusterWithTraces.__init__�  s   € ØˆŒØˆ�r*   c                ó.   — t        | j                  |«      S rQ   )Úgetattrr!  )r/   r¡   s     r+   Ú__getattr__z_ClusterWithTraces.__getattr__”  s   € Ü�t—}‘} dÓ+Ð+r*   c                óŽ   — t        t        t        | j                  «      «      t        t        | j                  «      «      z  «      S rQ   )r”   ÚsetÚdirrh   r!  r8   s    r+   Ú__dir__z_ClusterWithTraces.__dir__—  s.   € Ü”Cœ˜DŸN™NÓ+Ó,¬s´3°t·}±}Ó3EÓ/FÑFÓGÐGr*   c                ó6   — d| j                   j                  ›d�S )Nz_ClusterWithTraces(name=ú))r!  r¡   r8   s    r+   r‰   z_ClusterWithTraces.__repr__š  s   € Ø)¨$¯-©-×*<Ñ*<Ð)?¸qÐAÐAr*   c                ó
  — t        | j                  dd«      }|€t        d«      ‚t        | j                  dd«      }t        | j                  dd«      }|�|€t        d«      ‚t        |||| j                  j
                  ¬«      S )z.Fetch run dicts for this cluster from the API.Ú_clientNzMReport not attached to a client; get reports via Client.get_insights_report()Ú_session_idÚ_job_idzReport missing session/job ids)r  rÝ   r  rø  )r'  r"  Ú
ValueErrorr  r!  rO   ©r/   r  rÝ   r  s       r+   Úload_tracesz_ClusterWithTraces.load_traces�  sˆ   € ä˜Ÿ™ y°$Ó7ˆØˆ>ÜØ_óð ô ˜TŸ\™\¨=¸$Ó?ˆ
Ü˜Ÿ™ y°$Ó7ˆØÐ  ÜÐ=Ó>Ð>ä#ØØ!ØØ—}‘}×'Ñ'ô	
ð 	
r*   N)r$  r  r%  ÚInsightsReportResultr<   rŠ   )r¡   r   r<   r   r]  rp  )r<   úlist[dict[str, Any]])
r$   r%   r&   r'   Ú	__slots__rf   r(  r,  r‰   r5  r)   r*   r+   r  r  ‹  s%   „ Ùcà'€Ióó,óHóBô
r*   r  c                  óF   — e Zd ZdZdZ	 	 	 	 	 	 d	d„Zd
d„Zd„ Zdd„Zdd„Z	y)Ú_ClustersMapzWList-like map of clusters by name. Supports report.clusters['name'] and .load_traces().)Ú	_clustersr"  c                ó2   — t        |«      | _        || _        y rQ   )r”   r;  r"  )r/   Úclustersr%  s      r+   rf   z_ClustersMap.__init__¶  s   € ô
 ˜h›ˆŒØˆ�r*   c           	     ó"  — t        |t        «      r| j                  |   }nU| j                  D �ci c]  }|j                  |“Œ }}||vr(t	        d|›dt        |j                  «       «      › �«      ‚||   }t        || j                  «      S c c}w )NzCluster z not found; available: )	Ú
isinstancer;   r;  r¡   ÚKeyErrorr”   Úkeysr  r"  )r/   r8  r$  ÚcÚby_names        r+   Ú__getitem__z_ClustersMap.__getitem__¾  sŒ   € Ü�cœ3ÔØ—n‘n SÑ)‰Gà*.¯.©.Ö9 Q�q—v‘v˜q‘yÐ9ˆGÐ9Ø˜'Ñ!ÜØ˜s˜gÐ%<¼TÀ'Ç,Á,Ã.Ó=QÐ<RÐSóð ð ˜c‘lˆGÜ! '¨4¯<©<Ó8Ð8ùò :s   ¯Bc                ó.   ‡ — ˆ fd„‰ j                   D «       S )Nc              3  óJ   •K  — | ]  }t        |‰j                  «      –— Œ y ­wrQ   )r  r"  )Ú.0rB  r/   s     €r+   ú	<genexpr>z(_ClustersMap.__iter__.<locals>.<genexpr>Ë  s   øè ø€ ÒL¸Ô" 1 d§l¡l×3ÑLùs   ƒ #)r;  r8   s   `r+   Ú__iter__z_ClustersMap.__iter__Ê  s   ø€ ÛL¸T¿^¹^ÔLÐLr*   c                ó,   — t        | j                  «      S rQ   ©Úlenr;  r8   s    r+   Ú__len__z_ClustersMap.__len__Í  s   € Ü�4—>‘>Ó"Ð"r*   c                ó4   — dt        | j                  «      › d�S )Nz_ClustersMap(n_clusters=r.  rK  r8   s    r+   r‰   z_ClustersMap.__repr__Ð  s   € Ø)¬#¨d¯n©nÓ*=Ð)>¸aÐ@Ð@r*   N)r=  úlist[InsightsCluster]r%  r6  r<   rŠ   )r8  z	str | intr<   r  )r<   r;   rp  )
r$   r%   r&   r'   r8  rf   rD  rI  rM  r‰   r)   r*   r+   r:  r:  ±  sA   „ Ùaà(€Iðà'ðð %ðð 
ó	ó
9òMó#ôAr*   r:  c                  óh  — e Zd ZU dZded<   ded<   ded<   dZded	<   dZded
<   dZded<   dZded<   dZ	ded<   dZ
ded<   dZded<    ee¬«      Zded<   dZded<    ee¬«      Zded<   	  ed¬«      Zded<    ed¬«      Zded<    ed¬«      Zded<    ed ¬!«      Z	 	 	 	 	 	 	 	 d%d"„Zd&d#„Zd&d$„Zy)'r6  zVFull result of fetching an Insights report (job + clusters + summary + optional runs).rí  rO   r   r¡   rä   Nzdatetime | str | NonerÃ   rÅ   rY   r  rF   r  Úshaperî  rÈ   r÷  Ú	config_idrW   rO  r=  zInsightsSummaryReport | Noner%  r7  rä  rA   r   r0  r1  r2  ÚallowrZ  c                ó  — t         j                  | d|«       t         j                  | dt        |«      «       t         j                  | dt        |«      «       t         j                  | dt        | j                  | «      «       y)zXAttach client and ids so clusters can load traces. Called by Client.get_insights_report.r0  r1  r2  r=  N)ÚobjectÚ__setattr__r   r:  r=  r4  s       r+   Ú_attach_clientz#InsightsReportResult._attach_clientì  sd   € ô 	×Ñ˜4 ¨FÔ3Ü×Ñ˜4 ´°J³Ô@Ü×Ñ˜4 ¬C°«KÔ8Ü×ÑØØÜ˜Ÿ™¨Ó-õ	
r*   c                ó4  — | j                   }t        |d«      r!t        j                  | d|j                  «       	 | j                  d¬«      t        |d«      rt        j                  | d|«       S S # t        |d«      rt        j                  | d|«       w w xY w)z?Return the report as a JSON-serializable dict (raw JSON shape).r;  r=  r  ©Úmode)r=  ÚhasattrrU  rV  r;  Ú
model_dump)r/   Úclusters_vals     r+   Úto_jsonzInsightsReportResult.to_jsonü  s„   € à—}‘}ˆÜ�< Ô-Ü×Ñ˜t Z°×1GÑ1GÔHð	CØ—?‘?¨�?Ó/ä�| [Ô1Ü×"Ñ" 4¨°\ÕBð 2øŒw�| [Ô1Ü×"Ñ" 4¨°\ÕBð 2ús   »A1 Á1&Bc                ó&   — | j                  d¬«      S )zHReturn the report as a JSON-serializable dict (e.g. for saving to file).r  rY  )r\  r8   s    r+   Úmodel_dump_json_dictz)InsightsReportResult.model_dump_json_dict  s   € à�‰ FˆÓ+Ð+r*   )r  r   rÝ   ú
str | UUIDr  ra  r<   rŠ   rØ   )r$   r%   r&   r'   r(   rÃ   rÅ   rY   rF   rQ  rÈ   rR  r   r”   r=  r%  rä  r   r0  r1  r2  r   rI   rW  r^  r`  r)   r*   r+   r6  r6  Ô  sû   … Ù`àƒNØ
ƒIØƒKØ(,€JÐ%Ó,Ø&*€HÐ#Ó*Ø(,€JÐ%Ó,Ø&*€HÐ#Ó*Ø#'€EÐ Ó'Ø€Eˆ:ÓØ#'€IÐ Ó'Ù&+¸DÔ&A€HÐ#ÓAØ+/€FÐ(Ó/Ù!&°tÔ!<€DÐ
Ó<Ø8á tÔ,€GˆSÓ,Ù"¨4Ô0€K�Ó0Ù tÔ,€GˆSÓ,á GÔ,€Lð
àð
ð ð
ð ð	
ð
 
ó
ó 	Cô,r*   r6  c                  ó0   — e Zd ZU dZded<   ded<   ded<   y)	ÚFeedbackFormulaWeightedVariablezBA feedback key and weight used when calculating feedback formulas.zLiteral['weighted_key']Ú	part_typerE  Úweightz#Annotated[str, Field(min_length=1)]r8  Nr#   r)   r*   r+   rc  rc    s   … ÙLà&Ó&ØƒMØ	,Ô,r*   rc  c                  ób   — e Zd ZU dZdZded<   dZded<   ded<   ded	<    ed
dd¬«      Zded<   y)ÚFeedbackFormulaCreatez,Schema used for creating a feedback formula.NrN   r@   rÝ   r   rv  úLiteral['sum', 'avg']Úaggregation_type.é   é2   ©Ú
min_lengthÚ
max_lengthú%list[FeedbackFormulaWeightedVariable]Úformula_parts)	r$   r%   r&   r'   r@   r(   rÝ   r   rp  r)   r*   r+   rg  rg    s>   … Ù6à!%€J�Ó%Ø!%€J�Ó%ØÓØ+Ó+Ù;@Ø˜ bô<€MÐ8ô r*   rg  c                  óF   — e Zd ZU dZded<   ded<    eddd¬	«      Zd
ed<   y)ÚFeedbackFormulaUpdatez,Schema used for updating a feedback formula.r   rv  rh  ri  .rj  rk  rl  ro  rp  N)r$   r%   r&   r'   r(   r   rp  r)   r*   r+   rr  rr     s*   … Ù6àÓØ+Ó+Ù;@Ø˜ bô<€MÐ8ô r*   rr  c                  ó0   — e Zd ZU dZded<   ded<   ded<   y)ÚFeedbackFormulaz%Schema for getting feedback formulas.r   rO   r   rY   ry   Nr#   r)   r*   r+   rt  rt  *  s   … Ù/àƒHØÓØÔr*   rt  c                  óP   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded	<   	 d
Zded<   y
)ÚFeedbackConfigSchemaa  Represents a feedback configuration for a tenant's feedback key.

    Feedback configurations define how feedback with a given key should be
    interpreted, including its type (continuous, categorical, or freeform),
    scoring bounds, and valid categories.
    r   rv  rH  rN  r   rT  r   ry   Nrõ   Úis_lower_score_better)r$   r%   r&   r'   r(   rw  r)   r*   r+   rv  rv  2  s:   … ñð ÓØAØ#Ó#ØHØƒOØEØÓØ=Ø,0Ð˜>Ó0ØKr*   rv  )
r  r   rÝ   ra  r  ra  rø  zstr | UUID | Noner<   r7  )yr'   Ú
__future__r   Úcollections.abcr   r   r   r   Údecimalr   Úenumr	   Úpathlibr
   Útypingr   r   r   r   r   r   r   Úuuidr   Úpydanticr   r   r   r   r   r   r   Útyping_extensionsr   r   r   r9  r“   r   r;  r   Útupler=   r   r-   r?   rK   Ú_AttachmentLikerM   ÚExampleUploadWithAttachmentsrm   ro   rt   rŽ   r–   ÚExampleUpdateWithAttachmentsr›   r    ÚDatasetTransformationTyper©   r­   r¼   rÀ   rÂ   rÜ   r  r  r"  r&  r+  r/  r2  r6  rD  rH  rM  rP  rR  r_  rl  rr  ru  r{  r€  rƒ  r‹  Úmodel_rebuildr‘  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:  r6  rc  rg  rr  rt  rv  r)   r*   r+   ú<module>r‡     sú  ðÙ $å "å $ß 2Ñ 2Ý Ý Ý ÷÷ ñ õ ÷÷ ñ ÷ >Ñ =à�:˜y¨+°tÐ;Ñ<€
Ø�4˜˜j¨)°[À$ÐFÑG€
ô�ô ð* �3˜˜e C¨ JÑ/°¸UÀ3ÈÀ9Ñ=MÐMÑNÐNÑO€ðð ô�8ó ó ðô I�)ô Iô�iô ð
 Ø�  s¨E zÑ!2°E¸#¸t¸)Ñ4DÐDñ€ô
!�Iô !ð&  -Ð ô =ô ô�Yô ô'bˆkô 'bôT˜Iô ô!�Iô !ð&  -Ð ôˆs�Dô ô+�)ô +ð $ðñÐ ô?˜I¨Uõ ?ô-ˆkô -ô`�Yô òôT<ˆiô T<ônC,ˆ'ô C,ôL	�#�tô 	ô�) 5õ ô:4 ô 4ô=˜ô =ô"!Ð*ô !ô%Ð,ô %ô#˜ô #ô&+�9ô &+ôRO�y¨õ Oô@�Y eõ @ô!�\ô !ô	3ˆ|ô 	3ô3"�Iô 3"ôl%*˜-ô %*ðP ô
;�hó 
;ó ð
;ô)˜¨%õ )ôO 	°õ Oô$E�iô Eô"< ô <ô9˜	¨õ 9ô"	4�Iô 	4ð × Ñ Ô ô	(˜	ô 	(ô,˜)ô ,ô-ˆy õ -ô�Y eõ ô=�iô =ô!&˜Iô !&ôH>�9ô >ô"+>˜ô +>ô\.;ˆYô .;ôb'˜)ô 'ô
�c˜4ô 
ôR˜	¨õ Rô6˜¨%õ ô �y¨õ ô*˜	¨õ ô 1�Iô 1ôD1˜Y¨eõ 1ô:d˜Yô dô#�gô #ô*˜ô *ôB2˜	ô 2ôl�Yô lô(˜yô ô'˜Iô 'ô
(�iô 
(ð$ %)ñ"Øð"àð"ð ð"ð
 "ð"ð ó"÷J#
ñ #
÷L Añ  AôF5,˜9ô 5,ôp- iô -ô	˜Iô 	ô˜Iô ôÐ+ô ôL˜9õ Lr*   