PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` 3 Klfp@sddlZddlZejddkZer,eZeZneZeZGdddZ ddZ ddd Z d d Z d d Z GdddZejdkrddZn ddlmZddZedkrddlZe ejddZejdx"edD]ZejejdqWdS)Nc@s*eZdZd ddZd ddZd d d ZdS)ConsoleProgressBard#cCs(d|_d|_||_||_||_d|_dS)NrF)blockscurrentsteps indicatoroutdone)selfr rr r /usr/lib/python3.6/util.py__init__"s zConsoleProgressBar.__init__NcCs*d|_|r|jjd||jjddS)NFz %s: z3%--10---20---30---40---50---60---70---80---90--100 )r r write)r messager r rstart*szConsoleProgressBar.startcCs|j|7_|j}tt|jt|jdd|_|jdkrFd|_|j|}|jj|j||jj |jdkr|j rd|_ |jjddS)Nr2T ) rrintroundfloatrr rr flushr )r noldnewr r rstep0s"   zConsoleProgressBar.step)rr)N)r)__name__ __module__ __qualname__rrrr r r rr!s  rcCsg}|j||S)N)extend)slr r r set_to_listBs r%FcCs@t|std|r,t|}|j|dSx|D]}|SWdS)a Return the first element of a set. It sometimes useful to return the first element from a set but, because sets are not indexable, this is rather hard. This function will return the first element from a set. If sorted is True, then the set will first be sorted (making this an expensive operation). Otherwise a random element will be returned (as sets are not ordered). zempty containterrN)len IndexErrorr%sort)r#sortedr$xr r rfirstGs  r+c Cs:tj}y|j|}Wntk r4|jd}YnX|S)z/Encode given text via preferred system encodingzutf-8)localegetpreferredencodingencode UnicodeError)textencodingZ encoded_textr r r encode_input\s r2c Cs:tj}y|j|}Wntk r4|jd}YnX|S)z/Decode given text via preferred system encodingzutf-8)r,r-decoder/)r0r1Z decoded_textr r r decode_inputis r4c@sHeZdZdZddZddZddZdd Zd d Zd d Z ddZ dS) ComparisonzClass used when implementing rich comparison. Inherit from this class if you want to have a rich comparison withing the class, afterwards implement _compare function within your class.cCstS)N)NotImplemented)r othermethodr r r_compare}szComparison._comparecCs|j|ddS)NcSs||kS)Nr )abr r rsz#Comparison.__eq__..)r9)r r7r r r__eq__szComparison.__eq__cCs|j|ddS)NcSs||kS)Nr )r:r;r r rr<sz#Comparison.__lt__..)r9)r r7r r r__lt__szComparison.__lt__cCs|j|ddS)NcSs||kS)Nr )r:r;r r rr<sz#Comparison.__le__..)r9)r r7r r r__le__szComparison.__le__cCs|j|ddS)NcSs||kS)Nr )r:r;r r rr<sz#Comparison.__ge__..)r9)r r7r r r__ge__szComparison.__ge__cCs|j|ddS)NcSs||kS)Nr )r:r;r r rr<sz#Comparison.__gt__..)r9)r r7r r r__gt__szComparison.__gt__cCs|j|ddS)NcSs||kS)Nr )r:r;r r rr<sz#Comparison.__ne__..)r9)r r7r r r__ne__szComparison.__ne__N) rr r!__doc__r9r=r>r?r@rArBr r r rr5vsr5rcsGfddd}|S)z,Convert a cmp= function into a key= functioncs\eZdZddZfddZfddZfddZfd d Zfd d Zfd dZ dS)zcmp_to_key..KcWs ||_dS)N)obj)r rEargsr r rrszcmp_to_key..K.__init__cs|j|jdkS)Nr)rE)r r7)mycmpr rr>szcmp_to_key..K.__lt__cs|j|jdkS)Nr)rE)r r7)rGr rrAszcmp_to_key..K.__gt__cs|j|jdkS)Nr)rE)r r7)rGr rr=szcmp_to_key..K.__eq__cs|j|jdkS)Nr)rE)r r7)rGr rr?szcmp_to_key..K.__le__cs|j|jdkS)Nr)rE)r r7)rGr rr@szcmp_to_key..K.__ge__cs|j|jdkS)Nr)rE)r r7)rGr rrBszcmp_to_key..K.__ne__N) rr r!rr>rAr=r?r@rBr )rGr rKs     rHr )rGrHr )rGr cmp_to_keysrI)rIcCs||k||kS)Nr )r+secondr r rcmpsrK__main__i)rz computing pigMbP?)F)rrD)r,sys version_infoZPY3bytesZ bytes_typestrZ string_typeZunicoderr%r+r2r4r5rI functoolsrKrZtimestdoutprrangeirZsleepr r r rs0!