
    z	i                     x   S r SSKrSSKJr  SSKJr  SSKJr  SSKJ	r	  SSK
Jr  SSK
Jr  SS	K
Jr  SS
K
Jr  SSK
Jr  SSK
Jr  SSK
Jr  SSK
Jr  SSK
Jr  SSK
Jr  SSK
Jr  SSK
Jr  SSK
Jr  SSK
Jr  SSK
Jr  SSK
Jr  SSKJr  SSKJrJr  SSK J!r!J"r"J#r#J$r$J%r%J&r&  SSK
J'r'J(r(J)r)J*r*  SSK+J,r,  SSK-J.r.  SSK/J0r0J1r1  SSK2J3r3  SSK4J5r5  SS K6J7r8  SS!K9J:r:  SS"K;J<r<  \<Rz                  " 5       r>1 S#kr? " S$ S%\5      r@ " S& S'\5      rA " S( S)\5      rB " S* S+\5      rC " S, S-\5      rD " S. S/\5      rE " S0 S1\5      rF " S2 S3\5      rG " S4 S5\5      rH " S6 S7\5      rI " S8 S9\5      rJ " S: S;\5      rK " S< S=\5      rL " S> S?\5      rM " S@ SA\5      rN " SB SC\5      rO " SD SE\5      rPSISF jrQ " SG SH\5      rRg)Jz;Built-in transpiler stage plugins for preset pass managers.    N)VF2PostLayout)Split2QUnitaries)PassManager)TranspilerError)ApplyLayout)	BasicSwap)LookaheadSwap)	SabreSwap)Error)	SetLayout)	VF2Layout)SabreLayout)DenseLayout)TrivialLayout)CheckMap)BarrierBeforeFinalMeasurements)ElidePermutations) RemoveDiagonalGatesBeforeMeasure)OptimizeCliffordT)BasisTranslator)common)PassManagerStagePluginPassManagerStagePluginManager)Optimize1qGatesDecompositionCommutativeCancellationConsolidateBlocksInverseCancellationRemoveIdentityEquivalentContractIdleWiresInControlFlow)DepthSize
FixedPointMinimumPoint)GatesInBasis)UnitarySynthesis)ConditionalControllerDoWhileController)TimingConstraints)VF2LayoutStopReason)SessionEquivalenceLibrary)default_num_processes)user_config>   delayresetif_elsemeasurefor_loop
while_loopswitch_casec                   *    \ rS rSrSrSS\4S jjrSrg)DefaultInitPassManagerI   z$Plugin class for default init stage.Nreturnc                 |   US:X  a  S nUR                   (       d9  UR                  (       d(  UR                  b  UR                  R                  5       bm  [        R
                  " UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  5      nU$ US:X  a  [        5       nUR                   (       d9  UR                  (       d(  UR                  b  UR                  R                  5       bp  U[        R
                  " UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  5      -  nUR                  [        5       [!        5       /5        U$ US;   Gax  [        R
                  " UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  5      nUR"                  S:w  a  UR                  [%        5       5        UR                  ['        5       [)        UR                  S9[        5       [!        5       /5        UR                  [+        5       5        UR                  (       d  UR                  [-        5       5        SnUR"                  S:w  a  SnUR                  b%  UR                  [/        UR                  US95        U$ UR                  [/        US95         U$ [1        S	U 35      e)
Nr      >         none)approximation_degreeFT)
split_swapzInvalid optimization level )initial_layoutcoupling_maptargetbuild_coupling_mapr   generate_unroll_3qbasis_gatesr=   unitary_synthesis_methodunitary_synthesis_plugin_config
hls_configqubits_initially_zero_is_clifford_tr   appendr   r   routing_methodr   r   r   r   r   r   r   )selfpass_manager_configoptimization_levelinitsplit_2q_unitaries_swaps        o/home/james-whalen/.local/lib/python3.13/site-packages/qiskit/transpiler/preset_passmanagers/builtin_plugins.pypass_manager#DefaultInitPassManager.pass_managerL   s   "D#22&33'..:+22EEGS 00'..'33'<<'@@'GG'22'=='66	l Y  1$=D#22&33'..:+22EEGS 11'..'33'<<'@@'GG'22'=='66	 	 KK')24p c  6),,#**#//#88#<<#CC#..#99#22	D #11V;-/0KK46 --@-U-U ()24	 KK/12 '55-/0 ',#"11V;*.'"77C$+@@Md  ,8OPQ  "$?@R?S"TUU     N__name__
__module____qualname____firstlineno____doc__r   rR   __static_attributes__rU   rT   rQ   r5   r5   I   s    .bK b brT   r5   c                   *    \ rS rSrSrSS\4S jjrSrg)DefaultTranslationPassManager   z6Plugin class for the default-method translation stage.Nr7   c                 4    [        5       R                  X5      $ rV   )BasisTranslatorPassManagerrR   rL   rM   rN   s      rQ   rR   *DefaultTranslationPassManager.pass_manager   s     *+889LaarT   rU   rV   rW   rU   rT   rQ   r_   r_      s    @bK b brT   r_   c                   *    \ rS rSrSrSS\4S jjrSrg)rb      zBPlugin class for translation stage with :class:`~.BasisTranslator`Nr7   c                    UR                   (       a  SnOSn[        R                  " UR                  UR                  UUR
                  UR                  UR                  UR                  UR                  UR                  S9	$ )N
clifford_t
translatorrD   methodr=   r@   rE   rF   rG   rH   )rI   r    generate_translation_passmanagerrA   rD   r=   r@   rE   rF   rG   rH   )rL   rM   rN   rk   s       rQ   rR   'BasisTranslatorPassManager.pass_manager   ss    --!F!F66&&+77!4!I!I,99%8%Q%Q,?,_,_*55"5"K"K

 
	
