§
    W™ÈjÙ:  ã                   óh  — d Z ddlZddlZddlmZ ddlZ ee¦  «                             ¦   «         j        j        Z	e	dz  Z
e	dz  dz  Ze	dz  dz  Z ee
¦  «        ej        vr$ej                             d ee
¦  «        ¦  «         ddlZ ej        d¬	¦  «        d
„ ¦   «         Z G d„ d¦  «        ZdS )u|  
Adversarial Stress Test: Diverse Character Transitions and Physical Tail Frame Integrity.
Author: Challenger 1 (Milestone M3 Iteration 3)

Tests:
1. VÆ°Æ¡ng Ã”ng tail frame with VÆ°Æ¡ng Quan shot (ep01_scene02_shot10 -> ep01_scene02_shot11)
2. Kim Trá»�ng tail frame with ThÃºy Kiá»�u shot (ep01_scene08_shot07 -> ep01_scene08_shot08, ep01_scene10_shot05 -> ep01_scene10_shot06)
3. ThÃºy Kiá»�u tail frame with Kim Trá»�ng shot (ep01_scene10_shot03 -> ep01_scene10_shot04, ep01_scene10_shot12 -> ep01_scene10_shot13)
4. ThÃºy VÃ¢n tail frame with ThÃºy Kiá»�u shot (ep01_scene03_shot05 -> ep01_scene03_shot06)
5. ThÃºy Kiá»�u tail frame with ThÃºy VÃ¢n shot (ep01_scene03_shot01 -> ep01_scene03_shot02)
6. VÆ°Æ¡ng Quan tail frame with VÆ°Æ¡ng Ã”ng shot (ep01_scene02_shot09 -> ep01_scene02_shot10)

Verifies 100% resolve strictly to authentic character portraits without tail frame leakage.
é    N)ÚPathÚ05_Production_PipelineÚ	04_AssetsÚ	keyframesÚ
charactersÚmodule)Úscopec                  ó*   — t          j        d¦  «        S )NÚep01)ÚpoÚget_all_shots© ó    úDC:\Projects\KieuStory\tests\test_adversarial_tail_frames_m3_probe.pyÚ
ep01_shotsr       s   € åÔ˜FÑ#Ô#Ð#r   c                   óB   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
S )Ú,TestAdversarialTailFrameCharacterTransitionszPRigorous adversarial probe for physical tail frames across character boundaries.c                 ó¢  — t           dz  }|                     dd¬¦  «         |dz  }|                     d¦  «         	 d}||         }t          j        |d|¬¦  «        }|dk    sJ d	|› �¦   «         ‚t          j        ||¦  «        \  }}|€
J d¦   «         ‚|dk    sJ d	|› �¦   «         ‚|                     ¦   «         }	d|	vsJ d|› �¦   «         ‚d|	vsJ d|› �¦   «         ‚d|	v sJ d|› �¦   «         ‚t          |¦  «                             ¦   «         sJ d|› �¦   «         ‚	 t          j
        |d¬¦  «         d
S # t          j
        |d¬¦  «         w xY w)u*  
        Adversarial Scenario 1:
        ep01_scene02_shot10 (VÆ°Æ¡ng Ã”ng) leaves a physical clean_frame_239.jpg on disk.
        ep01_scene02_shot11 (VÆ°Æ¡ng Quan) is resolved.
        Must classify as CINEMATIC_CUT and resolve strictly to VÆ°Æ¡ng Quan, never tail frame or VÆ°Æ¡ng Ã”ng.
        Úep01_scene02_shot10T©ÚparentsÚexist_okúclean_frame_239.jpgs    ADVERSARIAL_VUONG_ONG_TAIL_FRAMEÚep01_scene02_shot11©Úprev_shot_idÚ	shot_dataÚCINEMATIC_CUTúExpected CINEMATIC_CUT, got NúResolved frame is NoneÚclean_frame_239ú'LEAK: Consumed adversarial tail frame: Ú	vuong_ongu9   LEAK: VÆ°Æ¡ng Ã”ng asset resolved for VÆ°Æ¡ng Quan shot: Ú
