§
    µuÈj@  ã                   ó  — d Z ddlZddlmc mZ ddlZddlZddl	Z	ddl
Z
ddlmZ ddlZddlZddlZ ee¦  «                             ¦   «         j        j        Zej                             d eedz  ¦  «        ¦  «         ddlmZmZmZmZmZmZ  ej        d¬¦  «        d„ ¦   «         Z ddefd„Z! G d„ d¦  «        Z" G d„ d¦  «        Z# G d„ d¦  «        Z$ G d„ d¦  «        Z%e&dk    r ej'        edg¦  «         dS dS )u  
=============================================================================
CHALLENGER 1 EMPIRICAL ADVERSARIAL STRESS HARNESS - M1 ITERATION 2
=============================================================================
Authoritative independent stress-test suite executed by Challenger 1.
Validates:
1. evaluate_scene_gate:
   - Non-existent files (alone and mixed with valid files) -> score=0.0, approved=False, action='RETAKE_SHOT'
   - Empty 0-byte files -> score=0.0, approved=False, action='RETAKE_SHOT'
   - Corrupted/garbage files -> score=0.0, approved=False, action='RETAKE_SHOT'
   - Truncated headers -> score=0.0, approved=False, action='RETAKE_SHOT'
   - Mixed valid and invalid files -> score=0.0, approved=False, action='RETAKE_SHOT'
2. evaluate_shot_gate on frozen video:
   - 48, 120, 240 frames frozen -> docked >= 0.35, capping score <= 0.65, approved=False, action='RETAKE_SHOT'
3. evaluate_shot_gate on ThÃºy Kiá»�u video evaluated as VÆ°Æ¡ng Ã”ng / VÆ°Æ¡ng Quan / Kim Trá»�ng:
   - Static portrait video -> char_match=False, score <= 0.50, approved=False, action='RETAKE_SHOT'
   - Moving ThÃºy Kiá»�u video (non-frozen motion) -> char_match=False, score <= 0.50, approved=False, action='RETAKE_SHOT'
   - Case-insensitive / whitespace-tolerant expected_character names ("VÆ°Æ¡ng Ã”ng", "  vuong_quan  ")
4. Engine dispatch (both force_engine='heuristic' and default force_engine=None):
   - Consistent behavior across invocation modes
=============================================================================
é    N)ÚPathÚ05_Production_Pipeline)ÚVideoCriticVerdictÚShotEvaluationÚSceneEvaluationÚevaluate_shot_gateÚevaluate_scene_gateÚOfflineHeuristicEngineÚsession)Úscopec              #   ó‚   K  — |                       d¦  «        }|V — t          j        t          |¦  «        d¬¦  «         d S )NÚchallenger1_stressT)Úignore_errors)ÚmktempÚshutilÚrmtreeÚstr)Útmp_path_factoryÚtemp_dirs     ú@C:\Projects\KieuStory\tests\test_challenger1_empirical_stress.pyÚharness_sandboxr   .   sD   è è € à×&Ò&Ð';Ñ<Ô<€HØ
€N€N€NÝ
„M•#�h‘-”-¨tÐ4Ñ4Ô4Ð4Ð4Ð4ó    éH   é   é   éÐ  Úmotion©éx   é    éÈ   Úfilepathc                 ó0  — t          j        dŽ }t          j        t          | ¦  «        ||||f¦  «        }t	          |¦  «        D �]<}	|dk    r%t          j        ||df|t
          j        ¬¦  «        }
nù|dk    r™t          j        ||df|t
          j        ¬¦  «        }
t          |dz  t          j	        |	dz  ¦  «        dz  z   ¦  «        }t          |dz  t          j
        |	dz  ¦  «        d	z  z   ¦  «        }t          j        |
||fd
dd¦  «         nZ|dk    r$t          j        ||dft
          j        ¬¦  «        }
n0t
          j                             dd||dft
          j        ¬¦  «        }
|                     |
¦  «         �Œ>|                     ¦   «          | S )NÚmp4vÚfrozené   )Údtyper   é   g      $@é–   éP   é2   )éÿ   r,   r,   éÿÿÿÿÚblackr   r,   )Úcv2ÚVideoWriter_fourccÚVideoWriterr   ÚrangeÚnpÚfullÚuint8ÚintÚsinÚcosÚcircleÚzerosÚrandomÚrandintÚwriteÚrelease)r"   Ú
num_framesÚfpsÚwidthÚheightÚmodeÚcolorÚfourccÚoutÚiÚframeÚcxÚcys                r   Úcreate_test_videorK   5   s‚  € ÝÔ# VÐ,€FÝ
Œ/�#˜h™-œ-¨°°u¸f°oÑ
FÔ
F€CÝ�:ÑÔð ñ ˆØ�8ÒÐÝ”G˜V U¨AÐ.°½R¼XÐFÑFÔFˆEˆEØ�XÒÐÝ”G˜V U¨AÐ.°½R¼XÐFÑFÔFˆEÝ�U˜Q‘Y¥¤¨¨D©Ñ!1Ô!1°CÑ!7Ñ7Ñ8Ô8ˆBÝ�V˜a‘Z¥"¤&¨¨T©Ñ"2Ô"2°RÑ"7Ñ7Ñ8Ô8ˆBÝŒJ�u˜r 2˜h¨¨O¸RÑ@Ô@Ð@Ð@Ø�WŠ_ˆ_Ý”H˜f e¨QÐ/µr´xÐ@Ñ@Ô@ˆEˆEå”I×%Ò% a¨¨v°u¸aÐ.@ÍÌÐ%ÑQÔQˆEØ�	Š	�%ÑÔÐÑØ‡K‚K�M„M€MØ€Or   c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestChallengerSceneGateStressc                 ó0  — dD �]}t          dddg|¬¦  «        }|j        }d}||k    }|sÇt          j        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        d
œz  }t          j        d|j        › �¦  «        dz   d|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}}|j        }d}||u }|sªt          j        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}}|j        }d}||u}|sªt          j        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}}|j        }|j        }d}||k    }	|	s½t          j        d|	fd||f¦  «        d	t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }
t          t          j
        |
