Ë
    ›¾jâ  ã            	       óÜ   — d dl mZmZmZmZ ddlmZ ddlmZ  ed«      Z	eZ
 ej                  d«      dee	ef   dee	ef   d	ee	ef   fd
„«       Zd„ Z	 ddee	e
f   dee	   dee
   d	dfd„Zy)é    )ÚAnyÚOptionalÚTupleÚTypeVaré   )Úregistry)ÚModelÚInTz
tuplify.v1Úlayer1Úlayer2Úreturnc                 óª   — | |f|z   }|D �cg c]  }|j                   ‘Œ }}t        ddj                  |«      z   dz   t        t        |ddi¬«      S c c}w )zåSend a separate copy of the input to each child layer, and join the
    outputs of the children into a tuple on the way out.

    Typically used to provide both modified data and the original input to a
    downstream layer.
    ztuple(z, ú)ÚnIN)ÚinitÚlayersÚdims)Únamer	   ÚjoinÚtuplify_forwardr   )r   r   r   ÚlayerÚnamess        ú^/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/thinc/layers/tuplify.pyÚtuplifyr   
   sb   € ð �fÐ Ñ&€FØ%+Ö,˜EˆU�Z‹ZÐ,€EÐ,ÜØ�4—9‘9˜UÓ#Ñ# cÑ)ÜÜØØ�Dˆ\ôð ùò -s   ŒAc                 ó®   ‡— g }g Š| j                   D ]0  } |||«      \  }}|j                  |«       ‰j                  |«       Œ2 ˆfd„}t        |«      |fS )Nc                 ó„   •— t        ‰| «      D ��cg c]  \  }} ||«      ‘Œ }}}|d   }|dd  D ]  }||z  }Œ	 |S c c}}w )Nr   é   )Úzip)ÚdYsÚbpÚdYÚdXsÚdXÚdxÚ	backpropss         €r   Úbackprop_tuplifyz)tuplify_forward.<locals>.backprop_tuplify(   sV   ø€ Ü$'¨	°3Ó$7×8™&˜"˜b‰r�"�vÐ8ˆÑ8Ø�‰VˆØ�a�b�'ò 	ˆBØ�"‰H‰Bð	àˆ	ùó	 9s   ‘<)r   ÚappendÚtuple)	ÚmodelÚXÚis_trainÚYsr   ÚYÚbackpropr&   r%   s	           @r   r   r       s`   ø€ Ø	€BØ€IØ—‘ò #ˆÙ˜A˜xÓ(‰ˆˆ8Ø
�	‰	�!ŒØ×Ñ˜Õ"ð#ô
ô �‹9Ð&Ð&Ð&ó    Nr)   r*   r-   c                 ó2  — |€o|€m| j                   D ]  }|j                  «        Œ | j                   d   j                  d«      r.| j                  d| j                   d   j	                  d«      «       t        | j                   «      D ]A  \  }}|�(|j                  d«      €|j                  |||   ¬«       Œ0|j                  |¬«       ŒC | j                   d   j                  d«      r/| j                  d| j                   d   j	                  d«      «       y y )Nr   r   ÚnO)r*   r-   )r*   )r   Ú
initializeÚhas_dimÚset_dimÚget_dimÚ	enumerate)r)   r*   r-   r   Úiis        r   r   r   2   sú   € ð 	€y�Q�YØ—\‘\ò 	ˆEØ×ÑÕð	à�<‰<˜‰?×"Ñ" 4Ô(Ø�M‰M˜$ §¡¨Q¡× 7Ñ 7¸Ó =Ô>ô
 ˜uŸ|™|Ó,ò "‰	ˆˆEØˆ=˜UŸ]™]¨4Ó0Ð8Ø×Ñ˜q A b¡EÐÕ*à×Ñ˜qÐÕ!ð	"ð ‡|�|�A�×Ñ˜tÔ$Ø�‰�d˜EŸL™L¨™O×3Ñ3°DÓ9Õ:ð %r/   )NN)Útypingr   r   r   r   Úconfigr   r)   r	   r
   ÚOutTr   r   r   r   © r/   r   ú<module>r<      s±   ðß 0Ó 0å Ý áˆeƒn€Ø€ð €‡��ÓðØ�#�s�(‰OðØ%*¨3°¨8¡_ðà
ˆ3�ˆ:Ñòó ðò*'ð& KOñ;Ø��d�Ñð;Ø (¨¡ð;Ø9AÀ$¹ð;à	ô;r/   