;iH&UddlmZddlZddlZddlZddlZddlZdZdZe dej ej j fDZ ded<dd d d hd ed Dded DZd$dZd%dZ d&d'dZd(dZd)d#ZdS)*) annotationsN>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789i@Bc#*K|]}||dk |VdS)N/).0seps EC:\PYTHON\MyICR_Workspace\venv\Lib\site-packages\werkzeug/security.py r s3 s3#::C::::z list[str] _os_alt_sepsCONPRNAUXNULc# K|] }d|V dS)COMNrris r r r (##AiAii######r c# K|] }d|V dS)LPTNrrs r r r rr lengthintreturnstrc|dkrtdddt|DS)zAGenerate a random string of SALT_CHARS with specified ``length``.rzSalt length must be at least 1.c3HK|]}tjtVdSN)secretschoice SALT_CHARS)r_s r r zgen_salt..s,EE!7>*--EEEEEEr ) ValueErrorjoinrange)rs r gen_saltr)sA {{:;;; 77EEuV}}EEE E EEr methodsaltpasswordtuple[str, str]c|d^}}|}|}|dkr|sd}d}d}n9 tt|\}}}n#t$rt ddwxYwd|z|z|z} t j|||||| d |d|d|fS|d krt|} | d kr d } t} nI| dkr|d } t} n3| d kr|d } t|d} nt dt j | ||| d| d| fSt d|d)N:scryptiz'scrypt' takes 3 arguments.)r+nrpmaxmemzscrypt:pbkdf2rsha256z'pbkdf2' takes 2 arguments.zpbkdf2:zInvalid hash method 'z'.) splitencodemaprr&hashlibr0hexlenDEFAULT_PBKDF2_ITERATIONS pbkdf2_hmac) r*r+r,args salt_bytespassword_bytesr4r5r6r7len_args hash_name iterationss r _hash_internalrI!sLL%%MFTJ__&&N  JAAAA Jc4..1aa J J J !>??TI Jq1q NZ1Qv   cee !a ! !! ! !a ! !   8  t99 q== I2JJ ]]QI2JJ ]]QIT!WJJ:;; ;  >:z  cee .i . .* . .   ;;;;<<tjdtvsOtj s0 dsdks drd S| tj |S) aSafely join zero or more untrusted path components to a base directory to avoid escaping the base directory. :param directory: The trusted base directory. :param pathnames: The untrusted path components relative to the base directory. :return: A safe path, otherwise ``None``. .. versionchanged:: 3.1.4 Special device names are disallowed on Windows. .rc3 K|]}|vV dSr!r)rr filenames r r zsafe_join..s'88Cx888888r ntrrz..z../N) posixpathnormpathanyr osnamepathsplitextupper_windows_device_filesisabs startswithappendr')rXrYpartsr^s @r safe_joinrms"  KE r>> )(33H 8888<888 8 8 4G$$X..q17799=RRRw}}X&&S""3'' S 4""5)) 44 X >5 !!r )rrrr)r*rr+rr,rrr-)r0rJ)r,rr*rrKrrr)rQrr,rrrR)rXrrYrrrZ) __future__rr>rTrcr`r"r$rAlistr realtsepr __annotations__r(rhr)rIrPrWrmrr r rrsz"""""""  M %$FBGN+      $#r###  $#r### FFFF-=-=-=-=b?A$)$)$)$)$)NSSSS,'"'"'"'"'"'"r