JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbrў f"c @sadddgZddlZddlZddlZddlZddlmZyejjej Z Wne k rdZ YnXddZ ddZdd ZGd ddeZGd d d eZGd ddeZea[iZxSeejjD]<\ZZedddkrdekreee Wsu#Process.__init__..(uNoneuAssertionErrorunextu_current_processu_counteru _identityu_authkeyu _daemonicu_tempdiruosugetpidu _parent_pidu_popenu_targetutupleu_argsudictu_kwargsutypeu__name__ujoinu_nameu _danglinguadd(uselfugrouputargetunameuargsukwargsudaemonucount((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu__init__Fs        #uProcess.__init__cCs&|jr"|j|j|jndS(uQ Method to be run in sub-process; can be overridden in sub-class N(u_targetu_argsu_kwargs(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyurunZs u Process.runcCs|jdkstd|jtjks<tdtj sRtdt|j dk rt|j }nddl m }|||_|jj |_ tjj|dS(u% Start child process ucannot start a process twiceu:can only start a process object created by current processu3daemonic processes are not allowed to have childreni(uPopenN(u_popenuNoneuAssertionErroru _parent_piduosugetpidu_current_processu _daemonicu_cleanupu_PopenuforkinguPopenusentinelu _sentinelu _childrenuadd(uselfuPopen((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyustartas    u Process.startcCs|jjdS(uT Terminate process; sends SIGTERM signal or uses TerminateProcess() N(u_popenu terminate(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu terminatessuProcess.terminatecCsq|jtjks!td|jdk s<td|jj|}|dk rmtjj |ndS(u5 Wait until child process terminates ucan only join a child processucan only join a started processN( u _parent_piduosugetpiduAssertionErroru_popenuNoneuwaitu_current_processu _childrenudiscard(uselfutimeoutures((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyujoinys ! u Process.joincCsa|tkrdS|jtjks1td|jdkrDdS|jj |jj dkS(u1 Return whether process is alive ucan only test a child processTNF( u_current_processuTrueu _parent_piduosugetpiduAssertionErroru_popenuNoneuFalseupollu returncode(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuis_alives ! uProcess.is_alivecCs|jS(N(u_name(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyunamesu Process.namecCs(t|tstd||_dS(Nuname must be a string(u isinstanceustruAssertionErroru_name(uselfuname((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyunamescCs|jS(u4 Return whether process is a daemon (u _daemonic(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyudaemonsuProcess.daemoncCs(|jdkstd||_dS(u1 Set whether process is a daemon uprocess has already startedN(u_popenuNoneuAssertionErroru _daemonic(uselfudaemonic((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyudaemonscCs|jS(N(u_authkey(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuauthkeysuProcess.authkeycCst||_dS(u2 Set authorization key of process N(uAuthenticationStringu_authkey(uselfuauthkey((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuauthkeyscCs#|jdkr|jS|jjS(uM Return exit code of process or `None` if it has yet to stop N(u_popenuNoneupoll(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuexitcodesuProcess.exitcodecCs-|tkrtjS|jo(|jjSdS(uU Return identifier (PID) of process or `None` if it has yet to start N(u_current_processuosugetpidu_popenupid(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuidents  u Process.identc Cs0y |jSWntk r+tdYnXdS(u{ Return a file descriptor (Unix) or handle (Windows) suitable for waiting for process termination. uprocess not startedN(u _sentineluAttributeErroru ValueError(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyusentinels  uProcess.sentinelcCs|tkrd}n]|jtjkr3d}n?|jdkrKd}n'|jjdk rl|j}nd}t|t kr|dkrd}qdt j ||}ndt|j |j ||jrdpd fS( Nustarteduunknownuinitialiustoppedu stopped[%s]u<%s(%s, %s%s)>u daemonu(u_current_processu _parent_piduosugetpidu_popenuNoneupolluexitcodeutypeuintu_exitcode_to_nameugetu__name__u_nameu _daemonic(uselfustatus((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu__repr__s       uProcess.__repr__c(Csddlm}zyt|_tjd|_tjdk ry#tjj t t j t_Wqttfk rYqXnt}|az|jj|jWd~X|jdz|jd}Wd|jXWntk rh}zd|js d}nMt|jdtr/|jd}n'tjjt|jddd}WYdd}~Xn;d}ddl}tjjd|j|j YnXWd|jd|tj!j"tjj"X|S(Ni(uutilu child process calling self.run()iu u Process %s: u process exiting with exitcode %d(#uuutilusetu _childrenu itertoolsucountu_counterusysustdinuNoneucloseuopenuosudevnulluOSErroru ValueErroru_current_processu_finalizer_registryuclearu_run_after_forkersuinfourunu_exit_functionu SystemExituargsu isinstanceuintustderruwriteustru tracebackunameu print_excustdoutuflush(uselfuutilu old_processuexitcodeueu traceback((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu _bootstrapsJ        !  uProcess._bootstrapN(u__name__u __module__u __qualname__u__doc__uNoneu_Popenu__init__urunustartu terminateujoinuis_aliveupropertyunameusetterudaemonuauthkeyuexitcodeuidentupidusentinelu__repr__u _bootstrap(u __locals__((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuProcess>s*       cBs |EeZdZddZdS(uAuthenticationStringcCs>ddlm}|js+tdntt|ffS(Ni(uPopenuJPickling an AuthenticationString object is disallowed for security reasons(uforkinguPopenuthread_is_spawningu TypeErroruAuthenticationStringubytes(uselfuPopen((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu __reduce__s   uAuthenticationString.__reduce__N(u__name__u __module__u __qualname__u __reduce__(u __locals__((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuAuthenticationStringsuAuthenticationStringcBs |EeZdZddZdS(u _MainProcesscCspf|_d|_d|_d|_d|_tjd|_ t |_ t t jd|_d|_dS(Nu MainProcessii F(u _identityuFalseu _daemonicu_nameuNoneu _parent_pidu_popenu itertoolsucountu_counterusetu _childrenuAuthenticationStringuosuurandomu_authkeyu_tempdir(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu__init__.s      u_MainProcess.__init__N(u__name__u __module__u __qualname__u__init__(u __locals__((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu _MainProcess,su _MainProcessiuSIGu_(u__all__uosusysusignalu itertoolsu _weakrefsetuWeakSetupathuabspathugetcwdu ORIGINAL_DIRuOSErroruNoneucurrent_processuactive_childrenu_cleanupuobjectuProcessubytesuAuthenticationStringu _MainProcessu_current_processu_exitcode_to_nameulistu__dict__uitemsunameusignumu _dangling(((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu s,         ""