§
    Ÿ¹Àj$  ã                  óà   — d Z ddlmZ ddlZddlmc mZ ddl	Z	ddl
mZmZmZmZmZ ddlZddlmZmZmZmZmZ  G d„ d¦  «        Z G d„ d	¦  «        Z G d
„ d¦  «        Z G d„ d¦  «        ZdS )uE  
Tier 1: Feature Coverage â€” UI HUD Orbs, Minimap, 40-Slot Backpack, Char Creation & i18n.
Covers Features 18, 19, 20, 21 from PROJECT.md Feature Inventory:
- Feature 18: Dual Liquid Orbs & Minimap
- Feature 19: 40-Slot Backpack Inventory
- Feature 20: Character Creation & Randomizer
- Feature 21: Reactive 9-Language i18n
é    )ÚannotationsN)ÚAnyÚDictÚListÚOptionalÚTuple)ÚBACKPACK_CAPACITYÚCANONICAL_CLASSESÚCANONICAL_MARTIAL_NAMESÚSUPPORTED_LOCALESÚSimulatedCocosPlayerc                  óB   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zdd„Zdd	„Z	d
S )Ú!TestTier1DualLiquidOrbsAndMinimapz'Feature 18: Dual Liquid Orbs & Minimap.ÚreturnÚNonec                óP  — d}d}d}t          j        |dz  |dz  z   ¦  «        dz  t          j        |dz  |dz  z
  ¦  «        d	z  z   }||z   }t          |¦  «        }d
}||k    }|sòt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        nd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}||k    }d}||k    }|r|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}x}}d S )Ng      I@g      ð?ç      4@gš™™™™™©?g      @g      @g¸…ëQ¸ž?g       @g      @g      @©ú<=©z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} <= %(py6)sÚabsÚwave_offset©Úpy0Úpy1Úpy3Úpy6úassert %(py8)sÚpy8g     €E@g     €L@)r   r   )z%(py1)s <= %(py4)sz%(py4)s <= %(py6)sÚy_wave)r   Úpy4r   )ÚmathÚsinÚcosr   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanation)ÚselfÚy_fillÚtÚxr   r    Ú@py_assert2Ú@py_assert5Ú@py_assert4Ú@py_format7Ú@py_format9Ú@py_assert0Ú@py_assert3s                úBC:\Projects\FreeExile\tests\e2e_cocos\test_tier1_ui_and_systems.pyÚ+test_t1_f18_sinusoidal_liquid_wave_equationzMTestTier1DualLiquidOrbsAndMinimap.test_t1_f18_sinusoidal_liquid_wave_equation   s{  € àˆØˆØˆÝ”h˜q 4™x¨!¨c©'Ñ1Ñ2Ô2°SÑ8½4¼8ÀAÈÁHÈqÐSVÉwÑDVÑ;WÔ;WÐZ]Ñ;]Ñ]ˆØ˜+Ñ%ˆÝ�;ÑÔÐ& 3Ð&Ð 3Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð 3Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&�sÑ&Ô&Ð&Õ&Ô&�sÑ&Ô&Ð&Ð&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&�;Ñ&Ô&Ð&Õ&Ô&�;Ñ&Ô&Ð&Ð&Õ&Ô&ÐÑ&Ô&Õ&Ô& 3Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÐ%ˆt�vÒ%Ð% Ð%�v Ò%Ð%Ð%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%Ð%ˆt�v Ð%Ñ%Ô%Õ%Ô%ˆtÑ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%�vÑ%Ô%Ð%Õ%Ô%�vÑ%Ô%Ð%Ð%Õ%Ô% Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ó    c                óÂ  — d}d}d}||z  dk     }||z  dk     }d}||u }|s—t          j        d|fd||f¦  «        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}}d}||u }|s—t          j        d|fd||f¦  «        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}}d S )Ng      Y@g      >@r   g      Ð?F©Úis©z%(py0)s is %(py3)sÚis_safe_alert©r   r   úassert %(py5)sÚpy5TÚis_danger_alert©r%   r&   r'   r(   r)   r*   r+   r,   )
r-   Úmax_hpÚhp_safeÚ	hp_dangerr?   rC   r1   Ú@py_assert1Ú@py_format4Ú@py_format6s
             r8   Ú6test_t1_f18_low_hp_alert_vignette_threshold_25_percentzXTestTier1DualLiquidOrbsAndMinimap.test_t1_f18_low_hp_alert_vignette_threshold_25_percent&   s¹  € ØˆØˆØˆ	Ø  6Ñ)¨TÒ1ˆØ$ vÑ-°Ò5ˆØ %Ð%ˆ} Ð%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ} Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆ}Ñ%Ô%Ð%Õ%Ô%ˆ}Ñ%Ô%Ð%Ð%Õ%Ô% Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ø"&Ð&ˆ $Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ $Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆÑ&Ô&Ð&Õ&Ô&ˆÑ&Ô&Ð&Ð&Õ&Ô& $Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&r:   c                ó¤  — d\  }}d}||k    }|s—t          j        d|fd||f¦  «        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}}d	}||k    }|s—t          j        d|fd||f¦  «        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}}d S )N)éx   éP   rM   ©ú==©z%(py0)s == %(py3)sÚ	minimap_wr@   rA   rB   rN   Ú	minimap_hrD   )r-   rR   rS   r1   rH   rI   rJ   s          r8   Ú.test_t1_f18_minimap_viewport_dimensions_120x80zPTestTier1DualLiquidOrbsAndMinimap.test_t1_f18_minimap_viewport_dimensions_120x80/   s•  € Ø&Ñˆ	�9ØÐˆy˜CÒÐÐÐÕÔÐÐÐÐˆy˜CÐÑÔÐÕÔÑÔÐÐÕÔˆyÑÔÐÕÔˆyÑÔÐÐÕÔ˜CÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆy˜BŠÐÐÐÕÔÐÐÐÐˆy˜BÐÑÔÐÕÔÑÔÐÐÕÔˆyÑÔÐÕÔˆyÑÔÐÐÕÔ˜BÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐr:   c                ó$  — dddddœ}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )Nz#ffffffz#10b981z#ef4444z#f59e0b)ÚplayerÚwaypointÚ	boss_gateÚpoirV   rO   ©z%(py1)s == %(py4)s©r   r!   úassert %(py6)sr   rX   ©r%   r&   r*   r+   r,   )r-   Úblip_colorsr6   r7   r1   Ú@py_format5r4   s          r8   Ú-test_t1_f18_minimap_radar_blip_color_mappingszOTestTier1DualLiquidOrbsAndMinimap.test_t1_f18_minimap_radar_blip_color_mappings4   st  € àØ!Ø"Øð	
