§
    2�Åj  ã                  óB   — d dl mZ d dlZd dlmZ  G d„ de¦  «        ZdS )é    )ÚannotationsN)ÚOpRunc                  ó.   — e Zd Zd„ Zdd„Zdddddœd„ZdS )	ÚLoopc                ól  — t          j        | ||¦  «         d| j        vrt          d¦  «        ‚d|vrt          d¦  «        ‚d„ t	          | j        j        ¦  «        D ¦   «         | _        t          | j        j	        ¦  «        dz
  | _
        t          | j        j        ¦  «        | j
        z
  dz
  | _        d S )NÚopsetsz&run_params must contains key 'opsets'.Úverbosez'run_params must contains key 'verbose'.c                ó   — i | ]\  }}||“Œ	S © r   )Ú.0ÚiÚns      úKC:\Projects\Historical\venv\Lib\site-packages\onnx/reference/ops/op_loop.pyú
<dictcomp>z!Loop.__init__.<locals>.<dictcomp>   s   € ÐPÐPÐP¡d a¨˜Q ÐPÐPÐPó    é   é   )r   Ú__init__Ú
run_paramsÚKeyErrorÚ	enumerateÚbodyÚoutput_namesÚoutput_indexÚlenÚinput_namesÚNÚK)ÚselfÚ	onnx_noder   s      r   r   zLoop.__init__   s¬   € ÝŒ�t˜Y¨
Ñ3Ô3Ð3Ø˜4œ?Ð*Ð*ÝÐCÑDÔDÐDØ˜JÐ&Ð&ÝÐDÑEÔEÐEØPÐP­i¸¼	Ô8NÑ.OÔ.OÐPÑPÔPˆÔÝ�T”YÔ*Ñ+Ô+¨aÑ/ˆŒÝ�T”YÔ+Ñ,Ô,¨t¬vÑ5¸Ñ9ˆŒˆˆr   ÚreturnÚboolc                ó   — dS )zäThe operator Loop needs to know all results produced
        so far as the loop may silently access one of them.
        Some information are not always referred in the list of inputs
        (kind of static variables).
        Tr   )r   s    r   Úneed_contextzLoop.need_context   s	   € ð ˆtr   N)Úcontextr   Ú
attributesÚbindingsc               ó>  ‡— |r|d         }|dd …         }nd }|�0t          |d¦  «        s t          dt          |¦  «        › d�¦  «        ‚| j        }|j        }	t
                               |	¦  «        Š|�|‰|	d         <   |j        d         }
|rFt          |	¦  «        t          |¦  «        z
  }|	|d …         }t          ||d¬¦  «        D ]
\  }}|‰|<   Œ|�|D ]}||         ‰|<   Œd	„ t          | j        ¦  «        D ¦   «         }d}|�r¢|�||k     �r™|                      d
|¦  «         t          |j        ¦  «        dk    r:|j        d         �-t          j        ||€d n|j        ¬¦  «        ‰|j        d         <   t          |j        ¦  «        dk    r|j        d         �|‰|j        d         <   |                      ‰||¬¦  «        }| j        dk    rAt          | j        ¦  «        D ],}||                              || j         |z            ¦  «         Œ-| j        |
         }||         }|€t'          d|
