2biLSSKrSSKJr SSKrSSKrSSKJr SSKrSSK r SSK r SSK r SSK r SSK r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJr SSKJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0 \ Rb"\25r3\ Rh"S5r5\ Rh"S5r6\ Rh"S 5r7\ Rh"S 5r8\ Rh"S 5r9\ Rh"S 5r:\ Rh"S 5r;\ Rh"S5rSr?Sr@SrASiSjrBSrCSrDSrE\RS5rG\RS5rH\RSjSj5rI"SS\J5rKSrL"SS\J5rMS rN"S!S"\J5rO\ Rh"S#\ R5rQS$rRSkS%jrSS&rTS'rUS(rVS)rWS*rX\ Rh"S+\ R5rZ\ Rh"S,5r[SkS-jr\\ Rh"S.5r]S/r^S0r_S1r`S2raS3rbS4rc"S5S6\J5rd"S7S8\J5re"S9S:\J5rfS;rgSlS<jrhS=riS>rj"S?S@\J5rk\ Rh"SA5rl\ Rh"SB5rm\ Rh"SC5rnSDrSEro\(a6SSFKJprqJrrrJsrs "SGSH\$R5rt"SISJ\q5rp"SKSL\p\'5ru"SMSN\%R5rv\(a"SOSP\%R5rw"SQSR\%R5rxSSry"STSU\J5rz"SVSW\z5r{"SXSY\z5r|"SZS[\(5r}"S\S]\J5r~S^r"S_S`\J5rSarSbrScrSdSeSfSg.rShrg!\a SrGNWf=f!\a SSKrGNOf=f)mN)deque)iglob)DistlibException) string_types text_typeshutil raw_inputStringIOcache_from_sourceurlopenurljoinhttplib xmlrpclib splittype HTTPHandlerBaseConfigurator valid_ident Container configparserURLErrorZipFilefsdecodeunquoteurlparsez^([\w\.-]+)\s*z^([\w\.*+-]+)\s*z^(<=?|>=?|={2,3}|[~!]=)\s*z*^((<=?)|(>=?)|={2,3}|[~!]=|in|not\s+in)\s*z^or\b\s*z ^and\b\s*z(\S+)\s*z(([\s\w\.{}()*+#:;,/?!~`@$%^&=|<>\[\]-]+)cF^^^^SmUU4SjmU4SjmU4SjmT"U5$)aM Parse a marker string and return a dictionary containing a marker expression. The dictionary will contain keys "op", "lhs" and "rhs" for non-terminals in the expression grammar, or strings. A string contained in quotes is to be interpreted as a literal string, and a string not contained in quotes is a variable (such as os_name). c[RU5nU(a(UR5SnXR5SnX 4$U(d [ S5eUSnUS;a[ SU-5eSR US5nUSSnU/nU(aUSU:XaOUSU:XaUR U5 USSnO^[RU5nU(d[ SU-5eUR UR5S5 XR5SnU(aMSRU5n[ SU-5eUR U5 SRU5nUSSR5nX 4$) Nrzunexpected end of inputz'"zinvalid expression: %srzerror in string literal: %szunterminated string: %s) IDENTIFIERmatchgroupsend SyntaxErrorreplaceappend STRING_CHUNKjoinlstrip) remainingmresultqoqpartsss ڊ/builddir/build/BUILDROOT/alt-python313-pip-23.3.1-3.el8.x86_64/opt/alt/python313/lib/python3.13/site-packages/pip/_vendor/distlib/util.py marker_var parse_marker..marker_varAsn   Y ' XXZ]F!%%'(+I:  978 8! A~!":Y"FGGq"%B!!" ICEQ<1$q\R'LL$ )!" I$**95A)*G)*STTLLA/ )%%'( 3I)GGEN!";a"?@@ LLOWWU^F!!" ,,.I  c>U(aQUSS:XaHT"USSR55upUSS:wa[SU-5eUSSR5nX4$T"U5up U(aZ[RU5nU(dO=UR 5SnXR 5SnT"U5upPXBUS.nU(aMZUnX4$)Nr(r)unterminated parenthesis: %soplhsrhs)r(r# MARKER_OPr r!r")r)r+r:r*r9r;markerr1s r0 marker_expr!parse_marker..marker_expres 1, &y}';';'= > F|s"!"@9"LMM!!" ,,.I  ( 2NCOOI.XXZ]%eegh/ !+I!6C8)F  r3c>T"U5upU(aJ[RU5nU(dX4$XR5SnT"U5up0SXS.nU(aMJX4$)Nandr8)ANDr r")r)r:r*r;r>s r0 marker_and parse_marker..marker_andxsi$Y/ )$A~"%%'(+I(3NCs7C i~r3c>T"U5upU(aJ[RU5nU(dX4$XR5SnT"U5up0SXS.nU(aMJX4$)Norr8)ORr r")r)r:r*r;rCs r0r=parse_marker..markersi#I.#A~"%%'(+I' 2NCc6C i~r3) marker_stringr=rCr>r1s @@@@r0 parse_markerrK8s%"!H!&   -  r3c UR5nU(aURS5(ag[RU5nU(d[ SU-5eUR 5SnXR 5SnS=n=n=pgU(aUSS:XaURSS5nUS:a[ SU-5eUSUn XS-SR5n/nU (a[RU 5nU(d[ S U -5eURUR 5S5 XR 5Sn U (dO3U SS :wa[ S U -5eU SSR5n U (aMU(dSnU(GaUSS :XaUSSR5n[RU5nU(d[ S U-5eUR 5Sn[U5n U R(aU R(d[ SU-5eXR 5SR5nOSn USS:wa U "U5upaOURSS5nUS:a[ SU-5eUSUn XS-SR5n[RU 5(a U "U 5uplOw[RU 5nU(d[ SU -5eUR 5Sn XR 5SR5n U (a[ SU -5eSU 4/nU(a7USS:wa[ SU-5eUSSR5n[!U5upQU(aUSS:wa[ SU-5eU(dUnO,U<SSR#UVs/sHnSU-PM sn5<3n[%X4UXWUS9$s snf)z~ Parse a requirement passed in as a string. Return a Container whose attributes contain the various parts of the requirement. #Nzname expected: %sr[]rzunterminated extra: %szmalformed extra: %s,zcomma expected in extras: %s@zinvalid URI: %szInvalid URL: %sc[RU5nSnU(a/nUR5SnXR5Sn[RU5nU(d[ SU-5eUR5SnUR X445 XR5SnU(a USS:waOGUSSR5nU(dO,[RU5nU(d[ SU-5eMU(dSnX 4$)zL Return a list of operator, version tuples if any are specified, else None. Nrzinvalid version: %srPrinvalid constraint: %s) COMPARE_OPr r!r"VERSION_IDENTIFIERr#r%r() ver_remainingr*versionsr9vs r0 get_versions'parse_requirement..get_versionss $$]3!HXXZ](5eegh(? .44]C "-.Cm.S"TTHHJqM 0(5eegh(? , a0@C0G!(5ab(9(@(@(B  -!&,,]; "-.F.V"WW%&$#'..r3r5r6r7rSz~=;zinvalid requirement: %szunexpected trailing data: %s , z%s %s)nameextras constraintsr=url requirement)strip startswithrr r#r!r"findr(r% NON_SPACErschemenetlocrTrUrKr'r)reqr)r*distnamer_ mark_exprrWuriir/trY_rXrscons r0parse_requirementrrs  I  ,,S11#A - 9::xxz!}H%%'(#I*..F.Y.Yq\S( NN3 " q56BC C aN!ef%,,.   #A!"7!";<< MM!((*Q- (%%'( Ats{!"@1"DEE!" AaF Q<3 !!" ,,.I *A!"3i"?@@((*Q-C A HH!"3c"9::!%%'(+224I /@|s"&29&=#)NN3*q5%&Dy&PQQaN%!ef-446 ##A&&".q/KHa*003A)*BQ*FGG 1 A%%'( **,A)*BQ*FGG!%q {H Q<3 7)CD DabM((* +I6 Yq\S(89DEE   $))h,OhsWs]h,O"P Q (x%B @@-Ps)O cSn0nUHupEn[RRX5n[U5Hn[RRX5n [U 5Hmn U"X 5n UcUR U S5 M"U"X5n UR [RR S5RS5n U S-U -X;'Mo M M U$)z%Find destinations for resources filescUR[RRS5nUR[RRS5nUR U5(deU[ U5SR S5$N/)r$ospathseprdlenr()rootrxs r0 get_rel_path)get_resources_dests..get_rel_pathsc||BGGKK-||BGGKK-t$$$$CIJ&&s++r3Nrv)rwrxr'rpopr$ryrstrip)resources_rootrulesr| destinationsbasesuffixdestprefixabs_baseabs_globabs_path resource_filerel_pathrel_dests r0get_resources_destsrs,L#dn3f Hww||H5H!(O ,^ F < $$]D9+H?H#||BGGKK=DDSIH2:S.82KL/,&$ r3c[[S5(aSnU$[R[[S[R5:gnU$)N real_prefixT base_prefix)hasattrsysrgetattrr+s r0in_venvr(s=sM"" MwsM3::FF Mr3cf[Rn[U[5(d [ U5nU$N)r executable isinstancerrrs r0get_executabler2s)^^F fi ( (&! Mr3cUn[U5nUnU(d U(aUnU(a)USR5nXa;aU$U(aSXbU4-nMO)Nrz %c: %s %s)r lower)prompt allowed_chars error_promptdefaultpr/cs r0proceedrDs]A  aL WA ! A! H AV#<< r3c[U[5(aUR5n0nUHnX0;dM XX#'M U$r)rrsplit)dkeysr+keys r0extract_by_keyrTs>$ %%zz| F 8&FK Mr3cb[RSS:a[R"S5"U5nUR 5n[ U5n[ R"U5nUSSSnUR5H;upEUR5H"upgU<SU<3n[U5n U ceXU'M$ M= U$![a URSS5 Of=fSn [R"5n U "X5 OS![Ra< UR5 [ R""U5n[ U5nU "X5 Of=f0nU R%5H@n 0=X<'nU RU 5H"upU <SU<3n[U5n U ceXU 'M$ MB U$) Nrutf-8 extensionszpython.exportsexports = cl[US5(aURU5 gURU5 g)N read_file)rrreadfp)cpstreams r0 read_stream!read_exports..read_streamqs' 2{ # # LL IIf r3)r version_infocodecs getreaderreadr jsonloaditemsget_export_entry Exceptionseekr ConfigParserMissingSectionHeaderErrorclosetextwrapdedentsections)rdatajdatar+groupentrieskrXr/entryrrrr^values r0 read_exportsr]s a!!'*62 ;;=D d^F  &!|$%56yA$llnNE !"A&(+(((" (-   Aq  " " $B B  1 1  t$$B  F{{} "" g88C=KD!5)A$Q'E$ $$!DM ) Ms&A1CC! C!=DA EEcF[RSS:a[R"S5"U5n[R "5nUR 5Hup4URU5 UR5HnURc URnOUR<SUR<3nUR(a#U<SSRUR5<S3nURX5RU5 M M URU5 g)Nrrr:z [r]rO)rrr getwriterrrr add_sectionvaluesrrflagsr'setr^write)rrrrrXrr/s r0 write_exportsrs a!!'*62  " " $B  qXXZE||#LL$||U\\:{{!"DIIekk$:; FF1jj! $  HHVr3c## [R"5nUv [R"U5 g![R"U5 f=f7fr)tempfilemkdtempr rmtree)tds r0tempdirrs5    B b bsA4AA  Ac## [R"5n[R"U5 Sv [R"U5 g![R"U5 f=f7fr)rwgetcwdchdir)rcwds r0rrs9 ))+C      A%A A% A""A%c## [R"5n[R"U5 Sv [R"U5 g![R"U5 f=f7fr)socketgetdefaulttimeoutsetdefaulttimeout)secondsctos r0socket_timeoutrsE  " " $C&  )   %  %rc$\rSrSrSrSSjrSrg)cached_propertyicXlgrfunc)selfrs r0__init__cached_property.__init__s r3NcUcU$URU5n[RXRRU5 U$r)robject __setattr____name__)robjclsrs r0__get__cached_property.__get__s8 ;K #3 2 2E: r3rr)r __module__ __qualname____firstlineno__rr__static_attributes__rIr3r0rrs  r3rc[RS:XaU$U(dU$USS:Xa[SU-5eUSS:Xa[SU-5eURS5n[RU;a5UR [R5 [RU;aM5U(d[R$[R R"U6$)aReturn 'pathname' as a name that will work on the native filesystem. The path is split on '/' and put back together again using the current directory separator. Needed because filenames in the setup script are always supplied in Unix style, and have to be converted to the local convention before we can actually use them in the filesystem. Raises ValueError on non-Unix-ish systems if 'pathname' either starts or ends with a slash. rvrzpath '%s' cannot be absolutezpath '%s' cannot end with '/')rwry ValueErrorrcurdirremoverxr')pathnamepathss r0 convert_pathrs vv} {c7(BCC|s88CDD NN3 E ))u  RYY ))u  yy 77<< r3c\rSrSrSSjrSrSrSrSSjrSSjr S r S r S r S r S rSSjrSrSrSrSrSrg) FileOperatoricNXl[5UlUR5 gr)dry_runrensured _init_record)rr s r0rFileOperator.__init__s u  r3cNSUl[5Ul[5UlgNF)recordr files_written dirs_createdrs r0r FileOperator._init_records  UEr3c^UR(aURRU5 ggr)rradd)rrxs r0record_as_writtenFileOperator.record_as_writtens" ;;    " "4 ( r3cl[RRU5(d+[S[RR U5-5e[RRU5(dg[R "U5R [R "U5R :$)aTell if the target is newer than the source. Returns true if 'source' exists and is more recently modified than 'target', or if 'source' exists and 'target' doesn't. Returns false if both exist and 'target' is the same age or younger than 'source'. Raise PackagingFileError if 'source' does not exist. Note that this test is not very accurate: files created in the same second will have the same "age". zfile '%r' does not existT)rwrxexistsrabspathstatst_mtime)rsourcetargets r0newerFileOperator.newersyww~~f%%"#=#%77??6#:$;< <ww~~f%%wwv''"''&/*B*BBBr3c&UR[RRU55 [R SX5 UR (dSnU(aw[RRU5(aSU-nOM[RRU5(a)[RRU5(dSU-nU(a[US-5e[R"X5 URU5 g)z8Copy a file respecting dry-run and force flags. zCopying %s to %sNz%s is a symlinkz%s is a non-regular filez which would be overwritten) ensure_dirrwrxdirnameloggerinfor islinkrisfilerr copyfiler)rinfileoutfilecheckmsgs r0 copy_fileFileOperator.copy_files 01 &8||C77>>'**+g5CWW^^G,,RWW^^G5L5L4w>C 'D!DEE OOF , w'r3Nc[RRU5(aeUR[RR U55 [ R SX5 UR(dMUc [US5nO[R"USUS9n[R"X5 UR5 URU5 g!UR5 f=f)NzCopying stream %s to %swbwencoding)rwrxisdirr"r#r$r%r openrr copyfileobjrr)rinstreamr*r3 outstreams r0 copy_streamFileOperator.copy_streams77==)))) 01 -xA|| $/ "KKxH  """87! w'!s #CC-cUR[RRU55 UR(d`[RR U5(a[R "U5 [US5nURU5 SSS5 URU5 g!,(df  N =f)Nr0) r"rwrxr#r rrr5rr)rrxrfs r0write_binary_fileFileOperator.write_binary_file'ss -.||ww~~d## $dD!Q " t$"!s B22 CcDURXRU55 gr)r=encode)rrxrr3s r0write_text_fileFileOperator.write_text_file0s t[[%:;r3c[RS:Xd([RS:Xa[RS:XaUH~nUR(a[R SU5 M,[R "U5RU-U-n[R SXE5 [R"XE5 M ggg)Nposixjavazchanging mode of %szchanging mode of %s to %o) rwr^_namer r$r%rst_modechmod)rbitsmaskfilesr<modes r0set_modeFileOperator.set_mode3s 77g "''V"3G8K<<KK 5q9GGAJ..5=DKK ;QEHHQ% 9L"3r3c(URSSU5$)Nimi)rM)r/r<s r0FileOperator.?sqzz%'Cr3c[RRU5nXR;a[RR U5(dURR U5 [RR U5up#URU5 [RSU-5 UR(d[R"U5 UR(aURR U5 gggg)Nz Creating %s)rwrxrr rrrr"r$r%r mkdirrr)rrxrr<s r0r"FileOperator.ensure_dirAswwt$ || #BGGNN4,@,@ LL  T "77==&DA OOA  KK , -<<{{!!%%d+-A #r3c[X(+5n[RSX5 UR(dU(dUR X5(a0U(dSnO&UR U5(deU[ U5Sn0nU(a2[[S5(a[RRUS'[R"XWS40UD6 URU5 U$)NzByte-compiling %s to %sPycInvalidationModeinvalidation_modeT) r r$r%r rrdrzr py_compilerV CHECKED_HASHcompiler) rrxoptimizeforcerhashed_invalidationdpathdiagpathcompile_kwargss r0 byte_compileFileOperator.byte_compileMs!$ 5 -t;|| 4//#H??62222#CKL1HN"wz;P'Q'Q6@6T6T6a6a23   tHd Mn M u% r3c[RRU5(Gag[RRU5(a[RR U5(d{[ R SU5 UR(d[R"U5 UR(a,XR;aURRU5 ggg[RR U5(aSnOSn[ R SX!5 UR(d[R"U5 UR(a,XR;aURRU5 gggg)NzRemoving directory tree at %slinkfilezRemoving %s %s)rwrxrr4r&r$debugr r rrrrr)rrxr/s r0ensure_removedFileOperator.ensure_removed^s 77>>$  ww}}T""277>>$+?+? >$''AA -q7||IIdO;;111**11$72! r3cSnU(d~[RRU5(a([R"U[R5nU$[RR U5nX1:XaU$UnU(dM~U$r)rwrxraccessW_OKr#)rrxr+parents r0 is_writableFileOperator.is_writablessqww~~d##41  WW__T*F~ D& r3c|UR(deURUR4nUR5 U$)z> Commit recorded changes, turn off recording, return changes. )rrrr )rr+s r0commitFileOperator.commits7 {{{##T%6%66  r3cUR(d[UR5H?n[RR U5(dM)[R "U5 MA [URSS9nUHwn[R"U5nU(aAUS/:Xde[RRX4S5n[R"U5 [R"U5 My UR5 g)NT)reverse __pycache__r) r listrrwrxrrsortedrlistdirr'rmdirr )rr<dirsrflistsds r0rollbackFileOperator.rollbacks||$,,-77>>!$$IIaL. $++T:D 1  ]O333aq2BHHRL  r3)rr r rrFTr)FFNF)rrrrrr rrr-r9r=rArMset_executable_moder"rargrmrpr|rrIr3r0rrsW " )C((" (%< &D ,"8* r3rcU[R;a[RUnO [U5nUcUnU$URS5n[ X$R S55nUHn[ X55nM U$)N.r)rmodules __import__rrr~) module_name dotted_pathmodr+r.rs r0resolversuckk!kk+&% M !!#&iil+AV'F Mr3cN\rSrSrSr\S5rSrSr\ Rr Sr g) ExportEntryic4XlX lX0lX@lgrr^rrr)rr^rrrs r0rExportEntry.__init__s    r3cB[URUR5$r)rrrrs r0rExportEntry.valuest{{DKK00r3c xSUR<SUR<SUR<SUR<S3 $)Nz rrs r0__repr__ExportEntry.__repr__s(04 4;;04 TZZI Ir3c*[U[5(dSnU$URUR:H=(aY URUR:H=(a9 URUR:H=(a UR UR :HnU$r)rrr^rrr)rotherr+s r0__eq__ExportEntry.__eq__sz%--F  ii5::-0kkU\\10kkU\\10jjEKK/  r3)rr^rrN) rrrrrrrrrr__hash__rrIr3r0rrs1 11IHr3rz(?P(\w|[-.+])+) \s*=\s*(?P(\w+)([:\.]\w+)*) \s*(\[\s*(?P[\w-]+(=\w+)?(,\s*\w+(=\w+)?)*)\s*\])? c[RU5nU(dSnSU;dSU;a[SU-5eU$UR5nUSnUSnUR S5nUS:XaUSpO'US:wa[SU-5eUR S5upxUS n U cSU;dSU;a[SU-5e/n O.U R S 5V s/sHoR 5PM n n [XGX5nU$s sn f) NrNrOzInvalid specification '%s'r^callablerrrrrP)ENTRY_REsearchr groupdictcountrrcr) specificationr*r+rr^rxcolonsrrrr<s r0rrs, &A  - 3-#7"$*,9$:; ;$80 M) KKMy}C Q;!4F{&(.0=(>??!ZZ_NF'  =m#sm';&(.0=(>??E(- C(89(81WWY(8E9T69 M:sC9cUcSn[RS:Xa4S[R;a [RR S5nO[RR S5n[RR U5(aC[R"U[R5nU(d[RSU5 O[R"U5 SnU(d+[R"5n[RS U5 [RRX5$![a [RSUSS 9 S nNtf=f) az Return the default base location for distlib caches. If the directory does not exist, it is created. Use the suffix provided for the base directory, and default to '.distlib' if it isn't provided. On Windows, if LOCALAPPDATA is defined in the environment, then it is assumed to be a directory, and will be the parent directory of the result. On POSIX, and on Windows if LOCALAPPDATA is not defined, the user's home directory - using os.expanduser('~') - will be the parent directory of the result. The result is just the directory '.distlib' in the parent directory as determined above, or with the name specified with ``suffix``. z.distlibnt LOCALAPPDATAz $localappdata~z(Directory exists but is not writable: %sTzUnable to create %s)exc_infoFz#Default location unusable, using %s)rwr^environrx expandvars expanduserr4rjrkr$warningmakedirsOSErrorrrr')rr+usables r0get_cache_basers~ ww$>RZZ7##O4##C( ww}}V6277+ NNEv N  KK F !!#>!E"!E"c[RR[RRU55upU(aUR SS5nUR [R S5nX-S-$)z Convert an absolute path to a directory name for use in a cache. The algorithm used is: #. On Windows, any ``':'`` in the drive is replaced with ``'---'``. #. Any occurrence of ``os.sep`` is replaced with ``'--'``. #. ``'.cache'`` is appended. rz---z--z.cache)rwrx splitdriverr$ry)rxrrs r0path_to_cache_dirrs[ 77  bggood3 4DA IIc5 ! "&&$A 58 r3c<URS5(dUS-$U$ru)endswith)r/s r0 ensure_slashr$s ::c??3w Hr3cS=pSU;a1URSS5up0SU;aUnOURSS5upU(a [U5nU(a [U5nXU4$)NrQrr)rsplitrr)rhusernamepasswordrs r0parse_credentialsr*shH f}sA. f H!'c1!5 H8$8$ v %%r3c^[R"S5n[R"U5 U$)N)rwumaskrs r0get_process_umaskr9s XXd^FHHV Mr3crSnSn[U5Hup#[U[5(aMSn O UceU$)NTF) enumeraterr)seqr+rmr/s r0is_string_sequencer>sB F A#!\**F  == Mr3z3([a-z0-9_]+([.-][a-z_][a-z0-9_]*)*)-([a-z0-9_.+-]+)z -py(\d\.?\d?)c0SnSn[U5RSS5n[RU5nU(a$UR S5nUSUR 5nU(am[ U5[ U5S-:aR[R"[R"U5S-U5nU(aUR5nUSUXS-SU4nUc?[RU5nU(a#UR S5UR S5U4nU$)zk Extract name, version, python version from a filename (no extension) Return name, version, pyver or None Nr\-rz\br) rr$PYTHON_VERSIONrrstartrzrer escaper"PROJECT_NAME_AND_VERSION)filename project_namer+pyverr*ns r0split_filenamerMs F Ex ((c2Hh'A JQWWY'H L(9A(== HHRYY|,u4h ? Abq\8EF#3U:F ~ $ * *8 4 WWQZU2F Mr3z-(?P[\w .-]+)\s*\(\s*(?P[^\s)]+)\)$c[RU5nU(d[SU-5eUR5nUSR 5R 5US4$)z A utility method used to get name and version from a string. From e.g. a Provides-Dist value. :param p: A value in a form 'foo (1.0)' :return: The name and version as a tuple. z$Ill-formed name/version string: '%s'r^ver)NAME_VERSION_REr rrrcr)rr*rs r0parse_name_and_versionrisV a A G!KLL A V9??  " " $ah ..r3c[5n[U=(d /5n[U=(d /5nSU;aURS5 X!-nUHnUS:XaURU5 MURS5(a<USSnXA;a[R SU-5 XB;aURU5 MlMnX1;a[R SU-5 URU5 M U$)N*rrzundeclared extra: %s)rrrrdr$r) requested availabler+runwanteds r0 get_extrasrxs UFIO$IIO$I i  8 JJqM \\#  uH(5@A! h'"!59: JJqM Mr3c0n[U5nUR5nURS5nURS5(d[R SU5 U$[ R"S5"U5n[R"U5nU$![a!n[RSX5 SnAU$SnAff=f)Nz Content-Typezapplication/jsonz(Unexpected response for JSON request: %srz&Failed to get external data for %s: %s) r r%getrdr$rfrrrrr exception)rar+respheadersctreaderes r0_get_external_datars FKs|))+ [[ (}}/00 LLCR H M %%g.t4FYYv&F M KA3JJ MKsAB2B B>B99B>z'https://www.red-dove.com/pypi/projects/crUSR5<SU<S3n[[U5n[U5nU$)Nrrvz /project.jsonupperr_external_data_base_urlr)r^rar+s r0get_project_datars2"&q'--/4 8C )3 /C  $F Mr3cvUSR5<SU<SU<S3n[[U5n[U5$)Nrrvz /package-z.jsonr)r^versionras r0get_package_datars0%)!W]]_dG DC )3 /C c ""r3c*\rSrSrSrSrSrSrSrg)Cacheiz A class implementing a cache for resources that need to live in the file system e.g. shared libraries. This class was moved from resources to here because it could be used by other modules, e.g. the wheel module. ct[RRU5(d[R"U5 [R"U5R S-S:wa[ RSU5 [RR[RRU55Ul g)z] Initialise an instance. :param base: The base directory where the cache should be located. ?rzDirectory '%s' is not privateN) rwrxr4rrrGr$rrnormpathr)rrs r0rCache.__init__spww}}T"" KK  GGDM ! !D (Q . NN Converts a resource prefix to a directory name in the cache. )r)rrs r0 prefix_to_dirCache.prefix_to_dirs!((r3c*/n[R"UR5Hn[RR URU5n[RR U5(d$[RR U5(a[R"U5 M[RRU5(a[R"U5 MM U$![a URU5 Mf=f)z Clear the cache. ) rwrwrrxr'r&r'rr4r rrr%)r not_removedfns r0clear Cache.clears **TYY'Bdii,B '77>>"%%););IIbMWW]]2&&MM"%' ( '""2& 'sAC31:C33DDrN) rrrr__doc__rrrrrIr3r0rrs <) r3rc:\rSrSrSrSrS SjrSrSrSr Sr g ) EventMixiniz) A very simple publish/subscribe system. c0Ulgr _subscribersrs r0rEventMixin.__init__s r3cURnX;a[U/5XA'gXAnU(aURU5 gURU5 g)a( Add a subscriber for an event. :param event: The name of an event. :param subscriber: The subscriber to be added (and called when the event is published). :param append: Whether to append or prepend the subscriber to an existing subscriber list for the event. N)rrr% appendleft)revent subscriberr%subssqs r0rEventMixin.addsE     -DKB *% j)r3chURnX;a[SU-5eX1RU5 g)zy Remove a subscriber for an event. :param event: The name of an event. :param subscriber: The subscriber to be removed. zNo subscribers: %rN)rrr)rrrrs r0rEventMixin.removes6    1E9: : :&r3cL[URRUS55$)zi Return an iterator for the subscribers for an event. :param event: The event to return subscribers for. rI)iterrr)rrs r0get_subscribersEventMixin.get_subscriberss" D%%))%455r3c/nURU5H!nU"U/UQ70UD6nUR U5 M# [R SXX45 U$![a [RS5 SnNQf=f)a Publish a event and return a list of values returned by its subscribers. :param event: The event to publish. :param args: The positional arguments to pass to the event's subscribers. :param kwargs: The keyword arguments to pass to the event's subscribers. z"Exception during event publicationNz/publish %s: args = %s, kwargs = %s, result = %s)r rr$rr%rf)rrargskwargsr+rrs r0publishEventMixin.publish s..u5J "5:4:6: MM% 6  F& 2    !EF s A!A65A6rNr) rrrrrrrrr rrrIr3r0rrs *( '6r3rcb\rSrSrSrSrS SjrSrSrSr Sr \ S 5r \ S 5r S rg ) Sequenceri'c>0Ul0Ul[5Ulgr)_preds_succsr_nodesrs r0rSequencer.__init__(s  e r3c:URRU5 gr)rr)rnodes r0add_nodeSequencer.add_node-s r3cdXR;aURRU5 U(a[URR US55HnURX15 M [UR R US55HnURX5 M [ URR55HupVU(aMURU M [ UR R55HupVU(aMUR U M gg)NrI)rrrrrrrur)rredgesrr/rrXs r0 remove_nodeSequencer.remove_node0s ;;  KK  t $ r23 A$4r23 D$4T[[..01q A2T[[..01q A2 r3cX:wdeURRU[55RU5 URRU[55RU5 gr)r setdefaultrrr)rpredsuccs r0r Sequencer.add@sN|| tSU+//5 tSU+//5r3cX:wdeURUnURUnUR U5 UR U5 g![a [SU-5ef=f![a [U<SU<35ef=f)Nz%r not a successor of anythingz not a successor of )rrKeyErrorrr)rr"r#predssuccss r0rSequencer.removeEs|| FKK%EKK%E H LL  LL   F=DE E F  H4FG G HsA "A' A$'BcrXR;=(d# XR;=(d XR;$r)rrr)rsteps r0is_stepSequencer.is_stepRs. #$t{{':$ # %r3cURU5(d[SU-5e/n/n[5nURU5 U(aUR S5nXT;a(XQ:wa"UR U5 URU5 OOUR U5 URU5 URRUS5nURU5 U(aM[U5$)Nz Unknown: %rrrI) r,rrr%r~rrrrextendreversed)rfinalr+todoseenr+r's r0 get_stepsSequencer.get_stepsVs||E""]U23 3u E88A;D| =MM$'MM$' d# b1 E"d r3c^^^^^^^S/m/m0m0m/mURmUUUUUUU4SjmTHnUT;dM T"U5 M T$)Nrc>TSTU'TSTU'TS==S- ss'T RU5 TUnUHEnUT;aT "U5 [TUTU5TU'M(UT ;dM0[TUTU5TU'MG TUTU:XaI/nT R5nURU5 X :XaOM)[ U5nT RU5 gg![a /nNf=fNrr)r%rminr~tuple) r successors successorconnected_component componentgraphindex index_counterlowlinksr+stack strongconnects r0rD3Sequencer.strong_connections..strongconnectzs'*E$K*1-HTN !  !  LL  "4[ ( H,!),%($8K%LHTN%'&)$i8H%IHTN(~t,&(# % I'..y9 (%""56  i(-   sC C&%C&)r) rrr?r@rArBr+rCrDs @@@@@@@r0strong_connectionsSequencer.strong_connectionsosW   ) )DD8#d# r3c $S/nURH5nURUnUHnURSU<SU<S35 M M7 URHnURSU-5 M URS5 SRU5$)Nz digraph G {z z -> r[z %s;} )rr%rr')rr+r#r'r"rs r0dot Sequencer.dots{KKDKK%E tT:; KKD MM'D. )  cyy  r3)rrrNr~)rrrrrrrrrr,r4propertyrFrKrrIr3r0rr'sO ' 6 H% 200d ! !r3r).tar.gz.tar.bz2.tar.zip.tgz.tbz.whlc^^ UU 4Sjn[RRT5m[T5m SnUcxUR S5(aSnO_UR S5(aSnSnODUR S5(aSnS nO)UR S 5(aS nS nO[ S U-5eUS:Xa5[ US 5nU(a!UR5nUH nU"U5 M O?[R"UW5nU(a!UR5nUH nU"U5 M US:wao[RSS:aXUR5HDn [U R[ 5(aM$U RR#S5U lMF UR%T5 U(aUR'5 gg!U(aUR'5 ff=f)NcB>[U[5(dURS5n[RR [RR TU55nURT5(aUT[R:wa[SU-5eg)Nrzpath outside destination: %r) rrdecoderwrxrr'rdryr)rxrdest_dirplens r0 check_pathunarchive..check_pathss$ **;;w'D GGOOBGGLL48 9||H%%4BFF):;a?@ @*;r3)rQrTzip)rNrRtgzzr:gz)rOrStbzzr:bz2rPtarrzUnknown format for %rrrr)rwrxrrzrrrnamelisttarfiler5getnamesrr getmembersrr^rrW extractallr) archive_filenamerXformatr+rZarchiverLnamesr^tarinforYs ` @r0 unarchiverjsAwwx(H x=DG ~  $ $%5 6 6F  & &': ; ;FD  & &'; < <FD  & &v . .FD47GGH H U?.4G((*!Dt$"ll#3T:G((*!Dt$" U?s//2Q6 #--/!',, ::#*<<#6#6w#?GL0 8$  MMO 7 MMO s2CG =5G G%c[R"5n[U5n[US5n[R "U5HbupEnUHVn[R RXG5nXBSn [R RX5n URX5 MX Md SSS5 U$!,(df  U$=f)z*zip a directory tree into a BytesIO objectr1N) ioBytesIOrzrrwwalkrxr'r) directoryr+dlenzfr{ryrKr^fullrelrs r0zip_dirrts ZZ\F y>D  !#!3 Dww||D/5kww||C.$ "4  M   Ms A=B44 C)rKMGTPc\rSrSrSrSSjrSrSrSrSr \ S5r \ S 5r S r \ S 5r\ S 5rS rg)ProgressiUNKNOWNcjUbX!:deU=UlUlX lSUlSUlSUlg)NrF)r9curmaxstartedelapseddone)rminvalmaxvals r0rProgress.__init__s:~!111$$48   r3cURU::deURbXR::deXl[R"5nURcX lgX R- Ulgr)r9rr~timerr)rcurvalnows r0updateProgress.update sZxx6!!!xx6XX#555iik << L-DLr3cPUS:deURURU-5 g)Nr)rr~)rincrs r0 incrementProgress.increments"qyy DHHtO$r3c<URUR5 U$r)rr9rs r0rProgress.starts DHH r3cbURbURUR5 SUlgNT)rrrrs r0stop Progress.stops# 88  KK ! r3cLURc UR$UR$r)runknownrs r0maximumProgress.maximum!s#xx/t||=TXX=r3cUR(aSnU$URcSnU$SURUR- -URUR- - nSU-nU$)Nz100 %z ?? %gY@z%3d %%)rrr~r9)rr+rXs r0 percentageProgress.percentage%sf 99F  XX F DHH,-DHH1DEA\F r3cUS::a URbURUR:XaSnU$[R"S[R "U55nU$)Nrz??:??:??z%H:%M:%S)rr~r9rstrftimegmtime)rdurationr+s r0format_durationProgress.format_duration0sM Mtxx/488txx3GF  ]]:t{{8/DEF r3cUR(aSnURnOSnURcSnO|URS:XdURUR:XaSnOO[ URUR- 5nX RUR- -nUS- UR-nU<SUR U5<3$)NDonezETA rrrz: )rrrr~r9floatr)rrrns r0ETA Progress.ETA9s 99F AFxx"txx488';$((TXX-.XX((Udll*!4#7#7#:;;r3cURS:XaSnO&URUR- UR- n[HnUS:a O US-nM SUW4-$)Nrgig@@z%d %sB/s)rr~r9UNITS)rr+units r0speedProgress.speedLs] <<1 Fhh)T\\9FD} f FVTN**r3)r~rrrr9rN)rd)rrrrrrrrrrrMrrrrrrrIr3r0r{r{suG.% >><<$ + +r3r{z \{([^}]*)\}z[^/\\,{]\*\*|\*\*[^/\\,}]z^[^{]*\}|\{[^}]*$c[RU5(aSn[X-5e[RU5(aSn[X-5e[ U5$)zAExtended globbing function that supports ** and {opt1,opt2,opt3}.z7invalid glob %r: recursive glob "**" must be used alonez2invalid glob %r: mismatching set marker '{' or '}')_CHECK_RECURSIVE_GLOBrr_CHECK_MISMATCH_SET_iglob) path_globr,s r0rrasS##I..K))!!),,F)) ) r3c## [RUS5n[U5S:a[[U5S:XdU5eUup#nURS5H*n[SR X%U455HnUv M M, gSU;a[ U5HnUv M gURSS5up'US:XaSnUS:XaSnO"UR S5nUR S 5n[R"U5HXuphn [RRU5n[[RR Xg55Hn U v M MZ g7f) NrrrPrz**rrrv\) RICH_GLOBrrzrr' std_iglobr(rwrnrxr) rrich_path_globrrritemrxradicaldirrKrs r0rrls-__Y2N >Q>"a'77',VIIcNDrwwf'=>? @# y !), -(oodA6OF|"}"..-!...$&GGFO 5ww''- d!<=BH>%4sEE) HTTPSHandlermatch_hostnameCertificateErrorc"\rSrSrSrSrSrSrg)HTTPSConnectioniNTcn[R"URUR4UR5n[ USS5(aXlUR5 [R"[R5n[[S5(a#U=R[R-sl UR(a&URURUR 5 0nUR"(aS[R$UlUR)UR"S9 [ [SS5(aURUS'UR*"U40UD6UlUR"(abUR,(aP[/UR R15UR5 [2R5SUR5 ggg![6aE UR R9[R:5 UR R=5 ef=f)N _tunnel_hostF OP_NO_SSLv2)cafileHAS_SNIserver_hostnamezHost verified: %s)rcreate_connectionhostporttimeoutrsock_tunnelssl SSLContextPROTOCOL_SSLv23roptionsr cert_fileload_cert_chainkey_fileca_certs CERT_REQUIRED verify_modeload_verify_locations wrap_socket check_domainr getpeercertr$rfrshutdown SHUT_RDWRr)rrcontextrs r0connectHTTPSConnection.connects{++TYY ,BDLLQDt^U33  nnS%8%89GsM**3??2~~'' FF}}&)&7&7#--T]]-C3 51104 F,-++D;F;DI}}!2!2"499#8#8#:DIIFLL!4dii@"3}(II&&v'7'78IIOO%sAG%%AH4)r)rrrrrrrrrIr3r0rrs  r3rc*\rSrSrSSjrSrSrSrg)ricH[R"U5 XlX lgr)BaseHTTPSHandlerrrr)rrrs r0rHTTPSHandler.__init__s  % %d +$M , r3c[U0UD6nUR(a"URUlURUlU$)a This is called to create a connection instance. Normally you'd pass a connection class to do_open, but it doesn't actually check for a class, and just expects a callable. As long as we behave just as a constructor would have, we should be OK. If it ever changes so that we *must* pass a class, we'll create an UnsafeHTTPSConnection class which just sets check_domain to False in the class definition, and choose which one to pass to do_open. )rrr)rr rr+s r0 _conn_makerHTTPSHandler._conn_makers8%d5f5F}}"&--&*&7&7#Mr3cURURU5$![a7nS[UR5;a[ SUR -5eeSnAff=f)Nzcertificate verify failedz*Unable to verify server certificate for %s)do_openrrstrreasonrr)rrirs r0 https_openHTTPSHandler.https_opensc ||D$4$4c:: .#ahh-?*,469hh,?@@  s A2AA)rrNr)rrrrrrrrrIr3r0rrs -    r3rc\rSrSrSrSrg)HTTPSOnlyHandleric[SU-5e)NzAUnexpected HTTP request on what should be a secure connection: %s)r)rris r0 http_openHTTPSOnlyHandler.http_opens,.123 3r3rIN)rrrrrrrIr3r0rrs 3r3rc$\rSrSrSSjrSrSrg) TransporticNXl[RRX5 gr)rrrrrr use_datetimes r0rTransport.__init__s $$T8r3cURU5up#nUR(aXRS:wa#X0lU[R"U54UlURS$r8) get_host_info _connection_extra_headersrHTTPConnection)rrhehx509s r0make_connectionTransport.make_connections^((. t4+;+;A+>#>"$ #W%;%;A%>>D ""r3rrrNrrrrrrrrrIr3r0rrs 9#r3rc$\rSrSrSSjrSrSrg) SafeTransporticNXl[RRX5 gr)rrrrrs r0rSafeTransport.__init__s"L  # # , ,T @r3cURU5up#nU(d0nURUS'UR(aXRS:wa%X0lU[R "US40UD64UlURS$)Nrrr)rrrrrr)rrrrrs r0rSafeTransport.make_connections ..t4MA6 $ F9 ##t/?/?/B'B&(##')@)@D*KCI*K$K ##A& &r3rNrrrIr3r0rrs  A 'r3rc\rSrSrSrSrg) ServerProxyic URSS5=UlnUbD[U5SnURSS5nUS:Xa[nO[ nU"X5S9=US'nXpl[RR"X40UD6 g)Nrrrhttps)r transport) r~rrrrrrrr r)rrlrrrgrtclsrns r0rServerProxy.__init__s!'It!<< w  c]1%F!::na8L $ &*7&N NF; !N&&t;F;r3)rrN)rrrrrrrIr3r0r r s > r3cU$rrIrs r0__iter__CSVReader.__iter__;rr3c[UR5n[RSS:a>[ U5H/up#[ U[ 5(aMURS5X'M1 U$Nrrr)nextrrrrrrrW)rr+rmrs r0r-CSVReader.next>sXdkk"   A  "$V,!$ 22 $ G 4FI- r3)rrN) rrrrrr)r-__next__rrIr3r0r$r$/s ?Hr3r$c \rSrSrSrSrSrg) CSVWriteriHc [US5Ul[R"UR40URD6Ulg)Nr1)rrr&writerr")rrrs r0rCSVWriter.__init__Is-C( jj> > r3c[RSS:aD/nUH:n[U[5(aUR S5nUR U5 M< UnUR RU5 gr,)rrrrr@r%r3writerow)rrowrrs r0r6CSVWriter.writerowMsc   A  "AdI..;;w/DC S!r3)rr3N)rrrrrr6rrIr3r0r1r1Hs ?"r3r1cl^\rSrSr\"\R 5rS\S'S U4SjjrSrSr Sr Sr U=r $) Configuratori[ inc_convertinccr>[[U] U5 U=(d [R"5Ulgr)superr:rrwrr)rconfigr __class__s r0rConfigurator.__init__`s$ lD*62'BIIK r3c^^ U U4Sjm URS5n[U5(dTRU5nURSS5nURSS5nU(a"[UVs/sH nT "U5PM sn5nUVs/sH!n[ U5(dMUT "X54PM# nn[ U5nU"U0UD6n U(a+UR 5Hup[XT "U 55 M U $s snfs snf)NcN>[U[[45(a*[U5"UVs/sH nT"U5PM sn5nU$[U[5(a3SU;aTR U5nU$0nUHnT"X5X#'M U$TR U5nU$s snfN())rrur:typedictconfigure_customconvert)ormr+rrIrs r0rI.Configurator.configure_custom..convertes!dE]++aa!8a'!*a!89MAt$$19!2215FM  F$+ADM MaM"9sB"rErz[]rI)r~rrr:rrGrsetattr) rr?rpropsr rJrrrr+rrXrIs ` @r0rHConfigurator.configure_customds  JJt {{ QA 3%zz$# d3d'!*d34D28K&QKN(!WVY'(&KeD#F#  71:.& 4Ks0C> D%DcURUn[U[5(a&SU;a URU5=URU'nU$rD)r?rrGrH)rrr+s r0 __getitem__Configurator.__getitem__sFS! fd # #(,(=(=f(E EDKK v r3c0[RRU5(d*[RRURU5n[ R "USSS9n[R"U5nSSS5 U$!,(df  W$=f)z*Default converter for the inc:// protocol.rrr2N) rwrxisabsr'rrr5rr)rrr<r+s r0r;Configurator.inc_convertsdww}}U##GGLLE2E [[g 6!YYq\F7 7 6 s %B Brr) rrrrrGrvalue_convertersrrHrPr;r __classcell__)r@s@r0r:r:[s9,==>+U(> r3r:c.\rSrSrSrSSjrSrSrSrg) SubprocessMixiniz; Mixin for running subprocesses and capturing their output NcXlX lgr)verboseprogress)rrZr[s r0rSubprocessMixin.__init__s   r3cURnURnUR5nU(dOUb U"XR5 OsU(d [RR S5 O.[RR UR S55 [RR5 MUR5 g)z Read lines from a subprocess' output stream and either pass to a progress callable (if specified) or write progress information to sys.stderr. Nrr) r[rZreadlinerstderrrrWflushr)rrrr[rZr/s r0rSubprocessMixin.readers ==,,!A#$JJ$$S)JJ$$QXXg%67   "  r3c `[R"U4[R[RS.UD6n[R"UR UR S4S9nUR5 [R"UR URS4S9nUR5 UR5 UR5 UR5 URbURSS5 U$UR(a[RRS5 U$)N)stdoutr_rc)rr r_zdone.mainzdone. ) subprocessPopenPIPE threadingThreadrrcrr_waitr'r[rZrr)rcmdrrt1t2s r0 run_commandSubprocessMixin.run_commands   S ?$.OO ?7= ?   T[[(7K L    T[[(7K L       == $ MM'6 *\\ JJ  Y 'r3)r[rZ)FN) rrrrrrrrnrrIr3r0rXrXs!*r3rXcN[R"SSU5R5$)z,Normalize a python package name a la PEP 503z[-_.]+r)rsubr)r^s r0normalize_namerrs  66(C & , , ..r3c2\rSrSrSrSrS SjrSrSrSr g) PyPIRCFileizhttps://upload.pypi.org/legacy/pypiNcUc=[RR[RRS5S5nXlX lg)Nrz.pypirc)rwrxr'rrra)rrras r0rPyPIRCFile.__init__s4 :bgg005yAB r3cb0n[RRUR5(GaUR=(d UR n[ R"5nURUR5 UR5nSU;Ga"URSS5nURS5Vs/sH)nUR5S:wdMUR5PM+ nnU/:Xa SU;aS/nU$UHnSU0nURUS5US'SUR 4S UR4S 4H4upURXh5(aURXh5X'M0XU'M6 US:Xa"X R S4;aUR US'MUSU:wdMUSU:wdM0nM U$S U;ajS nURUS5(aURUS5nO UR nURUS5URUS 5UUURS .nU$s snf)N distutilsz index-serversrJrruserverr repositoryrealm)rNz server-loginr)rrr{rzr|)rwrxrrraDEFAULT_REPOSITORYrRawConfigParserrrrrrc DEFAULT_REALM has_option) rr+r{r?r index_serversrz_serversrrs r0rPyPIRCFile.reads- 77>>$-- ( ()$*8L I#+"*F!3-3ZZ -Kz*/;D & 6: >",$!//  Y5s =H,H,cp[R"5nURnURU5 UR S5(dUR S5 UR SSU5 UR SSU5 [US5nURU5 SSS5 g!,(df  g=f)Nrurrr1) rr~rr has_sectionrrr5r)rrrr?rr<s r0rPyPIRCFile.updates--/ ]] B!!&))   v & 6:x0 6:x0 "c]a LLO]]s B'' B5)rraNN) rrrrr}rrrrrrIr3r0rtrts:M 8t r3rtcD[URS9R5$)z? Read the PyPI access configuration as supported by distutils. )ra)rtrarr@s r0 _load_pypircr s %)) $ ) ) ++r3c`[5RURUR5 gr)rtrrrrs r0 _store_pypircr&sL7r3c[RS:XayS[RR 5;agS[RR 5;agS[RR 5;ag[R $S[R ;a[R S$[RS :wd[[S 5(d[R $[R"5upp#nUR 5RS S 5nURS S5RS S5nUSSS:Xa U<SU<3$USSS:XaCUSS:a9SnS[US5S- USS4-nSSS.nUSU[R-- nOUSSS:Xa SSK J n U"5$USS S!:XaPS!n[R"S"[R 5nUR#U5nU(aUR%5nO?USS S#:Xa6SSKn SSKn U R+U R,R/5XU5upnU<SU<SU<3$)$aReturn a string that identifies the current platform. This is used mainly to distinguish platform-specific build directories and platform-specific built distributions. Typically includes the OS name and version and the architecture (as supplied by 'os.uname()'), although the exact information included depends on the OS; eg. on Linux, the kernel version isn't particularly important. Examples of returned values: linux-i586 linux-alpha (?) solaris-2.6-sun4u Windows will return one of: win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) win32 (all others - specifically, sys.platform is returned) For other non-POSIX platforms, currently just returns 'sys.platform'. ramd64 win-amd64z(arm) win-arm32z(arm64)z win-arm64_PYTHON_HOST_PLATFORMrDunamervrr\rorNlinuxsunosr5solarisz%d.%sr32bit64bit)ilz.%saix) aix_platformcygwinz[\d.]+darwin)rwr^rrrplatformrrrr$intmaxsize _aix_supportrrrZASCIIr r _osx_supportdistutils.sysconfigget_platform_osx sysconfigget_config_vars) osnamerreleasermachinebitnessrrel_rer*rrys r0get_host_platformr.s( ww$ ckk'') ) ckk'') )  ))+ +||"**,zz122 ww'W!5!5||13 -V7W\\^ # #C ,Fooc3'//S9G bqzW"7++ w  1: FWQZ1!4gabk BBG#*wGG uws{{33 3G u -~ x Y1 LL ! ggiG x 0#/#@#@(1(;(;(K(K(M(.$B  ' 22r3win32rr)x86x64armc[RS:wa [5$[RR S5nU[ ;a [5$[ U$)NrVSCMD_ARG_TGT_ARCH)rwr^rrr_TARGET_TO_PLAT)cross_compilation_targets r0 get_platformrsG ww$ ""!zz~~.BC6 "" 3 44r3r)rr)r collectionsr contextlibr&globrrrlrloggingrwrXrrr ImportErrorrerrarrrhdummy_threadingrrrcompatrrr r r r r rrrrrrrrrrrrrr getLoggerrr$rZrrUrTr<rGrBrfr&rKrrrrrrrrrcontextmanagerrrrrrrrrrVERBOSErrrrrrrrIrrrrrrrrrrrrrARCHIVE_EXTENSIONSrjrtrr{rrrrrrrrrrrrr rrr$r1r:rXrrrtrrrrrrIr3r0rs   #    ( ((((((   8 $ ZZ) * ZZ 34 ZZ5 6 JJD E ZZ jj JJ{ # zzEF V!rz@z4$  ,^&   && f  6u6un &8 :::: ' >&(R" & ::'89;?,-2**9: /2(D # )F)XCCPE!E!V.3l " $W+vW+z JJ~ &  #?@jj!566++'11B'R3<3 # ## #' //'"<)''<,$ f 2 " "&4#4n+f+\/OOb, 8N3d   5g; C('(s#NNNN N#"N#