ð 
ˆð ˜8Ô$Ð1¨	Ð1Ð$¨	Ò1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð$¨	Ð1Ñ1Ô1Õ1Ô1Ð$Ñ1Ô1Õ1Ô1¨	Ñ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ø˜;Ô'Ð4¨9Ð4Ð'¨9Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð'¨9Ð4Ñ4Ô4Õ4Ô4Ð'Ñ4Ô4Õ4Ô4¨9Ñ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Ð4r:   c                óÖ  — ddddœ}|d         }|d         }d}||k    }|s—t          j        d|fd||f¦  «        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}}|d         }d}||k    }|s—t          j        d|fd||f¦  «        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}}d S )Nr   é   é   )Ú
UNEXPLOREDÚEXPLORED_FOGGEDÚVISIBLErd   rf   rO   rQ   Útile_fogr@   rA   rB   re   rD   )r-   Ú
fog_statesrg   r1   rH   rI   rJ   s          r8   Ú3test_t1_f18_fog_of_war_three_states_and_transitionszUTestTier1DualLiquidOrbsAndMinimap.test_t1_f18_fog_of_war_three_states_and_transitions>   s¸  € Ø$%¸!ÈÐJÐJˆ
Ø˜lÔ+ˆà˜iÔ(ˆØÐˆx˜1Š}ÐÐÐÕÔÐÐÐÐˆx˜1ÐÑÔÐÕÔÑÔÐÐÕÔˆxÑÔÐÕÔˆxÑÔÐÐÕÔ˜1ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐàÐ/Ô0ˆØÐˆx˜1Š}ÐÐÐÕÔÐÐÐÐˆx˜1ÐÑÔÐÕÔÑÔÐÐÕÔˆxÑÔÐÕÔˆxÑÔÐÐÕÔ˜1ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐr:   c                ó�  — d}d\  }}d}d}t           j        }|d         }||z
  }|d         }	|	|z
  }
 |||
¦  «        }||k    }|�s”t          j        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nd	t          j        |¦  «        t          j        |¦  «        d
t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd
t          j        |	¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}x}x}	x}
x}}t           j        }|d         }||z
  }|d         }	|	|z
  }
 |||