vuong_quanu%   Expected VÆ°Æ¡ng Quan portrait, got: úResolved file does not exist: ©Úignore_errors©ÚKEYFRAMES_DIRÚmkdirÚwrite_bytesr   Úclassify_shot_takeÚresolve_start_frame_v2Úlowerr   ÚexistsÚshutilÚrmtree©
Úselfr   Úprev_kfÚ
dummy_tailÚcurr_sidÚ	curr_dataÚ	take_typeÚresolvedÚresolved_takeÚ	res_lowers
             r   Ú.test_vuong_ong_tail_frame_with_vuong_quan_shotz[TestAdversarialTailFrameCharacterTransitions.test_vuong_ong_tail_frame_with_vuong_quan_shot(   sÄ  € õ  Ð"7Ñ7ˆØ�Š˜d¨TˆÑ2Ô2Ð2ØÐ4Ñ4ˆ
Ø×ÒÐBÑCÔCÐCð	7Ø,ˆHØ" 8Ô,ˆIåÔ-¨hÐEZÐfoÐpÑpÔpˆIØ Ò/Ð/Ð/Ð1[ÐPYÐ1[Ð1[Ñ/Ô/Ð/å&(Ô&?ÀÈ)Ñ&TÔ&TÑ#ˆH�mØÐ'Ð'Ð)AÑ'Ô'Ð'Ø  OÒ3Ð3Ð3Ð5cÐTaÐ5cÐ5cÑ3Ô3Ð3à ŸšÑ(Ô(ˆIØ$¨IÐ5Ð5Ð5Ð7kÐaiÐ7kÐ7kÑ5Ô5Ð5Ø iÐ/Ð/Ð/Ð1wÐmuÐ1wÐ1wÑ/Ô/Ð/Ø 9Ð,Ð,Ð,Ð.`ÐV^Ð.`Ð.`Ñ,Ô,Ð,Ý˜‘>”>×(Ò(Ñ*Ô*ÐWÐWÐ,WÈXÐ,WÐ,WÑWÔWÐ*ÐWåŒM˜'°Ð6Ñ6Ô6Ð6Ð6Ð6ø�FŒM˜'°Ð6Ñ6Ô6Ð6Ð6øøøó   ½C D6 Ä6Ec                 ó¢  — t           dz  }|                     dd¬¦  «         |dz  }|                     d¦  «         	 d}||         }t          j        |d|¬¦  «        }|dk    sJ d	|› �¦   «         ‚t          j        ||¦  «        \  }}|€
J d¦   «         ‚|dk    sJ d	|› �¦   «         ‚|                     ¦   «         }	d|	vsJ d|› �¦   «         ‚d|	vsJ d|› �¦   «         ‚d|	v sJ d|› �¦   «         ‚t          |¦  «                             ¦   «         sJ d|› �¦   «         ‚	 t          j
        |d¬¦  «         d
S # t          j
        |d¬¦  «         w xY w)u(  
        Adversarial Scenario 2:
        ep01_scene08_shot07 (Kim Trá»�ng) leaves a physical clean_frame_239.jpg on disk.
        ep01_scene08_shot08 (ThÃºy Kiá»�u) is resolved.
        Must classify as CINEMATIC_CUT and resolve strictly to ThÃºy Kiá»�u, never tail frame or Kim Trá»�ng.
        Úep01_scene08_shot07Tr   r   s    ADVERSARIAL_KIM_TRONG_TAIL_FRAMEÚep01_scene08_shot08r   r   r   Nr    r!   r"   Ú	kim_trongõ8   LEAK: Kim Trá»�ng asset resolved for ThÃºy Kiá»�u shot: Ú	thuy_kieuõ%   Expected ThÃºy Kiá»�u portrait, got: r%   r&   r(   r2   s
             r   Ú-test_kim_trong_tail_frame_with_thuy_kieu_shotzZTestAdversarialTailFrameCharacterTransitions.test_kim_trong_tail_frame_with_thuy_kieu_shotG   sÄ  € õ  Ð"7Ñ7ˆØ�Š˜d¨TˆÑ2Ô2Ð2ØÐ4Ñ4ˆ
Ø×ÒÐBÑCÔCÐCð	7Ø,ˆHØ" 8Ô,ˆIåÔ-¨hÐEZÐfoÐpÑpÔpˆIØ Ò/Ð/Ð/Ð1[ÐPYÐ1[Ð1[Ñ/Ô/Ð/å&(Ô&?ÀÈ)Ñ&TÔ&TÑ#ˆH�mØÐ'Ð'Ð)AÑ'Ô'Ð'Ø  OÒ3Ð3Ð3Ð5cÐTaÐ5cÐ5cÑ3Ô3Ð3à ŸšÑ(Ô(ˆIØ$¨IÐ5Ð5Ð5Ð7kÐaiÐ7kÐ7kÑ5Ô5Ð5Ø iÐ/Ð/Ð/Ð1vÐltÐ1vÐ1vÑ/Ô/Ð/Ø )Ð+Ð+Ð+Ð-_ÐU]Ð-_Ð-_Ñ+Ô+Ð+Ý˜‘>”>×(Ò(Ñ*Ô*ÐWÐWÐ,WÈXÐ,WÐ,WÑWÔWÐ*ÐWåŒM˜'°Ð6Ñ6Ô6Ð6Ð6Ð6ø�FŒM˜'°Ð6Ñ6Ô6Ð6Ð6øøør=   c                 ó¢  — t           dz  }|                     dd¬¦  «         |dz  }|                     d¦  «         	 d}||         }t          j        |d|¬¦  «        }|dk    sJ d	|› �¦   «         ‚t          j        ||¦  «        \  }}|€
J d¦   «         ‚|dk    sJ d	|› �¦   «         ‚|                     ¦   «         }	d|	vsJ d|› �¦   «         ‚d|	vsJ d|› �¦   «         ‚d|	v sJ d|› �¦   «         ‚t          |¦  «                             ¦   «         sJ d|› �¦   «         ‚	 t          j
        |d¬¦  «         d
