§
    ¹³Ùgz  ã            
       ó¨   — d 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mZmZ eeee	e
eeeedœ	Zej        d„ ¦   «         Zej        d	d„¦   «         ZdS )
z.Internal utils for Classical Function Compileré    )ÚHAS_TWEEDLEDUM)ÚQuantumCircuit)	ÚHGateÚSGateÚSdgGateÚSwapGateÚTGateÚTdgGateÚXGateÚYGateÚZGate)	zstd.hzstd.szstd.sdgzstd.swapzstd.tzstd.tdgzstd.xzstd.yzstd.zc                 óˆ  — t                                |                      ¦   «         ¦  «        }|€P|                      ¦   «         dk    r|                      ¦   «         S t	          d|                      ¦   «         › �¦  «        ‚|                      ¦   «         dk    r£ddlm} |                      ¦   «         }d}|d |                      ¦   «         …         D ]5}|t          | 
                    ¦   «         |j        j        k    ¦  «        › z  }Œ6 |¦   «                              t          |¦  «        |d d d…         ¬¦  «        S  |¦   «         S )NÚpy_operatorzUnrecognized operator: r   )ÚQubitÚ éÿÿÿÿ)Ú
ctrl_state)Ú_QISKIT_OPSÚgetÚkindÚpy_opÚRuntimeErrorÚnum_controlsÚtweedledum.irr   ÚqubitsÚintÚpolarityÚPolarityÚpositiveÚcontrolÚlen)ÚopÚ	base_gater   r   r   Úqubits         ú\/granary/edev/quantum/lib/python3.11/site-packages/qiskit/circuit/classicalfunction/utils.pyÚ_convert_tweedledum_operatorr&   +   s)  € å—’ §¢¡	¤	Ñ*Ô*€IØÐØ�7Š7‰9Œ9˜Ò%Ð%Ø—8’8‘:”:ÐåÐD¸¿º¹¼ÐDÐDÑEÔEÐEð 
‡‚ÑÔ˜1ÒÐØ'Ð'Ð'Ð'Ð'Ð'à—’‘”ˆØˆ
ØÐ/˜bŸošoÑ/Ô/Ð/Ô0ð 	Pð 	PˆEØ�S §¢Ñ!1Ô!1°U´^Ô5LÒ!LÑMÔMÐOÑOˆJˆJØˆy‰{Œ{×"Ò"¥3 z¡?¤?¸zÈ$È$ÈBÈ$Ô?OÐ"ÑPÔPÐPØˆ9‰;Œ;Ðó    Nc                 ó  — |rt          |d|iŽ}n#t          |                      ¦   «         |¬¦  «        }ddlm}  || ¦  «        D ]E}t	          |¦  «        }d„ |                     ¦   «         D ¦   «         }|                     ||¦  «         ŒF|S )ap  Converts a `Tweedledum <https://github.com/boschmitt/tweedledum>`_
    circuit into a Qiskit circuit.
    Args:
        tweedledum_circuit (tweedledum.ir.Circuit): Tweedledum circuit.
        name (str): Name for the resulting Qiskit circuit.
        qregs (list(QuantumRegister)): Optional. List of QuantumRegisters on which the
           circuit would operate. If not provided, it will create a flat register.

    Returns:
        QuantumCircuit: The Tweedledum circuit converted to a Qiskit circuit.

    Raises:
        ClassicalFunctionCompilerError: If a gate in the Tweedledum circuit has no Qiskit equivalent.
    Úname)r)   r   )Úparity_decompc                 ó6   — g | ]}|                      ¦   «         ‘ŒS © )Úuid)Ú.0r$   s     r%   ú
<listcomp>z%tweedledum2qiskit.<locals>.<listcomp>Y   s    € Ð@Ð@Ð@ %�%—)’)‘+”+Ð@Ð@Ð@r'   )r   Ú
num_qubitsÚtweedledum.passesr*   r&   r   Úappend)Útweedledum_circuitr)   ÚqregsÚ	qiskit_qcr*   ÚinstructionÚgater   s           r%   Útweedledum2qiskitr8   @   s·   € ð  ð OÝ" EÐ5°Ð5Ð5ˆ	ˆ	å"Ð#5×#@Ò#@Ñ#BÔ#BÈÐNÑNÔNˆ	à/Ð/Ð/Ð/Ð/Ð/à$�}Ð%7Ñ8Ô8ð 'ð 'ˆÝ+¨KÑ8Ô8ˆØ@Ð@¨;×+=Ò+=Ñ+?Ô+?Ð@Ñ@Ô@ˆØ×Ò˜˜vÑ&Ô&Ð&Ð&ØÐr'   )NN)Ú__doc__Úqiskit.utils.optionalsr   Úqiskit.circuitr   Ú%qiskit.circuit.library.standard_gatesr   r   r   r   r	   r
   r   r   r   r   Úrequire_in_callr&   r8   r,   r'   r%   ú<module>r>      s  ðð 5Ð 4à 1Ð 1Ð 1Ð 1Ð 1Ð 1à )Ð )Ð )Ð )Ð )Ð )ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð ØØØØØØØØð
ð 
€ð Ôðð ñ  Ôðð( Ôðð ð ñ  Ôðð ð r'   