¦  «        }||k    }|�s”t          j        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nd	t          j        |¦  «        t          j        |¦  «        d
t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd
t          j        |	¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}x}x}	x}
x}}d S )Ng       @)é
   rk   )é   é   )é   rn   r   rb   r   )zo%(py12)s
{%(py12)s = %(py2)s
{%(py2)s = %(py0)s.hypot
}((%(py4)s - %(py5)s), (%(py8)s - %(py9)s))
} <= %(py14)sr"   Úplayer_xÚplayer_yÚreveal_radius)r   Úpy2r!   rB   r   Úpy9Úpy12Úpy14zassert %(py16)sÚpy16)ú>)zn%(py12)s
{%(py12)s = %(py2)s
{%(py2)s = %(py0)s.hypot
}((%(py4)s - %(py5)s), (%(py8)s - %(py9)s))
} > %(py14)s)
r"   Úhypotr%   r&   r'   r(   r)   r*   r+   r,   )r-   rq   ro   rp   Ú	tile_nearÚtile_farrH   r7   Ú@py_assert6Ú@py_assert7Ú@py_assert10Ú@py_assert11Ú@py_assert13Ú@py_format15Ú@py_format17s                  r8   Ú.test_t1_f18_fog_reveal_circular_radius_8_tileszPTestTier1DualLiquidOrbsAndMinimap.test_t1_f18_fog_reveal_circular_radius_8_tilesH   s  € ØˆØ#Ñˆ�(Øˆ	ØˆÝŒzÐ\˜) Aœ,Ð\˜,¨Ñ1Ð\°9¸Q´<Ð\°<À(Ñ3JÐ\ˆzˆzÐ1Ð3JÑKÔKÐ\ÐKÈ}Ò\Ð\Ð\Ñ\Õ\Ô\Ð\Ð\Ð\Ð\ÐKÈ}Ð\Ñ\Ô\Ð\Õ\Ô\Ñ\Ô\Ð\Ð\Õ\Ô\�tÑ\Ô\Ð\Õ\Ô\�tÑ\Ô\Ð\Ð\Õ\Ô\ˆzÑ\Ô\Õ\Ô\˜,Ñ\Ô\Ð\Õ\Ô\Ñ\Ô\Ð\Ð\Õ\Ô\¨Ñ\Ô\Ð\Õ\Ô\¨Ñ\Ô\Ð\Ð\Õ\Ô\°<Ñ\Ô\Ð\Õ\Ô\Ñ\Ô\Ð\Ð\Õ\Ô\À(Ñ\Ô\Ð\Õ\Ô\À(Ñ\Ô\Ð\Ð\Õ\Ô\ÐKÑ\Ô\Ð\Õ\Ô\Ñ\Ô\Ð\Ð\Õ\Ô\È}Ñ\Ô\Ð\Õ\Ô\È}Ñ\Ô\Ð\Ð\Ð\Ð\Ñ\Ð\Ð\Ð\Ð\Ð\Ñ\Ð\Õ\Õ\Ô\Ð\Ñ\Ô\Ñ\Ô\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\ÝŒzÐY˜( 1œ+ÐY˜+¨Ñ0ÐY°(¸1´+ÐY°+ÀÑ2HÐYˆzˆzÐ0Ð2HÑIÔIÐYÐIÈMÒYÐYÐYÑYÕYÔYÐYÐYÐYÐYÐIÈMÐYÑYÔYÐYÕYÔYÑYÔYÐYÐYÕYÔY�tÑYÔYÐYÕYÔY�tÑYÔYÐYÐYÕYÔYˆzÑYÔYÕYÔY˜+ÑYÔYÐYÕYÔYÑYÔYÐYÐYÕYÔY¨ÑYÔYÐYÕYÔY¨ÑYÔYÐYÐYÕYÔY°+ÑYÔYÐYÕYÔYÑYÔYÐYÐYÕYÔYÀÑYÔYÐYÕYÔYÀÑYÔYÐYÐYÕYÔYÐIÑYÔYÐYÕYÔYÑYÔYÐYÐYÕYÔYÈMÑYÔYÐYÕYÔYÈMÑYÔYÐYÐYÐYÐYÑYÐYÐYÐYÐYÐYÑYÐYÕYÕYÔYÐYÑYÔYÑYÔYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYr:   N©r   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r9   rK   rT   r`   ri   r‚   © r:   r8   r   r      s˜   € € € € € Ø1Ð1ð&ð &ð &ð &ð'ð 'ð 'ð 'ðð ð ð ð
5ð 5ð 5ð 5ðð ð ð ðZð Zð Zð Zð Zð Zr:   r   c                  óB   — e Zd ZdZdd„Zdd„Zdd„Zdd	„Zdd
„Zdd„Z	dS )Ú!TestTier1BackpackInventory40Slotsz'Feature 19: 40-Slot Backpack Inventory.Úsimulated_playerr   r   r   c                óØ  — |j         }t          |¦  «        }|t          k    }|�s?t          j        d|fd|t          f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}d S )	NrO   )zO%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.inventory
})
} == %(py7)sÚlenr‹   r	   )r   r   r   rB   Úpy7zassert %(py9)srs   )Ú	inventoryr�   r	   r%   r&   r'   r(   r)   r*   r+   r,   )r-   r‹   r1   r3   r{   Ú@py_format8Ú@py_format10s          r8   Ú"test_t1_f19_exact_40_slot_capacityzDTestTier1BackpackInventory40Slots.test_t1_f19_exact_40_slot_capacityT   sm  € Ø#Ô-ÐC�sÐ-Ñ.Ô.ÐCÐ.Õ2CÒCÐCÐCÑCÕCÔCÐCÐCÐCÐCÐ.Õ2CÐCÑCÔCÐCÕCÔCÑCÔCÐCÐCÕCÔC�sÑCÔCÐCÕCÔC�sÑCÔCÐCÐCÐCÕCÔCÑCÔCÐCÐCÕCÔCÐ#ÑCÔCÐCÕCÔCÐ#ÑCÔCÐCÐCÕCÔCÐ-ÑCÔCÕCÔCÐ.ÑCÔCÐCÕCÔCÑCÔCÐCÐCÕCÔCÕ2CÑCÔCÐCÕCÔCÕ2CÑCÔCÐCÐCÐCÐCÑCÐCÐCÐCÐCÐCÑCÐCÕCÕCÔCÐCÑCÔCÑCÔCÐCÐCÐCÐCÐCÐCÐCÐCÐCr:   c                óð  — ddddœ}|                      |¦  «        \  }}d}||u }|s—t          j        d|fd||f¦  «        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}}d}||k    }|s—t          j        d|fd||f¦  «        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}}|j	        d         d         }	d}
|	|
k    }|slt          j        d|fd|	|
f¦  «        t          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}	x}}
d S )NÚbloodstone_t1u   Huyáº¿t Há»“n Tháº¡chÚMAGIC)ÚidÚnameÚrarityTr<   r>   Úsuccessr@   rA   rB   r   rO   rQ   Úslot_idxr–   rZ   r[   r\   r   )
Úadd_to_inventoryr%   r&   r'   r(   r)   r*   r+   r,   r�   )r-   r‹   Úitemr™   rš   r1   rH   rI   rJ   r6   r7   r_   r4   s                r8   Ú/test_t1_f19_item_insertion_first_available_slotzQTestTier1BackpackInventory40Slots.test_t1_f19_item_insertion_first_available_slotW   sd  € Ø%Ð/FÐRYÐZÐZˆØ,×=Ò=¸dÑCÔCÑˆ�ØÐˆw˜$ˆÐÐÐÕÔÐÐÐÐˆw˜$ÐÑÔÐÕÔÑÔÐÐÕÔˆwÑÔÐÕÔˆwÑÔÐÐÕÔ˜$ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆx˜1Š}ÐÐÐÕÔÐÐÐÐˆx˜1ÐÑÔÐÕÔÑÔÐÐÕÔˆxÑÔÐÕÔˆxÑÔÐÐÕÔ˜1ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÔ)¨!Ô,¨TÔ2ÐE°oÐEÐ2°oÒEÐEÐEÐEÕEÔEÐEÐEÐEÐEÐ2°oÐEÑEÔEÕEÔEÐ2ÑEÔEÕEÔE°oÑEÔEÐEÐEÑEÐEÐEÐEÐEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEÐEÐEÐEÐEÐEÐEr:   c                ór  — t          d¦  «        D �]�}|                     dd|› �i¦  «        \  }}d}||u }|s—t          j        d|fd||f¦  «        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}}||k    }|sÂt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }	dd|	iz  }
t          t          j	        |
¦  «        ¦  «        ‚d }�Œ‘|j
        d         d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|j
        d         }d }||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}d S )Né   r–   Úitem_Tr<   r>   r™   r@   rA   rB   rO   )z%(py0)s == %(py2)srš   Úi©r   rr   úassert %(py4)sr!   é   Úitem_4rZ   r[   r\   r   )z%(py1)s is %(py4)s)Úranger›   r%   r&   r'   r(   r)   r*   r+   r,   r�   )r-   r‹   r¡   r™   rš   r1   rH   rI   rJ   Ú@py_format3r_   r6   r7   r4   s                 r8   Ú2test_t1_f19_item_insertion_fills_consecutive_slotszTTestTier1BackpackInventory40Slots.test_t1_f19_item_insertion_fills_consecutive_slots^   sD  € Ý�q‘”ð 	!ñ 	!ˆAØ 0× AÒ AÀ4ÈÐQRÈÈÐBUÑ VÔ VÑˆG�XØ"Ð"�7˜d�?Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"�7˜dÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�7Ñ"Ô"Ð"Õ"Ô"�7Ñ"Ô"Ð"Ð"Õ"Ô"˜dÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ø˜q’=Ð Ð Ð Õ Ô Ð Ð Ð Ð �8˜qÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô �8Ñ Ô Ð Õ Ô �8Ñ Ô Ð Ð Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˜qÑ Ô Ð Õ Ô ˜qÑ Ô Ð Ð Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ñ ØÔ)¨!Ô,¨TÔ2Ð>°hÐ>Ð2°hÒ>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð2°hÐ>Ñ>Ô>Õ>Ô>Ð2Ñ>Ô>Õ>Ô>°hÑ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ØÔ)¨!Ô,Ð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Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4r:   c                ó,  — t          t          ¦  «        D ]}|                     dd|› �i¦  «         Œddi}|                     |¦  «        \  }}d}||u }|s—t          j        d|fd||f¦  «        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}}d }||u }|s—t          j        d|fd||f¦  «        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}}d S )Nr–   r    Úoverflow_itemFr<   r>   r™   r@   rA   rB   rš   )r¦   r	   r›   r%   r&   r'   r(   r)   r*   r+   r,   )