¦  «        ¦  «        ‚dx}x}x}	}�ŒdS )zNNon-existent files must yield score=0.0, approved=False, action='RETAKE_SHOT'.©NÚ	heuristicÚsc_test_missingznon_existent_1.mp4znon_existent_2.mp4©Úforce_engineç        ©ú==©z5%(py2)s
{%(py2)s = %(py0)s.overall_score
} == %(py5)sÚv©Úpy0Úpy2Úpy5zExpected 0.0, got ú
>assert %(py7)sÚpy7NF©Úis©z0%(py2)s
{%(py2)s = %(py0)s.approved
} is %(py5)súassert %(py7)sÚRETAKE_SHOT©z8%(py2)s
{%(py2)s = %(py0)s.suggested_action
} == %(py5)s©úis not)z6%(py2)s
{%(py2)s = %(py0)s.scene_eval
} is not %(py5)s)zM%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.scene_eval
}.score
} == %(py7)s©rZ   r[   Úpy4r^   úassert %(py9)sÚpy9)r	   Úoverall_scoreÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚ_format_assertmsgÚAssertionErrorÚ_format_explanationÚapprovedÚsuggested_actionÚ
scene_evalÚscore)ÚselfÚenginerX   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8Ú@py_assert6Ú@py_assert5Ú@py_format10s              r   Ú&test_scene_gate_pure_nonexistent_fileszDTestChallengerSceneGateStress.test_scene_gate_pure_nonexistent_filesN   sË  € à)ð 	-ñ 	-ˆFÝ#Ð$5Ð8LÐNbÐ7cÐrxÐyÑyÔyˆAØ”?ÐQ cÐQ�? cÒ)ÐQÐQÐQÕQÔQÐQÐQÐQÐQ�? cÐQÑQÔQÐQÕQÔQÑQÔQÐQÐQÕQÔQ�1ÑQÔQÐQÕQÔQ�1ÑQÔQÐQÐQÕQÔQ�?ÑQÔQÕQÔQ cÑQÔQÐQÐQÑQÐQÕQÔQÐ+QÀÄÐ+QÐ+QÑQÔQÐQÑQÐQÐQÐQÑQÐQÕQÕQÔQÐQÑQÔQÑQÔQÐQÐQÐQÐQÐQÐQÐQØ”:Ð& Ð&�: Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&�: Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&�1Ñ&Ô&Ð&Õ&Ô&�1Ñ&Ô&Ð&Ð&Õ&Ô&�:Ñ&Ô&Õ&Ô& Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÔ%Ð6¨Ð6Ð%¨Ò6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6Ð%¨Ð6Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6�1Ñ6Ô6Ð6Õ6Ô6�1Ñ6Ô6Ð6Ð6Õ6Ô6Ð%Ñ6Ô6Õ6Ô6¨Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ø”<Ð+ tÐ+�< tÐ+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+�< tÐ+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+�1Ñ+Ô+Ð+Õ+Ô+�1Ñ+Ô+Ð+Ð+Õ+Ô+�<Ñ+Ô+Õ+Ô+ tÑ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ø”<Ð,�<Ô%Ð,¨Ð,Ð%¨Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð%¨Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,�1Ñ,Ô,Ð,Õ,Ô,�1Ñ,Ô,Ð,Ð,Õ,Ô,�<Ñ,Ô,Õ,Ô,Ð%Ñ,Ô,Õ,Ô,¨Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ñ,ð	-ð 	-r   c                 ó¨  — |dz  }t          |dd¬¦  «         t          |dz  ¦  «        }dD �]$}t          dt          |¦  «        |g|¬¦  «        }|j        }d	}||k    }|sªt	          j        d
|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚dx}x}}|j        }d}||u }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d
|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚dx}x}}d}|j        }||v }|sªt	          j        d|fd||f¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚dx}x}}�Œ&dS )z^1 valid file + 1 non-existent file must yield score=0.0, approved=False, action='RETAKE_SHOT'.zvalid_for_mix.mp4é0   r   ©r?   rC   zphantom_file.mp4rO   Úsc_mixed_missingrR   rT   rU   rW   rX   rY   rb   r^   NFr_   ra   rc   rd   zMissing file©Úin©z6%(py1)s in %(py5)s
{%(py5)s = %(py3)s.critique_notes
}©Úpy1Úpy3r\   )rK   r   r	   rk   rl   rm   rn   ro   rp   rq   rs   rt   ru   rv   Úcritique_notes)ry   r   Úvalid_pÚ	missing_prz   rX   r{   r|   r}   r~   r   Ú@py_assert0Ú@py_assert2s                r   Ú+test_scene_gate_mixed_valid_and_nonexistentzITestChallengerSceneGateStress.test_scene_gate_mixed_valid_and_nonexistentX   sî  € à!Ð$7Ñ7ˆÝ˜'¨b°xÐ@Ñ@Ô@Ð@Ý˜Ð*<Ñ<Ñ=Ô=ˆ	à)ð 	6ñ 	6ˆFÝ#Ð$6½¸W¹¼ÀyÐ8QÐ`fÐgÑgÔgˆAØ”?Ð) cÐ)�? cÒ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)�? cÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)�1Ñ)Ô)Ð)Õ)Ô)�1Ñ)Ô)Ð)Ð)Õ)Ô)�?Ñ)Ô)Õ)Ô) cÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ø”:Ð& Ð&�: Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&�: Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&�1Ñ&Ô&Ð&Õ&Ô&�1Ñ&Ô&Ð&Ð&Õ&Ô&�:Ñ&Ô&Õ&Ô& Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÔ%Ð6¨Ð6Ð%¨Ò6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6Ð%¨Ð6Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6�1Ñ6Ô6Ð6Õ6Ô6�1Ñ6Ô6Ð6Ð6Õ6Ô6Ð%Ñ6Ô6Õ6Ô6¨Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ø!Ð5 QÔ%5Ð5�>Ð%5Ð5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5�>Ð%5Ð5Ñ5Ô5Õ5Ô5�>Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5 QÑ5Ô5Ð5Õ5Ô5 QÑ5Ô5Ð5Ð5Õ5Ô5Ð%5Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ñ5ð	6ð 	6r   c                 óØ  — |dz  }|dz  }|                      d¦  «         |                      d¦  «         dD �]1}t          dt          |¦  «        t          |¦  «        g|¬¦  «        }|j        }d}||k    }|sªt	          j        d|fd	||f¦  «        d
t          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nd
t	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚dx}x}}|j        }d}||u }|sªt	          j        d|fd||f¦  «        d
t          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nd
t	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d|fd||f¦  «        d
t          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nd
t	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚dx}x}}d}|j        }||v }|sªt	          j        d|fd||f¦  «        t	          j	        |¦  «        d
t          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nd
t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚dx}x}}�Œ3dS )zNEmpty 0-byte files must yield score=0.0, approved=False, action='RETAKE_SHOT'.z
zero_1.mp4z
zero_2.mp4r   rO   Úsc_zero_bytesrR   rT   rU   rW   rX   rY   rb   r^   NFr_   ra   rc   rd   zZero-byte filerˆ   rŠ   r‹   )Úwrite_bytesr	   r   rk   rl   rm   rn   ro   rp   rq   rs   rt   ru   rv   rŽ   )ry   r   Úzero_1Úzero_2rz   rX   r{   r|   r}   r~   r   r‘   r’   s                r   Ú%test_scene_gate_empty_zero_byte_fileszCTestChallengerSceneGateStress.test_scene_gate_empty_zero_byte_filese   sÿ  € à  <Ñ/ˆØ  <Ñ/ˆØ×Ò˜3ÑÔÐØ×Ò˜3ÑÔÐà)ð 	8ñ 	8ˆFÝ# Oµc¸&±k´kÅ3ÀvÁ;Ä;Ð5OÐ^dÐeÑeÔeˆAØ”?Ð) cÐ)�? cÒ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)�? cÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)�1Ñ)Ô)Ð)Õ)Ô)�1Ñ)Ô)Ð)Ð)Õ)Ô)�?Ñ)Ô)Õ)Ô) cÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ø”:Ð& Ð&�: Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&�: Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&�1Ñ&Ô&Ð&Õ&Ô&�1Ñ&Ô&Ð&Ð&Õ&Ô&�:Ñ&Ô&Õ&Ô& Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÔ%Ð6¨Ð6Ð%¨Ò6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6Ð%¨Ð6Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6�1Ñ6Ô6Ð6Õ6Ô6�1Ñ6Ô6Ð6Ð6Õ6Ô6Ð%Ñ6Ô6Õ6Ô6¨Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ø#Ð7 qÔ'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Ô7Ð7Ð7Õ7Ô7 qÑ7Ô7Ð7Õ7Ô7 qÑ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Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ñ7ð	8ð 	8r   c                 óÀ  — |dz  }|dz  }|                      d¦  «         |                      d¦  «         dD �]%}t          dt          |¦  «        t          |¦  «        g|¬¦  «        }|j        }d}||k    }|sªt	          j        d	|fd
||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚dx}x}}|j        }d}||u }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d	|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚dx}x}}g }d}|j        }||v }|}|sd}|j        }||v }|}|�s~t	          j        d|fd||f¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dœz  }
dd|
iz  }|                     |¦  «         |sžt	          j        d|fd||f¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }|                     |¦  «         t	          j        |d ¦  «        i z  }d!d"|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}x}x}x}x}}�Œ'dS )#zZCorrupted/garbage header files must yield score=0.0, approved=False, action='RETAKE_SHOT'.zgarbage_1.mp4zgarbage_2.mp4s%   RANDOM_GARBAGE_HEADER_DATA_1234567890s      ftypmp42corrupted_tailrO   Ú
sc_garbagerR   rT   rU   rW   rX   rY   rb   r^   NFr_   ra   rc   rd   zUnreadable filezZero framesrˆ   )z6%(py3)s in %(py7)s
{%(py7)s = %(py5)s.critique_notes
})r�   r\   r^   z%(py9)srj   )z:%(py12)s in %(py16)s
{%(py16)s = %(py14)s.critique_notes
})Úpy12Úpy14Úpy16z%(py18)sÚpy18é   zassert %(py21)sÚpy21)r–   r	   r   rk   rl   rm   rn   ro   rp   rq   rs   rt   ru   rv   rŽ   ÚappendÚ_format_boolop)ry   r   Úgarb_1Úgarb_2rz   rX   r{   r|   r}   r~   r   r’   r€   r‘   Ú@py_assert11Ú@py_assert15Ú@py_assert13r‚   Ú@py_format17Ú@py_format19Ú@py_format20Ú@py_format22s                         r   Ú'test_scene_gate_corrupted_garbage_fileszETestChallengerSceneGateStress.test_scene_gate_corrupted_garbage_filess   sE  € à  ?Ñ2ˆØ  ?Ñ2ˆØ×ÒÐCÑDÔDÐDØ×ÒÐDÑEÔEÐEà)ð 	`ñ 	`ˆFÝ# Lµ3°v±;´;ÅÀFÁÄÐ2LÐ[aÐbÑbÔbˆAØ”?Ð) cÐ)�? cÒ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)�? cÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)�1Ñ)Ô)Ð)Õ)Ô)�1Ñ)Ô)Ð)Ð)Õ)Ô)�?Ñ)Ô)Õ)Ô) cÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ø”:Ð& Ð&�: Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&�: Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&�1Ñ&Ô&Ð&Õ&Ô&�1Ñ&Ô&Ð&Ð&Õ&Ô&�:Ñ&Ô&Õ&Ô& Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÔ%Ð6¨Ð6Ð%¨Ò6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6Ð%¨Ð6Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6�1Ñ6Ô6Ð6Õ6Ô6�1Ñ6Ô6Ð6Ð6Õ6Ô6Ð%Ñ6Ô6Õ6Ô6¨Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ø_Ð_Ð%Ð_¨Ô)9Ð_Ð%Ð)9Ð9Ð_Ð_Ð_Ð_Ð_¸]Ð_ÈaÔN^Ð_¸]ÐN^Ð=^Ð_Ð_Ð_Ð_Ñ_Õ_Ô_Ð_Ð_Ð_Ð_Ð%Ð)9Ð_Ñ_Ô_Õ_Ô_Ð%Ñ_Ô_Ð_Õ_Ô_Ñ_Ô_Ð_Ð_Õ_Ô_¨Ñ_Ô_Ð_Õ_Ô_¨Ñ_Ô_Ð_Ð_Õ_Ô_Ð)9Ñ_Ô_Ð_Ð_Ñ_Ð_Ð_Ð_Ð_Ð_Ñ_Ð_Ð_×_Ò_Ð_Ñ_Ô_Ð_Ð_Ð_Õ_Ô_Ð_Ð_Ð_Ð_¸]ÐN^Ð_Ñ_Ô_Õ_Ô_¸]Ñ_Ô_Ð_Õ_Ô_Ñ_Ô_Ð_Ð_Õ_Ô_ÈaÑ_Ô_Ð_Õ_Ô_ÈaÑ_Ô_Ð_Ð_Õ_Ô_ÐN^Ñ_Ô_Ð_Ð_Ñ_Ð_Ð_Ð_Ð_Ð_Ñ_Ð_Ð_×_Ò_Ð_Ñ_Ô_Ð_Õ_Ô_Ð_Ð_Ñ_Ô_Ð_Ñ_Ð_Ð_Ð_Ð_Ð_Ñ_Ð_Õ_Õ_Ô_Ð_Ñ_Ô_Ñ_Ô_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ñ_ð	`ð 	`r   c                 óB  — |dz  }t          |dd¬¦  «         |dz  }|                     d¦  «         t          dt          |¦  «        t          |¦  «        g¦  «        }|j        }d}||k    }|sªt          j        d	|fd
||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}x}}|j        }d}||u }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt          j        d	|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}x}}dS )zL1 valid file + 1 corrupted 0-byte file must fail immediately with score=0.0.zvalid_mix_corrupt.mp4r…   r   r†   zcorrupt_sub.mp4r   Úsc_mix_corruptrT   rU   rW   rX   rY   rb   r^   NFr_   ra   rc   rd   )rK   r–   r	   r   rk   rl   rm   rn   ro   rp   rq   rs   rt   ru   rv   )
ry   r   r�   Ú	corrupt_prX   r{   r|   r}   r~   r   s
             r   Ú)test_scene_gate_mixed_valid_and_corruptedzGTestChallengerSceneGateStress.test_scene_gate_mixed_valid_and_corrupted�   s  € à!Ð$;Ñ;ˆÝ˜'¨b°xÐ@Ñ@Ô@Ð@Ø#Ð&7Ñ7ˆ	Ø×Ò˜cÑ"Ô"Ð"åÐ 0µ3°w±<´<ÅÀYÁÄÐ2PÑQÔQˆØŒÐ% #Ð%ˆ #Ò%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ #Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆqÑ%Ô%Ð%Õ%Ô%ˆqÑ%Ô%Ð%Ð%Õ%Ô%ˆÑ%Ô%Õ%Ô% #Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØŒzÐ"˜UÐ"ˆz˜UÐ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆz˜UÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆqÑ"Ô"Ð"Õ"Ô"ˆqÑ"Ô"Ð"Ð"Õ"Ô"ˆzÑ"Ô"Õ"Ô"˜UÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØÔ!Ð2 ]Ð2Ð! ]Ò2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð! ]Ð2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2ˆqÑ2Ô2Ð2Õ2Ô2ˆqÑ2Ô2Ð2Ð2Õ2Ô2Ð!Ñ2Ô2Õ2Ô2 ]Ñ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2r   N)Ú__name__Ú