S # t          j
        |d¬¦  «         w xY w)u  
        Adversarial Scenario 2b (Scene 10):
        ep01_scene10_shot05 (Kim Trá»�ng) leaves a physical clean_frame_239.jpg on disk.
        ep01_scene10_shot06 (ThÃºy Kiá»�u) is resolved.
        Must classify as CINEMATIC_CUT and resolve strictly to ThÃºy Kiá»�u.
        Úep01_scene10_shot05Tr   r   s(   ADVERSARIAL_KIM_TRONG_SCENE10_TAIL_FRAMEÚep01_scene10_shot06r   r   r   Nr    r!   r"   rA   rB   rC   rD   r%   r&   r(   r2   s
             r   Ú5test_kim_trong_tail_frame_with_thuy_kieu_shot_scene10zbTestAdversarialTailFrameCharacterTransitions.test_kim_trong_tail_frame_with_thuy_kieu_shot_scene10f   sÄ  € õ  Ð"7Ñ7ˆØ�Š˜d¨TˆÑ2Ô2Ð2ØÐ4Ñ4ˆ
Ø×ÒÐJÑKÔKÐKð	7Ø,ˆHØ" 8Ô,ˆIåÔ-¨hÐEZÐfoÐpÑpÔpˆIØ Ò/Ð/Ð/Ð1[ÐPYÐ1[Ð1[Ñ/Ô/Ð/å&(Ô&?ÀÈ)Ñ&TÔ&TÑ#ˆH�mØÐ'Ð'Ð)AÑ'Ô'Ð'Ø  OÒ3Ð3Ð3Ð5cÐTaÐ5cÐ5cÑ3Ô3Ð3à ŸšÑ(Ô(ˆIØ$¨IÐ5Ð5Ð5Ð7kÐaiÐ7kÐ7kÑ5Ô5Ð5Ø iÐ/Ð/Ð/Ð1vÐltÐ1vÐ1vÑ/Ô/Ð/Ø )Ð+Ð+Ð+Ð-_ÐU]Ð-_Ð-_Ñ+Ô+Ð+Ý˜‘>”>×(Ò(Ñ*Ô*ÐWÐWÐ,WÈXÐ,WÐ,WÑWÔWÐ*ÐWåŒM˜'°Ð6Ñ6Ô6Ð6Ð6Ð6ø�FŒM˜'°Ð6Ñ6Ô6Ð6Ð6øøør=   c                 ó¢  — t           dz  }|                     dd¬¦  «         |dz  }|                     d¦  «         	 d}||         }t          j        |d|¬¦  «        }|dk    sJ d	|› �¦   «         ‚t          j        ||¦  «        \  }}|€
J d¦   «         ‚|dk    sJ d	|› �¦   «         ‚|                     ¦   «         }	d|	vsJ d|› �¦   «         ‚d|	vsJ d|› �¦   «         ‚d|	v sJ d|› �¦   «         ‚t          |¦  «                             ¦   «         sJ d|› �¦   «         ‚	 t          j
        |d¬¦  «         d
