ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ Bd\Rc@sMdZddlZejddkrEejddkrEddlTnddlZddlZddlZddlZddlm Z ddl m Z dd l m Z d efd YZd efd YZdefdYZdefdYZdefdYZejZdadZdZdZdZdS(s$Id$iNiii(t*(tfloor(tOSRNG(tFortunaAccumulatort_EntropySourcecBseZdZdZRS(cCs||_||_d|_dS(Ni(t_fortunat_src_numt _pool_num(tselft accumulatortsrc_num((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyt__init__)s  cCs4|jj|j|j||jdd@|_dS(Nii(Rtadd_random_eventRR(Rtdata((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pytfeed.s(t__name__t __module__R R(((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyR(s t_EntropyCollectorcBs#eZdZdZdZRS(cCsItj|_t|d|_t|d|_t|d|_dS(Niii(Rtnewt_osrngRt _osrng_est_time_est _clock_es(RR ((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyR 4scCszxftdD]X}|jjd}x7tdD])}|jj||d|dd!q2Wd}q W|jjdS(Nii ii(trangeRtreadRRtNonetflush(Rtitblocktp((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pytreinit:s ' cCs|jj|jjdtj}|jjtjdtd|t |tj }|j jtjdtd|t |dS(Nis@Iiii@i@( RRRRttimeRtstructtpacktintRtclockR(Rtt((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pytcollectDs  0 (RRR RR%(((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyR2s  t_UserFriendlyRNGcBs>eZdZdZdZdZdZdZRS(cCs8t|_tj|_t|j|_|jdS(N(tFalsetclosedRt_faRt_ecR(R((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyR Ss cCs-tj|_|jj|jjdS(skInitialize the random number generator and seed it with entropy from the operating system. N(tostgetpidt_pidR*RR)t_forget_last_reseed(R((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyRYs cCst|_d|_d|_dS(N(tTrueR(RRR)(R((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pytcloseos  cCsdS(N((R((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyRtscCs|jrtdnt|ttfs<tdn|dkrWtdn|jj|jj |}|j |S(sReturn N bytes from the RNG.sI/O operation on closed filesan integer is requiredis%cannot read to end of infinite stream( R(t ValueErrort isinstancetlongR"t TypeErrorR*R%R)t random_datat _check_pid(RtNtretval((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyRws    cCs(tj|jkr$tdndS(NsTPID check failed. RNG must be re-initialized after fork(). Hint: Try Random.atfork()(R+R,R-tAssertionError(R((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyR6s (RRR RR0RRR6(((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyR&Qs      t_LockingUserFriendlyRNGcBs,eZdZdZdZdZRS(cCs tj|_tj|dS(N(t threadingtLockt_lockR&R (R((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyR scCs3|jjztj|SWd|jjXdS(N(R=tacquireR&R0trelease(R((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyR0s cCs3|jjztj|SWd|jjXdS(N(R=R>R&RR?(R((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyRs cCs6|jjztj||SWd|jjXdS(N(R=R>R&RR?(Rtbytes((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyRs (RRR R0RR(((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyR:s   tRNGFilecBs>eZdZdZdZdZdZdZRS(cCst|_||_dS(N(R'R(t _singleton(Rt singleton((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyR s cCsdS(sPEP 343 supportN((R((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyt __enter__tcCs|jdS(sPEP 343 supportN(R0(R((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyt__exit__scCst|_d|_dS(N(R/R(RRB(R((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyR0s cCs(|jrtdn|jj|S(NsI/O operation on closed file(R(R1RBR(RR@((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyRs cCs|jrtdndS(NsI/O operation on closed file(R(R1(R((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyRs (RRR RDRFR0RR(((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyRAs      cCs<tjz tdkr%tantSWdtjXdS(N(t_singleton_lockR>RBRR:R?(((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyt_get_singletons    cCs ttS(N(RARH(((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyRscCstjdS(N(RHR(((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyRscCstj|S(sEReturn the specified number of cryptographically-strong random bytes.(RHR(tn((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pytget_random_bytess(t __revision__tsyst version_infotCrypto.Util.py21compatR+R;R RtmathRt Crypto.RandomRtCrypto.Random.FortunaRtobjectRRR&R:RAR<RGRRBRHRRRJ(((sQ/opt/alt/python27/lib64/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.pyts* &      K