›d�¦  «        ‚t          |j        dd …         |j        dd …         d¬¦  «        D ]\  }}|| j        |                  ‰|<   Œ|dz  }|                      d¦  «         |r
|�®’||k     �°™|dk    rˆfd„|j        dd …         D ¦   «         }n|dd| j        z   …         }|                     d„ |D ¦   «         ¦  «         t          |¦  «        t          | j        j        ¦  «        k     rR|                     t          j        d¬¦  «        ¦  «         t          |¦  «        t          | j        j        ¦  «        k     °Rt3          |¦  «        }|                      |¦  «        S )Nr   r   Údtypez,M must be empty or an array but its type is ú.r   F)Ústrictc                ó   — g | ]}g ‘ŒS r   r   )r   r   s     r   ú
<listcomp>zLoop._run.<locals>.<listcomp>7   s   € Ð4Ð4Ð4 ˜"Ð4Ð4Ð4r   z  -- loop> {%r})r)   )r&   r'   z
Condition z) returned by the subgraph cannot be None.z
  -- loop<c                ó    •— g | ]
}‰|         ‘ŒS r   r   )r   r   Úinputss     €r   r-   zLoop._run.<locals>.<listcomp>Q   s   ø€ Ð?Ð?Ð? Q�v˜a”yÐ?Ð?Ð?r   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS r   )ÚnpÚvstack)r   Úxs     r   r-   zLoop._run.<locals>.<listcomp>T   s    € Ð=Ð=Ð=¨�œ	 !™œÐ=Ð=Ð=r   r   )Úshape)ÚhasattrÚ	TypeErrorÚtyper   r   ÚdictÚfromkeysr   r   ÚzipÚranger   Ú_logr1   Úarrayr)   Ú	_run_bodyÚappendr   ÚRuntimeErrorr   Úextendr    ÚoutputÚemptyÚtupleÚ_check_and_fix_outputs)r   ÚMÚcondr%   r   r&   r'   ÚargsÚ	v_initialÚloop_inputsÚ	cond_nameÚbeginÚ
all_inputsÚnameÚvalÚaÚk_carried_awayÚitÚoutputsÚkÚ
index_condr   ÚoÚresr/   s                           @r   Ú_runz	Loop._run   sü  ø€ ð ð 	Ø˜QœˆIØ˜˜˜”8ˆDˆDàˆIØˆ=¥¨¨GÑ!4Ô!4ˆ=ÝÐUÍ4ÐPQÉ7Ì7ÐUÐUÐUÑVÔVÐVØŒyˆØÔ&ˆÝ—’˜{Ñ+Ô+ˆØÐ Ø%.ˆF�;˜q”>Ñ"ØÔ% aÔ(ˆ	Øð 	#Ý˜Ñ$Ô$¥s¨4¡y¤yÑ0ˆEØ$ U V VÔ,ˆJÝ  ¨T¸%Ð@Ñ@Ô@ð #ð #‘	��cØ"��t‘�ØÐØð 'ð '�Ø# AœJ��q‘	�	à4Ð4¥e¨D¬F¡m¤mÐ4Ñ4Ô4ˆØˆØñ 	$˜˜	 R¨!¢V¡VØ�IŠIÐ'¨Ñ1Ô1Ð1Ý�4Ô#Ñ$Ô$ qÒ(Ð(¨TÔ-=¸aÔ-@Ð-LÝ.0¬hØ a i˜d˜d°Q´Wð/ñ /ô /��tÔ'¨Ô*Ñ+õ �4Ô#Ñ$Ô$ qÒ(Ð(¨TÔ-=¸aÔ-@Ð-LØ.2��tÔ'¨Ô*Ñ+Ø—n’n V¸
ÈX�nÑVÔVˆGØŒv˜ŠzˆzÝ˜tœv™œð Cð C�AØ" 1Ô%×,Ò,¨W°d´f°W¸q±[Ô-AÑBÔBÐBÐBØÔ*¨9Ô5ˆJØ˜:Ô&ˆDØˆ|Ý"ØW ÐWÐWÐWñô ð õ ˜DÔ,¨Q¨R¨RÔ0°$Ô2CÀAÀBÀBÔ2GÐPUÐVÑVÔVð :ð :‘��1Ø# DÔ$5°aÔ$8Ô9��q‘	�	Ø�!‰GˆBØ�IŠI�lÑ#Ô#Ð#ð+ ð 	$˜™	 R¨!¢V¡Vð. �Š7ˆ7Ø?Ð?Ð?Ð?¨$Ô*:¸1¸2¸2Ô*>Ð?Ñ?Ô?ˆGˆGà˜a ! d¤f¡*˜nÔ-ˆGØ�ŠÐ=Ð=¨nÐ=Ñ=Ô=Ñ>Ô>Ð>Ý�'‰lŒl�S ¤Ô!6Ñ7Ô7Ò7Ð7Ø�NŠN�2œ8¨"Ð-Ñ-Ô-Ñ.Ô.Ð.õ �'‰lŒl�S ¤Ô!6Ñ7Ô7Ò7Ð7å�G‰nŒnˆØ×*Ò*¨3Ñ/Ô/Ð/r   )r!   r"   )Ú__name__Ú
__module__Ú__qualname__r   r$   rX   r   r   r   r   r      s\   € € € € € ð:ð :ð :ðð ð ð ð '+°À$ÐQUð:0ð :0ð :0ð :0ð :0ð :0ð :0r   r   )Ú
__future__r   Únumpyr1   Úonnx.reference.op_runr   r   r   r   r   ú<module>r_      su   ðð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð à 'Ð 'Ð 'Ð 'Ð 'Ð 'ðM0ð M0ð M0ð M0ð M0ˆ5ñ M0ô M0ð M0ð M0ð M0r   