__module__Ú__qualname__rƒ   r“   r™   r­   r±   © r   r   rM   rM   M   sb   € € € € € ð-ð -ð -ð6ð 6ð 6ð8ð 8ð 8ð`ð `ð `ð
3ð 
3ð 
3ð 
3ð 
3r   rM   c                   ó`   — e Zd Zej                             dg d¢¦  «        d„ ¦   «         Zd„ ZdS )Ú"TestChallengerShotGateFrozenStressÚframe_count)r…   r   éð   c                 ó’  — |d|› d�z  }t          ||dd¬¦  «         dD �]&}t          d|› �t          |¦  «        d|¬	¦  «        }|j        }d
}||k    }|sÈt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }	t	          j
        d|j        › d�¦  «        dz   d|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚dx}x}}|j        }d}||u }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚dx}x}}|j        }d}||u}|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚dx}x}}d„ |j        j        D ¦   «         }t#          |¦  «        }|s·t	          j
        d|j        j        › �¦  «        dz   d t          j        ¦   «         v st	          j        t"          ¦  «        rt	          j	        t"          ¦  «        nd t	          j	        |¦  «        t	          j	        |¦  «        d!œz  }t          t	          j        |¦  «        ¦  «        ‚dx}}�Œ(dS )"zŸ
        Frozen video across multiple durations (2s, 5s, 10s):
        MUST dock >= 0.35, capping score <= 0.65, approved=False, action='RETAKE_SHOT'.
        Úfrozen_zf.mp4r%   )éŒ   r)   r    ©r?   rC   rD   rO   Úshot_frozen_Únone)Úshot_idÚ
