Ë
    Ñ—Äj¥@  ã                  óJ  — U d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	 ddl
mZmZ ddlmZ erdd	lmZ d
Zded<    G d„ de«      Zd5d„Zd6d„Zddddddddddœ	Zded<   d7d„Zd5d„Zdd d!d"d#d$d%d&d'd(d)d*d+d,d-œZd.ed/<   ed8d0„«       Zd5d1„Zd8d2„Z e«       Zd5d3„Zd9d4„ZdgZ y):zWindows.é    )ÚannotationsN)Úcache)ÚPath)ÚTYPE_CHECKINGÚFinalé   )ÚPlatformDirsABC)ÚCallablei @  z
Final[int]Ú_KF_FLAG_DONT_VERIFYc                  ó  — e Zd ZdZed d„«       Zddœd!d„Zed d„«       Zed d„«       Zed d„«       Z	ed d	„«       Z
ed d
„«       Zed d„«       Zed d„«       Zed d„«       Zed d„«       Zed d„«       Zed d„«       Zed d„«       Zed d„«       Zed d„«       Zed d„«       Zed d„«       Zed d„«       Zed d„«       Zed d„«       Zed d„«       Zed d„«       Zed d„«       Zed d„«       Zed d„«       Zed d„«       Zed d„«       Z y)"ÚWindowsaë  `MSDN on where to store app data files <https://learn.microsoft.com/en-us/windows/win32/shell/knownfolderid>`_.

    Makes use of the `appname <platformdirs.api.PlatformDirsABC.appname>`, `appauthor
    <platformdirs.api.PlatformDirsABC.appauthor>`, `version <platformdirs.api.PlatformDirsABC.version>`, `roaming
    <platformdirs.api.PlatformDirsABC.roaming>`, `opinion <platformdirs.api.PlatformDirsABC.opinion>`, `ensure_exists
    <platformdirs.api.PlatformDirsABC.ensure_exists>`.

    c                ó”   — | j                   rdnd}t        j                  j                  t	        |«      «      }| j                  |«      S )z«Data directory tied to the user, e.g. ``%USERPROFILE%\AppData\Local\$appauthor\$appname`` (not roaming) or ``%USERPROFILE%\AppData\Roaming\$appauthor\$appname`` (roaming).ÚCSIDL_APPDATAÚCSIDL_LOCAL_APPDATA)ÚroamingÚosÚpathÚnormpathÚget_win_folderÚ_append_parts)ÚselfÚconstr   s      úYC:\Users\pivot\Documents\cueki\casual-preloader\Lib\site-packages\platformdirs/windows.pyÚuser_data_dirzWindows.user_data_dir   s<   € ð $(§<¢<‘Ð5JˆÜ�w‰w×Ñ¤¨uÓ 5Ó6ˆØ×!Ñ! $Ó'Ð'ó    N©Úopinion_valuec               ó¼  — g }| j                   rš| j                  dur+| j                  xs | j                   }|j                  |«       |j                  | j                   «       |�| j                  r|j                  |«       | j                  r|j                  | j                  «       t        j                  j                  |g|¢­Ž }| j                  |d¬«       |S )NF©Úprivate)	ÚappnameÚ	appauthorÚappendÚopinionÚversionr   r   ÚjoinÚ_optionally_create_directory)r   r   r   ÚparamsÚauthors        r   r   zWindows._append_parts&   s¦   € ØˆØ�<Š<Ø�~‰~ UÑ*ØŸ™Ò7¨4¯<©<�Ø—‘˜fÔ%Ø�M‰M˜$Ÿ,™,Ô'ØÐ(¨T¯\ª\Ø—‘˜mÔ,Ø�|Š|Ø—‘˜dŸl™lÔ+Ü�w‰w�|‰|˜DÐ* 6Ò*ˆØ×)Ñ)¨$¸Ð)Ô>Øˆr   c                ót   — t         j                  j                  t        d«      «      }| j	                  |«      S )zLData directory shared by users, e.g. ``C:\ProgramData\$appauthor\$appname``.ÚCSIDL_COMMON_APPDATA©r   r   r   r   r   ©r   r   s     r   Úsite_data_dirzWindows.site_data_dir5   s/   € ô �w‰w×Ñ¤Ð/EÓ FÓGˆØ×!Ñ! $Ó'Ð'r   c                ó   — | j                   S )z;Config directory tied to the user, same as `user_data_dir`.©r   ©r   s    r   Úuser_config_dirzWindows.user_config_dir;   ó   € ð ×!Ñ!Ð!r   c                ó   — | j                   S )z:Config directory shared by users, same as `site_data_dir`.©r.   r1   s    r   Úsite_config_dirzWindows.site_config_dir@   r3   r   c                óx   — t         j                  j                  t        d«      «      }| j	                  |d¬«      S )z¤Cache directory tied to the user (if opinionated with ``Cache`` folder within ``$appname``) e.g. ``%USERPROFILE%\AppData\Local\$appauthor\$appname\Cache\$version``.r   ÚCacher   r,   r-   s     r   Úuser_cache_dirzWindows.user_cache_dirE   s4   € ô �w‰w×Ñ¤Ð/DÓ EÓFˆØ×!Ñ! $°gÐ!Ó>Ð>r   c                óx   — t         j                  j                  t        d«      «      }| j	                  |d¬«      S )z\Cache directory shared by users, e.g. ``C:\ProgramData\$appauthor\$appname\Cache\$version``.r+   r8   r   r,   r-   s     r   Úsite_cache_dirzWindows.site_cache_dirK   s4   € ô �w‰w×Ñ¤Ð/EÓ FÓGˆØ×!Ñ! $°gÐ!Ó>Ð>r   c                ó   — | j                   S )z:State directory tied to the user, same as `user_data_dir`.r0   r1   s    r   Úuser_state_dirzWindows.user_state_dirQ   r3   r   c                ó   — | j                   S )z9State directory shared by users, same as `site_data_dir`.r5   r1   s    r   Úsite_state_dirzWindows.site_state_dirV   r3   r   c                óœ   — | j                   }| j                  r3t        j                  j	                  |d«      }| j                  |d¬«       |S )z_Log directory tied to the user, same as `user_data_dir` if not opinionated else ``Logs`` in it.ÚLogsFr   )r   r$   r   r   r&   r'   r-   s     r   Úuser_log_dirzWindows.user_log_dir[   óB   € ð ×!Ñ!ˆØ�<Š<Ü—7‘7—<‘<  fÓ-ˆDØ×-Ñ-¨d¸EÐ-ÔBØˆr   c                óœ   — | j                   }| j                  r3t        j                  j	                  |d«      }| j                  |d¬«       |S )z^Log directory shared by users, same as `site_data_dir` if not opinionated else ``Logs`` in it.rA   Fr   )r.   r$   r   r   r&   r'   r-   s     r   Úsite_log_dirzWindows.site_log_dird   rC   r   c                óR   — t         j                  j                  t        d«      «      S )zFDocuments directory tied to the user e.g. ``%USERPROFILE%\Documents``.ÚCSIDL_PERSONAL©r   r   r   r   r1   s    r   Úuser_documents_dirzWindows.user_documents_dirm   ó   € ô �w‰w×Ñ¤Ð/?Ó @ÓAÐAr   c                óR   — t         j                  j                  t        d«      «      S )zFDownloads directory tied to the user e.g. ``%USERPROFILE%\Downloads``.ÚCSIDL_DOWNLOADSrH   r1   s    r   Úuser_downloads_dirzWindows.user_downloads_dirr   ó   € ô �w‰w×Ñ¤Ð/@Ó AÓBÐBr   c                óR   — t         j                  j                  t        d«      «      S )zDPictures directory tied to the user e.g. ``%USERPROFILE%\Pictures``.ÚCSIDL_MYPICTURESrH   r1   s    r   Úuser_pictures_dirzWindows.user_pictures_dirw   s   € ô �w‰w×Ñ¤Ð/AÓ BÓCÐCr   c                óR   — t         j                  j                  t        d«      «      S )z@Videos directory tied to the user e.g. ``%USERPROFILE%\Videos``.ÚCSIDL_MYVIDEOrH   r1   s    r   Úuser_videos_dirzWindows.user_videos_dir|   ó   € ô �w‰w×Ñ¤¨Ó ?Ó@Ð@r   c                óR   — t         j                  j                  t        d«      «      S )z>Music directory tied to the user e.g. ``%USERPROFILE%\Music``.ÚCSIDL_MYMUSICrH   r1   s    r   Úuser_music_dirzWindows.user_music_dir�   rU   r   c                óR   — t         j                  j                  t        d«      «      S )zCDesktop directory tied to the user, e.g. ``%USERPROFILE%\Desktop``.ÚCSIDL_DESKTOPDIRECTORYrH   r1   s    r   Úuser_desktop_dirzWindows.user_desktop_dir†   s   € ô �w‰w×Ñ¤Ð/GÓ HÓIÐIr   c                óz   — t         j                  j                  t         j                  j                  d«      «      S )zEProjects directory tied to the user, e.g. ``%USERPROFILE%\Projects``.z
