§
    ¾*g|d  ã                   óÎ   — d Z ddlZddlmZ ddlmZ ddlmZmZm	Z	m
Z
 ddlmZ e
eef         Zee         Ze G d„ d¦  «        ¦   «         Zd	„ Zd
„ Zd„ Zd„ Z G d„ d¦  «        ZdS ))Úbake_actionÚbake_action_objectsÚbake_action_iterÚbake_action_objects_iteré    N)ÚAction)Ú	dataclass)ÚListÚMappingÚSequenceÚTuple©Úrna_idprop_value_to_pythonc                   óž   — e Zd ZU eed<   	 eed<   	 eed<   	 eed<   	 eed<   	 eed<   	 eed<   	 eed<   	 eed	<   	 eed
<   	 eed<   	 eed<   dS )ÚBakeOptionsÚonly_selectedÚdo_poseÚ	do_objectÚdo_visual_keyingÚdo_constraint_clearÚdo_parents_clearÚdo_cleanÚdo_locationÚdo_rotationÚdo_scaleÚdo_bboneÚdo_custom_propsN)Ú__name__Ú
__module__Ú__qualname__ÚboolÚ__annotations__© ó    ú[/home/blender/git/blender-v430/install_release/4.3/scripts/modules/bpy_extras/anim_utils.pyr   r   '   s´   € € € € € € àÐÐÑØ#à€M€M�MØà€O€O�OØàÐÐÑØEàÐÐÑØ*àÐÐÑØ(à€N€N�NØ2àÐÐÑØ àÐÐÑØ à€N€N�NØà€N€N�NØàÐÐÑØ!Ð!r#   r   c                óT   — |j         s	|j        sdS t          | |fg||¬¦  «        \  }|S )aÄ  
    :arg obj: Object to bake.
    :type obj: :class:`bpy.types.Object`
    :arg action: An action to bake the data into, or None for a new action
       to be created.
    :type action: :class:`bpy.types.Action` | None
    :arg frames: Frames to bake.
    :type frames: int
    :arg bake_options: Options for baking.
    :type bake_options: :class:`anim_utils.BakeOptions`
    :return: Action or None.
    :rtype: :class:`bpy.types.Action` | None
    N)ÚframesÚbake_options)r   r   r   )ÚobjÚactionr&   r'   s       r$   r   r   N   sJ   € ð( Ô ð  LÔ$:ð Øˆtå!Ø
ˆvˆˆØØ!ðñ ô �G€Fð
 €Mr#   c                óÌ   — |j         s	|j        sg S t          | |¬¦  «        }|                     d¦  «         |D ]}|                     |¦  «         Œ|                     d¦  «        S )a�  
    A version of :func:`bake_action_objects_iter` that takes frames and returns the output.

    :arg frames: Frames to bake.
    :type frames: iterable of int
    :arg bake_options: Options for baking.
    :type bake_options: :class:`anim_utils.BakeOptions`

    :return: A sequence of Action or None types (aligned with ``object_action_pairs``)
    :rtype: Sequence[:class:`bpy.types.Action`]
    )r'   N)r   r   r   Úsend)Úobject_action_pairsr&   r'   ÚiterÚframes        r$   r   r   m   st   € ð" Ô ð  LÔ$:ð Øˆ	å#Ð$7ÀlÐSÑSÔS€DØ‡I‚Iˆd�O„O€OØð ð ˆØ�	Š	�%ÑÔÐÐØ�9Š9�T‰?Œ?Ðr#   c              #   ó¼  ‡K  — t           j        j        }|j        }t	          ˆfd„| D ¦   «         ¦  «        }|D ]}|                     d¦  «         Œ	 dV —}|€nS|                     |¦  «         t           j        j                             ¦   «          |D ]}|                     |¦  «         ŒŒZ|                     |¦  «         t	          d„ |D ¦   «         ¦  «        V — dS )a¢  
    An coroutine that bakes actions for multiple objects.

    :arg object_action_pairs: Sequence of object action tuples,
       action is the destination for the baked data. When None a new action will be created.
    :type object_action_pairs: Sequence of (:class:`bpy.types.Object`, :class:`bpy.types.Action`)
    :arg bake_options: Options for baking.
    :type bake_options: :class:`anim_utils.BakeOptions`
    c              3   óB   •K  — | ]\  }}t          ||‰¬ ¦  «        V — ŒdS ))r)   r'   N)r   )Ú.0r(   r)   r'   s      €r$   ú	<genexpr>z+bake_action_objects_iter.<locals>.<genexpr>—   sJ   øè è € ð ð áˆS�&õ 	˜ V¸,ÐGÑGÔGðð ð ð ð ð r#   NTc              3   ó@   K  — | ]}|                      d ¦  «        V — Œd S ©N)r+   )r1   r-   s     r$   r2   z+bake_action_objects_iter.<locals>.<genexpr>¦   s,   è è € Ð5Ð5 D�—	’	˜$‘”Ð5Ð5Ð5Ð5Ð5Ð5r#   )	ÚbpyÚcontextÚsceneÚframe_currentÚtupler+   Ú	frame_setÚ