video_pathÚexpected_characterrS   çÍÌÌÌÌÌä?©ú<=©z5%(py2)s
{%(py2)s = %(py0)s.overall_score
} <= %(py5)srX   rY   úScore z# exceeds 0.65 cap for frozen video!r]   r^   NFr_   ra   rb   rc   rU   rd   re   )z5%(py2)s
{%(py2)s = %(py0)s.shot_eval
} is not %(py5)sc              3   ó   K  — | ]}d |v V — Œ	dS ©ÚFrozenNrµ   ©Ú.0Úds     r   ú	<genexpr>z[TestChallengerShotGateFrozenStress.test_shot_gate_frozen_penalty_and_cap.<locals>.<genexpr>¨   ó&   è è € ÐIÐI¨�x 1�}ÐIÐIÐIÐIÐIÐIr   zNo Frozen defect in z.
>assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}Úany©rZ   r[   rh   )rK   r   r   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   Ú	shot_evalÚvisual_defectsrÐ   )ry   r   r¸   Úfrozen_filerz   rX   r{   r|   r}   r~   r   Ú@py_format5s               r   Ú%test_shot_gate_frozen_penalty_and_capzHTestChallengerShotGateFrozenStress.test_shot_gate_frozen_penalty_and_cap“   s÷  € ð &Ð(D°+Ð(DÐ(DÐ(DÑDˆÝ˜+°+ÀHÐTcÐdÑdÔdÐdà)ð 	ñ 	ˆFÝ"Ø4 {Ð4Ð4Ý˜{Ñ+Ô+Ø#)Ø#ð	ñ ô ˆAð ”?Ði dÐi�? dÒ*ÐiÐiÐiÕiÔiÐiÐiÐiÐi�? dÐiÑiÔiÐiÕiÔiÑiÔiÐiÐiÕiÔi�1ÑiÔiÐiÕiÔi�1ÑiÔiÐiÐiÕiÔi�?ÑiÔiÕiÔi dÑiÔiÐiÐiÑiÐiÕiÔiÐ,i°Q´_Ð,iÐ,iÐ,iÑiÔiÐiÑiÐiÐiÐiÑiÐiÕiÕiÔiÐiÑiÔiÑiÔiÐiÐiÐiÐiÐiÐiÐiØ”:Ð& Ð&�: Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&�: Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&�1Ñ&Ô&Ð&Õ&Ô&�1Ñ&Ô&Ð&Ð&Õ&Ô&�:Ñ&Ô&Õ&Ô& Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÔ%Ð6¨Ð6Ð%¨Ò6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6Ð%¨Ð6Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6�1Ñ6Ô6Ð6Õ6Ô6�1Ñ6Ô6Ð6Ð6Õ6Ô6Ð%Ñ6Ô6Õ6Ô6¨Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ø”;Ð* dÐ*�; dÐ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*�; dÐ*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*�1Ñ*Ô*Ð*Õ*Ô*�1Ñ*Ô*Ð*Ð*Õ*Ô*�;Ñ*Ô*Õ*Ô* dÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØIÐI¨a¬kÔ.HÐIÑIÔIÐ~•3ÐIÑIÔIÐ~ÐIÐ~Õ~Ô~ÐK~ÐbcÔbmÔb|ÐK~ÐK~Ñ~Ô~Ð~Ñ~Ð~Õ~Ô~Ñ~Ô~Ð~Ð~Õ~Ô~•3Ñ~Ô~Ð~Õ~Ô~•3Ñ~Ô~Ð~Ð~Õ~Ô~ÐIÑ~Ô~Õ~Ô~ÐIÑ~Ô~Ð~Ð~Ñ~Ð~Õ~Õ~Ô~Ð~Ñ~Ô~Ñ~Ô~Ð~Ð~Ð~Ð~Ð~Ñ~ð	ð 	r   c                 ó2  — t          g d¢¦  «        D �]ƒ\  }}|d|› d�z  }t          |dd|¬¦  «         t          d|› �t          |¦  «        ¦  «        }|j        }d}||k    }|sªt          j        d	|fd
||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }	dd|	iz  }
t          t          j        |
¦  «        ¦  «        ‚dx}x}}|j        }d}||u }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }	dd|	iz  }
t          t          j        |
¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }	dd|	iz  }
t          t          j        |
¦  «        ¦  «        ‚dx}x}}�Œ…dS )zQFrozen videos with various colors (not pure black) must all be penalized <= 0.65.))éÜ   rØ   rØ   )r+   é<   éF   )éd   é´   r   Úfrozen_color_z.mp4rÙ   r%   r½   Ú
shot_fcol_rÃ   rÄ   rÆ   rX   rY   rb   r^   NFr_   ra   rc   rU   rd   )Ú	enumeraterK   r   r   rk   rl   rm   rn   ro   rp   rq   rs   rt   ru   rv   )ry   r   ÚidxÚcolÚprX   r{   r|   r}   r~   r   s              r   Ú%test_shot_gate_frozen_bright_and_darkzHTestChallengerShotGateFrozenStress.test_shot_gate_frozen_bright_and_darkª   s  € å!Ð"RÐ"RÐ"RÑSÔSð 	7ñ 	7‰HˆC�ØÐ";°#Ð";Ð";Ð";Ñ;ˆAÝ˜a¨B°XÀSÐIÑIÔIÐIÝ"Ð#5°Ð#5Ð#5µs¸1±v´vÑ>Ô>ˆAØ”?Ð* dÐ*�? dÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*�? dÐ*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*�1Ñ*Ô*Ð*Õ*Ô*�1Ñ*Ô*Ð*Ð*Õ*Ô*�?Ñ*Ô*Õ*Ô* dÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ø”:Ð& Ð&�: Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&�: Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&�1Ñ&Ô&Ð&Õ&Ô&�1Ñ&Ô&Ð&Ð&Õ&Ô&�:Ñ&Ô&Õ&Ô& Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÔ%Ð6¨Ð6Ð%¨Ò6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6Ð%¨Ð6Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6�1Ñ6Ô6Ð6Õ6Ô6�1Ñ6Ô6Ð6Ð6Õ6Ô6Ð%Ñ6Ô6Õ6Ô6¨Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ñ6ð	7ð 	7r   N)r²   r³   r´   ÚpytestÚmarkÚparametrizerÖ   rã   rµ   r   r   r·   r·   ’   sV   € € € € € Ø„[×Ò˜]¨N¨N¨NÑ;Ô;ðð ñ <Ô;ðð,7ð 7ð 7ð 7ð 7r   r·   c                   óB   — e Zd Zed„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )Ú*TestChallengerCharacterContaminationStressc                 óÚ  — t           dz  dz  dz  dz  | _        | j        }|j        } |¦   «         }|s³t          j        d¦  «        dz   dt          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}t          j        t          | j        ¦  «        ¦  «        | _        | j        }d }||u}|s¿t          j        d	|fd
||f¦  «        dt          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }t          j        d¦  «        dz   d|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}d S )NÚ	04_AssetsÚ
charactersÚ01_Main_Protagonistsúthuy_kieu_maiden_16yo_720p.pngz%Thuy Kieu master portrait must exist!zf
>assert %(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.kieu_portrait
}.exists
}()
}Úcls)rZ   r[   rh   Úpy6re   )z4%(py2)s
{%(py2)s = %(py0)s.kieu_img
} is not %(py5)srY   z*Failed to decode Thuy Kieu master portraitr]   r^   )ÚPROJECT_ROOTÚkieu_portraitÚexistsrl   rr   rn   ro   rp   rq   rs   rt   r/   Úimreadr   Úkieu_imgrm   )rî   r{   r}   r�   Ú@py_format7r|   r~   r   s           r   Úsetup_classz6TestChallengerCharacterContaminationStress.setup_classº   s  € å(¨;Ñ6¸ÑEÐH^Ñ^ð  bBñ  BˆÔØÔ ÐRÐ Ô'ÐRÐ'Ð'Ñ)Ô)ÐRÐ)ÐRÕRÔRÐ+RÑRÔRÐRÑRÐRÕRÔRÑRÔRÐRÐRÕRÔRˆsÑRÔRÐRÕRÔRˆsÑRÔRÐRÐRÕRÔRÐ ÑRÔRÕRÔRÐ'ÑRÔRÕRÔRÐ)ÑRÔRÐRÐRÑRÐRÕRÕRÔRÐRÑRÔRÑRÔRÐRÐRÐRÐRÐRÐRÐRÝ”z¥# cÔ&7Ñ"8Ô"8Ñ9Ô9ˆŒØŒ|ÐU 4ÐUˆ| 4Ð'ÐUÐUÐUÕUÔUÐUÐUÐUÐUˆ| 4ÐUÑUÔUÐUÕUÔUÑUÔUÐUÐUÕUÔUˆsÑUÔUÐUÕUÔUˆsÑUÔUÐUÐUÕUÔUˆ|ÑUÔUÕUÔU 4ÑUÔUÐUÐUÑUÐUÕUÔUÐ)UÑUÔUÐUÑUÐUÐUÐUÑUÐUÕUÕUÔUÐUÑUÔUÑUÔUÐUÐUÐUÐUÐUÐUÐUÐUÐUr   c                 óT	  — |dz  }| j         j        dd…         \  }}t          j        t	          |¦  «        t          j        dŽ d||f¦  «        }t          d¦  «        D ]}|                     | j         ¦  «         Œ|                     ¦   «          t          dt	          |¦  «        d¬	¦  «        }|j
        }d
}	||	k    }
|
sÈt          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }t          j        d|j
        › d�¦  «        dz   d|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}
}	|j        }|j        }
d}|
|u }|s½t          j        d|fd|
|f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}
x}}|j        }d}	||	u }
|
sªt          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}
}	|j        }d}	||	k    }
|
sªt          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}
}	d„ |j        j        D ¦   «         }t3          |¦  «        }
|
s•dd t          j        ¦   «         v st          j        t2          ¦  «        rt          j        t2          ¦  «        nd t          j        |¦  «        t          j        |
¦  «        d!œz  }t%          t          j        |¦  «        ¦  «        ‚dx}}
dS )"u|   ThÃºy Kiá»�u video evaluated as VÆ°Æ¡ng Ã”ng: MUST detect cross-contamination, char_match=False, score <= 0.50, RETAKE_SHOT.ztk_static_as_vo.mp4Nr(   r$   r   r…   Úshot_test_voÚ	vuong_ong©rÂ   ç      à?rÄ   rÆ   rX   rY   rÇ   z) exceeds 0.50 for cross-contaminated shotr]   r^   Fr_   ©zV%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.shot_eval
}.character_match
} is %(py7)srg   ri   rj   ra   rb   rc   rU   rd   c              3   óB   K  — | ]}d |                      ¦   «         v V — ŒdS ©zcross-contaminationN©ÚlowerrË   s     r   rÎ   zwTestChallengerCharacterContaminationStress.test_contamination_static_portrait_evaluated_as_vuong_ong.<locals>.<genexpr>Ï   ó0   è è € ÐZÐZ¸!Ð(¨A¯GªG©I¬IÐ5ÐZÐZÐZÐZÐZÐZr   ú,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}rÐ   rÑ   ©rô   Úshaper/   r1   r   r0   r2   r=   r>   r   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   rÒ   Úcharacter_matchru   rv   rÓ   rÐ   ©ry   r   Úvid_pÚhÚwrF   Ú_rX   r{   r|   r}   r~   r   r€   r�   r‚   rÕ   s                    r   Ú9test_contamination_static_portrait_evaluated_as_vuong_ongzdTestChallengerCharacterContaminationStress.test_contamination_static_portrait_evaluated_as_vuong_ongÁ   s  € àÐ"7Ñ7ˆØŒ}Ô" 2 A 2Ô&‰ˆˆ1ÝŒo�c %™jœj­#Ô*@À&Ð*IÈ2ÐPQÐSTÈvÑVÔVˆÝ�r‘”ð 	%ð 	%ˆAØ�IŠI�d”mÑ$Ô$Ð$Ð$Ø�Š‰Œˆå˜~­s°5©z¬zÈkÐZÑZÔZˆØŒÐk $Ðkˆ $Ò&ÐkÐkÐkÕkÔkÐkÐkÐkÐkˆ $ÐkÑkÔkÐkÕkÔkÑkÔkÐkÐkÕkÔkˆqÑkÔkÐkÕkÔkˆqÑkÔkÐkÐkÕkÔkˆÑkÔkÕkÔk $ÑkÔkÐkÐkÑkÐkÕkÔkÐ(k°´Ð(kÐ(kÐ(kÑkÔkÐkÑkÐkÐkÐkÑkÐkÕkÕkÔkÐkÑkÔkÑkÔkÐkÐkÐkÐkÐkÐkÐkØŒ{Ð3ˆ{Ô*Ð3¨eÐ3Ð*¨eÐ3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3Ð*¨eÐ3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3ˆqÑ3Ô3Ð3Õ3Ô3ˆqÑ3Ô3Ð3Ð3Õ3Ô3ˆ{Ñ3Ô3Õ3Ô3Ð*Ñ3Ô3Õ3Ô3¨eÑ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ØŒzÐ"˜UÐ"ˆz˜UÐ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆz˜UÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆqÑ"Ô"Ð"Õ"Ô"ˆqÑ"Ô"Ð"Ð"Õ"Ô"ˆzÑ"Ô"Õ"Ô"˜UÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØÔ!Ð2 ]Ð2Ð! ]Ò2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð! ]Ð2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2ˆqÑ2Ô2Ð2Õ2Ô2ˆqÑ2Ô2Ð2Ð2Õ2Ô2Ð!Ñ2Ô2Õ2Ô2 ]Ñ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ØZÐZ¸q¼{Ô?YÐZÑZÔZÐZ�sÐZÑZÔZÐZÐZÐZÐZÐZÕZÔZÑZÔZÐZÐZÕZÔZ�sÑZÔZÐZÕZÔZ�sÑZÔZÐZÐZÕZÔZÐZÑZÔZÕZÔZÐZÑZÔZÐZÐZÑZÐZÕZÕZÔZÐZÑZÔZÑZÔZÐZÐZÐZÐZÐZÐZÐZr   c                 óT	  — |dz  }| j         j        dd…         \  }}t          j        t	          |¦  «        t          j        dŽ d||f¦  «        }t          d¦  «        D ]}|                     | j         ¦  «         Œ|                     ¦   «          t          dt	          |¦  «        d¬	¦  «        }|j
        }d
}	||	k    }
|
sÈt          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }t          j        d|j
        › d�¦  «        dz   d|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}
}	|j        }|j        }
d}|
|u }|s½t          j        d|fd|
|f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}
x}}|j        }d}	||	u }
|
sªt          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}
}	|j        }d}	||	k    }
|
sªt          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}
}	d„ |j        j        D ¦   «         }t3          |¦  «        }
|
s•dd t          j        ¦   «         v st          j        t2          ¦  «        rt          j        t2          ¦  «        nd t          j        |¦  «        t          j        |
¦  «        d!œz  }t%          t          j        |¦  «        ¦  «        ‚dx}}
dS )"u|   ThÃºy Kiá»�u video evaluated as VÆ°Æ¡ng Quan: MUST detect cross-contamination, char_match=False, score <= 0.50, RETAKE_SHOT.ztk_static_as_vq.mp4Nr(   r$   r   r…   Úshot_test_vqÚ
vuong_quanrú   rû   rÄ   rÆ   rX   rY   rÇ   z exceeds 0.50r]   r^   Fr_   rü   rg   ri   rj   ra   rb   rc   rU   rd   c              3   óB   K  — | ]}d |                      ¦   «         v V — ŒdS rþ   rÿ   rË   s     r   rÎ   zxTestChallengerCharacterContaminationStress.test_contamination_static_portrait_evaluated_as_vuong_quan.<locals>.<genexpr>ß   r  r   r  rÐ   rÑ   r  r  s                    r   Ú:test_contamination_static_portrait_evaluated_as_vuong_quanzeTestChallengerCharacterContaminationStress.test_contamination_static_portrait_evaluated_as_vuong_quanÑ   s  € àÐ"7Ñ7ˆØŒ}Ô" 2 A 2Ô&‰ˆˆ1ÝŒo�c %™jœj­#Ô*@À&Ð*IÈ2ÐPQÐSTÈvÑVÔVˆÝ�r‘”ð 	%ð 	%ˆAØ�IŠI�d”mÑ$Ô$Ð$Ð$Ø�Š‰Œˆå˜~­s°5©z¬zÈlÐ[Ñ[Ô[ˆØŒÐO $ÐOˆ $Ò&ÐOÐOÐOÕOÔOÐOÐOÐOÐOˆ $ÐOÑOÔOÐOÕOÔOÑOÔOÐOÐOÕOÔOˆqÑOÔOÐOÕOÔOˆqÑOÔOÐOÐOÕOÔOˆÑOÔOÕOÔO $ÑOÔOÐOÐOÑOÐOÕOÔOÐ(O°´Ð(OÐ(OÐ(OÑOÔOÐOÑOÐOÐOÐOÑOÐOÕOÕOÔOÐOÑOÔOÑOÔOÐOÐOÐOÐOÐOÐOÐOØŒ{Ð3ˆ{Ô*Ð3¨eÐ3Ð*¨eÐ3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3Ð*¨eÐ3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3ˆqÑ3Ô3Ð3Õ3Ô3ˆqÑ3Ô3Ð3Ð3Õ3Ô3ˆ{Ñ3Ô3Õ3Ô3Ð*Ñ3Ô3Õ3Ô3¨eÑ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ØŒzÐ"˜UÐ"ˆz˜UÐ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆz˜UÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆqÑ"Ô"Ð"Õ"Ô"ˆqÑ"Ô"Ð"Ð"Õ"Ô"ˆzÑ"Ô"Õ"Ô"˜UÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØÔ!Ð2 ]Ð2Ð! ]Ò2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð! ]Ð2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2ˆqÑ2Ô2Ð2Õ2Ô2ˆqÑ2Ô2Ð2Ð2Õ2Ô2Ð!Ñ2Ô2Õ2Ô2 ]Ñ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ØZÐZ¸q¼{Ô?YÐZÑZÔZÐZ�sÐZÑZÔZÐZÐZÐZÐZÐZÕZÔZÑZÔZÐZÐZÕZÔZ�sÑZÔZÐZÕZÔZ�sÑZÔZÐZÐZÕZÔZÐZÑZÔZÕZÔZÐZÑZÔZÐZÐZÑZÐZÕZÕZÔZÐZÑZÔZÑZÔZÐZÐZÐZÐZÐZÐZÐZr   c                 óè  — |dz  }| j         j        dd…         \  }}t          j        t	          |¦  «        t          j        dŽ d||f¦  «        }t          d¦  «        D ]ª}t          t          j	        |dz  ¦  «        dz  ¦  «        }t          t          j
        |dz  ¦  «        d	z  ¦  «        }t          j        d