r-   r‹   r¡   rª   r™   rš   r1   rH   rI   rJ   s
             r8   Ú3test_t1_f19_backpack_overflow_rejection_at_capacityzUTestTier1BackpackInventory40Slots.test_t1_f19_backpack_overflow_rejection_at_capacityf   sê  € åÕ(Ñ)Ô)ð 	Cð 	CˆAØ×-Ò-¨t°[¸Q°[°[Ð.AÑBÔBÐBÐBà˜Ð/ˆØ,×=Ò=¸mÑLÔLÑˆ�ØÐˆw˜%ÐÐÐÐÕÔÐÐÐÐˆw˜%ÐÑÔÐÕÔÑÔÐÐÕÔˆwÑÔÐÕÔˆwÑÔÐÐÕÔ˜%ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆx˜4ÐÐÐÐÕÔÐÐÐÐˆx˜4ÐÑÔÐÕÔÑÔÐÐÕÔˆxÑÔÐÕÔˆxÑÔÐÐÕÔ˜4ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐr:   c                ó$  — dddddœ}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )Nzborder-gray-500zborder-blue-500zborder-amber-500zborder-red-600)ÚCOMMONr•   ÚRAREÚMYTHICr®   rO   rZ   r[   r\   r   r¯   r]   )r-   Úrarity_border_classesr6   r7   r1   r_   r4   s          r8   Ú!test_t1_f19_rarity_border_classeszCTestTier1BackpackInventory40Slots.test_t1_f19_rarity_border_classesp   s}  € à'Ø&Ø&Ø&ð	!
