<[c@@sddlmZddlZddlZddlZddlZddlmZmZm Z ddl m Z m Z m ZddlmZddlmZdZd Zd Zd Zd Zd Zi?ddefd6ddefd6ddefd6ddefd6ddefd6ddefd6d d!efd"6d#d$efd%6d!d(6d)d*efd+6d,d-efd.6d/d0efd16d2d3efd46d5d6efd76d8d9efd:6d;d<efd=6d"d@6d#dC6d$dF6d%dI6d&dL6d'dO6d(dR6d)dU6d*dX6d+d[6d\d]efd^6d_d`efda6dbdcefdd6dedfefdg6dhdiefdj6dkdlefdm6dndoefdp6dqdrefds6dtduefdv6dwdxefdy6dzd{efd|6d}d~efd6ddefd6ddefd6ddefd6ddefd6ddefd6ddefd6ddefd6ddefd6ddefd6ddefd6d,d6d-d6d.d6d/d6d0d6d1d6d2d6d3d6d4d6d5d6d6d6d7d6d8d6d9d6ddefd6ZdZdejfdYZdZdZdZidd6dd6dd6dd6dd6dd6Z d:Z!idd;6dd<6dd=6Z"dZ#dZ$dZ%dZ&dddZ'ej(ej)e'eej*ej)e%ej+ej)ddddgej,ej)d dS(>i(tprint_functionNi(tImaget ImageFiletTiffImagePlugin(ti8to8ti16be(tpresets(t isStringTypes0.6cCs3t|jjdd}tj|j|dS(Ni(ti16tfptreadRt _safe_read(tselftmarkertn((s3/tmp/pip-build-SKekGm/pillow/PIL/JpegImagePlugin.pytSkip4sc Cs9t|jjdd}tj|j|}d|d@}||j|<|jj||f|dkr#|d dkr#t|d|jd<}t |d |jd R:tsizettile(R R*RCtnamet descriptionthandlertrawmode((s3/tmp/pip-build-SKekGm/pillow/PIL/JpegImagePlugin.pyt_open1sF                 cCs*|jj|}| r&tjr&dS|S(s internal: read more image data For premature EOF and LOAD_TRUNCATED_IMAGES adds EOI marker so libjpeg can finish decoding s(R R RtLOAD_TRUNCATED_IMAGES(R t read_bytesR*((s3/tmp/pip-build-SKekGm/pillow/PIL/JpegImagePlugin.pyt load_readdsc Cst|jdkrdS|jr&dS|jd\}}}}d}|ddkry|d kry||_|df}n|rqt|jd|d|jd|d}x*ddd dgD]}||krPqqW|d|d|d |d|d||d|d |d|d||df}|jd|d||jd|d|f|_|}n||||fg|_|df|_|S( NiiR1R0tYCbCrR5iiii(R0R(R<Rt decoderconfigR:tminRR7( R R:RtdtetotatscaleR*((s3/tmp/pip-build-SKekGm/pillow/PIL/JpegImagePlugin.pytdraftss(  - Z5 cCsddl}ddl}ddl}|j\}}|j||jj|jrw|jdd||jgn t dz)t j |}|j |j |_ Wdy|j|Wntk rnXX|j j|_|j j|_g|_dS(Nitdjpegs-outfilesInvalid Filename(t subprocessttempfiletostmkstemptclosetpathtexiststfilenamet check_callt ValueErrorRtopentloadtimtunlinktOSErrorR:RR7R(R RRRtfRt_im((s3/tmp/pip-build-SKekGm/pillow/PIL/JpegImagePlugin.pyt load_djpegs&       cCs t|S(N(R%(R ((s3/tmp/pip-build-SKekGm/pillow/PIL/JpegImagePlugin.pyR%scCs t|S(N(t_getmp(R ((s3/tmp/pip-build-SKekGm/pillow/PIL/JpegImagePlugin.pyRs( t__name__t __module__tformattformat_descriptionRRRRR%R(((s3/tmp/pip-build-SKekGm/pillow/PIL/JpegImagePlugin.pyR,s 3    cs#dfd|jDS(NcSs<y.t|dkr-t|t r-|dSWnnX|S(Nii(R<t isinstancetdict(tvalue((s3/tmp/pip-build-SKekGm/pillow/PIL/JpegImagePlugin.pyt_fixups " cs%i|]\}}||qS(((t.0tkRI(R(s3/tmp/pip-build-SKekGm/pillow/PIL/JpegImagePlugin.pys s (titems(tsrc_dict((Rs3/tmp/pip-build-SKekGm/pillow/PIL/JpegImagePlugin.pyt _fixup_dicts cCs3y|jd}Wntk r%dSXtj|d}|jd}tj|}|j|t t |}y|j |dWntt fk rn0Xtj|}|j||j t |y|j |dWntt fk rn-Xtj|}|j|t ||d<|S(NRiiiii%(R!R'R>tiotBytesIOR RtImageFileDirectory_v1RRRtseekR&tupdate(R tdatatfiletheadR!R((s3/tmp/pip-build-SKekGm/pillow/PIL/JpegImagePlugin.pyR%s0    cCsty|jd}Wntk r%dSXtj|}|jd}|d dkrZdnd}y,tj|}|j|t |}Wnt dnXy|d}Wntk rt d nXg}yz|d } x_t d |D]N} t j d j|| | d } d3} t t| | } it| dd4@d6t| dd5@d6t| dd6@d6| dd7@d?d6| dd8@d?d6| dd @d!6}|dd krd"|dtRRR RtImageFileDirectory_v2RRR(R?tstructt unpack_fromRtziptbooltgetR (R Rt file_contentsRt endiannessR!Rtquantt mpentriest rawmpentriestentrynumt unpackedentrytlabelstmpentryt mpentryattrt mptypemap((s3/tmp/pip-build-SKekGm/pillow/PIL/JpegImagePlugin.pyRsn                 R0t1R1tRGBXsCMYK;IR2Riiiiiiiiiii iiii*iii iiii)i+i i iiii(i,i5i iii i'i-i4i6iii!i&i.i3i7i<ii"i%i/i2i8i;i=i#i$i0i1i9i:i>i?cCswgtt|D]}||kr||^q}x;t|D]-\}}gtD]}||^qU||Rt splitlinestsplittintRR?R<RttupletlistRRRR&RG(RtlinetnumtlinesR*RR((s3/tmp/pip-build-SKekGm/pillow/PIL/JpegImagePlugin.pytvalidate_qtabless2  9 9"  R5R6iis>Hss ICC_PROFILER3R4toptimizetsmootht streamtypeRR2ii_iR(ii(ii(tRAWMODER:R'tIOErrort encoderinfoRRtroundRRRRRRtgetattrR>R RtpackR<RtFalset encoderconfigRtmaxRtMAXBLOCKt_save(RR RRR!txRRRRtpresetRtextraR6tICC_OVERHEAD_LENtMAX_BYTES_IN_MARKERtMAX_DATA_BYTES_IN_MARKERtmarkersRCRRR3R tbufsize((s3/tmp/pip-build-SKekGm/pillow/PIL/JpegImagePlugin.pyRis  1                       - %cCsfddl}ddl}|j}|jdd||gy|j|Wntk ranXdS(Nitcjpegs-outfile(RRt_dumpRRR(RR RRRR((s3/tmp/pip-build-SKekGm/pillow/PIL/JpegImagePlugin.pyt _save_cjpegs    cCst||}yB|j}|ddkrPddlm}|||}nWn4ttfk rjntk rtjdnX|S(Nii(t MpoImageFilesTImage appears to be a malformed MPO file, it will be interpreted as a base JPEG file( RRtMpoImagePluginR"R&t IndexErrorR(twarningstwarn(R RRtmpheaderR"((s3/tmp/pip-build-SKekGm/pillow/PIL/JpegImagePlugin.pyt jpeg_factory s  s.jfifs.jpes.jpgs.jpegs image/jpeg(RSRTN(R\s Restart 0N(R]s Restart 1N(R^s Restart 2N(R_s Restart 3N(R`s Restart 4N(Ras Restart 5N(Rbs Restart 6N(Rcs Restart 7N(RdsStart of imageN(Res End of imageN(R{s Extension 0N(R|s Extension 1N(R}s Extension 2N(R~s Extension 3N(Rs Extension 4N(Rs Extension 5N(Rs Extension 6N(Rs Extension 7N(Rs Extension 8N(Rs Extension 9N(Rs Extension 10N(Rs Extension 11N(Rs Extension 12N(Rs Extension 13N(@iiiiiiiiiiii iiii*iii iiii)i+i i iiii(i,i5i iii i'i-i4i6iii!i&i.i3i7i<ii"i%i/i2i8i;i=i#i$i0i1i9i:i>i?(iiiiii(iiiiii(iiiiii(-t __future__RRGRRR%R5RRRt_binaryRRRR t JpegPresetsRt_utilRt __version__RR.R/RERJR>RRRRR%RR RRRRRR!R(t register_openRt register_savetregister_extensionst register_mime(((s3/tmp/pip-build-SKekGm/pillow/PIL/JpegImagePlugin.pyt#s      U 0    - L