d|gdd
|gg¦  «        }	t          j        | j         |	||ft          j        ¬¦  «        }
|                     |
¦  «         Œ«|                     ¦   «          t!          dt	          |¦  «        d¬¦  «        }d„ |j        j        D ¦   «         }t'          |¦  «        }| }|sªt)          j        d¦  «        dz   dt-          j        ¦   «         v st)          j        t&          ¦  «        rt)          j        t&          ¦  «        ndt)          j        |¦  «        t)          j        |¦  «        dœz  }t5          t)          j        |¦  «        ¦  «        ‚dx}x}}d„ |j        j        D ¦   «         }t'          |¦  «        }|s•ddt-          j        ¦   «         v st)          j        t&          ¦  «        rt)          j        t&          ¦  «        ndt)          j        |¦  «        t)          j        |¦  «        dœz  }t5          t)          j        |¦  «        ¦  «        ‚dx}}|j        }|j        }d}||u }|s½t)          j        d|fd||f¦  «        dt-          j        ¦   «         v st)          j        |¦  «        rt)          j        |¦  «        ndt)          j        |¦  «        t)          j        |¦  «        t)          j        |¦  «        dœz  }dd|iz  }t5          t)          j        |¦  «        ¦  «        ‚dx}x}x}}|j        }d}||k    }|sªt)          j        d|fd ||f¦  «        dt-          j        ¦   «         v st)          j        |¦  «        rt)          j        |¦  «        ndt)          j        |¦  «        t)          j        |¦  «        d!œz  }d"d#|iz  }t5          t)          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||u }|sªt)          j        d|fd$||f¦  «        dt-          j        ¦   «         v st)          j        |¦  «        rt)          j        |¦  «        ndt)          j        |¦  «        t)          j        |¦  «        d!œz  }d"d#|iz  }t5          t)          j        |¦  «        ¦  «        ‚dx}x}}|j         }d%}||k    }|sªt)          j        d&|fd'||f¦  «        dt-          j        ¦   «         v st)          j        |¦  «        rt)          j        |¦  «        ndt)          j        |¦  «        t)          j        |¦  «        d!œz  }d"d#|iz  }t5          t)          j        |¦  «        ¦  «        ‚dx}x}}dS )(uÉ   
        Adversarial: ThÃºy Kiá»�u video WITH MICRO-MOTION (not frozen), evaluated as VÆ°Æ¡ng Ã”ng.
        MUST still detect cross-contamination, char_match=False, score <= 0.50, RETAKE_SHOT.
        ztk_moving_as_vo.mp4Nr(   r$   r   r   ç       @é   é   r    r   ©Ú
borderModeÚshot_moving_vorù   rú   c              3   ó   K  — | ]}d |v V — Œ	dS rÉ   rµ   rË   s     r   rÎ   zyTestChallengerCharacterContaminationStress.test_contamination_moving_kieu_video_evaluated_as_vuong_ong.<locals>.<genexpr>ô   rÏ   r   zShould have micro-motionz2
>assert not %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}rÐ   rÑ   c              3   óB   K  — | ]}d |                      ¦   «         v V — ŒdS rþ   rÿ   rË   s     r   rÎ   zyTestChallengerCharacterContaminationStress.test_contamination_moving_kieu_video_evaluated_as_vuong_ong.<locals>.<genexpr>ö   r  r   r  Fr_   rü   rX   rg   ri   rj   rû   rÄ   rÆ   rY   rb   r^   ra   rc   rU   rd   )!rô   r  r/   r1   r   r0   r2   r6   r3   r7   r8   Úfloat32Ú
warpAffineÚBORDER_REFLECTr=   r>   r   rÒ   rÓ   rÐ   rl   rr   rn   ro   rp   rq   rs   rt   r  rm   rk   ru   rv   ©ry   r   r  r  r	  rF   rG   ÚdxÚdyÚMÚshiftedrX   r{   r}   r�   r~   rÕ   r€   r   r‚   r|   s                        r   Ú;test_contamination_moving_kieu_video_evaluated_as_vuong_ongzfTestChallengerCharacterContaminationStress.test_contamination_moving_kieu_video_evaluated_as_vuong_ongá   sS  € ð
  Ð"7Ñ7ˆØŒ}Ô" 2 A 2Ô&‰ˆˆ1ÝŒo�c %™jœj­#Ô*@À&Ð*IÈ2ÐPQÐSTÈvÑVÔVˆÝ�r‘”ð 	ð 	ˆAå•R”V˜A ™G‘_”_ qÑ(Ñ)Ô)ˆBÝ•R”V˜A ™G‘_”_ qÑ(Ñ)Ô)ˆBÝ”