ð !
Ðð % VÔ,ÐBÐ0BÐBÐ,Ð0BÒBÐBÐBÐBÕBÔBÐBÐBÐBÐBÐ,Ð0BÐBÑBÔBÕBÔBÐ,ÑBÔBÕBÔBÐ0BÑBÔBÐBÐBÑBÐBÐBÐBÐBÐBÑBÐBÕBÕBÔBÐBÑBÔBÑBÔBÐBÐBÐBÐBÐBÐBÐBØ$ XÔ.ÐBÐ2BÐBÐ.Ð2BÒBÐBÐBÐBÕBÔBÐBÐBÐBÐBÐ.Ð2BÐBÑBÔBÕBÔBÐ.ÑBÔBÕBÔBÐ2BÑBÔBÐBÐBÑBÐBÐBÐBÐBÐBÑBÐBÕBÕBÔBÐBÑBÔBÑBÔBÐBÐBÐBÐBÐBÐBÐBÐBÐBr:   c                ó"  — ddddœ}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )N)rb   rb   )rc   é   )rc   r¤   )Ú
bloodstoneÚhelmetÚtwo_handed_scyther´   rO   rZ   r[   r\   r   r¶   r]   )r-   Ú
item_sizesr6   r7   r1   r_   r4   s          r8   Ú-test_t1_f19_item_grid_sizes_dimension_supportzOTestTier1BackpackInventory40Slots.test_t1_f19_item_grid_sizes_dimension_supportz   sr  € à ØØ!'ð
ð 
ˆ
ð
 ˜,Ô'Ð1¨6Ð1Ð'¨6Ò1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð'¨6Ð1Ñ1Ô1Õ1Ô1Ð'Ñ1Ô1Õ1Ô1¨6Ñ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ØÐ-Ô.Ð8°&Ð8Ð.°&Ò8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð.°&Ð8Ñ8Ô8Õ8Ô8Ð.Ñ8Ô8Õ8Ô8°&Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8r:   N)r‹   r   r   r   rƒ   )
r„   r…   r†   r‡   r’   r�   r¨   r«   r±   r¸   rˆ   r:   r8   rŠ   rŠ   Q   sž   € € € € € Ø1Ð1ðDð Dð Dð DðFð Fð Fð Fð5ð 5ð 5ð 5ð ð  ð  ð  ðCð Cð Cð Cð9ð 9ð 9ð 9ð 9ð 9r:   rŠ   c                  óB   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zdd„Zdd	„Z	d
S )Ú'TestTier1CharacterCreationAndRandomizerz,Feature 20: Character Creation & Randomizer.r   r   c                ó"  — t          t          ¦  «        }d}||k    }|süt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nddt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}d	}|t          v }|s¦t          j        d
|fd|t          f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}}d}|t          v }|s¦t          j        d
|fd|t          f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}}d S )Né   rO   ©z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr�   r
   r   r   r   Úchar_sword_master©Úin©z%(py1)s in %(py3)s©r   r   rA   rB   Úchar_shadow_assassin)
r�   r
   r%   r&   r'   r(   r)   r*   r+   r,   ©	r-   r1   r2   r3   r4   r5   r6   rI   rJ   s	            r8   Ú)test_t1_f20_six_canonical_martial_classeszQTestTier1CharacterCreationAndRandomizer.test_t1_f20_six_canonical_martial_classes‡   s½  € ÝÕ$Ñ%Ô%Ð*¨Ð*Ð%¨Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð%¨Ð*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*�sÑ*Ô*Ð*Õ*Ô*�sÑ*Ô*Ð*Ð*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*Õ$Ñ*Ô*Ð*Õ*Ô*Õ$Ñ*Ô*Ð*Ð*Õ*Ô*Ð%Ñ*Ô*Õ*Ô*¨Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ø"Ð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Õ&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Ø%Ð:Ð%Õ):Ð:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð%Õ):Ð:Ñ:Ô:Õ:Ô:Ð%Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:Õ):Ñ:Ô:Ð:Õ:Ô:Õ):Ñ:Ô:Ð:Ð:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:r:   c                ó�  — t          t          ¦  «        }d}||k    }|süt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nddt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}d	}|t          v }|s¦t          j        d