S # t          j
        |d¬¦  «         w xY w)u(  
        Adversarial Scenario 3:
        ep01_scene10_shot03 (ThÃºy Kiá»�u) leaves a physical clean_frame_239.jpg on disk.
        ep01_scene10_shot04 (Kim Trá»�ng) is resolved.
        Must classify as CINEMATIC_CUT and resolve strictly to Kim Trá»�ng, never tail frame or ThÃºy Kiá»�u.
        Úep01_scene10_shot03Tr   r   s    ADVERSARIAL_THUY_KIEU_TAIL_FRAMEÚep01_scene10_shot04r   r   r   Nr    r!   r"   rC   õ8   LEAK: ThÃºy Kiá»�u asset resolved for Kim Trá»�ng shot: rA   õ$   Expected Kim Trá»�ng portrait, got: r%   r&   r(   r2   s
             r   Ú-test_thuy_kieu_tail_frame_with_kim_trong_shotzZTestAdversarialTailFrameCharacterTransitions.test_thuy_kieu_tail_frame_with_kim_trong_shot…   sÄ  € õ  Ð"7Ñ7ˆØ�Š˜d¨TˆÑ2Ô2Ð2ØÐ4Ñ4ˆ
Ø×ÒÐBÑCÔCÐCð	7Ø,ˆHØ" 8Ô,ˆIåÔ-¨hÐEZÐfoÐpÑpÔpˆIØ Ò/Ð/Ð/Ð1[ÐPYÐ1[Ð1[Ñ/Ô/Ð/å&(Ô&?ÀÈ)Ñ&TÔ&TÑ#ˆH�mØÐ'Ð'Ð)AÑ'Ô'Ð'Ø  OÒ3Ð3Ð3Ð5cÐTaÐ5cÐ5cÑ3Ô3Ð3à ŸšÑ(Ô(ˆIØ$¨IÐ5Ð5Ð5Ð7kÐaiÐ7kÐ7kÑ5Ô5Ð5Ø iÐ/Ð/Ð/Ð1vÐltÐ1vÐ1vÑ/Ô/Ð/Ø )Ð+Ð+Ð+Ð-^ÐT\Ð-^Ð-^Ñ+Ô+Ð+Ý˜‘>”>×(Ò(Ñ*Ô*ÐWÐWÐ,WÈXÐ,WÐ,WÑWÔWÐ*ÐWåŒM˜'°Ð6Ñ6Ô6Ð6Ð6Ð6ø�FŒM˜'°Ð6Ñ6Ô6Ð6Ð6øøør=   c                 ó¢  — t           dz  }|                     dd¬¦  «         |dz  }|                     d¦  «         	 d}||         }t          j        |d|¬¦  «        }|dk    sJ d	|› �¦   «         ‚t          j        ||¦  «        \  }}|€
J d¦   «         ‚|dk    sJ d	|› �¦   «         ‚|                     ¦   «         }	d|	vsJ d|› �¦   «         ‚d|	vsJ d|› �¦   «         ‚d|	v sJ d|› �¦   «         ‚t          |¦  «                             ¦   «         sJ d|› �¦   «         ‚	 t          j
        |d¬¦  «         d