rT   rU   rV   rW   rU   rT   rQ   rb   rb      s    L
K 
 
rT   rb   c                   *    \ rS rSrSrSS\4S jjrSrg)UnitarySynthesisPassManager   zCPlugin class for translation stage with :class:`~.UnitarySynthesis`Nr7   c                     [         R                  " UR                  UR                  SUR                  UR
                  UR                  UR                  UR                  UR                  S9	$ )N	synthesisrj   )
r   rl   rA   rD   r=   r@   rE   rF   rG   rH   rc   s      rQ   rR   (UnitarySynthesisPassManager.pass_manager   s`    66&&+77!4!I!I,99%8%Q%Q,?,_,_*55"5"K"K

 
	
rT   rU   rV   rW   rU   rT   rQ   ro   ro      s    M
K 
 
rT   ro   c                   *    \ rS rSrSrSS\4S jjrSrg)DefaultRoutingPassManager   z<Plugin class for the "default" routing stage implementation.Nr7   c                 4    [        5       R                  X5      $ rV   )SabreSwapPassManagerrR   rc   s      rQ   rR   &DefaultRoutingPassManager.pass_manager   s    
 $%223F[[rT   rU   rV   rW   rU   rT   rQ   ru   ru      s    F\K \ \rT   ru   c                   *    \ rS rSrSrSS\4S jjrSrg)BasicSwapPassManager   z8Plugin class for routing stage with :class:`~.BasicSwap`Nr7   c                    UR                   nUR                  nUc  [        U5      nO[        U5      n[        R                  " UUR
                  UR                  5      u  pgUS:X  a  [        R                  " UUUSSS9$ US:X  a  [        R                  " UUUUUSSSS9$ US:X  a  [        R                  " UUUUUSSS9$ US	:X  a  [        R                  " UUUUUSSS9$ [        S
U 35      e) Build routing stage PassManager.r   Tr@   seed_transpileruse_barrier_before_measurementr9   vf2_call_limitvf2_max_trialsr   check_trivialr   r:   r@   r   r   r   r   r;   &Invalid optimization level specified: )	rA   r@   r   r   get_vf2_limitslayout_methodr?   generate_routing_passmanagerr   )rL   rM   rN   rA   r@   routing_passr   r   s           rQ   rR   !BasicSwapPassManager.pass_manager   s5   $++*77>$\2L$V,L)/)>)>--..*
&
 "66) "/3  "66-- ""/3	 	 "66)-- "/3  "66)-- "/3   FGYFZ[\\rT   rU   rV   rW   rU   rT   rQ   r{   r{      s    B5]K 5] 5]rT   r{   c                   *    \ rS rSrSrSS\4S jjrSrg)LookaheadSwapPassManageri)  z<Plugin class for routing stage with :class:`~.LookaheadSwap`Nr7   c                    UR                   nUR                  nUnUc  Un[        R                  " UUR                  UR
                  5      u  pgUS:X  a#  [        USSS9n[        R                  " UUUSSS9$ US:X  a&  [        USSS9n[        R                  " UUUUUSSSS	9$ US:X  a%  [        US
SS9n[        R                  " UUUUUSSS9$ US:X  a%  [        US
SS9n[        R                  " UUUUUSSS9$ [        SU 35      e)r~   r   r:   )search_depthsearch_widthr   Tr   r9      r         r   r;   r   )	rA   r@   r   r   r   r?   r	   r   r   )	rL   rM   rN   rA   r@   coupling_map_routingr   r   r   s	            rQ   rR   %LookaheadSwapPassManager.pass_manager,  sn   $++*77%'#/ )/)>)>--..*
&
 "()=A\]^L66) "/3  "()=A\]^L66-- ""/3	 	 "()=A\]^L66)-- "/3  "()=A\]^L66)-- "/3   FGYFZ[\\rT   rU   rV   rW   rU   rT   rQ   r   r   )  s    F7]K 7] 7]rT   r   c                   *    \ rS rSrSrSS\4S jjrSrg)rx   if  z8Plugin class for routing stage with :class:`~.SabreSwap`Nr7   c                    UR                   nUR                  nUR                  nUnUc  Un[        R                  " UUR
                  UR                  5      u  pxUS:X  a/  [        S5      n	[        USUU	S9n
[        R                  " U
UUSSS9$ US:X  a2  [        S5      n	[        US	UU	S9n
[        R                  " U
UUUUSSSS
9$ US:X  a1  [        S5      n	[        US	UU	S9n
[        R                  " U
UUUUSSS9$ US:X  a1  [        S5      n	[        US	UU	S9n
[        R                  " U
UUUUSSS9$ [        SU 35      e)r~   r   r   basic)	heuristicseedtrialsr   Tr   r9   decayr   r:      r   r;   r   )r   rA   r@   r   r   r   r?   _get_trial_countr
   r   r   )rL   rM   rN   r   rA   r@   r   r   r   trial_countr   s              rQ   rR   !SabreSwapPassManager.pass_manageri  s   -==$++*77%'#/ )/)>)>--..*
&
 "*1-K$$!$"	L 66) "/3  "*1-K$$!$"	L 66-- ""/3	 	 "*2.K$$!$"	L 66)-- "/3  "*2.K$$!$"	L 66)-- "/3   FGYFZ[\\rT   rU   rV   rW   rU   rT   rQ   rx   rx   f  s    BQ]K Q] Q]rT   rx   c                   *    \ rS rSrSrSS\4S jjrSrg)NoneRoutingPassManageri  z5Plugin class for routing stage with error on routing.Nr7   c                 v    UR                   nUR                  n[        SSS9n[        R                  " UUUSSS9$ )r~   z`No routing method selected, but circuit is not routed to device. CheckMap Error: {check_map_msg}raise)msgactionr   Tr   )rA   r@   r   r   r   )rL   rM   rN   rA   r@   r   s         rQ   rR   #NoneRoutingPassManager.pass_manager  sN    $++*77.

 22%+/
 	