|fd|t          f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}}d}|t          v }|s¦t          j        d
|fd|t          f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}}d}|t          v }|s¦t          j        d
|fd|t          f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}}d S )Nrl   rO   r½   r�   r   r   r   r   õ   Ä�á»™c CÃ´ Báº¡ir¿   rÁ   rÂ   rA   rB   õ   Huyáº¿t VÃ´ áº¢nhu   SÃ¡t Cá»‘t Ma)
r�   r   r%   r&   r'   r(   r)   r*   r+   r,   rÄ   s	            r8   Ú-test_t1_f20_twelve_canonical_vietnamese_nameszUTestTier1CharacterCreationAndRandomizer.test_t1_f20_twelve_canonical_vietnamese_namesŒ   sƒ  € ÝÕ*Ñ+Ô+Ð1¨rÐ1Ð+¨rÒ1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð+¨rÐ1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1�sÑ1Ô1Ð1Õ1Ô1�sÑ1Ô1Ð1Ð1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1Õ*Ñ1Ô1Ð1Õ1Ô1Õ*Ñ1Ô1Ð1Ð1Õ1Ô1Ð+Ñ1Ô1Õ1Ô1¨rÑ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ø!Ð<Ð!Õ%<Ð<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð!Õ%<Ð<Ñ<Ô<Õ<Ô<Ð!Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<Õ%<Ñ<Ô<Ð<Õ<Ô<Õ%<Ñ<Ô<Ð<Ð<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ø"Ð=Ð"Õ&=Ð=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=Ð"Õ&=Ð=Ñ=Ô=Õ=Ô=Ð"Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=Õ&=Ñ=Ô=Ð=Õ=Ô=Õ&=Ñ=Ô=Ð=Ð=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=ØÐ9ˆÕ"9Ð9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9ˆÕ"9Ð9Ñ9Ô9Õ9Ô9ˆÑ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9Õ"9Ñ9Ô9Ð9Õ9Ô9Õ"9Ñ9Ô9Ð9Ð9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9r:   c                ó(  — dd l }|                     d¦  «        }|                     t          ¦  «        }|t          v }|sÑt	          j        d|fd|t          f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        nddœz  }dd	|iz  }t          t	          j        |¦  «        ¦  «        ‚d }d S )
Nr   é*   r¿   ©z%(py0)s in %(py2)sÚrolled_namer   r¢   r£   r!   )ÚrandomÚRandomÚchoicer   r%   r&   r'   r(   r)   r*   r+   r,   )r-   rÎ   ÚrngrÍ   rH   r§   r_   s          r8   Ú+test_t1_f20_random_name_dice_pool_selectionzSTestTier1CharacterCreationAndRandomizer.test_t1_f20_random_name_dice_pool_selection’   s  € ØˆˆˆØ�mŠm˜BÑÔˆØ—j’jÕ!8Ñ9Ô9ˆØÕ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Ô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Ô5Ð5Ð5Ð5Ð5Ð5r:   c                óŠ  — dd„}d} ||¦  «        }| }|s‹ddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d
} ||¦  «        }|s‹ddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }t          t          j        |¦  «        ¦  «        ‚d x}}d}d}||z  } ||¦  «        }|sžd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}x}}d}d}||z  } ||¦  «        }| }	|	sžd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}x}x}}	d S )Nr—   Ústrr   Úboolc                ó<   — dt          | ¦  «        cxk    odk    nc S )Nr³   é   )r�   )r—   s    r8   Úvalidate_namezhTestTier1CharacterCreationAndRandomizer.test_t1_f20_name_length_validation_bounds.<locals>.validate_name™   s*   € Ø�˜D™	œ	Ð'Ð'Ò'Ð' RÒ'Ð'Ð'Ð'Ð'r:   ÚABz0assert not %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}rØ   )r   rr   r!   rÇ   z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}ÚAr×   z8assert %(py7)s
{%(py7)s = %(py0)s((%(py2)s * %(py4)s))
})r   rr   r!   rŽ   é   z<assert not %(py7)s
{%(py7)s = %(py0)s((%(py2)s * %(py4)s))
})r—   rÔ   r   rÕ   )r'   r(   r%   r)   r*   r+   r,   )r-   rØ   rH   r7   r2   rJ   r_   r{   r�   Ú@py_assert8r5   s              r8   Ú)test_t1_f20_name_length_validation_boundszQTestTier1CharacterCreationAndRandomizer.test_t1_f20_name_length_validation_bounds˜   s.  € ð	(ð 	(ð 	(ð 	(ð "&Ð&�=�= Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&�=Ñ&Ô&Ð&Õ&Ô&�=Ñ&Ô&Ð&Ð&Õ&Ô& Ñ&Ô&Õ&Ô&Ð&Ñ&Ô&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ø/Ð0ˆ}ˆ}Ð/Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0ˆ}Ñ0Ô0Ð0Õ0Ô0ˆ}Ñ0Ô0Ð0Ð0Õ0Ô0Ð/Ñ0Ô0Õ0Ô0Ð0Ñ0Ô0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ø Ð& 2Ð&˜S 2™XÐ&ˆ}ˆ}˜XÑ&Ô&Ð&Ð&Ð&Ð&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆ}Ñ&Ô&Ð&Õ&Ô&ˆ}Ñ&Ô&Ð&Ð&Õ&Ô&˜SÑ&Ô&Õ&Ô& 2Ñ&Ô&Õ&Ô&Ð&Ñ&Ô&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ø!$Ð* rÐ*  r¡Ð*�=�= Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*�=Ñ*Ô*Ð*Õ*Ô*�=Ñ*Ô*Ð*Ð*Õ*Ô* Ñ*Ô*Õ*Ô* rÑ*Ô*Õ*Ô*Ð*Ñ*Ô*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*r:   c                ó>  — ddh}d}d}||v }|sÂt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d }||v}|sÂt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d }d S )NrÇ   rÈ   u   Máº¡c Váº¥n ThiÃªnr¿   rÌ   Únew_name_dupeÚexisting_namesr¢   r£   r!   )únot in)z%(py0)s not in %(py2)sÚnew_name_okrD   )r-   rà   rß   râ   rH   r§   r_   s          r8   Ú$test_t1_f20_duplicate_name_rejectionzLTestTier1CharacterCreationAndRandomizer.test_t1_f20_duplicate_name_rejection¡   sã  € Ø,Ð.AÐBˆØ*ˆØ*ˆØ Ð.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.ˆ} Ð.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆ}Ñ.Ô.Ð.Õ.Ô.ˆ}Ñ.Ô.Ð.Ð.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô. Ñ.Ô.Ð.Õ.Ô. Ñ.Ô.Ð.Ð.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ø .Ð0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0ˆ{ .Ð0Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0ˆ{Ñ0Ô0Ð0Õ0Ô0ˆ{Ñ0Ô0Ð0Ð0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0 .Ñ0Ô0Ð0Õ0Ô0 .Ñ0Ô0Ð0Ð0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0r:   c                ór  — d }|pt           d         }d}||k    }|s—t          j        d|fd||f¦  «        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}}d S )	Nr   r¾   rO   rQ   Úselected_classr@   rA   rB   )	r
   r%   r&   r'   r(   r)   r*   r+   r,   )r-   Úrequested_classrå   r1   rH   rI   rJ   s          r8   Ú&test_t1_f20_default_archetype_fallbackzNTestTier1CharacterCreationAndRandomizer.test_t1_f20_default_archetype_fallback¨   sâ   € ØˆØ(Ð@Õ,=¸aÔ,@ˆØ!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Ô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Ð4r:   Nrƒ   )