view_layerÚupdate)r,   r'   r7   Ú
frame_backÚiter_allr-   r.   s    `     r$   r   r   ˆ   s  øè è € õ ŒKÔ€EØÔ$€JÝð ð ð ð à0ðñ ô ñ ô €Hð ð ð ˆØ�	Š	�$‰ŒˆˆðØ�
�
ˆØˆ=ØØ�Š˜ÑÔÐÝŒÔ×%Ò%Ñ'Ô'Ð'Øð 	ð 	ˆDØ�IŠI�eÑÔÐÐðð 
‡O‚O�JÑÔÐÝ
Ð5Ð5¨HÐ5Ñ5Ô5Ñ
5Ô
5Ð5Ð5Ð5Ð5Ð5r#   c             #   óF  ‡‡1‡2‡3‡4K  — g d¢Š1dddddddddddœ
}d„ Š3ˆˆ3fd„Š4ddœd„}ˆ1ˆˆ4fd	„}ˆ4fd
„}‰j         r‰j        rˆ4fd„}nˆ4fd„}n‰j        rˆ4fd„}nˆ4fd„}| j        €d‰_        ‰j        s‰j        st          d¦  «        ‚g }g }	g }
	 dV —}|€ns‰j        rB|                     |g || ¦  «        ¢R ¦  «         |	                     | || ¦  «        f¦  «         ‰j        r"|
                     |g || ¦  «        ¢R ¦  «         Œz‰j        r|�d„ |j        D ¦   «         }ni }|  	                    ¦   «         }|du }|r$t          j        j                             d¦  «        }||j        k    rY|j        rd|_        ||_        t          j        j        j        j        r)|j        r"|j                             | ¬¦  «        }||_        |j        sd|_        d„ |j        D ¦   «         }‰j        �r|	D ]\  }} || ||d¬¦  «         Œ| j        j                             ¦   «         D �]Õ\  }}‰j        r|j        j        sŒ‰j        r3|j        r,|j                             |j        d         ¦  «         |j        °,d}d}|                      ¦   «         dz   Š2‰2dz   }‰2dz   }‰2dz   }‰2dz   }‰2d z   }ˆ2fd!„‰1D ¦   «         }tC          ¦   «         }‰j"        r| #                    |d¦  «         ‰j$        rB| #                    |d"¦  «         | #                    |d"¦  «         | #                    |d¦  «         ‰j%        r| #                    |d¦  «         ‰j&        rB|j        j'        dk    r2tQ          ‰1|¦  «        D ]!\  }}| #                    |||         ¦  «         Œ"|j)        } tU          |¦  «        }!|D �]\  }}"}#}$|"|          +                    ¦   «         |_,        ‰j"        r| -                    |d||j.        ¦  «         ‰j$        rü| d#k    rr|�9|j/         +                    ¦   «         }%|% 0                    |¦  «         |%|_/        |%}~%n|j/         +                    ¦   «         }| -                    |d"||j/        ¦  «         n„| d$k    r| -                    |d"||j1        ¦  «         n`|�(|j,         2                    |j)        |¦  «        }&|&|_3        ~&|j3         +                    ¦   «         }| -                    |d||j3        ¦  «         ‰j%        r| -                    |d||j4        ¦  «         ‰j&        rƒ|j        j'        dk    rs|#|         }'tk          ‰1¦  «        D ][\  }(}||         })|)dk    r%| -                    ||(         |)||'|         ¦  «         Œ8| 6                    ||(         ||'|         ¦  «         Œ\‰j7        r |||$|         ||¬¦  «         �Œ|r| 8                    |!||¦  «         �Œ½| 9                    ||!||¦  «         �Œ×‰j        �rœ‰j        r3| j        r,| j                             | j        d         ¦  «         | j        °,d}d}d}d}d}d}d }tC          ¦   «         }‰j"        r| #                    |d¦  «         ‰j$        rB| #                    |d"¦  «         | #                    |d"¦  «         | #                    |d¦  «         ‰j%        r| #                    |d¦  «         | j)        } tU          |
