JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbrў f5c@sBdZddlZddlZddlZddlZdddgZGdddeZed\Z Z Z dZ d Z d ZGd d d Zd dZGdddZGdddZGdddZGdddZddZGdddZGdddZGdddZddZdS(uMacintosh binhex compression/decompression. easy interface: binhex(inputfilename, outputfilename) hexbin(inputfilename, outputfilename) iNubinhexuhexbinuErrorcBs|EeZdZdS(uErrorN(u__name__u __module__u __qualname__(u __locals__((u+/opt/alt/python33/lib64/python3.3/binhex.pyuErrorsiii@scBs |EeZdZddZdS(uFInfocCsd|_d|_d|_dS(Nu????i(uTypeuCreatoruFlags(uself((u+/opt/alt/python33/lib64/python3.3/binhex.pyu__init__/s  uFInfo.__init__N(u__name__u __module__u __qualname__u__init__(u __locals__((u+/opt/alt/python33/lib64/python3.3/binhex.pyuFInfo.suFInfoc Cst}tj|dJ}|jd}d|krEd|_n|jdd|j}WdQXtjj |\}}|j ddd}|||dfS( NurbiiuTEXTiu:u-i( uFInfouiouopenureaduTypeuseekutelluosupathusplitureplace(unameufinfoufpudataudsizeudirufile((u+/opt/alt/python33/lib64/python3.3/binhex.pyu getfileinfo4s   u getfileinfocBsD|EeZdZddZddZddZddZd S( uopenrsrccGsdS(N((uselfuargs((u+/opt/alt/python33/lib64/python3.3/binhex.pyu__init__Bsuopenrsrc.__init__cGsdS(Ns((uselfuargs((u+/opt/alt/python33/lib64/python3.3/binhex.pyureadEsu openrsrc.readcGsdS(N((uselfuargs((u+/opt/alt/python33/lib64/python3.3/binhex.pyuwriteHsuopenrsrc.writecCsdS(N((uself((u+/opt/alt/python33/lib64/python3.3/binhex.pyucloseKsuopenrsrc.closeN(u__name__u __module__u __qualname__u__init__ureaduwriteuclose(u __locals__((u+/opt/alt/python33/lib64/python3.3/binhex.pyuopenrsrcAs   uopenrsrccBsJ|EeZdZdZddZddZddZdd Zd S( u_Hqxcoderengineu(Write data to the coder in 3-byte chunkscCs,||_d|_d|_td|_dS(Nsi(uofpudatauhqxdatauLINELENulinelen(uselfuofp((u+/opt/alt/python33/lib64/python3.3/binhex.pyu__init__Qs   u_Hqxcoderengine.__init__cCs|j||_t|j}|dd}|jd|}|j|d|_|s`dS|jtj||_|jddS(Nii(udataulenuhqxdataubinasciiub2a_hqxu_flush(uselfudataudatalenutodo((u+/opt/alt/python33/lib64/python3.3/binhex.pyuwriteWsu_Hqxcoderengine.writecCsd}x]|t|j|jkre||j}|jj|j||dt|_|}q W|j|d|_|r|jj|jdndS(Nis s: (ulenuhqxdataulinelenuofpuwriteuLINELEN(uselfuforceufirstulast((u+/opt/alt/python33/lib64/python3.3/binhex.pyu_flushbs !  u_Hqxcoderengine._flushcCsL|jr(|jtj|j|_n|jd|jj|`dS(Ni(udatauhqxdataubinasciiub2a_hqxu_flushuofpuclose(uself((u+/opt/alt/python33/lib64/python3.3/binhex.pyuclosems    u_Hqxcoderengine.closeN(u__name__u __module__u __qualname__u__doc__u__init__uwriteu_flushuclose(u __locals__((u+/opt/alt/python33/lib64/python3.3/binhex.pyu_HqxcoderengineNs   u_HqxcoderenginecBs>|EeZdZdZddZddZddZdS( u_Rlecoderengineu4Write data to the RLE-coder in suitably large chunkscCs||_d|_dS(Ns(uofpudata(uselfuofp((u+/opt/alt/python33/lib64/python3.3/binhex.pyu__init__ws u_Rlecoderengine.__init__cCsX|j||_t|jtkr)dStj|j}|jj|d|_dS(Ns(udataulenuREASONABLY_LARGEubinasciiu rlecode_hqxuofpuwrite(uselfudataurledata((u+/opt/alt/python33/lib64/python3.3/binhex.pyuwrite{s u_Rlecoderengine.writecCsE|jr.tj|j}|jj|n|jj|`dS(N(udataubinasciiu rlecode_hqxuofpuwriteuclose(uselfurledata((u+/opt/alt/python33/lib64/python3.3/binhex.pyucloses   u_Rlecoderengine.closeN(u__name__u __module__u __qualname__u__doc__u__init__uwriteuclose(u __locals__((u+/opt/alt/python33/lib64/python3.3/binhex.pyu_Rlecoderenginets  u_RlecoderenginecBst|EeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS(uBinHexc Cs|\}}}}d}t|trH|}tj|d}d}nyx|jdt|} t| |_ d|_ |dkrt }n||_ ||_|j||t|_Wn|r|jnYnXdS(Nuwbs0(This file must be converted with BinHex 4.0) :iFT(uFalseu isinstanceustruiouopenuTrueuwriteu_Hqxcoderengineu_RlecoderengineuofpucrcuNoneuFInfoudlenurlenu _writeinfou _DID_HEADERustateuclose( uselfuname_finfo_dlen_rlenuofpunameufinfoudlenurlenuclose_on_erroruofnameuhqxer((u+/opt/alt/python33/lib64/python3.3/binhex.pyu__init__s*          uBinHex.__init__c Cst|}|dkr'tdnt|g|jdd}|j|j}}t|tr{|jd}nt|tr|jd}n||}tj d|j }tj d|j |j } |||| } |j | |jdS(Ni?uFilename too longulatin-1su>hu>ii(ulenuErrorubytesuencodeuTypeuCreatoru isinstanceustrustructupackuFlagsudlenurlenu_writeu _writecrc( uselfunameufinfounludutpucrud2ud3ud4uinfo((u+/opt/alt/python33/lib64/python3.3/binhex.pyu _writeinfos     uBinHex._writeinfocCs,tj||j|_|jj|dS(N(ubinasciiucrc_hqxucrcuofpuwrite(uselfudata((u+/opt/alt/python33/lib64/python3.3/binhex.pyu_writesu BinHex._writecCsJ|jdkrd}nd}|jjtj||jd|_dS(Niu>hu>H(ucrcuofpuwriteustructupack(uselfufmt((u+/opt/alt/python33/lib64/python3.3/binhex.pyu _writecrcs  uBinHex._writecrccCsE|jtkrtdn|jt||_|j|dS(NuWriting data at the wrong time(ustateu _DID_HEADERuErrorudlenulenu_write(uselfudata((u+/opt/alt/python33/lib64/python3.3/binhex.pyuwritesu BinHex.writecCs?|jdkr(td|jfn|jt|_dS(NiuIncorrect data size, diff=%r(udlenuErrorurlenu _writecrcu _DID_DATAustate(uself((u+/opt/alt/python33/lib64/python3.3/binhex.pyu close_datas uBinHex.close_datacCsa|jtkr|jn|jtkr:tdn|jt||_|j|dS(Nu'Writing resource data at the wrong time(ustateu _DID_DATAu close_datauErrorurlenulenu_write(uselfudata((u+/opt/alt/python33/lib64/python3.3/binhex.pyu write_rsrcs  uBinHex.write_rsrccCs|jtkr|jn|jtkr:tdn|jdkrbtd|jfn|j|jjd|_|`dS(NuClose at the wrong timeiu$Incorrect resource-datasize, diff=%r( ustateu _DID_DATAu close_datauErrorurlenu _writecrcuofpucloseuNone(uself((u+/opt/alt/python33/lib64/python3.3/binhex.pyucloses    u BinHex.closeN( u__name__u __module__u __qualname__u__init__u _writeinfou_writeu _writecrcuwriteu close_datau write_rsrcuclose(u __locals__((u+/opt/alt/python33/lib64/python3.3/binhex.pyuBinHexs      uBinHexcCst|}t||}tj|d}x)|jd}|sIPn|j|q0|j|jt|d}x)|jd}|sPn|j |q|j|jdS(uEbinhex(infilename, outfilename): create binhex-encoded copy of a fileurbiN( u getfileinfouBinHexuiouopenureaduwriteu close_dataucloseuopenrsrcu write_rsrc(uinpuoutufinfouofpuifpud((u+/opt/alt/python33/lib64/python3.3/binhex.pyubinhexs$    cBs>|EeZdZdZddZddZddZdS( u_Hqxdecoderengineu*Read data via the decoder in 4-byte chunkscCs||_d|_dS(Ni(uifpueof(uselfuifp((u+/opt/alt/python33/lib64/python3.3/binhex.pyu__init__s u_Hqxdecoderengine.__init__c Csd}|}x|dkr|jr(|S|ddd}|jj|}xiytj|\}|_PWntjk rYnX|jjd}|stdn||}qO||}|t|}| r|j rtdqqW|S(u&Read at least wtd bytes (or until EOF)siiiiiuPremature EOF on binhex file(ueofuifpureadubinasciiua2b_hqxu IncompleteuErrorulen(uselfutotalwtdudecdatauwtdudatau decdatacurunewdata((u+/opt/alt/python33/lib64/python3.3/binhex.pyureads,   u_Hqxdecoderengine.readcCs|jjdS(N(uifpuclose(uself((u+/opt/alt/python33/lib64/python3.3/binhex.pyuclose su_Hqxdecoderengine.closeN(u__name__u __module__u __qualname__u__doc__u__init__ureaduclose(u __locals__((u+/opt/alt/python33/lib64/python3.3/binhex.pyu_Hqxdecoderengines  u_HqxdecoderenginecBsJ|EeZdZdZddZddZddZdd Zd S( u_RledecoderengineuRead data via the RLE-codercCs(||_d|_d|_d|_dS(Nsi(uifpu pre_bufferu post_bufferueof(uselfuifp((u+/opt/alt/python33/lib64/python3.3/binhex.pyu__init__&s   u_Rledecoderengine.__init__cCs_|t|jkr2|j|t|jn|jd|}|j|d|_|S(N(ulenu post_bufferu_fill(uselfuwtdurv((u+/opt/alt/python33/lib64/python3.3/binhex.pyuread,s u_Rledecoderengine.readcCsH|j|jj|d|_|jjrU|jtj|j|_d|_dSt|j}|jddtdtkr|d}nv|jddtkr|d}nP|jd dtdkr|d}n&|jd d tkrn |d}|jtj|jd||_|j|d|_dS( Nisisiiiiiii( u pre_bufferuifpureadueofu post_bufferubinasciiu rledecode_hqxulenuRUNCHAR(uselfuwtdumark((u+/opt/alt/python33/lib64/python3.3/binhex.pyu_fill3s&    !     u_Rledecoderengine._fillcCs|jjdS(N(uifpuclose(uself((u+/opt/alt/python33/lib64/python3.3/binhex.pyucloseVsu_Rledecoderengine.closeN(u__name__u __module__u __qualname__u__doc__u__init__ureadu_filluclose(u __locals__((u+/opt/alt/python33/lib64/python3.3/binhex.pyu_Rledecoderengine#s    #u_RledecoderenginecBst|EeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS(uHexBincCst|tr$tj|d}nxI|jd}|sKtdn|dkr]q'n|dkr'Pq'q't|}t||_d|_ |j dS(NurbiuNo binhex data founds s:i( u isinstanceustruiouopenureaduErroru_Hqxdecoderengineu_Rledecoderengineuifpucrcu _readheader(uselfuifpuchuhqxifp((u+/opt/alt/python33/lib64/python3.3/binhex.pyu__init__Zs    uHexBin.__init__cCs.|jj|}tj||j|_|S(N(uifpureadubinasciiucrc_hqxucrc(uselfulenudata((u+/opt/alt/python33/lib64/python3.3/binhex.pyu_readpsu HexBin._readcCsntjd|jjddd@}|jd@|_||jkratd|j|fnd|_dS(Nu>hiiiuCRC error, computed %x, read %x(ustructuunpackuifpureaducrcuError(uselfufilecrc((u+/opt/alt/python33/lib64/python3.3/binhex.pyu _checkcrcus &uHexBin._checkcrccCs |jd}|jt|}|jd}|j|dd}|dd}tjd|ddd}tjd |dd d|_tjd |d d d|_||_t|_||j_ ||j_ ||j_ t |_ dS(Niiiii u>hi iu>liiii i ii(u_readuordu _checkcrcustructuunpackudlenurlenuFNameuFInfouCreatoruTypeuFlagsu _DID_HEADERustate(uselfulenufnameurestutypeucreatoruflags((u+/opt/alt/python33/lib64/python3.3/binhex.pyu _readheaders  ##     uHexBin._readheadercGs|jtkrtdn|rC|d}t||j}n |j}d}x3t||kr||j|t|}qUW|j||_|S(NuRead data at wrong timeis(ustateu _DID_HEADERuErroruminudlenulenu_read(uselfunurv((u+/opt/alt/python33/lib64/python3.3/binhex.pyureads  !u HexBin.readcCsS|jtkrtdn|jr<|j|j}n|jt|_dS(Nuclose_data at wrong time(ustateu _DID_HEADERuErrorudlenu_readu _checkcrcu _DID_DATA(uselfudummy((u+/opt/alt/python33/lib64/python3.3/binhex.pyu close_datas   uHexBin.close_datacGs|jtkr|jn|jtkr:tdn|r_|d}t||j}n |j}|j||_|j|S(Nu Read resource data at wrong timei(ustateu _DID_HEADERu close_datau _DID_DATAuErroruminurlenu_read(uselfun((u+/opt/alt/python33/lib64/python3.3/binhex.pyu read_rsrcs   uHexBin.read_rsrccCsB|jr|j|j}n|jt|_|jjdS(N(urlenu read_rsrcu _checkcrcu _DID_RSRCustateuifpuclose(uselfudummy((u+/opt/alt/python33/lib64/python3.3/binhex.pyucloses    u HexBin.closeN( u__name__u __module__u __qualname__u__init__u_readu _checkcrcu _readheaderureadu close_datau read_rsrcuclose(u __locals__((u+/opt/alt/python33/lib64/python3.3/binhex.pyuHexBinYs      uHexBincCst|}|j}|s'|j}ntj|d}x)|jd}|sUPn|j|q<|j|j|j d}|rt |d}|j|x)|j d}|sPn|j|q|jn|jdS(u6hexbin(infilename, outfilename) - Decode binhexed fileuwbiN( uHexBinuFInfouFNameuiouopenureaduwriteucloseu close_datau read_rsrcuopenrsrc(uinpuoutuifpufinfouofpud((u+/opt/alt/python33/lib64/python3.3/binhex.pyuhexbins.       (u__doc__uiouosustructubinasciiu__all__u ExceptionuErrorurangeu _DID_HEADERu _DID_DATAu _DID_RSRCuREASONABLY_LARGEuLINELENuRUNCHARuFInfou getfileinfouopenrsrcu_Hqxcoderengineu_RlecoderengineuBinHexubinhexu_Hqxdecoderengineu_RledecoderengineuHexBinuhexbin(((u+/opt/alt/python33/lib64/python3.3/binhex.pyus*      &Y *6d