r„   r…   r†   r‡   rÅ   rÉ   rÒ   rÝ   rã   rç   rˆ   r:   r8   rº   rº   „   s’   € € € € € Ø6Ð6ð;ð ;ð ;ð ;ð
:ð :ð :ð :ð6ð 6ð 6ð 6ð+ð +ð +ð +ð1ð 1ð 1ð 1ð5ð 5ð 5ð 5ð 5ð 5r:   rº   c                  óB   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zdd„Zdd	„Z	d
S )Ú!TestTier1ReactiveLocalizationI18nz%Feature 21: Reactive 9-Language i18n.r   r   c                ó  — t          t          ¦  «        }d}||k    }|süt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nddt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}d	D ]à}|t          v }|sÑt          j        d
|fd|t          f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚d }Œád S )Né	   rO   r½   r�   r   r   r   r   )	ÚviÚenÚzhÚjaÚkoÚthÚdeÚruÚesr¿   rÌ   Úlocr¢   r£   r!   )
r�   r   r%   r&   r'   r(   r)   r*   r+   r,   )
r-   r1   r2   r3   r4   r5   rõ   rH   r§   r_   s
             r8   Ú.test_t1_f21_nine_canonical_languages_supportedzPTestTier1ReactiveLocalizationI18n.test_t1_f21_nine_canonical_languages_supported±   s(  € ÝÕ$Ñ%Ô%Ð*¨Ð*Ð%¨Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð%¨Ð*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*�sÑ*Ô*Ð*Õ*Ô*�sÑ*Ô*Ð*Ð*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*Õ$Ñ*Ô*Ð*Õ*Ô*Õ$Ñ*Ô*Ð*Ð*Õ*Ô*Ð%Ñ*Ô*Õ*Ô*¨Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØIð 	,ð 	,ˆCØÕ+Ð+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+�3Õ+Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+�3Ñ+Ô+Ð+Õ+Ô+�3Ñ+Ô+Ð+Ð+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+Õ+Ñ+Ô+Ð+Õ+Ô+Õ+Ñ+Ô+Ð+Ð+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+ð	,ð 	,r:   c                óÊ  ‡‡— dŠdŠdˆˆfd„} |d¦  «         d}‰|k    }|s—t          j        d	|fd
‰|f¦  «        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}}d}‰|k    }|s—t          j        d	|fd
‰|f¦  «        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}}d S )Nr   rì   Ú
new_localerÔ   r   r   c                ó   •— | Šd S ©Nrˆ   )rø   Úcurrent_localeÚreloads_counts    €€r8   Ú
set_localezgTestTier1ReactiveLocalizationI18n.test_t1_f21_in_place_atomic_re_render_zero_reload.<locals>.set_localeº   s   ø€ à'ˆNˆNˆNr:   rí   rO   rQ   rû   r@   rA   rB   rü   )rø   rÔ   r   r   rD   )r-   rý   r1   rH   rI   rJ   rû   rü   s         @@r8   Ú1test_t1_f21_in_place_atomic_re_render_zero_reloadzSTestTier1ReactiveLocalizationI18n.test_t1_f21_in_place_atomic_re_render_zero_reload¶   sÍ  øø€ ØˆØˆð	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð
 	ˆ
�4ÑÔÐØ!%Ð%ˆ~ Ò%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ~ Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆ~Ñ%Ô%Ð%Õ%Ô%ˆ~Ñ%Ô%Ð%Ð%Õ%Ô% Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ø !Ð!ˆ} Ò!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ} Ð!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ}Ñ!Ô!Ð!Õ!Ô!ˆ}Ñ!Ô!Ð!Ð!Õ!Ô! Ñ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!r:   c                óè  — dddœdddœdddœdœ}|                      ¦   «         D �]L\  }}d	}||v }|s—t          j        d
|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}}d}||v }|s—t          j        d
|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}}�ŒNd S )Nõ	   VÃ o Gameu   TÃºi Ä‘á»“ Ä‘Ã£ Ä‘áº§y!)Ú	play_gameÚbag_fullz	Play GamezBag is full!u   è¿›å…¥æ¸¸æˆ�u   èƒŒåŒ…å·²æ»¡ï¼�)rì   rí   rî   r  r¿   rÁ   Ú	dict_keysrÂ   rA   rB   r  )	Úitemsr%   r&   r*   r'   r(   r)   r+   r,   )r-   ÚtranslationsÚlangr  r6   r1   rI   rJ   s           r8   Ú-test_t1_f21_translation_dictionary_key_parityzOTestTier1ReactiveLocalizationI18n.test_t1_f21_translation_dictionary_key_parityÃ   sã  € à +Ð9RÐSÐSØ +¸ÐHÐHØ .Ð<MÐNÐNð
ð 
ˆð
  ,×1Ò1Ñ3Ô3ð 	+ñ 	+‰OˆD�)ØÐ+�; )Ð+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+�; )Ð+Ñ+Ô+Õ+Ô+�;Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ )Ñ+Ô+Ð+Õ+Ô+ )Ñ+Ô+Ð+Ð+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+ØÐ*�: Ð*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*�: Ð*Ñ*Ô*Õ*Ô*�:Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô* Ñ*Ô*Ð*Õ*Ô* Ñ*Ô*Ð*Ð*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ñ*ð	+ð 	+r:   c                óÌ  — ddii dœ}d}|d                               ||d                               |¦  «        ¦  «        }d}||k    }|s—t          j        d|fd||f¦  «        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}}d S )NÚrare_keyz