˜Q  2˜J¨¨A¨r¨
Ð3Ñ4Ô4ˆAÝ”n T¤]°A¸¸1°vÍ#ÔJ\Ð]Ñ]Ô]ˆGØ�IŠI�gÑÔÐÐØ�Š‰ŒˆåÐ/µ°U±´ÐP[Ð\Ñ\Ô\ˆàIÐI¨a¬kÔ.HÐIÑIÔIÐe•3ÐIÑIÔIÐeÐIÐIÐeÐIÐeÕeÔeÐKeÑeÔeÐeÑeÐeÕeÔeÑeÔeÐeÐeÕeÔe•3ÑeÔeÐeÕeÔe•3ÑeÔeÐeÐeÕeÔeÐIÑeÔeÕeÔeÐIÑeÔeÐeÐeÑeÐeÕeÕeÔeÐeÑeÔeÑeÔeÐeÐeÐeÐeÐeÐeÐeàZÐZ¸q¼{Ô?YÐZÑZÔZÐZ�sÐZÑZÔZÐZÐZÐZÐZÐZÕZÔZÑZÔZÐZÐZÕZÔZ�sÑZÔZÐZÕZÔZ�sÑZÔZÐZÐZÕZÔZÐZÑZÔZÕZÔZÐZÑZÔZÐZÐZÑZÐZÕZÕZÔZÐZÑZÔZÑZÔZÐZÐZÐZÐZÐZØŒ{Ð3ˆ{Ô*Ð3¨eÐ3Ð*¨eÐ3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3Ð*¨eÐ3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3ˆqÑ3Ô3Ð3Õ3Ô3ˆqÑ3Ô3Ð3Ð3Õ3Ô3ˆ{Ñ3Ô3Õ3Ô3Ð*Ñ3Ô3Õ3Ô3¨eÑ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ØŒÐ& $Ð&ˆ $Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ $Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆqÑ&Ô&Ð&Õ&Ô&ˆqÑ&Ô&Ð&Ð&Õ&Ô&ˆÑ&Ô&Õ&Ô& $Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØŒzÐ"˜UÐ"ˆz˜UÐ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆz˜UÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆqÑ"Ô"Ð"Õ"Ô"ˆqÑ"Ô"Ð"Ð"Õ"Ô"ˆzÑ"Ô"Õ"Ô"˜UÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØÔ!Ð2 ]Ð2Ð! ]Ò2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð! ]Ð2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2ˆqÑ2Ô2Ð2Õ2Ô2ˆqÑ2Ô2Ð2Ð2Õ2Ô2Ð!Ñ2Ô2Õ2Ô2 ]Ñ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2r   c                 ó¾  — |dz  }| j         j        dd…         \  }}t          j        t	          |¦  «        t          j        dŽ d||f¦  «        }t          d¦  «        D ]ª}t          t          j	        |dz  ¦  «        dz  ¦  «        }t          t          j
        |dz  ¦  «        d	z  ¦  «        }t          j        d
