ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú "SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5 ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú "SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5 ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. ???????????????????????????????????? ???????????????????????????????????? ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú "SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5 ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú "SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5 ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. ???????????????????????????????????? ????????????????????????????????????  V~gc@sdZdddddddgZdd lZdefd YZid Zd Zd ZdZ d dZ de fdYZ eaeadZd S(s,Drop-in replacement for the thread module. Meant to be used as a brain-dead substitute so that threaded code does not need to be rewritten for when the thread module is not present. Suggested usage is:: try: import thread except ImportError: import dummy_thread as thread terrortstart_new_threadtexitt get_identt allocate_locktinterrupt_maintLockTypeiNcBseZdZdZRS(s%Dummy implementation of thread.error.cGs ||_dS(N(targs(tselfR((s1/opt/alt/python27/lib64/python2.7/dummy_thread.pyt__init__s(t__name__t __module__t__doc__R (((s1/opt/alt/python27/lib64/python2.7/dummy_thread.pyRscCst|ttkr*tdnt|ttkrTtdntay|||Wn!tk r~ntjnXt at rta t ndS(sDummy implementation of thread.start_new_thread(). Compatibility is maintained by making sure that ``args`` is a tuple and ``kwargs`` is a dictionary. If an exception is raised and it is SystemExit (which can be done by thread.exit()) it is caught and nothing is done; all other exceptions are printed out by using traceback.print_exc(). If the executed function calls interrupt_main the KeyboardInterrupt will be raised when the function returns. s2nd arg must be a tuples3rd arg must be a dictN( ttypettuplet TypeErrortdicttFalset_maint SystemExitt _tracebackt print_exctTruet _interrupttKeyboardInterrupt(tfunctionRtkwargs((s1/opt/alt/python27/lib64/python2.7/dummy_thread.pyRs  cCs tdS(s&Dummy implementation of thread.exit().N(R(((s1/opt/alt/python27/lib64/python2.7/dummy_thread.pyR:scCsdS(sDummy implementation of thread.get_ident(). Since this module should only be used when threadmodule is not available, it is safe to assume that the current process is the only thread. Thus a constant can be safely returned. i((((s1/opt/alt/python27/lib64/python2.7/dummy_thread.pyR>scCstS(s/Dummy implementation of thread.allocate_lock().(R(((s1/opt/alt/python27/lib64/python2.7/dummy_thread.pyRGscCs|dk rtdndS(s,Dummy implementation of thread.stack_size().s'setting thread stack size not supportediN(tNoneR(tsize((s1/opt/alt/python27/lib64/python2.7/dummy_thread.pyt stack_sizeKs cBsDeZdZdZddZeZdZdZdZ RS(sClass implementing dummy implementation of thread.LockType. Compatibility is maintained by maintaining self.locked_status which is a boolean that stores the state of the lock. Pickling of the lock, though, should not be done since if the thread module is then used with an unpickled ``lock()`` from here problems could occur from this class not having atomic methods. cCs t|_dS(N(Rt locked_status(R((s1/opt/alt/python27/lib64/python2.7/dummy_thread.pyR \scCs=|dks|rt|_tS|js5t|_tStSdS(sDummy implementation of acquire(). For blocking calls, self.locked_status is automatically set to True and returned appropriately based on value of ``waitflag``. If it is non-blocking, then the value is actually checked and not set if it is already acquired. This is all done so that threading.Condition's assert statements aren't triggered and throw a little fit. N(RRRR(Rtwaitflag((s1/opt/alt/python27/lib64/python2.7/dummy_thread.pytacquire_s    cCs|jdS(N(trelease(Rttyptvalttb((s1/opt/alt/python27/lib64/python2.7/dummy_thread.pyt__exit__vscCs|jstnt|_tS(sRelease the dummy lock.(RRRR(R((s1/opt/alt/python27/lib64/python2.7/dummy_thread.pyR!ys   cCs|jS(N(R(R((s1/opt/alt/python27/lib64/python2.7/dummy_thread.pytlockedsN( R R R R RR t __enter__R%R!R&(((s1/opt/alt/python27/lib64/python2.7/dummy_thread.pyRQs     cCstrtntadS(s^Set _interrupt flag to True to have start_new_thread raise KeyboardInterrupt upon exiting.N(RRRR(((s1/opt/alt/python27/lib64/python2.7/dummy_thread.pyRs (R t__all__t tracebackRt ExceptionRRRRRRRtobjectRRRRRR(((s1/opt/alt/python27/lib64/python2.7/dummy_thread.pyt s      5