¦  «        }!|
D �]i\  }}"}$d%}|"| _,        ‰j"        r| -                    |d|| j.        ¦  «         ‰j$        rô| d#k    rr|�9| j/         +                    ¦   «         }%|% 0                    |¦  «         |%| _/        |%}~%n| j/         +                    ¦   «         }| -                    |d"|| j/        ¦  «         n|| d$k    r| -                    |d"|| j1        ¦  «         nX|� |" 2                    | j)        |¦  «        | _3        | j3         +                    ¦   «         }| -                    |d|| j3        ¦  «         ‰j%        r| -                    |d|| j4        ¦  «         ‰j7        r || |$||¬¦  «         �Œk|r| 8                    |!||¦  «         n| 9                    ||!||¦  «         ‰j         rd| _:        ‰j        rô|j        D ]ì}*| ;                    |*ty          ¦   «         ¦  «        }+|*j=        },d}-|-tU          |,¦  «        dz
  k     r©|,|-         j>        d         }.|.|+v r|-dz  }-Œ3|,|-dz
           j>        d         }/|,|-dz            j>        d         }0t          |.|/z
  ¦  «        t          |.|0z
  ¦  «        z   d&k     r|,                     |,|-         ¦  «         n|-dz  }-|-tU          |,¦  «        dz
  k     °©Œí|V — dS )'aç  
    An coroutine that bakes action for a single object.

    :arg obj: Object to bake.
    :type obj: :class:`bpy.types.Object`
    :arg action: An action to bake the data into, or None for a new action
       to be created.
    :type action: :class:`bpy.types.Action` | None
    :arg bake_options: Boolean options of what to include into the action bake.
    :type bake_options: :class:`anim_utils.BakeOptions`

    :return: an action or None
    :rtype: :class:`bpy.types.Action`
    )
Úbbone_curveinxÚbbone_curveoutxÚbbone_curveinzÚbbone_curveoutzÚbbone_rollinÚbbone_rolloutÚbbone_scaleinÚbbone_scaleoutÚbbone_easeinÚbbone_easeouté   é   c                 ó¢   — t          | t          t          t          f¦  «        rdS t          | t          t
          t          t          f¦  «        rdS dS )a.  Returns a tri-state boolean.

        - True: known to be keyable.
        - False: known to not be keyable.
        - None: unknown, might be an enum property for which RNA uses a string to
            indicate a specific item (keyable) or an actual string property (not
            keyable).
        TFN)Ú
isinstanceÚintÚfloatr    Úlistr9   ÚsetÚdict)Úvalues    r$   Úcan_be_keyedz&bake_action_iter.<locals>.can_be_keyedÖ   sI   € õ �e�c¥5­$Ð/Ñ0Ô0ð 	à�4Ý�e�d¥E­3µÐ5Ñ6Ô6ð 	à�5ð ˆtr#   c                 óZ   •— ‰j         si S ˆfd„|                      ¦   «         D ¦   «         }|S )Nc                 óP   •— i | ]"\  }} ‰|¦  «        d u¯|t          |¦  «        “Œ#S )Fr   )r1   ÚkeyrS   rT   s      €r$   ú
<dictcomp>zEbake_action_iter.<locals>.clean_custom_properties.<locals>.<dictcomp>ô   sG   ø€ ð 
ð 
ð 
á��UØˆ|˜EÑ"Ô"¨%Ð/Ð/ð Õ+¨EÑ2Ô2à/Ð/Ð/r#   )r   Úitems)r(   Úclean_propsr'   rT   s     €€r$   Úclean_custom_propertiesz1bake_action_iter.<locals>.clean_custom_propertiesë   sM   ø€ ØÔ+ð 	ð ˆIð

ð 
ð 
ð 
à!Ÿiši™kœkð
ñ 
ô 
ˆð
 Ðr#   Ú )Ú
group_namec                ó¾  — dd l }|�|sd S |                     ¦   «         D ]½\  }}|| j        j        v r| j        j        |         j        sŒ+t          | |         |j        j        ¦  «        rŒL|| |<   || j        j        v r|}n2d                     t          j
                             |¦  «        ¦  «        }	 |                      |||¬¦  «         Œ®# t          $ r Y Œºw xY wd S )Nr   z["{:s}"])r.   Úgroup)ÚidproprY   Úbl_rnaÚ