d|gdd
|gg¦  «        }	t          j        | j         |	||ft          j        ¬¦  «        }
|                     |
¦  «         Œ«|                     ¦   «          t!          dt	          |¦  «        d¬¦  «        }d„ |j        j        D ¦   «         }t'          |¦  «        }| }|s•ddt)          j        ¦   «         v st-          j        t&          ¦  «        rt-          j        t&          ¦  «        ndt-          j        |¦  «        t-          j        |¦  «        dœz  }t3          t-          j        |¦  «        ¦  «        ‚dx}x}}d„ |j        j        D ¦   «         }t'          |¦  «        }|s•ddt)          j        ¦   «         v st-          j        t&          ¦  «        rt-          j        t&          ¦  «        ndt-          j        |¦  «        t-          j        |¦  «        dœz  }t3          t-          j        |¦  «        ¦  «        ‚dx}}|j        }|j        }d}||u }|s½t-          j        d|fd||f¦  «        dt)          j        ¦   «         v st-          j        |¦  «        rt-          j        |¦  «        ndt-          j        |¦  «        t-          j        |¦  «        t-          j        |¦  «        dœz  }dd|iz  }t3          t-          j        |¦  «        ¦  «        ‚dx}x}x}}|j        }d}||k    }|sªt-          j        d|fd||f¦  «        dt)          j        ¦   «         v st-          j        |¦  «        rt-          j        |¦  «        ndt-          j        |¦  «        t-          j        |¦  «        d œz  }d!d"|iz  }t3          t-          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||u }|sªt-          j        d|fd#||f¦  «        dt)          j        ¦   «         v st-          j        |¦  «        rt-          j        |¦  «        ndt-          j        |¦  «        t-          j        |¦  «        d œz  }d!d"|iz  }t3          t-          j        |¦  «        ¦  «        ‚dx}x}}|j        }d$}||k    }|sªt-          j        d%|fd&||f¦  «        dt)          j        ¦   «         v st-          j        |¦  «        rt-          j        |¦  «        ndt-          j        |¦  «        t-          j        |¦  «        d œz  }d!d"|iz  }t3          t-          j        |¦  «        ¦  «        ‚dx}x}}dS )'uÃ   
        Adversarial: ThÃºy Kiá»�u video WITH MICRO-MOTION (not frozen), evaluated as VÆ°Æ¡ng Quan.
        MUST detect cross-contamination, char_match=False, score <= 0.50, RETAKE_SHOT.
        ztk_moving_as_vq.mp4Nr(   r$   r   r   r  r  r  r    r   r  Úshot_moving_vqr  rú   c              3   ó   K  — | ]}d |v V — Œ	dS rÉ   rµ   rË   s     r   rÎ   zzTestChallengerCharacterContaminationStress.test_contamination_moving_kieu_video_evaluated_as_vuong_quan.<locals>.<genexpr>  rÏ   r   ú0assert not %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}rÐ   rÑ   c              3   óB   K  — | ]}d |                      ¦   «         v V — ŒdS rþ   rÿ   rË   s     r   rÎ   zzTestChallengerCharacterContaminationStress.test_contamination_moving_kieu_video_evaluated_as_vuong_quan.<locals>.<genexpr>  r  r   r  Fr_   rü   rX   rg   ri   rj   rû   rÄ   rÆ   rY   rb   r^   ra   rc   rU   rd   ) rô   r  r/   r1   r   r0   r2   r6   r3   r7   r8   r  r  r  r=   r>   r   rÒ   rÓ   rÐ   rn   ro   rl   rp   rq   rs   rt   r  rm   rk   ru   rv   r  s                        r   Ú<test_contamination_moving_kieu_video_evaluated_as_vuong_quanzgTestChallengerCharacterContaminationStress.test_contamination_moving_kieu_video_evaluated_as_vuong_quanü   sA  € ð
  Ð"7Ñ7ˆØŒ}Ô" 2 A 2Ô&‰ˆˆ1ÝŒo�c %™jœj­#Ô*@À&Ð*IÈ2ÐPQÐSTÈvÑVÔVˆÝ�r‘”ð 	ð 	ˆAÝ•R”V˜A ™G‘_”_ qÑ(Ñ)Ô)ˆBÝ•R”V˜A ™G‘_”_ qÑ(Ñ)Ô)ˆBÝ”
˜Q  2˜J¨¨A¨r¨
Ð3Ñ4Ô4ˆAÝ”n T¤]°A¸¸1°vÍ#ÔJ\Ð]Ñ]Ô]ˆGØ�IŠI�gÑÔÐÐØ�Š‰ŒˆåÐ/µ°U±´ÐP\Ð]Ñ]Ô]ˆØIÐI¨a¬kÔ.HÐIÑIÔIÐI•3ÐIÑIÔIÐIÐIÐIÐIÐIÐIÐIÐIÕIÔIÑIÔIÐIÐIÕIÔI•3ÑIÔIÐIÕIÔI•3ÑIÔIÐIÐIÕIÔIÐIÑIÔIÕIÔIÐIÑIÔIÐIÐIÑIÐIÕIÕIÔIÐIÑIÔIÑIÔIÐIÐIÐIÐIÐIÐIÐIØZÐZ¸q¼{Ô?YÐZÑZÔZÐZ�sÐZÑZÔZÐZÐZÐZÐZÐZÕZÔZÑZÔZÐZÐZÕZÔZ�sÑZÔZÐZÕZÔZ�sÑZÔZÐZÐZÕZÔZÐZÑZÔZÕZÔZÐZÑZÔZÐZÐZÑZÐZÕZÕZÔZÐZÑZÔZÑZÔZÐZÐZÐZÐZÐZØŒ{Ð3ˆ{Ô*Ð3¨eÐ3Ð*¨eÐ3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3Ð*¨eÐ3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3ˆqÑ3Ô3Ð3Õ3Ô3ˆqÑ3Ô3Ð3Ð3Õ3Ô3ˆ{Ñ3Ô3Õ3Ô3Ð*Ñ3Ô3Õ3Ô3¨eÑ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ØŒÐ& $Ð&ˆ $Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ $Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆqÑ&Ô&Ð&Õ&Ô&ˆqÑ&Ô&Ð&Ð&Õ&Ô&ˆÑ&Ô&Õ&Ô& $Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØŒzÐ"˜UÐ"ˆz˜UÐ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆz˜UÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆqÑ"Ô"Ð"Õ"Ô"ˆqÑ"Ô"Ð"Ð"Õ"Ô"ˆzÑ"Ô"Õ"Ô"˜UÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØÔ!Ð2 ]Ð2Ð! ]Ò2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð! ]Ð2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2ˆqÑ2Ô2Ð2Õ2Ô2ˆqÑ2Ô2Ð2Ð2Õ2Ô2Ð!Ñ2Ô2Õ2Ô2 ]Ñ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2r   c                 ó  — |dz  }| j         j        dd…         \  }}t          j        t	          |¦  «        t          j        dŽ d||f¦  «        }t          d¦  «        D ]}|                     | j         ¦  «         Œ|                     ¦   «          t          dt	          |¦  «        d¬	¦  «        }|j
        }|j        }	d
}
|	|
u }|s½t          j        d|fd|	|
f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}	x}}
|j        }d}||k    }	|	sªt          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}	}t          dt	          |¦  «        d¬	¦  «        }|j
        }|j        }	d
}
|	|
u }|s½t          j        d|fd|	|
f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}	x}}
|j        }d}||k    }	|	sªt          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}	}dS )ua   Robustness: expected_character with spaces or capital letters ('  VÆ°Æ¡ng Ã”ng  ', 'VUONG_QUAN').ztk_static_as_vo_case.mp4Nr(   r$   r   r…   Ú
shot_vo_wsz  vuong_ong  rú   Fr_   rü   Úv1rg   ri   rj   rû   rÄ   rÆ   rY   rb   r^   Úshot_vq_upperÚ
VUONG_QUANÚv2)rô   r  r/   r1   r   r0   r2   r=   r>   r   rÒ   r  rl   rm   rn   ro   rp   rq   rs   rt   rk   )ry   r   r  r  r	  rF   r
  r+  r{   r}   r€   r�   r   r‚   r|   r~   r.  s                    r   Ú4test_contamination_with_whitespace_and_case_variantsz_TestChallengerCharacterContaminationStress.test_contamination_with_whitespace_and_case_variants  s  € àÐ"<Ñ<ˆØŒ}Ô" 2 A 2Ô&‰ˆˆ1ÝŒo�c %™jœj­#Ô*@À&Ð*IÈ2ÐPQÐSTÈvÑVÔVˆÝ�r‘”ð 	%ð 	%ˆAØ�IŠI�d”mÑ$Ô$Ð$Ð$Ø�Š‰Œˆõ   ­c°%©j¬jÈ_Ð]Ñ]Ô]ˆØŒ|Ð4ˆ|Ô+Ð4¨uÐ4Ð+¨uÐ4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð+¨uÐ4Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4ˆrÑ4Ô4Ð4Õ4Ô4ˆrÑ4Ô4Ð4Ð4Õ4Ô4ˆ|Ñ4Ô4Õ4Ô4Ð+Ñ4Ô4Õ4Ô4¨uÑ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ØÔÐ' 4Ð'Ð 4Ò'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð 4Ð'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆrÑ'Ô'Ð'Õ'Ô'ˆrÑ'Ô'Ð'Ð'Õ'Ô'ÐÑ'Ô'Õ'Ô' 4Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'õ   µ°U±´ÐP\Ð]Ñ]Ô]ˆØŒ|Ð4ˆ|Ô+Ð4¨uÐ4Ð+¨uÐ4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð+¨uÐ4Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4ˆrÑ4Ô4Ð4Õ4Ô4ˆrÑ4Ô4Ð4Ð4Õ4Ô4ˆ|Ñ4Ô4Õ4Ô4Ð+Ñ4Ô4Õ4Ô4¨uÑ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ØÔÐ' 4Ð'Ð 4Ò'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð 4Ð'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆrÑ'Ô'Ð'Õ'Ô'ˆrÑ'Ô'Ð'Ð'Õ'Ô'ÐÑ'Ô'Õ'Ô' 4Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'r   N)