~/Projects)r   r   r   Ú
expanduserr1   s    r   Úuser_projects_dirzWindows.user_projects_dir‹   s(   € ô �w‰w×Ñ¤§¡× 2Ñ 2°<Ó @ÓAÐAr   c                óR   — t         j                  j                  t        d«      «      S )z0Public share directory e.g. ``C:\Users\Public``.ÚCSIDL_PUBLICrH   r1   s    r   Úuser_publicshare_dirzWindows.user_publicshare_dir�   s   € ô �w‰w×Ñ¤¨~Ó >Ó?Ð?r   c                óR   — t         j                  j                  t        d«      «      S )zTTemplates directory tied to the user e.g. ``%APPDATA%\Microsoft\Windows\Templates``.ÚCSIDL_TEMPLATESrH   r1   s    r   Úuser_templates_dirzWindows.user_templates_dir•   rN   r   c           	     óˆ   — t         j                  j                  t        t	        t        d«      «      dz  dz  dz  «      «      S )zQFonts directory tied to the user e.g. ``%LOCALAPPDATA%\Microsoft\Windows\Fonts``.r   Ú	Microsoftr   ÚFonts)r   r   r   Ústrr   r   r1   s    r   Úuser_fonts_dirzWindows.user_fonts_dirš   s;   € ô �w‰w×Ñ¤¤D¬Ð8MÓ)NÓ$OÐR]Ñ$]Ð`iÑ$iÐlsÑ$sÓ tÓuÐur   c                ó   — | j                   S )zCPreference directory tied to the user, same as ``user_config_dir``.)r2   r1   s    r   Úuser_preference_dirzWindows.user_preference_dirŸ   s   € ð ×#Ñ#Ð#r   c                óR   — t         j                  j                  t        d«      «      S )zABin directory tied to the user, e.g. ``%LOCALAPPDATA%\Programs``.ÚCSIDL_USER_PROGRAM_FILESrH   r1   s    r   Úuser_bin_dirzWindows.user_bin_dir¤   s   € ô �w‰w×Ñ¤Ð/IÓ JÓKÐKr   c                óŽ   — t         j                  j                  t         j                  j                  t	        d«      d«      «      S )z;Bin directory shared by users, e.g. ``C:\ProgramData\bin``.r+   Úbin)r   r   r   r&   r   r1   s    r   Úsite_bin_dirzWindows.site_bin_dir©   s/   € ô �w‰w×Ñ¤§¡§¡¬^Ð<RÓ-SÐUZÓ [Ó\Ð\r   c                óR   — t         j                  j                  t        d«      «      S )zFApplications directory tied to the user, e.g. ``Start Menu\Programs``.ÚCSIDL_PROGRAMSrH   r1   s    r   Úuser_applications_dirzWindows.user_applications_dir®   rJ   r   c                óR   — t         j                  j                  t        d«      «      S )zfApplications directory shared by users, e.g. ``C:\ProgramData\Microsoft\Windows\Start Menu\Programs``.ÚCSIDL_COMMON_PROGRAMSrH   r1   s    r   Úsite_applications_dirzWindows.site_applications_dir³   s   € ô �w‰w×Ñ¤Ð/FÓ GÓHÐHr   c                ó°   — t         j                  j                  t         j                  j                  t	        d«      d«      «      }| j                  |«      S )zbRuntime directory tied to the user, e.g. ``%USERPROFILE%\AppData\Local\Temp\$appauthor\$appname``.r   ÚTemp)r   r   r   r&   r   r   r-   s     r   Úuser_runtime_dirzWindows.user_runtime_dir¸   s?   € ô �w‰w×Ñ¤§¡§¡¬^Ð<QÓ-RÐTZÓ [Ó\ˆØ×!Ñ! $Ó'Ð'r   c                ó   — | j                   S )z>Runtime directory shared by users, same as `user_runtime_dir`.)rz   r1   s    r   Úsite_runtime_dirzWindows.site_runtime_dir¾   s   € ð ×$Ñ$Ð$r   )Úreturnrh   )r   rh   r   ú
str | Noner}   rh   )!Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr   r   r.   r2   r6   r9   r;   r=   r?   rB   rE   rI   rM   rQ   rT   rX   r[   r^   ra   rd   ri   rk   rn   rq   rt   rw   rz   r|   © r   r   r   r      sK  „ ñð ò(ó ð(ð GKõ ð ò(ó ð(ð
 ò"ó ð"ð ò"ó ð"ð ò?ó ð?ð
 ò?ó ð?ð
 ò"ó ð"ð ò"ó ð"ð òó ðð òó ðð òBó ðBð òCó ðCð òDó ðDð òAó ðAð òAó ðAð òJó ðJð òBó ðBð ò@ó ð@ð òCó ðCð òvó ðvð ò$ó ð$ð òLó ðLð ò]ó ð]ð òBó ðBð òIó ðIð ò(ó ð(ð
 ò%ó ñ%r   r   c                óÔ   — t        | «      }|�|S ddddœj                  | «      }|€d| › �}t        |«      ‚t        j                  j                  |«      x}sd|› �}t        |«      ‚|S )z&Get folder from environment variables.ÚAPPDATAÚALLUSERSPROFILEÚLOCALAPPDATA)r   r+   r   úUnknown CSIDL name: zUnset environment variable: )Ú(get_win_folder_if_csidl_name_not_env_varÚgetÚ
ValueErrorr   Úenviron)Ú
csidl_nameÚresultÚenv_var_nameÚmsgs       r   Úget_win_folder_from_env_varsr’   Ä   sˆ   € ä5°jÓA€FØÐØˆð #Ø 1Ø-ñ÷ 
�cˆ*ƒoð	 ð
 ÐØ$ Z LÐ1ˆÜ˜‹oÐÜ—j‘j—n‘n \Ó2Ð2ˆFÐ2Ø,¨\¨NÐ;ˆÜ˜‹oÐØ€Mr   c                ó~  — t         j                  | «      x}�J|^}}t        j                  j                  t        j                  j                  t        |«      «      g|¢­Ž S | dk(  rPt        j                  j                  d«      xs/ t        t        d«      j                  «       j                  dz  «      S | dk(  r‚t        j                  j	                  t        j                  j                  t        j                  j                  d«      xs# t        j                  j                  d«      xs d	«      d
ddd«      S y)zMGet a folder for a CSIDL name that does not exist as an environment variable.Nr`   ÚPUBLICÚ~ÚPublicrv   ÚPROGRAMDATAr‡   zC:\ProgramDatarf   r   ú
Start MenuÚPrograms)Ú_ENV_VAR_SUBFOLDERSr‹   r   r   r&   r   Ú_non_empty_envr�   rh   r   r]   Úparent)rŽ   Úenv_var_and_partsÚenv_varÚpartss       r   rŠ   rŠ   Ø   sò   € ä0×4Ñ4°ZÓ@Ð@ÐÐMØ+ˆˆ�%Ü�w‰w�|‰|œBŸG™G×,Ñ,¬^¸GÓ-DÓEÐNÈÒNÐNà�^Ò#Ü�z‰z�~‰~˜hÓ'ÒX¬3¬t°C«y×/CÑ/CÓ/E×/LÑ/LÈxÑ/WÓ+XÐXàÐ,Ò,Ü�w‰w�|‰|Ü�G‰G×ÑœRŸZ™ZŸ^™^¨MÓ:Òt¼b¿j¹j¿n¹nÐM^Ó>_ÒtÐctÓuØØØØó
ð 	
ð r   )ÚUSERPROFILEÚ	Documents)r    Ú	Downloads)r    ÚPictures)r    ÚVideos)r    ÚMusic)r    ÚDesktop)r†   rf   r   r˜   r™   )r†   rf   r   Ú	Templates)rˆ   r™   )	rG   rL   rP   rS   rW   rZ   rs   rc   rm   z!Final[dict[str, tuple[str, ...]]]rš   c                ó^   — t         j                  j                  | «      x}r|S t        | «      ‚)N)r   r�   r‹   ÚKeyError)ÚnameÚvalues     r   r›   r›   ù   s)   € Ü—
‘
—‘˜tÓ$Ð$€uÐ$ØˆÜ
�4‹.Ðr   c                ót  — ddh}ddddddd	d
dddddœj                  | «      }|€t        | «      S t        j                  dk7  rt        ‚ddl}| |v r|j                  n|j                  }|j                  |d«      5 }|j                  ||«      \  }}ddd«       t        |«      S # 1 sw Y   t        «      S xY w)z·Get folder from the registry.

    This is a fallback technique at best. I'm not sure if using the registry for these guarantees us the correct answer
    for all CSIDL_* names.

    r+   rv   ÚAppDatazCommon AppDatazLocal AppDataÚPersonalú&{374DE290-123F-4565-9164-39C4925E467B}zMy PictureszMy VideozMy Musicr¦   r™   zCommon Programsr§   )r   r+   r   rG   rL   rP   rS   rW   rZ   rs   rv   rc   NÚwin32r   z@Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders)r‹   r’   ÚsysÚplatformÚNotImplementedErrorÚwinregÚHKEY_LOCAL_MACHINEÚHKEY_CURRENT_USERÚOpenKeyÚQueryValueExrh   )rŽ   Úmachine_namesÚshell_folder_namer´   ÚhkeyÚkeyÚ	directoryÚ_s           r   Úget_win_folder_from_registryr¿   ÿ   sÚ   € ð 	Øð€Mð
 #Ø 0Ø.Ø$ØCØ)Ø#Ø#Ø"+Ø$Ø!2Ø&ñ÷ 