propertiesÚis_animatablerM   ÚtypesÚIDPropertyGroupÚformatr5   ÚutilsÚescape_identifierÚkeyframe_insertÚ	TypeError)r(   Úcustom_propsr.   r]   r`   rW   rS   Úrna_paths           r$   Úbake_custom_propertiesz0bake_action_iter.<locals>.bake_custom_propertiesû   s  € ØˆˆˆØˆ= ˆ=ØˆFØ&×,Ò,Ñ.Ô.ð 	ð 	‰JˆC�Ø�c”jÔ+Ð+Ð+°C´JÔ4IÈ#Ô4NÔ4\Ð+ØÝ˜#˜cœ( F¤LÔ$@ÑAÔAð ØØˆC�‰HØ�c”jÔ+Ð+Ð+Ø��à'×.Ò.­s¬y×/JÒ/JÈ3Ñ/OÔ/OÑPÔP�ðØ×#Ò# H°EÀÐ#ÑLÔLÐLÐLøÝð ð ð ð �ð	øøøð	ð 	s   Â4CÃ
CÃCc                 óL  •‡— i }i }i }| j         j                             ¦   «         D ]y\  }Š‰j        r"|                      ‰‰j        dd¬¦  «        ||<   n‰j                             ¦   «         ||<   ‰j        j	        dk    rˆfd„‰D ¦   «         ||<    ‰‰¦  «        ||<   Œz|||fS )NÚPOSEÚLOCAL)Ú	pose_boneÚmatrixÚ
from_spaceÚto_spacerJ   c                 ó2   •— i | ]}|t          ‰|¦  «        “ŒS r"   )Úgetattr)r1   Úbb_propÚpbones     €r$   rX   z=bake_action_iter.<locals>.pose_frame_info.<locals>.<dictcomp>  s%   ø€ Ð\Ð\Ð\ÀW ­°¸Ñ)@Ô)@Ð\Ð\Ð\r#   )
ÚposeÚbonesrY   r   Úconvert_spacerr   Úmatrix_basisÚcopyÚboneÚbbone_segments)	r(   rr   Úbbonesrk   Únamerx   ÚBBONE_PROPSr'   r[   s	        @€€€r$   Úpose_frame_infoz)bake_action_iter.<locals>.pose_frame_info  sá   øø€ ØˆØˆØˆØœ8œ>×/Ò/Ñ1Ô1ð 	@ð 	@‰KˆD�%ØÔ,ð 9à"×0Ò0¸5ÈÌØ<BÈWð  1ñ  Vô  V��t‘�ð  %Ô1×6Ò6Ñ8Ô8��t‘ð ŒzÔ(¨1Ò,Ð,Ø\Ð\Ð\Ð\ÐP[Ð\Ñ\Ô\��t‘ð "9Ð!8¸Ñ!?Ô!?ˆL˜ÑÐà�v˜|Ð+Ð+r#   c                 ó4   •— | j         dk    ri S  ‰| ¦  «        S )NÚARMATURE)Útype©r(   r[   s    €r$   Úarmature_frame_infoz-bake_action_iter.<locals>.armature_frame_info&  s&   ø€ ØŒ8�zÒ!Ð!ØˆIØ&Ð& sÑ+Ô+Ð+r#   c                 óL   •— | j                              ¦   «          ‰| ¦  «        fS r4   )Úmatrix_worldr}   r‡   s    €r$   Úobj_frame_infoz(bake_action_iter.<locals>.obj_frame_info-  ó)   ø€ ØÔ'×,Ò,Ñ.Ô.Ð0GÐ0GÈÑ0LÔ0LÐLÐLr#   c                 óŒ   •— | j         }| j        }|r|j        |z   ‰| ¦  «        fS |                     ¦   «          ‰| ¦  «        fS r4   )Úparentr|   rŠ   r}   ©r(   rŽ   rr   r[   s      €r$   r‹   z(bake_action_iter.<locals>.obj_frame_info0  sZ   ø€ Øœ�ØÔ)�Øð GØ!Ô.°Ñ7Ð9PÐ9PÐQTÑ9UÔ9UÐUÐUà!Ÿ;š;™=œ=Ð*AÐ*AÀ#Ñ*FÔ*FÐFÐFr#   c                 ó°   •— | j         }| j        }|r'|j                             ¦   «         |z   ‰| ¦  «        fS |                     ¦   «          ‰| ¦  «        fS r4   )rŽ   rŠ   Úinverted_safer}   r�   s      €r$   r‹   z(bake_action_iter.<locals>.obj_frame_info9  sf   ø€ Øœ�ØÔ)�Øð GØ!Ô.×<Ò<Ñ>Ô>ÀÑGÐI`ÐI`ÐadÑIeÔIeÐeÐeà!Ÿ;š;™=œ=Ð*AÐ*AÀ#Ñ*FÔ*FÐFÐFr#   c                 óL   •— | j                              ¦   «          ‰| ¦  «        fS r4   )r|   r}   r‡   s    €r$   r‹   z(bake_action_iter.<locals>.obj_frame_infoA  rŒ   r#   NFz4Pose and object baking is disabled, no action neededTc                 ó2   — i | ]}|d „ |j         D ¦   «         “ŒS )c                 ó(   — h | ]}|j         d          ’ŒS )rJ   )Úco)r1   Úps     r$   ú	<setcomp>z.bake_action_iter.<locals>.<dictcomp>.<setcomp>d  s   € Ð FÐ FÐ F¨Q ¤ a¤Ð FÐ FÐ Fr#   )Úkeyframe_points)r1   Úfcus     r$   rX   z$bake_action_iter.<locals>.<dictcomp>d  s,   € ÐaÐaÐaÈ3˜3Ð FÐ F°#Ô2EÐ FÑ FÔ FÐaÐaÐar#   r   )Úfor_idÚREPLACEc                 ó,   — i | ]}|j         |j        f|“ŒS r"   )Ú	data_pathÚarray_index)r1   Úfcurves     r$   rX   z$bake_action_iter.<locals>.<dictcomp>„  s%   € ÐbÐbÐbÈ�vÔ'¨Ô);Ð<¸fÐbÐbÐbr#   zArmature Custom Properties)rk   r.   r]   r   ú.ÚlocationÚrotation_quaternionÚrotation_axis_angleÚrotation_eulerÚscalec                 ó   •— g | ]}‰|z   ‘ŒS r"   r"   )r1   ÚbbpropÚbase_fcurve_paths     €r$   ú
<listcomp>z$bake_action_iter.<locals>.<listcomp>œ  s   ø€ ÐSÐSÐS¸VÐ.°Ñ7ÐSÐSÐSr#   é   Ú
QUATERNIONÚ
AXIS_ANGLEzAction Bakeg-Cëâ6?)@r   r   ry   r   r   Ú	ExceptionÚappendr   ÚfcurvesÚanimation_data_creater5   ÚdataÚactionsÚnewr)   Úuse_tweak_moder6   ÚpreferencesÚexperimentalÚuse_animation_baklavaÚis_action_layeredÚslotsÚaction_slotÚaction_blend_typerz   rY   r   r~   Úselectr   ÚconstraintsÚremoveÚpath_from_idÚKeyframesCor   Ú	add_pathsr   r   r   r   ÚzipÚrotation_modeÚlenr}   r|   Úextend_co_valuesr¡   r¢   Úmake_compatibler£   Úto_eulerr¤   r¥   Ú	enumerateÚextend_co_valuer   Ú insert_keyframes_into_new_actionÚ%insert_keyframes_into_existing_actionrŽ   ÚgetrQ   r˜   r•   Úabs)5r(   r)   r'   ÚBBONE_PROPS_LENGTHSrm   rƒ   rˆ   r‹   Ú	pose_infoÚarmature_infoÚobj_infor.   Úclean_orig_dataÚatdÚis_new_actionÚslotÚlookup_fcurvesÚfÚarmature_custom_propertiesr�   rx   Ú
euler_prevÚ	quat_prevÚpath_locationÚpath_quaternionÚpath_axis_angleÚ
path_eulerÚ
path_scaleÚpaths_bbpropsÚ	keyframesÚ	prop_nameÚpathrÃ   Útotal_new_keysrr   r€   rk   ÚquatÚeulerÚbbone_shapeÚ
prop_indexÚprop_lenr™   Úfcu_orig_datar˜   ÚiÚvalÚval_prevÚval_nextr‚   r¨   rT   r[   s5     `                                              @@@@r$   r   r   ª   s¾  øøøøøè è € ð0ð ð €Kð ØØØØØØØØØðð Ððð ð ð*ð ð ð ð ð ð  HJð ð ð ð ð ð,,ð ,ð ,ð ,ð ,ð ,ð ,ð*,ð ,ð ,ð ,ð ,ð
 Ô$ð MØÔ(ð 
	GðMð Mð Mð Mð Mð MðGð Gð Gð Gð Gð Gð Ô(ð 
	MðGð Gð Gð Gð Gð GðMð Mð Mð Mð Mð „xÐØ$ˆÔàÔ ð P LÔ$:ð PÝÐNÑOÔOÐOà€IØ€MØ€Hð
;à�
�
ˆð ˆ=ØØÔð 	DØ×Ò˜eÐ; o o°cÑ&:Ô&:Ð;Ð;Ñ<Ô<Ð<Ø× Ò  %Ð)<Ð)<¸SÑ)AÔ)AÐ!BÑCÔCÐCØÔ!ð 	;Ø�OŠO˜UÐ9 ^ ^°CÑ%8Ô%8Ð9Ð9Ñ:Ô:Ð:ð;ð Ôð  Ð!3ØaÐaÐRXÔR`ÐaÑaÔaˆˆàˆð ×
#Ò
#Ñ
%Ô
%€CØ˜d�N€MØð 0Ý”Ô!×%Ò% hÑ/Ô/ˆð �”ÒÐàÔð 	'Ø!&ˆCÔàˆŒ
ÝŒ;Ô"Ô/ÔEð 	#È&ÔJbð 	#Ø”<×#Ò#¨3Ð#Ñ/Ô/ˆDØ"ˆCŒOð Ôð *Ø )ˆÔð cÐbÐSYÔSaÐbÑbÔb€NØÔñ \nØ-:ð 	Uð 	UÑ)ˆAÐ)Ø"Ð" 3Ð5OØ)*Ð7SðUñ Uô Uð Uð Uð œ8œ>×/Ò/Ñ1Ô1ð W	nñ W	n‰KˆD�%ØÔ)ð °%´*Ô2Cð ØàÔ/ð CØÔ'ð CØÔ%×,Ò,¨UÔ->¸qÔ-AÑBÔBÐBð Ô'ð Cð ˆJØˆIà$×1Ò1Ñ3Ô3°cÑ9ÐØ,¨zÑ9ˆMØ.Ð1FÑFˆOØ.Ð1FÑFˆOØ)Ð,<Ñ<ˆJØ)¨GÑ3ˆJØSÐSÐSÐSÀ{ÐSÑSÔSˆMå#™œˆIàÔ'ð 6Ø×#Ò# M°1Ñ5Ô5Ð5ØÔ'ð 3Ø×#Ò# O°QÑ7Ô7Ð7Ø×#Ò# O°QÑ7Ô7Ð7Ø×#Ò# J°Ñ2Ô2Ð2ØÔ$ð 3Ø×#Ò# J°Ñ2Ô2Ð2àÔ$ð N¨¬Ô)BÀQÒ)FÐ)FÝ'*¨;¸Ñ'FÔ'Fð Nð N‘O�I˜tØ×'Ò'¨Ð.AÀ)Ô.LÑMÔMÐMÐMà!Ô/ˆMÝ  ™^œ^ˆNØ5>ð -mñ -mÑ1��F˜F LØ%+¨D¤\×%6Ò%6Ñ%8Ô%8�Ô"àÔ+ð TØ×.Ò.¨}¸aÀÀEÄNÑSÔSÐSàÔ+ð [Ø$¨Ò4Ð4Ø$Ð0Ø#(Ô#<×#AÒ#AÑ#CÔ#C˜DØ ×0Ò0°Ñ;Ô;Ð;Ø8<˜EÔ5Ø(,˜IØ $ à(-Ô(A×(FÒ(FÑ(HÔ(H˜IØ!×2Ò2°?ÀAÀqÈ%ÔJcÑdÔdÐdÐdØ&¨,Ò6Ð6Ø!×2Ò2°?ÀAÀqÈ%ÔJcÑdÔdÐdÐdà%Ð1Ø$)Ô$6×$?Ò$?ÀÔ@SÐU_Ñ$`Ô$`˜EØ38˜EÔ0Ø %Ø%*Ô%9×%>Ò%>Ñ%@Ô%@˜
Ø!×2Ò2°:¸qÀ!ÀUÔEYÑZÔZÐZàÔ(ð NØ×.Ò.¨z¸1¸aÀÄÑMÔMÐMð  Ô(ð ¨U¬ZÔ-FÈÒ-JÐ-JØ"(¨¤,�KÝ1:¸;Ñ1GÔ1Gð 	ð 	Ñ-˜
 IØ#6°yÔ#A˜Ø# aš<˜<Ø%×6Ò6Ø -¨jÔ 9¸8ÀQÈÐT]ÔH^ñô ð ð ð &×5Ò5Ø -¨jÔ 9¸1¸kÈ)Ô>Tñô ð ð ð  Ô/ð mØ*Ð*¨5¸|ÈDÔ?QÐYZÐgkÐlÑlÔlÐlùàð nØ×:Ò:¸>È6ÐSWÑXÔXÐXÑXà×?Ò?ÀÐP^Ð`fÐhlÑmÔmÐmÑmð Ôñ BØÔ+ð 	;Ø”/ð ;Ø”×&Ò& s¤°qÔ'9Ñ:Ô:Ð:ð ”/ð ;ð ˆ