r²   r³   r´   Úclassmethodrö   r  r  r"  r(  r/  rµ   r   r   rè   rè   ¹   s�   € € € € € ØðVð Vñ „[ðVð[ð [ð [ð [ð [ð [ð 3ð 3ð 3ð63ð 3ð 3ð0(ð (ð (ð (ð (r   rè   c                   ó   — e Zd Zd„ ZdS )Ú%TestChallengerLegitimateCharacterPassc                 ó’
  — t           dz  dz  dz  dz  }t          j        t          |¦  «        ¦  «        }|j        dd…         \  }}|dz  }t          j        t          |¦  «        t          j        dŽ d	||f¦  «        }t          d
¦  «        D ]¥}t          t          j
        |dz  ¦  «        dz  ¦  «        }	t          t          j        |dz  ¦  «        dz  ¦  «        }
t          j        dd|	gdd|
gg¦  «        }t          j        ||||ft          j        ¬¦  «        }|                     |¦  «         Œ¦|                     ¦   «          t#          dt          |¦  «        d¬¦  «        }|j        }|j        }d}||u }|s½t)          j        d|fd||f¦  «        dt-          j        ¦   «         v st)          j        |¦  «        rt)          j        |¦  «        ndt)          j        |¦  «        t)          j        |¦  «        t)          j        |¦  «        dœz  }dd|iz  }t5          t)          j        |¦  «        ¦  «        ‚dx}x}x}}d„ |j        j        D ¦   «         }t;          |¦  «        }| }|s•ddt-          j        ¦   «         v st)          j        t:          ¦  «        rt)          j        t:          ¦  «        ndt)          j        |¦  «        t)          j        |¦  «        dœz  }t5          t)          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt)          j        d |fd!||f¦  «        dt-          j        ¦   «         v st)          j        |¦  «        rt)          j        |¦  «        ndt)          j        |¦  «        t)          j        |¦  «        d"œz  }d#d$|iz  }t5          t)          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||u }|sªt)          j        d|fd%||f¦  «        dt-          j        ¦   «         v st)          j        |¦  «        rt)          j        |¦  «        ndt)          j        |¦  «        t)          j        |¦  «        d"œz  }d#d$|iz  }t5          t)          j        |¦  «        ¦  «        ‚dx}x}}|j         }d&}||k    }|sªt)          j        d'|fd(||f¦  «        dt-          j        ¦   «         v st)          j        |¦  «        rt)          j        |¦  «        ndt)          j        |¦  «        t)          j        |¦  «        d"œz  }d#d$|iz  }t5          t)          j        |¦  «        ¦  «        ‚dx}x}}dS ))uq   Oracle check: Bona fide ThÃºy Kiá»�u video with motion evaluated as ThÃºy Kiá»�u MUST pass without contamination.rê   rë   rì   rí   Nr(   zgenuine_kieu_pass.mp4r$   r   r   r  é
   é   r    r   r  Úshot_genuine_kieuÚ	thuy_kieurú   Tr_   rü   rX   rg   ri   rj   c              3   óB   K  — | ]}d |                      ¦   «         v V — ŒdS rþ   rÿ   rË   s     r   rÎ   zkTestChallengerLegitimateCharacterPass.test_thuy_kieu_video_evaluated_as_thuy_kieu_passes.<locals>.<genexpr>?  s0   è è € Ð^Ð^¸aÐ,°·²±	´	Ð9Ð^Ð^Ð^Ð^Ð^Ð^r   r&  rÐ   rÑ   gš™™™™™é?)ú>=)z5%(py2)s
{%(py2)s = %(py0)s.overall_score
} >= %(py5)srY   rb   r^   ra   ÚAPPROVErU   rd   )!rð   r/   ró   r   r  r1   r0   r2   r6   r3   r7   r8   r  r  r  r=   r>   r   rÒ   r  rl   rm   rn   ro   rp   rq   rs   rt   rÓ   rÐ   rk   ru   rv   )ry   r   rñ   rô   r  r	  r  rF   rG   r  r  r   r!  rX   r{   r}   r€   r�   r   r‚   r~   r|   s                         r   Ú2test_thuy_kieu_video_evaluated_as_thuy_kieu_passeszXTestChallengerLegitimateCharacterPass.test_thuy_kieu_video_evaluated_as_thuy_kieu_passes-  s±  € å$ {Ñ2°\ÑAÐDZÑZÐ]}Ñ}ˆÝ”:�c -Ñ0Ô0Ñ1Ô1ˆØŒ~˜b˜q˜bÔ!‰ˆˆ1àÐ"9Ñ9ˆÝŒo�c %™jœj­#Ô*@À&Ð*IÈ2ÐPQÐSTÈvÑVÔVˆÝ�r‘”ð 	ð 	ˆAÝ•R”V˜A ™G‘_”_ rÑ)Ñ*Ô*ˆBÝ•R”V˜A ™G‘_”_ qÑ(Ñ)Ô)ˆBÝ”
˜Q  2˜J¨¨A¨r¨
Ð3Ñ4Ô4ˆAÝ”n X¨q°1°a°&ÅSÔEWÐXÑXÔXˆGØ�IŠI�gÑÔÐÐØ�Š‰ŒˆåÐ2µC¸±J´JÐS^Ð_Ñ_Ô_ˆØŒ{Ð2ˆ{Ô*Ð2¨dÐ2Ð*¨dÐ2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð*¨dÐ2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2ˆqÑ2Ô2Ð2Õ2Ô2ˆqÑ2Ô2Ð2Ð2Õ2Ô2ˆ{Ñ2Ô2Õ2Ô2Ð*Ñ2Ô2Õ2Ô2¨dÑ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ø^Ð^À1Ä;ÔC]Ð^Ñ^Ô^Ð^•3Ð^Ñ^Ô^Ð^Ð^Ð^Ð^Ð^Ð^Ð^Ð^Õ^Ô^Ñ^Ô^Ð^Ð^Õ^Ô^•3Ñ^Ô^Ð^Õ^Ô^•3Ñ^Ô^Ð^Ð^Õ^Ô^Ð^Ñ^Ô^Õ^Ô^Ð^Ñ^Ô^Ð^Ð^Ñ^Ð^Õ^Õ^Ô^Ð^Ñ^Ô^Ñ^Ô^Ð^Ð^Ð^Ð^Ð^Ð^Ð^ØŒÐ& $Ð&ˆ $Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ $Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆqÑ&Ô&Ð&Õ&Ô&ˆqÑ&Ô&Ð&Ð&Õ&Ô&ˆÑ&Ô&Õ&Ô& $Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØŒzÐ!˜TÐ!ˆz˜TÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆz˜TÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆqÑ!Ô!Ð!Õ!Ô!ˆqÑ!Ô!Ð!Ð!Õ!Ô!ˆzÑ!Ô!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ØÔ!Ð. YÐ.Ð! YÒ.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð! YÐ.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆqÑ.Ô.Ð.Õ.Ô.ˆqÑ.Ô.Ð.Ð.Õ.Ô.Ð!Ñ.Ô.Õ.Ô. YÑ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.r   N)r²   r³   r´   r;  rµ   r   r   r2  r2  ,  s#   € € € € € ð/ð /ð /ð /ð /r   r2  Ú__main__z-v)r   r   r   r   r   r   )(Ú__doc__Úbuiltinsrn   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterl   ÚosÚsysÚtempfiler   Úpathlibr   rä   Únumpyr3   r/   Ú__file__ÚresolveÚparentrð   ÚpathÚinsertr   Úantigravity_critic_gater   r   r   r   r	   r
   Úfixturer   rK   rM   r·   rè   r2  r²   Úmainrµ   r   r   ú<module>rO     s<  ððð ð. € € € € € € € € € € € € €	€	€	€	Ø 
€
€
€
Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø 
€
€
€
àˆt�H‰~Œ~×%Ò%Ñ'Ô'Ô.Ô5€Ø „‡‚��3�3�|Ð&>Ñ>Ñ?Ô?Ñ @Ô @Ð @ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð €„�iÐ Ñ Ô ð5ð 5ñ !Ô ð5ðð  ð ð ð ð ð0>3ð >3ð >3ð >3ð >3ñ >3ô >3ð >3ðJ 7ð  7ð  7ð  7ð  7ñ  7ô  7ð  7ðNl(ð l(ð l(ð l(ð l(ñ l(ô l(ð l(ðf/ð /ð /ð /ð /ñ /ô /ð /ð2 ˆzÒÐØ€F„K�˜4Ð Ñ!Ô!Ð!Ð!Ð!ð Ðr   