rT   rU   rV   rW   rU   rT   rQ   r   r     s    ?
K 
 
rT   r   c                   *    \ rS rSrSrSS\4S jjrSrg)OptimizationPassManageri  #Plugin class for optimization stageNr7   c                 4   UR                   (       a  [        5       R                  X5      $ UR                  =(       d    Sn[	        5       nUS:w  Ga  [        5       n[        SS9[        S5      /n[        SS9[        S5      /n[        SS9[        SS9[        SS/S5      /nS n	UR                  S	UUUS
9n
US:X  a3  [        UR                  UR                  S9[        5       [        5       /nGO>US:X  aX  [!        UR"                  UR                  S9[        UR                  UR                  S9[%        UR                  S9[        5       /nOUS:X  a  ['        UR                  UR                  UR"                  S9[)        UR                  UR"                  UR*                  UR,                  UR.                  UR                  S9[!        UR"                  UR                  S9[        UR                  UR                  S9[%        UR                  S9[        5       /nS n	O[1        SU 35      eU
R3                  5       nS n[5        UR                  UR                  S9[7        XS9/nUS:X  a  UR9                  U5        OUS:X  a  UR9                  ['        UR                  UR                  UR"                  S9[)        UR                  UR"                  UR*                  UR,                  UR.                  UR                  S9/5        UR9                  Xg-   5        OUR9                  Xg-   5        US:X  a  X-   U-   O	X-   U-   U-   nUR9                  [;        XS95        US:X  a  UR*                  (       a  [<        R>                  " UUR@                  URB                  SS9u  nnU=(       a    UnUR                  b\  U(       aU  UR9                  [E        UR                  SUUSS95        UR9                  [7        [G        5       [<        RH                  S95        U$ g)*Build pass manager for optimization stage.defaultr   Trecursedepthsizeoptimization_loopc                 8    U S   (       + =(       d
    U S   (       + $ Ndepth_fixed_pointsize_fixed_pointrU   property_sets    rQ   _opt_control:OptimizationPassManager.pass_manager.<locals>._opt_control  $    ()<== $%788rT   translation)rN   r9   )basisrA   r:   r=   rA   rA   r;   )rD   rA   r=   )r=   r@   rk   plugin_configrA   c                     U S   (       + $ )Noptimization_loop_minimum_pointrU   r   s    rQ   r   r   6  s    +,MNNNrT   Invalid optimization_level: c                     U S   (       + $ )Nall_gates_in_basisrU   r   s    rQ   _unroll_condition?OptimizationPassManager.pass_manager.<locals>._unroll_condition?  s    '(<===rT   	conditiondo_while)exact_matchNr   )rA   r   
call_limit
max_trialsstrict_direction)%rI    CliffordTOptimizationPassManagerrR   translation_methodr   r   r    r"   r!   r#   get_passmanager_stager   rD   rA   r   r   r   r=   r   r   r%   r@   rE   rF   r   to_flow_controllerr$   r&   rJ   r'   r   r   r   r?   r   r   _apply_post_layout_condition)rL   rM   rN   r   optimizationplugin_manager_depth_check_size_check_minimum_point_checkr   r   _optunrollr   _unroll_if_out_of_basisopt_loopr   r   is_vf2_fully_boundeds                      rQ   rR   $OptimizationPassManager.pass_manager  s3    --35BB# 
 1CCPy"}":<N!$/G1DEL-z&/ABK d#T"gv.0CD$ 
 )>>"##5	 ? K "Q& 11==FYF`F` ()24 $q(,-@-U-U299 11==FYF`F` ,3F3M3MN24
$ $q(%$7$C$C299-@-U-U
 %+77-@-U-U%8%E%E2KK&9&Y&Y299 --@-U-U299 11==FYF`F` ,3F3M3MN24-2O &(DEWDX&YZZ 335F>
 0<<EXE_E_`%fJ'#
 "Q&##$89#q(##)(;(G(G#6#=#=1D1Y1Y
 )/;;1D1Y1Y)<)I)I#6#O#O*=*]*]#6#=#=" ##L$>?##L$>? &* .1EE3lB[P 
  1( RS!Q&+>+K+K171F1F&'55'66 $	2. (6'H.$&--9>R ''%#6#=#=!#'5'5-1 !''-'MV5X5X  rT   rU   rV   rW   rU   rT   rQ   r   r     s    -kK k krT   r   c                   *    \ rS rSrSrSS\4S jjrSrg)AlapSchedulingPassManageri  'Plugin class for alap scheduling stage.Nr7   c                     UR                   nUR                  nUR                  nUR                  n[        R
                  " X4XV5      $ "Build scheduling stage PassManagerinstruction_durationsscheduling_methodtiming_constraintsrA   r   generate_schedulingrL   rM   rN   r   r   r   rA   s          rQ   rR   &AlapSchedulingPassManager.pass_manager  L     !4 I I/AA0CC$++))!6H
 	
rT   rU   rV   rW   rU   rT   rQ   r   r         1

K 

 

rT   r   c                   *    \ rS rSrSrSS\4S jjrSrg)AsapSchedulingPassManageri  r   Nr7   c                     UR                   nUR                  nUR                  nUR                  n[        R
                  " X4XV5      $ r   r   r   s          rQ   rR   &AsapSchedulingPassManager.pass_manager  r   rT   rU   rV   rW   rU   rT   rQ   r   r     r   rT   r   c                   *    \ rS rSrSrSS\4S jjrSrg)DefaultSchedulingPassManageri  r   Nr7   c                     UR                   nSnUR                  =(       d
    [        5       nUR                  n[        R
                  " X4XV5      $ )r   N)r   r   r(   rA   r   r   r   s          rQ   rR   )DefaultSchedulingPassManager.pass_manager  sO     !4 I I 0CCZGXGZ$++))!6H
 	
rT   rU   rV   rW   rU   rT   rQ   r   r     r   rT   r   c                   *    \ rS rSrSrSS\4S jjrSrg)DefaultLayoutPassManageri  z&Plugin class for default layout stage.Nr7   c           	          [        UR                  5      nS nS nS nS nUR                  c  UR                  nOUR                  n[	        5       n	U	R                  U5        US:X  a@  Ub"  U	R                  [        [        U5      US95        U	[        R                  " U5      -  n	U	$ Uc  GOUS:X  a  U	R                  [        [        U5      [        U5      /US95        [        UR                  S[        S	5      UR                  S
S9n
U	R                  [        XS95        [        S5      n[        USUR                  UUUR                   S;  S9nU	R                  [        [#        S5      U/US95        GOHUS:X  a  [        UR                  S[        S5      UR                  S
S9nU	R                  [        XS95        [        S5      n[        USUR                  UUUR                   S;  S9n
U	R                  [        [#        S5      U
/US95        OUS:X  a  [        UR                  S[        S5      UR                  SS9nU	R                  [        XS95        [        S5      n[        USUR                  UUUR                   S;  S9n
U	R                  [        [#        S5      U
/US95        O[%        SU 35      e[        R                  " U5      nU	R                  [        UR'                  5       US95        U	$ )Nc                     U S   (       + $ NlayoutrU   r   s    rQ   _choose_layout_conditionGDefaultLayoutPassManager.pass_manager.<locals>._choose_layout_condition      #H---rT   c                 2    U S   SL=(       a
    U S   (       + $ )zReturn ``True`` if the first attempt at layout has been checked and found to be
imperfect.  In this case, perfection means "does not require any swap routing".is_swap_mappedNrU   r   s    rQ   _layout_not_perfectBDefaultLayoutPassManager.pass_manager.<locals>._layout_not_perfect  s#       01=dlScFdBddrT   c                 V    U S   c  gU S   S L=(       a    U S   [         R                  L$ )Nr   TVF2Layout_stop_reason)r)   SOLUTION_FOUNDr   s    rQ   _vf2_match_not_foundCDefaultLayoutPassManager.pass_manager.<locals>._vf2_match_not_found  sB     H%- 45TA d !89ATAcAccrT   c                     U S   S L $ Nfinal_layoutrU   r   s    rQ   _swap_mapped;DefaultLayoutPassManager.pass_manager.<locals>._swap_mapped      /477rT   r   r   r9   r   g     j@i	  )r@   r   r   rA   r   r   r:   Nr   sabremax_iterationsr   swap_trialslayout_trialsskip_routing5qiskit.transpiler.internal.routing.protection.barrierg    SAr   r;   g    8|Ai r   Invalid optimization level: )r   r?   rA   r@   r   rJ   r&   r   r   generate_embed_passmanagerr   r   intr   r   r   rK   r   r   r   )rL   rM   rN   _given_layoutr   r  r	  r  r@   r   choose_layout_1r   choose_layout_2choose_layout_0embeds                  rQ   rR   %DefaultLayoutPassManager.pass_manager  s9   !"5"D"DE	.	e

		8 %%-.;;L.55Lm$"')%l3?W
 f77EEFM1$MM%"<0(<2HI6 (0==s8*11O MM/_`*1-K) (88')0??GaaO MM%6S (	 3
  1$'0==s8*11O MM%oZ +2.K) (88')0??GaaO MM%6S (	 3
  1$'0==s8*11!O MM%oZ +2.K) (88')0??GaaO MM%6S (	 3
 "$@AS@T"UVV11,?+E,D,D,FR^_`rT   rU   rV   rW   rU   rT   rQ   r   r     s    0ZK Z ZrT   r   c                   *    \ rS rSrSrSS\4S jjrSrg)TrivialLayoutPassManageriS  z&Plugin class for trivial layout stage.Nr7   c                 4   [        UR                  5      nS nUR                  c  UR                  nOUR                  n[	        5       nUR                  U5        Ub"  UR                  [        [        U5      US95        U[        R                  " U5      -  nU$ )Nc                     U S   (       + $ r   rU   r   s    rQ   r   GTrivialLayoutPassManager.pass_manager.<locals>._choose_layout_conditionY  r  rT   r   )
r   r?   rA   r@   r   rJ   r&   r   r   r  rL   rM   rN   r  r   r@   r   s          rQ   rR   %TrivialLayoutPassManager.pass_managerV  s    !"5"D"DE	. %%-.;;L.55Lm$#MM%!,/;S
 	&33LAArT   rU   rV   rW   rU   rT   rQ   r#  r#  S  s    0K  rT   r#  c                   *    \ rS rSrSrSS\4S jjrSrg)DenseLayoutPassManagerim  z$Plugin class for dense layout stage.Nr7   c           	      Z   [        UR                  5      nS nUR                  c  UR                  nOUR                  n[	        5       nUR                  U5        Ub5  UR                  [        [        UR                  UR                  S9US95        U[        R                  " U5      -  nU$ )Nc                     U S   (       + $ r   rU   r   s    rQ   r   EDenseLayoutPassManager.pass_manager.<locals>._choose_layout_conditions  r  rT   )r@   rA   r   )
r   r?   rA   r@   r   rJ   r&   r   r   r  r'  s          rQ   rR   #DenseLayoutPassManager.pass_managerp  s    !"5"D"DE	. %%-.;;L.55Lm$#MM%%8%E%E299 7 	&33LAArT   rU   rV   rW   rU   rT   rQ   r*  r*  m  s    .K  rT   r*  c                   *    \ rS rSrSrSS\4S jjrSrg)SabreLayoutPassManageri  z$Plugin class for sabre layout stage.Nr7   c           	      f   [        UR                  5      nS nS nUR                  c  UR                  nOUR                  n[	        5       nUR                  U5        Uc  S nOUS:X  a1  [        S5      n	[        USUR                  U	U	UR                  S;  S9nOUS:X  a1  [        S5      n	[        USUR                  U	U	UR                  S;  S9nO|US:X  a1  [        S	5      n	[        USUR                  U	U	UR                  S;  S9nOEUS
:X  a1  [        S	5      n	[        USUR                  U	U	UR                  S;  S9nO[        SU 35      eUb$  UR                  [        [        S5      U/US95        [        R                  " U5      n
UR                  [        U
R                  5       US95        U$ )Nc                     U S   (       + $ r   rU   r   s    rQ   r   ESabreLayoutPassManager.pass_manager.<locals>._choose_layout_condition  r  rT   c                     U S   S L $ r  rU   r   s    rQ   r  9SabreLayoutPassManager.pass_manager.<locals>._swap_mapped  r  rT   r   r   r9   r  r  r:   r   r;   r   r  r  r   )r   r?   rA   r@   r   rJ   r   r   r   rK   r   r&   r   r   r  r   )rL   rM   rN   r  r   r  r@   r   layout_passr   r   s              rQ   rR   #SabreLayoutPassManager.pass_manager  s   !"5"D"DE	.	8 %%-.;;L.55Lm$K1$*1-K% (88')0??GaaK  1$*1-K% (88')0??GaaK  1$*2.K% (88')0??GaaK  1$*2.K% (88')0??GaaK "$@AS@T"UVV"MM%6S $	 7
 11,?+E,D,D,FR^_`rT   rU   rV   rW   rU   rT   rQ   r0  r0    s    .NK N NrT   r0  c                     [         R                  SS 5      (       d  [        R                  " S5      (       a  [	        [        5       U 5      $ U $ )Nsabre_all_threadsQISKIT_SABRE_ALL_THREADS)CONFIGgetosgetenvmaxr+   )default_trialss    rQ   r   r     s:    zz%t,,		:T0U0U(*N;;rT   c                   *    \ rS rSrSrSS\4S jjrSrg)r   i  r   Nr7   c                 >   [        5       nUS:w  Ga  [        SS9[        S5      /n[        SS9[        S5      /nS nUS:X  a  [	        5       [        5       /nOXUS;   aD  [        UR                  UR                  S	9[        5       [        UR                  S
9[        5       /nO[        SU 35      eUR                  XE-   5        Xt-   U-   nUR                  [        XS95        US;   a4  UR                  [        [        UR                   UR                  5      5        U$ g)r   r   Tr   r   r   c                 8    U S   (       + =(       d
    U S   (       + $ r   rU   r   s    rQ   r   CCliffordTOptimizationPassManager.pass_manager.<locals>._opt_control  r   rT   r9   )r:   r;   r   r   r   r   N)r   r    r"   r!   r   r   r   r=   rA   r   r   r   rJ   r'   r   selrD   )	rL   rM   rN   r   r   r   r   r   r   s	            rQ   rR   -CliffordTOptimizationPassManager.pass_manager  s0    #}"!$/G1DEL-z&/ABK
 "Q&')24 $v- --@-U-U299 &'+3F3M3MN24 &(DEWDX&YZZ  :;*[8H 1( RS!V+###0<<>Q>X>X
  rT   rU   rV   rW   rU   rT   rQ   r   r     s    -1K 1 1rT   r   )r   )Sr\   r=  /qiskit.transpiler.passes.layout.vf2_post_layoutr   8qiskit.transpiler.passes.optimization.split_2q_unitariesr   qiskit.transpiler.passmanagerr   qiskit.transpiler.exceptionsr   qiskit.transpiler.passesr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   %qiskit.transpiler.preset_passmanagersr   ,qiskit.transpiler.preset_passmanagers.pluginr   r   %qiskit.transpiler.passes.optimizationr   r   r   r   r   r   r    r!   r"   r#   *qiskit.transpiler.passes.utils.gates_basisr$   4qiskit.transpiler.passes.synthesis.unitary_synthesisr%   #qiskit.passmanager.flow_controllersr&   r'   $qiskit.transpiler.timing_constraintsr(   *qiskit.transpiler.passes.layout.vf2_layoutr)   "qiskit.circuit.equivalence_libraryr*   rE  qiskit.utilsr+   qiskitr,   
get_configr;  _discrete_skipped_opsr5   r_   rb   ro   ru   r{   r   rx   r   r   r   r   r   r   r#  r*  r0  r   r   rU   rT   rQ   <module>rY     s   B 	 I U 5 8 0 . 2 . * . . 0 0 2 - C 6 E 6 4 8  K J C Q X B J O . 				! e3 eP	b$: 	b
!7 
*
"8 
"\ 6 \8]1 8]v:]5 :]zT]1 T]n
3 
*n4 nb
 6 
 
 6 
 
#9 
 ]5 ]@5 43 <Q3 Qh4'= 4rT   