Øˆ	à"ˆØ/ˆØ/ˆØ%ˆ
Øˆ
å‘M”Mˆ	ØÔ#ð 	2Ø×Ò ¨qÑ1Ô1Ð1ØÔ#ð 	/Ø×Ò °Ñ3Ô3Ð3Ø×Ò °Ñ3Ô3Ð3Ø×Ò 
¨AÑ.Ô.Ð.ØÔ ð 	/Ø×Ò 
¨AÑ.Ô.Ð.àÔ)ˆÝ˜X™œˆØ)1ð 	añ 	aÑ%ˆQ�˜Ø ˆDØ%ˆCÔàÔ'ð NØ×*Ò*¨=¸!¸QÀÄÑMÔMÐMàÔ'ð UØ  LÒ0Ð0Ø Ð,Ø"Ô6×;Ò;Ñ=Ô=˜Ø×,Ò,¨YÑ7Ô7Ð7Ø26˜Ô/Ø$(˜	Ø ˜Dà$'Ô$;×$@Ò$@Ñ$BÔ$B˜	Ø×.Ò.¨ÀÀ1ÀcÔF]Ñ^Ô^Ð^Ð^à" lÒ2Ð2Ø×.Ò.¨ÀÀ1ÀcÔF]Ñ^Ô^Ð^Ð^à!Ð-Ø-3¯_ª_¸SÔ=NÐPZÑ-[Ô-[˜Ô*Ø!$Ô!3×!8Ò!8Ñ!:Ô!:�JØ×.Ò.¨z¸1¸aÀÔASÑTÔTÐTàÔ$ð HØ×*Ò*¨:°q¸!¸S¼YÑGÔGÐGàÔ+ð aØ&Ð& s¸ÈQÐ[_Ð`Ñ`Ô`Ð`ùàð 	jØ×6Ò6°~ÀvÈtÑTÔTÐTÐTà×;Ò;¸NÈNÐ\bÐdhÑiÔiÐiàÔ(ð 	ØˆCŒJð
 Ôð Ø”>ð 	ð 	ˆCØ+×/Ò/°µS±U´UÑ;Ô;ˆMà!Ô1ˆOØˆAØ•c˜/Ñ*Ô*¨QÑ.Ò.Ð.Ø% aÔ(Ô+¨AÔ.�à˜-Ð'Ð'Ø˜‘F�AØà*¨1¨q©5Ô1Ô4°QÔ7�Ø*¨1¨q©5Ô1Ô4°QÔ7�å�s˜X‘~Ñ&Ô&­¨S°8©^Ñ)<Ô)<Ñ<¸vÒEÐEØ#×*Ò*¨?¸1Ô+=Ñ>Ô>Ð>Ð>à˜‘F�Að •c˜/Ñ*Ô*¨QÑ.Ò.Ð.øð €L€L€L€L€Lr#   c            
       óä   — e Zd ZU dZdZeeef         ed<   d„ Z	de
deddfd	„Zde
ded
edee         ddf
d„Zde
d
ededdfd„Zdedede
ddfd„Zdeeej        j        f         dedede
ddf
d„ZdS )rÀ   aI  
    A buffer for keyframe Co unpacked values per ``FCurveKey``. ``FCurveKeys`` are added using
    ``add_paths()``, Co values stored using extend_co_values(), then finally use
    ``insert_keyframes_into_*_action()`` for efficiently inserting keys into the F-curves.

    Users are limited to one Action Group per instance.
    ©Úkeyframes_from_fcurverñ   c                 ó   — i | _         d S r4   rð   )Úselfs    r$   Ú__init__zKeyframesCo.__init__R  s   € Ø%'ˆÔ"Ð"Ð"r#   rl   Útotal_indicesÚreturnNc                 óH   — | j         }t          d|¦  «        D ]	}g |||f<   Œ
d S ©Nr   )rñ   Úrange)ró   rl   rõ   rñ   rž   s        r$   rÁ   zKeyframesCo.add_pathsU  sG   € ð
 !%Ô :ÐÝ   MÑ2Ô2ð 	@ð 	@ˆKØ=?Ð! 8¨[Ð"9Ñ:Ð:ð	@ð 	@r#   r.   Úvaluesc                 ó„   — | j         }t          d|¦  «        D ]'}|||f                              |||         f¦  «         Œ(d S rø   )rñ   rù   Úextend)ró   rl   rõ   r.   rú   rñ   rž   s          r$   rÅ   zKeyframesCo.extend_co_values^  s`   € ð !%Ô :ÐÝ   MÑ2Ô2ð 	`ð 	`ˆKØ! 8¨[Ð"9Ô:×AÒAÀ5È&ÐQ\ÔJ]ÐB^Ñ_Ô_Ð_Ð_ð	`ð 	`r#   rS   c                 óN   — | j         |df                              ||f¦  «         d S rø   )rñ   rü   )ró   rl   r.   rS   s       r$   rÉ   zKeyframesCo.extend_co_valuei  s.   € ð 	Ô" H¨a =Ô1×8Ò8¸%À¸ÑHÔHÐHÐHÐHr#   rä   r)   Úaction_group_namec                 ó¦  — t           j        j        j        j        d         j        d         j        g|z  }| j                             ¦   «         D ]�\  }}t          |¦  «        dk    rŒ|\  }}|j
                             |||¬¦  «        j        }	|	                     |¦  «         |	                     d|¦  «         |	                     d|¦  «         Œ‚dS )a"  
        Assumes the action is new, that it has no F-curves. Otherwise, the only difference between versions is
        performance and implementation simplicity.

        :arg action_group_name: Name of Action Group that F-curves are added to.
        :type action_group_name: str
        ÚinterpolationÚLINEARr   ©ÚindexÚaction_groupr•   N)r5   rd   ÚKeyframera   rb   Ú