S # t          j
        |d¬¦  «         w xY w)u  
        Adversarial Scenario 3b:
        ep01_scene10_shot12 (ThÃºy Kiá»�u) leaves a physical clean_frame_239.jpg on disk.
        ep01_scene10_shot13 (Kim Trá»�ng) is resolved.
        Must classify as CINEMATIC_CUT and resolve strictly to Kim Trá»�ng.
        Úep01_scene10_shot12Tr   r   s/   ADVERSARIAL_THUY_KIEU_SCENE10_SHOT12_TAIL_FRAMEÚep01_scene10_shot13r   r   r   Nr    r!   r"   rC   rM   rA   rN   r%   r&   r(   r2   s
             r   Ú<test_thuy_kieu_tail_frame_with_kim_trong_shot_scene10_shot13ziTestAdversarialTailFrameCharacterTransitions.test_thuy_kieu_tail_frame_with_kim_trong_shot_scene10_shot13¤   sÄ  € õ  Ð"7Ñ7ˆØ�Š˜d¨TˆÑ2Ô2Ð2ØÐ4Ñ4ˆ
Ø×ÒÐQÑRÔRÐRð	7Ø,ˆHØ" 8Ô,ˆIåÔ-¨hÐEZÐfoÐpÑpÔpˆIØ Ò/Ð/Ð/Ð1[ÐPYÐ1[Ð1[Ñ/Ô/Ð/å&(Ô&?ÀÈ)Ñ&TÔ&TÑ#ˆH�mØÐ'Ð'Ð)AÑ'Ô'Ð'Ø  OÒ3Ð3Ð3Ð5cÐTaÐ5cÐ5cÑ3Ô3Ð3à ŸšÑ(Ô(ˆIØ$¨IÐ5Ð5Ð5Ð7kÐaiÐ7kÐ7kÑ5Ô5Ð5Ø iÐ/Ð/Ð/Ð1vÐltÐ1vÐ1vÑ/Ô/Ð/Ø )Ð+Ð+Ð+Ð-^ÐT\Ð-^Ð-^Ñ+Ô+Ð+Ý˜‘>”>×(Ò(Ñ*Ô*ÐWÐWÐ,WÈXÐ,WÐ,WÑWÔWÐ*ÐWåŒM˜'°Ð6Ñ6Ô6Ð6Ð6Ð6ø�FŒM˜'°Ð6Ñ6Ô6Ð6Ð6øøør=   c                 ó¢  — t           dz  }|                     dd¬¦  «         |dz  }|                     d¦  «         	 d}||         }t          j        |d|¬¦  «        }|dk    sJ d	|› �¦   «         ‚t          j        ||¦  «        \  }}|€
J d¦   «         ‚|dk    sJ d	|› �¦   «         ‚|                     ¦   «         }	d|	vsJ d|› �¦   «         ‚d|	vsJ d|› �¦   «         ‚d|	v sJ d|› �¦   «         ‚t          |¦  «                             ¦   «         sJ d|› �¦   «         ‚	 t          j
        |d¬¦  «         d
S # t          j
        |d¬¦  «         w xY w)u  
        Adversarial Scenario 4:
        ep01_scene03_shot05 (ThÃºy VÃ¢n) leaves a physical clean_frame_239.jpg on disk.
        ep01_scene03_shot06 (ThÃºy Kiá»�u) is resolved.
        Must classify as CINEMATIC_CUT and resolve strictly to ThÃºy Kiá»�u portrait.
        Úep01_scene03_shot05Tr   r   s   ADVERSARIAL_THUY_VAN_TAIL_FRAMEÚep01_scene03_shot06r   r   r   Nr    r!   r"   Úthuy_vanu7   LEAK: ThÃºy VÃ¢n asset resolved for ThÃºy Kiá»�u shot: rC   rD   r%   r&   r(   r2   s
             r   Ú,test_thuy_van_tail_frame_with_thuy_kieu_shotzYTestAdversarialTailFrameCharacterTransitions.test_thuy_van_tail_frame_with_thuy_kieu_shotÃ   sÄ  € õ  Ð"7Ñ7ˆØ�Š˜d¨TˆÑ2Ô2Ð2ØÐ4Ñ4ˆ