�cˆ*ƒoð ð Ð Ü+¨JÓ7Ð7Ü
‡|�|�wÒÜ!Ð!Ûð )3°mÑ(Cˆ6×$Ò$È×IaÑIa€Dà	�‰˜ÐaÔ	bÐfiØ×*Ñ*¨3Ð0AÓB‰ˆ	�1÷ 
cäˆy‹>Ð÷ 
cäˆy‹>Ðús   Á;B$Â$B7z&{3EB685DB-65F9-4CF6-A03A-E3EF65729F3D}z&{62AB5D82-FDC1-4DC3-A9DD-070D1D495D97}z&{F1B32785-6FBA-4FCF-9D55-7B8E7F157091}z&{FDD39AD0-238F-46AF-ADB4-6C85480369C7}z&{33E28130-4E1E-4676-835A-98395C3BC3BB}z&{18989B1D-99B5-455B-841C-AB7C74E4DDFC}z&{4BD8D571-6D19-48D3-BE97-422220080E43}r¯   z&{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}z&{A77F5D77-2E2B-44C3-A6A2-ABA601054A51}z&{0139D44E-6AFE-49F2-8690-3DAFCAE6FFB8}z&{A63293E8-664E-48DB-A079-DF759E0509F7}z&{DFDF76A2-C82A-4D63-906A-5644AC457385}z&{5CD7AEE2-2219-4A67-B85D-6C9CE15660CB})r   r+   r   rG   rP   rS   rW   rL   rZ   rs   rv   rc   r`   rm   zdict[str, str]Ú_KNOWN_FOLDER_GUIDSc                 ó  ‡‡‡‡‡	— t         j                  dk7  rt        ‚ddlm} m}m}m}mŠm	Š	  G ˆ	fd„d|«      Š |d«      Š| ‰j                  _        ‰	j                   |‰«      g‰j                  _        d‰j                  _        ‰	j                  g‰j                  _         |d«      Š| ‰j                   _         |‰«      ‰	j"                  ‰	j$                   |‰	j&                  «      g‰j                   _        d
ˆˆˆˆˆ	fd	„}|S )z’Build the resolver once; a fresh ``_GUID`` per call leaks ctypes pointer types.

    See https://github.com/tox-dev/platformdirs/issues/501.

    r°   r   )ÚHRESULTÚPOINTERÚ	StructureÚWinDLLÚbyrefÚwintypesc                  óˆ   •— e Zd ZdW ° j                  fdW ° j                  fdW ° j                  fdW ° j
                  dz  fgZy)ú/_build_get_win_folder_via_ctypes.<locals>._GUIDÚData1ÚData2ÚData3ÚData4é   N)r   r€   r�   ÚDWORDÚWORDÚBYTEÚ_fields_)rÇ   s   €r   Ú_GUIDrÉ   J  s?   ø„ à‘h—n‘nÐ%Ø‘h—m‘mÐ$Ø‘h—m‘mÐ$Ø‘h—m‘m aÑ'Ð(ð	
‰r   rÓ   Úole32NÚshell32c                óZ  •— t         j                  | «      }|€d| › �}t        |«      ‚ ‰«       }‰j                  | ‰|«      «       ‰
j	                  «       }‰	j                   ‰|«      t        d  ‰|«      «       |j                  }‰j                  |«       |€d| › �}t        |«      ‚|S )Nr‰   z'SHGetKnownFolderPath returned NULL for )	rÀ   r‹   rŒ   ÚCLSIDFromStringÚLPWSTRÚSHGetKnownFolderPathr   r«   ÚCoTaskMemFree)rŽ   Úfolder_guidr‘   ÚguidÚpath_ptrr�   rÓ   rÆ   rÔ   rÕ   rÇ   s         €€€€€r   Úresolvez1_build_get_win_folder_via_ctypes.<locals>.resolve\  s«   ø€ Ü)×-Ñ-¨jÓ9ˆØÐØ(¨¨Ð5ˆCÜ˜S“/Ð!á‹wˆØ×Ñ˜k©5°«;Ô7à—?‘?Ó$ˆØ×$Ñ$¡U¨4£[Ô2FÈÉeÐT\ËoÔ^Ø—‘ˆØ×Ñ˜HÔ%àˆ>Ø;¸J¸<ÐHˆCÜ˜S“/Ð!àˆr   ©rŽ   rh   r}   rh   )r±   r²   r³   ÚctypesrÂ   rÃ   rÄ   rÅ   rÆ   rÇ   r×   ÚrestypeÚ	LPCOLESTRÚargtypesrÚ   ÚLPVOIDrÙ   rÏ   ÚHANDLErØ   )
rÂ   rÃ   rÄ   rÅ   rÞ   rÓ   rÆ   rÔ   rÕ   rÇ   s
        @@@@@r   Ú _build_get_win_folder_via_ctypesræ   8  sß   ü€ ô ‡|�|�wÒÜ!Ð!÷÷ ö
�	ô 
ñ �7‹O€EØ$+€E×ÑÔ!Ø&.×&8Ñ&8¹'À%».Ð%I€E×ÑÔ"Ø"&€E×ÑÔØ$,§O¡OÐ#4€E×ÑÔ á�YÓ€GØ+2€G× Ñ Ô(Ù-4°U«^¸X¿^¹^ÈXÏ_É_Ñ^eÐfn×fuÑfuÓ^vÐ,w€G× Ñ Ô)÷ñ ð( €Nr   c                ó"   —  t        «       | «      S )z Get folder via :func:`SHGetKnownFolderPath`.

    See https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetknownfolderpath.

    )ræ   )rŽ   s    r   Úget_win_folder_via_ctypesrè   s  s   € ð .Ô+Ó-¨jÓ9Ð9r   c                 óv   — 	 ddl } t        S # t        $ r Y nw xY w	 ddl}t        S # t        $ r	 t
        cY S w xY w)zjSelect the best method to resolve Windows folder paths: ctypes, then registry, then environment variables.r   N)rà   rè   ÚImportErrorr´   r¿   r’   )rà   r´   s     r   Ú_pick_get_win_folderrë   |  sM   € ð)Ûô )Ð(øô ò Ùðúð,Ûô ,Ð+øô ò ,Ü+Ò+ð,ús   ‚ Œ	—œ& ¦8·8c                ó¶   — d| j                  d«      › �}t        t        j                  j	                  |d«      j                  «       x}«      r|S t        | «      S )zÓGet a Windows folder path, checking for ``WIN_PD_OVERRIDE_*`` environment variable overrides first.

    For example, ``CSIDL_LOCAL_APPDATA`` can be overridden by setting ``WIN_PD_OVERRIDE_LOCAL_APPDATA``.

    ÚWIN_PD_OVERRIDE_ÚCSIDL_Ú )ÚremoveprefixÚ_is_fully_qualifiedr   r�   r‹   ÚstripÚ_resolve_win_folder)rŽ   rž   Úoverrides      r   r   r   �  sQ   € ð ! ×!8Ñ!8¸Ó!BÐ CÐD€GÜ¤r§z¡z§~¡~°g¸rÓ'B×'HÑ'HÓ'JÐJ˜8ÔKØˆÜ˜zÓ*Ð*r   c                ó”   — t        j                  | «      \  }}|j                  d«      xs t        |«      xr |j                  d«      S )N)Ú\Ú/)ÚntpathÚ
splitdriveÚ
startswithÚbool)r   ÚdriveÚtails      r   rñ   rñ   ›  s>   € ä×#Ñ# DÓ)�K€Eˆ4Ø×Ñ˜KÓ(ÒZ¬T°%«[Ò-Y¸T¿_¹_È[Ó=YÐZr   rß   )rŽ   rh   r}   r~   )rª   rh   r}   rh   )r}   zCallable[[str], str])r   rh   r}   rû   )!r‚   Ú
__future__r   rø   r   r±   Ú	functoolsr   Úpathlibr   Útypingr   r   Úapir	   Úcollections.abcr
   r   Ú__annotations__r   r’   rŠ   rš   r›   r¿   rÀ   ræ   rè   rë   ró   r   rñ   Ú__all__r„   r   r   Ú<module>r     s   ðÚ å "ã Û 	Û 
Ý Ý ß 'å  áÝ(ð $.Ð �jÓ -ôl%ˆoô l%ó^ó(ð* 3Ø3Ø3Ø.Ø-Ø8ØSØGØ <ñ
:Ð Ð6ó 
óó$ðP >ØDØCØ>Ø@Ø=Ø=Ø?ØFØ>ØEØ?Ø<Ø Hñ'Ð �^ó ð$ ò7ó ð7ót:ó,ñ  +Ó,Ð ó	+ó[ð ð�r   