enum_itemsrS   rñ   rY   rÄ   r¯   r³   r˜   ÚaddÚforeach_set)
ró   rä   r)   rþ   Úlinear_enum_valuesÚfc_keyÚ
key_valuesr�   rž   r˜   s
             r$   rÊ   z,KeyframesCo.insert_keyframes_into_new_actionq  só   € õ ŒIÔÔ%Ô0°ÔAÔLÈXÔVÔ\ð
àñÐð #'Ô"<×"BÒ"BÑ"DÔ"Dð 	Mð 	MÑˆF�JÝ�:‰Œ !Ò#Ð#Øà%+Ñ"ˆI�{Ø$œn×0Ò0Ø Ð;Lð 1ñ ô äð ð ×Ò Ñ/Ô/Ð/Ø×'Ò'¨¨jÑ9Ô9Ð9Ø×'Ò'¨Ð9KÑLÔLÐLÐLð	Mð 	Mr#   rÖ   c                 ó  — t           j        j        j        j        d         j        d         j        g|z  }| j                             ¦   «         D �]/\  }}t          |¦  «        dk    rŒ| 
                    |d¦  «        }|€"|\  }	}
|j                             |	|
|¬¦  «        }|j        }dgdt          |¦  «        z  z  }|                     d|¦  «         |                     |¦  «         dgt          |¦  «        z  }|                     d|¦  «         |                     |¦  «         |                     |¦  «         |                     d|¦  «         |                     d|¦  «         |                     ¦   «          �Œ1dS )a)  
        Assumes the action already exists, that it might already have F-curves. Otherwise, the
        only difference between versions is performance and implementation simplicity.

        :arg lookup_fcurves: : This is only used for efficiency.
           It's a substitute for ``action.fcurves.find()`` which is a potentially expensive linear search.
        :type lookup_fcurves: ``Mapping[FCurveKey, bpy.types.FCurve]``
        :arg action_group_name: Name of Action Group that F-curves are added to.
        :type action_group_name: str
        r   r  r   Nr  é   r•   )r5   rd   r  ra   rb   r  rS   rñ   rY   rÄ   rÌ   r¯   r³   r˜   Úforeach_getrü   r  r  r<   )ró   rÖ   rä   r)   rþ   r	  r
  r  rŸ   r�   rž   r˜   Ú	co_bufferÚ