Ø×ÒÐAÑBÔBÐBð	7Ø,ˆHØ" 8Ô,ˆIåÔ-¨hÐEZÐfoÐpÑpÔpˆIØ Ò/Ð/Ð/Ð1[ÐPYÐ1[Ð1[Ñ/Ô/Ð/å&(Ô&?ÀÈ)Ñ&TÔ&TÑ#ˆH�mØÐ'Ð'Ð)AÑ'Ô'Ð'Ø  OÒ3Ð3Ð3Ð5cÐTaÐ5cÐ5cÑ3Ô3Ð3à ŸšÑ(Ô(ˆIØ$¨IÐ5Ð5Ð5Ð7kÐaiÐ7kÐ7kÑ5Ô5Ð5Ø YÐ.Ð.Ð.Ð0tÐjrÐ0tÐ0tÑ.Ô.Ð.Ø )Ð+Ð+Ð+Ð-_ÐU]Ð-_Ð-_Ñ+Ô+Ð+Ý˜‘>”>×(Ò(Ñ*Ô*ÐWÐWÐ,WÈXÐ,WÐ,WÑWÔWÐ*ÐWåŒM˜'°Ð6Ñ6Ô6Ð6Ð6Ð6ø�FŒM˜'°Ð6Ñ6Ô6Ð6Ð6øøør=   c                 ó¢  — t           dz  }|                     dd¬¦  «         |dz  }|                     d¦  «         	 d}||         }t          j        |d|¬¦  «        }|dk    sJ d	|› �¦   «         ‚t          j        ||¦  «        \  }}|€
J d¦   «         ‚|dk    sJ d	|› �¦   «         ‚|                     ¦   «         }	d|	vsJ d|› �¦   «         ‚d|	vsJ d|› �¦   «         ‚d|	v sJ d|› �¦   «         ‚t          |¦  «                             ¦   «         sJ d|› �¦   «         ‚	 t          j
        |d¬¦  «         d
S # t          j
        |d¬¦  «         w xY w)u  
        Adversarial Scenario 5:
        ep01_scene03_shot01 (ThÃºy Kiá»�u) leaves a physical clean_frame_239.jpg on disk.
        ep01_scene03_shot02 (ThÃºy VÃ¢n) is resolved.
        Must classify as CINEMATIC_CUT and resolve strictly to ThÃºy VÃ¢n portrait.
        Úep01_scene03_shot01Tr   r   s(   ADVERSARIAL_THUY_KIEU_TAIL_FRAME_SCENE03Úep01_scene03_shot02r   r   r   Nr    r!   r"   rC   u7   LEAK: ThÃºy Kiá»�u asset resolved for ThÃºy VÃ¢n shot: rW   u#   Expected ThÃºy VÃ¢n portrait, got: r%   r&   r(   r2   s
             r   Ú,test_thuy_kieu_tail_frame_with_thuy_van_shotzYTestAdversarialTailFrameCharacterTransitions.test_thuy_kieu_tail_frame_with_thuy_van_shotâ   sÄ  € õ  Ð"7Ñ7ˆØ�Š˜d¨TˆÑ2Ô2Ð2ØÐ4Ñ4ˆ
Ø×ÒÐJÑKÔKÐKð	7Ø,ˆHØ" 8Ô,ˆIåÔ-¨hÐEZÐfoÐpÑpÔpˆIØ Ò/Ð/Ð/Ð1[ÐPYÐ1[Ð1[Ñ/Ô/Ð/å&(Ô&?ÀÈ)Ñ&TÔ&TÑ#ˆH�mØÐ'Ð'Ð)AÑ'Ô'Ð'Ø  OÒ3Ð3Ð3Ð5cÐTaÐ5cÐ5cÑ3Ô3Ð3à ŸšÑ(Ô(ˆIØ$¨IÐ5Ð5Ð5Ð7kÐaiÐ7kÐ7kÑ5Ô5Ð5Ø iÐ/Ð/Ð/Ð1uÐksÐ1uÐ1uÑ/Ô/Ð/Ø Ð*Ð*Ð*Ð,\ÐRZÐ,\Ð,\Ñ*Ô*Ð*Ý˜‘>”>×(Ò(Ñ*Ô*ÐWÐWÐ,WÈXÐ,WÐ,WÑWÔWÐ*ÐWåŒM˜'°Ð6Ñ6Ô6Ð6Ð6Ð6ø�FŒM˜'°Ð6Ñ6Ô6Ð6Ð6øøør=   c                 ó¢  — t           dz  }|                     dd¬¦  «         |dz  }|                     d¦  «         	 d}||         }t          j        |d|¬¦  «        }|dk    sJ d	|› �¦   «         ‚t          j        ||¦  «        \  }}|€
J d¦   «         ‚|dk    sJ d	|› �¦   «         ‚|                     ¦   «         }	d|	vsJ d|› �¦   «         ‚d|	vsJ d|› �¦   «         ‚d|	v sJ d|› �¦   «         ‚t          |¦  «                             ¦   «         sJ d|› �¦   «         ‚	 t          j
        |d¬¦  «         d