Rare Value)rí   rï   rï   rí   rO   rQ   Úvalr@   rA   rB   )	Úgetr%   r&   r'   r(   r)   r*   r+   r,   )r-   Úlocale_dataÚkeyr
  r1   rH   rI   rJ   s           r8   Ú.test_t1_f21_fallback_to_english_on_missing_keyzPTestTier1ReactiveLocalizationI18n.test_t1_f21_fallback_to_english_on_missing_keyÍ   s  € à˜|Ð,Øð
ð 
ˆð ˆØ˜$Ô×#Ò# C¨°TÔ):×)>Ò)>¸sÑ)CÔ)CÑDÔDˆØ"Ð"ˆs�lÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆs�lÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆsÑ"Ô"Ð"Õ"Ô"ˆsÑ"Ô"Ð"Ð"Õ"Ô"�lÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"r:   c                óz  ‡— g Šdˆfd„} |d¦  «         dg}‰|k    }|s—t          j        d|fd‰|f¦  «        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}}d S )NÚnew_langrÔ   r   r   c                ó2   •— ‰                      | ¦  «         d S rú   )Úappend)r  Úsubscribers_notifieds    €r8   Úon_locale_changezpTestTier1ReactiveLocalizationI18n.test_t1_f21_event_subscription_observer_notification.<locals>.on_locale_changeÙ   s   ø€ Ø ×'Ò'¨Ñ1Ô1Ð1Ð1Ð1r:   rò   rO   rQ   r  r@   rA   rB   )r  rÔ   r   r   rD   )r-   r  r1   rH   rI   rJ   r  s         @r8   Ú4test_t1_f21_event_subscription_observer_notificationzVTestTier1ReactiveLocalizationI18n.test_t1_f21_event_subscription_observer_notificationÖ   s  ø€ Ø!Ðð	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	Ð˜ÑÔÐØ(, vÐ-Ð# vÒ-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð# vÐ-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-Ð#Ñ-Ô-Ð-Õ-Ô-Ð#Ñ-Ô-Ð-Ð-Õ-Ô- vÑ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-r:   c                óˆ  — g d¢}|D �]9}|                      ¦   «         }t          |¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd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
}||k    }|sòt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd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 )N)r   u   Khá»Ÿi SinhÚPlayÚStartrc   r   r   r�   Úwordsr   r   r   rl   Úlabel)
Úsplitr�   r%   r&   r'   r(   r)   r*   r+   r,   )	r-   Úbutton_labelsr  r  r1   r2   r3   r4   r5   s	            r8   Ú(test_t1_f21_microcopy_length_constraintszJTestTier1ReactiveLocalizationI18n.test_t1_f21_microcopy_length_constraintsà   sk  € àEÐEÐEˆØ"ð 	$ñ 	$ˆEØ—K’K‘M”MˆEÝ�u‘:”:Ð" Ð"�: ’?Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"�: Ð"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"•3Ñ"Ô"Ð"Õ"Ô"•3Ñ"Ô"Ð"Ð"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�uÑ"Ô"Ð"Õ"Ô"�uÑ"Ô"Ð"Ð"Õ"Ô"�:Ñ"Ô"Õ"Ô" Ñ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ý�u‘:”:Ð# Ð#�: Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#�: Ð#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#•3Ñ#Ô#Ð#Õ#Ô#•3Ñ#Ô#Ð#Ð#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#�uÑ#Ô#Ð#Õ#Ô#�uÑ#Ô#Ð#Ð#Õ#Ô#�:Ñ#Ô#Õ#Ô# Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ñ#ð	$ð 	$r:   Nrƒ   )
r„   r…   r†   r‡   rö   rþ   r  r  r  r  rˆ   r:   r8   ré   ré   ®   s’   € € € € € Ø/Ð/ð,ð ,ð ,ð ,ð
"ð "ð "ð "ð+ð +ð +ð +ð#ð #ð #ð #ð.ð .ð .ð .ð$ð $ð $ð $ð $ð $r:   ré   )r‡   Ú
__future__r   Úbuiltinsr'   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter%   r"   Útypingr   r   r   r   r   ÚpytestÚtests.e2e_cocos.conftestr	   r
   r   r   r   r   rŠ   rº   ré   rˆ   r:   r8   ú<module>r&     st  ððð ð #Ð "Ð "Ð "Ð "Ð "à  € € € € € € € € € € € € €€€€Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð5Zð 5Zð 5Zð 5Zð 5Zñ 5Zô 5Zð 5Zðp09ð 09ð 09ð 09ð 09ñ 09ô 09ð 09ðf'5ð '5ð '5ð '5ð '5ñ '5ô '5ð '5ðT8$ð 8$ð 8$ð 8$ð 8$ñ 8$ô 8$ð 8$ð 8$ð 8$r:   