ipo_buffers                 r$   rË   z1KeyframesCo.insert_keyframes_into_existing_action’  sœ  € õ$ ŒIÔÔ%Ô0°ÔAÔLÈXÔVÔ\ð
àñÐð #'Ô"<×"BÒ"BÑ"DÔ"Dð 	ñ 	ÑˆF�JÝ�:‰Œ !Ò#Ð#Øà#×'Ò'¨°Ñ5Ô5ˆFØˆ~Ø)/Ñ&�	˜;Øœ×+Ò+Ø [Ð?Pð ,ñ ô �ð %Ô4ˆOà˜˜q¥3 Ñ#7Ô#7Ñ7Ñ8ˆIØ×'Ò'¨¨iÑ8Ô8Ð8Ø×Ò˜ZÑ(Ô(Ð(à˜¥# oÑ"6Ô"6Ñ6ˆJØ×'Ò'¨¸ÑDÔDÐDØ×ÒÐ0Ñ1Ô1Ð1ð
 ×Ò Ñ/Ô/Ð/Ø×'Ò'¨¨iÑ8Ô8Ð8Ø×'Ò'¨¸ÑDÔDÐDð �MŠM‰OŒOˆO‰Oð=	ð 	r#   )r   r   r   Ú__doc__Ú	__slots__r
   Ú	FCurveKeyÚListKeyframesr!   rô   ÚstrrN   rÁ   rO   r   rÅ   rÉ   r   rÊ   r5   rd   ÚFCurverË   r"   r#   r$   rÀ   rÀ   C  s®  € € € € € € ðð ð€Ið
 # 9¨mÐ#;Ô<Ð<Ð<Ñ<ð(ð (ð (ð@àð@ð ð@ð 
ð	@ð @ð @ð @ð	`àð	`ð ð	`ð ð		`ð
 ˜”ð	`ð 
ð	`ð 	`ð 	`ð 	`ðIàðIð ðIð ð	Ið
 
ðIð Ið Ið IðMàðMð ðMð ð	Mð
 
ðMð Mð Mð MðB3à 	¨3¬9Ô+;Ð ;Ô<ð3ð ð3ð ð	3ð
 ð3ð 
ð3ð 3ð 3ð 3ð 3ð 3r#   rÀ   )Ú__all__r5   Ú	bpy.typesr   Údataclassesr   Útypingr	   r
   r   r   Úrna_prop_uir   r  rN   r  rO   r  r   r   r   r   r   rÀ   r"   r#   r$   ú<module>r     si  ðð
€ð €
€
€
Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ààð	ô€	ð �U”€ð ð#"ð #"ð #"ð #"ð #"ñ #"ô #"ñ „ð#"ðLð ð ð>ð ð ð66ð 6ð 6ðDVð Vð VðrBð Bð Bð Bð Bñ Bô Bð Bð Bð Br#   