S # t          j
        |d¬¦  «         w xY w)u  
        Adversarial Scenario 6:
        ep01_scene02_shot09 (VÆ°Æ¡ng Quan) leaves a physical clean_frame_239.jpg on disk.
        ep01_scene02_shot10 (VÆ°Æ¡ng Ã”ng) is resolved.
        Must classify as CINEMATIC_CUT and resolve strictly to VÆ°Æ¡ng Ã”ng portrait.
        Úep01_scene02_shot09Tr   r   s!   ADVERSARIAL_VUONG_QUAN_TAIL_FRAMEr   r   r   r   Nr    r!   r"   r$   u9   LEAK: VÆ°Æ¡ng Quan asset resolved for VÆ°Æ¡ng Ã”ng shot: r#   u%   Expected VÆ°Æ¡ng Ã”ng portrait, got: r%   r&   r(   r2   s
             r   Ú.test_vuong_quan_tail_frame_with_vuong_ong_shotz[TestAdversarialTailFrameCharacterTransitions.test_vuong_quan_tail_frame_with_vuong_ong_shot  sÄ  € õ  Ð"7Ñ7ˆØ�Š˜d¨TˆÑ2Ô2Ð2ØÐ4Ñ4ˆ
Ø×ÒÐCÑDÔDÐDð	7Ø,ˆHØ" 8Ô,ˆIåÔ-¨hÐEZÐfoÐpÑpÔpˆIØ Ò/Ð/Ð/Ð1[ÐPYÐ1[Ð1[Ñ/Ô/Ð/å&(Ô&?ÀÈ)Ñ&TÔ&TÑ#ˆH�mØÐ'Ð'Ð)AÑ'Ô'Ð'Ø  OÒ3Ð3Ð3Ð5cÐTaÐ5cÐ5cÑ3Ô3Ð3à ŸšÑ(Ô(ˆIØ$¨IÐ5Ð5Ð5Ð7kÐaiÐ7kÐ7kÑ5Ô5Ð5Ø yÐ0Ð0Ð0Ð2xÐnvÐ2xÐ2xÑ0Ô0Ð0Ø )Ð+Ð+Ð+Ð-_ÐU]Ð-_Ð-_Ñ+Ô+Ð+Ý˜‘>”>×(Ò(Ñ*Ô*ÐWÐWÐ,WÈXÐ,WÐ,WÑWÔWÐ*ÐWåŒM˜'°Ð6Ñ6Ô6Ð6Ð6Ð6ø�FŒM˜'°Ð6Ñ6Ô6Ð6Ð6øøør=   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r<   rE   rI   rO   rS   rX   r\   r_   r   r   r   r   r   %   s’   € € € € € ØZÐZð7ð 7ð 7ð>7ð 7ð 7ð>7ð 7ð 7ð>7ð 7ð 7ð>7ð 7ð 7ð>7ð 7ð 7ð>7ð 7ð 7ð>7ð 7ð 7ð 7ð 7r   r   )rc   Úsysr0   Úpathlibr   ÚpytestÚ__file__ÚresolveÚparentÚPROJECT_ROOTÚPIPELINE_DIRr)   ÚCHARACTERS_DIRÚstrÚpathÚinsertÚproduction_orchestratorr   Úfixturer   r   r   r   r   ú<module>rr      s0  ððð ð €
€
€
Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€àˆt�H‰~Œ~×%Ò%Ñ'Ô'Ô.Ô5€ØÐ6Ñ6€Ø˜{Ñ*¨[Ñ8€Ø Ñ+¨lÑ:€à€3€|ÑÔ˜CœHÐ$Ð$Ø„H‡O‚O�A�s�s˜<Ñ(Ô(Ñ)Ô)Ð)à $Ð $Ð $Ð $ð €„�hÐÑÔð$ð $ñ  Ôð$ðy7ð y7ð y7ð y7ð y7ñ y7ô y7ð y7ð y7ð y7r   