
    Fa%                     \   % S SK r S SKrS SKrS SKJrJrJrJrJr  \\	\4   r
\\ R                  \ R                  \ R                  \\ R                  \ R                  \ R                  \ R                  \ R                  \ R                  \ R                  \ R                  \ R                  \ R                  \ R                  \\4   rSq\\S'   \R"                  " SS9S\	S\	S\ R                  4S	 j5       r\R&                  rSS
 jr\\l        S\ R                  S\\	   4S jrSS jr  SS\ R                  S\S\S\\ R                     4S jjrS\ R2                  S\4S jrS\ R2                  S\
4S jrS\
S\4S jrS\ R2                  S\4S jrS\ R2                  S\
4S jrS\
S\4S jrg)    N)AnyDictIteratorOptionalTupleF_any_missing)maxsizeklassnamereturnc                     Ub  US:X  a  g [         R                  " X5      nUc  [         R                  " SU  SU S35        SqU$ )NNonez[SanitySaver] Couldn't find 'T)	unrealsdk
FindObjectLogr   )r
   r   objs      ^Z:\mnt\Skyabridged\SteamLibrary\steamapps\common\Borderlands 2\sdk_mods\SanitySaver\helpers.pycached_obj_findr      sM    |tv~


u
+C {4UG1TF!DEJ    c                  ^    [         (       a  [        R                  " S5        Sq [        5         g )Nz [SanitySaver] Cleared Part CacheF)r   r   r   _old_cache_clear r   r   _new_cache_clearr   1   s    |89Lr   r   c                 .    U c  S $ U R                  U 5      $ N)PathNamer   s    r   safe_pathnamer   =   s    ;45CLL$55r   c                      [         R                  " 5       R                  S5       H  n [        R                  " U 5        M     g )N
)	traceback
format_excsplitr   r   )lines    r   log_tracebackr&   A   s,    $$&,,T2d 3r   inv_managerinclude_itemsinclude_weaponsc              #     #    [        5       n/ nU(       a  UR                  U R                  5        U(       a  UR                  U R                  5        U H3  nUc  M  XS;  a  UR	                  U5        Uv   UR
                  nUb  M+  M5     U R                   H  nUR                  R                  S:w  a#  U(       a  XS;  a  UR	                  U5        Uv   M@  UR                  R                  S:X  d  M\  U(       d  Me  XS;  d  Ml  UR	                  U5        Uv   M     U R                  S:  a  U R                  U R                  4nU H  nUc  M  UR                  R                  S:w  a#  U(       a  XS;  a  UR	                  U5        Uv   ME  UR                  R                  S:X  d  Ma  U(       d  Mj  XS;  d  Mq  UR	                  U5        Uv   M     g g 7f)NWillowWeapon   )setappend	ItemChainInventoryChainadd	InventoryBackpackClassNameRoleBackpackInventoryBeingEquipped EquippedInventoryGoingToBackpack)r'   r(   r)   seenchain_startsitemtransitionss          r   get_all_items_and_weaponsr=   F   sl    
 5DLK112K667
>>D	   $$::??n,4CSHHTNJZZ__.??tGWHHTNJ % !6688
  D|zz.0]tGW
N24K[
   s8   AG)GA(G4G=GB G(G1G8Gc                 |   U R                   U R                  U R                  U R                  U R                  U R
                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                   4$ r   )ItemDefinitionBalanceDefinitionManufacturerDefinitionManufacturerGradeIndexAlphaItemPartDefinitionBetaItemPartDefinitionGammaItemPartDefinitionDeltaItemPartDefinitionEpsilonItemPartDefinitionZetaItemPartDefinitionEtaItemPartDefinitionThetaItemPartDefinitionMaterialItemPartDefinitionPrefixItemNamePartDefinitionTitleItemNamePartDefinition	GameStageUniqueIdr   s    r   expand_item_definition_datarP   q   s    """"##""####%%""!!##&&((''# r   c                    0 S[        U R                  5      _S[        U R                  5      _S[        U R                  5      _SU R                  _S[        U R
                  5      _S[        U R                  5      _S[        U R                  5      _S[        U R                  5      _S	[        U R                  5      _S
[        U R                  5      _S[        U R                  5      _S[        U R                  5      _S[        U R                  5      _S[        U R                  5      _S[        U R                  5      _SU R                   _SU R"                  _$ )Nr?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   )r   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   r   s    r   pack_item_definition_datarR      s|   -(:(:;]3+@+@A 	!-0J0J"K 	!#"<"<	
 	"=1L1L#M 	!-0J0J"K 	"=1L1L#M 	"=1L1L#M 	$]33P3P%Q 	!-0J0J"K 	 s/H/H!I 	"=1L1L#M 	%mC4R4R&S 	'c6V6V(W 	&}S5T5T'U  	S]]!" 	CLL# r   datac                    [        SU S   5      [        SU S   5      [        SU S   5      U S   [        SU S   5      [        SU S   5      [        SU S	   5      [        SU S
   5      [        SU S   5      [        SU S   5      [        SU S   5      [        SU S   5      [        SU S   5      [        SU S   5      [        SU S   5      U S   U S   4$ )Nr?   InventoryBalanceDefinitionr@   rA   rB   ItemPartDefinitionrC   rD   rE   rF   rG   rH   rI   rJ   rK   ItemNamePartDefinitionrL   rM   rN   rO   r   rS   s    r   unpack_item_definition_datarZ      s   ($/?*@A4d;N6OP0$7O2PQ%&,d3L.MN,d3K.LM,d3L.MN,d3L.MN,d3N.OP,d3K.LM,d3J.KL,d3L.MN,d3O.PQ0$7U2VW0$7T2UV[Z# r   c                 |   U R                   U R                  U R                  U R                  U R                  U R
                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                   4$ r   )WeaponTypeDefinitionr@   rA   rB   BodyPartDefinitionGripPartDefinitionBarrelPartDefinitionSightPartDefinitionStockPartDefinitionElementalPartDefinitionAccessory1PartDefinitionAccessory2PartDefinitionMaterialPartDefinitionPrefixPartDefinitionTitlePartDefinitionrN   rO   r   s    r   expand_weapon_definition_datarh      s      """"  ##$$$$""  # r   c                    0 S[        U R                  5      _S[        U R                  5      _S[        U R                  5      _SU R                  _S[        U R
                  5      _S[        U R                  5      _S[        U R                  5      _S[        U R                  5      _S	[        U R                  5      _S
[        U R                  5      _S[        U R                  5      _S[        U R                  5      _S[        U R                  5      _S[        U R                  5      _S[        U R                  5      _SU R                   _SU R"                  _$ )Nr\   r@   rA   rB   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rN   rO   )r   r\   r@   rA   rB   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rN   rO   r   s    r   pack_weapon_definition_datarj      s|   c.F.F G]3+@+@A 	!-0J0J"K 	!#"<"<	
 	mC,B,BC 	mC,B,BC 	c.F.F G 	}S-D-DE 	}S-D-DE 	"=1L1L#M 	#M#2N2N$O 	#M#2N2N$O 	!-0J0J"K 	c.F.F G 	}S-D-DE  	S]]!" 	CLL# r   c                    [        SU S   5      [        SU S   5      [        SU S   5      U S   [        SU S   5      [        SU S   5      [        SU S	   5      [        SU S
   5      [        SU S   5      [        SU S   5      [        SU S   5      [        SU S   5      [        SU S   5      [        SU S   5      [        SU S   5      U S   U S   4$ )Nr\   rU   r@   rA   rB   WeaponPartDefinitionr]   r^   r_   r`   ra   rb   rc   rd   re   WeaponNamePartDefinitionrf   rg   rN   rO   rX   rY   s    r   unpack_weapon_definition_datarn      s   .5K0LM4d;N6OP0$7O2PQ%&.5I0JK.5I0JK.5K0LM.5J0KL.5J0KL.5N0OP.5O0PQ.5O0PQ.5M0NO2D9O4PQ2D9N4OP[Z# r   )r   N)TT) r   	functoolsr"   typingr   r   r   r   r   strJSONUObjectintDefDataTupler   bool__annotations__	lru_cacher   cache_clearr   r   r   r&   r=   FStructrP   rR   rZ   rh   rj   rn   r   r   r   <module>r{      s	      7 7CH~!* d  T"3 c i.?.?  # #..  / 6y(( 6Xc] 6  (""(( ( i 	(VY%6%6 < ,9#4#4  ,d | ,y'8'8 \ ,Y%6%6 4 ,  r   