§
    r�’jHT  ã                   óÈ   — d Z ddlmZ ddlZddlZddlmZ ddlT dZdZ	d	Z
d
ZdZdZ G d„ de¦  «        Z G d„ de¦  «        Zd„ Z G d„ de¦  «        Zdd„Zej        fd„ZdS )z‘
Implements the minimal functionality required
to extract a "Workbook" or "Book" stream (as one big string)
from an OLE2 Compound Document file.
é    )Úprint_functionN)Úunpacké   )Ú*s   ÐÏà¡±áéþÿÿÿéÿÿÿÿéýÿÿÿéüÿÿÿéûÿÿÿc                   ó   — e Zd ZdS )ÚCompDocErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    ú:C:\Projects\DSCons\.venv\Lib\site-packages\xlrd\compdoc.pyr   r      s   € € € € € Ø€Dr   r   c                   ó,   — e Zd Zdej        fd„Zdd„ZdS )ÚDirNoder   c                 óÚ  — || _         || _        t          d|dd…         ¦  «        \  }| _        | _        | _        | _        | _        t          d|dd…         ¦  «        \  | _        | _	        |dk    rt          d¦  «        | _        n t          |d|d	z
  …         d
¦  «        | _        g | _        d| _        t          d|dd…         ¦  «        | _        |r|                      |¦  «         d S d S )Nz<HBBiiié@   éP   z<iiét   é|   r   Ú é   Ú	utf_16_ler   z<IIIIéd   )ÚDIDÚlogfiler   ÚetypeÚcolourÚleft_DIDÚ	right_DIDÚroot_DIDÚ	first_SIDÚtot_sizeÚUNICODE_LITERALÚnameÚunicodeÚchildrenÚparentÚtsinfoÚdump)Úselfr   ÚdentÚDEBUGr    Úcbufsizes         r   Ú__init__zDirNode.__init__"   sð   € àˆŒØˆŒõ �9˜d 2 b 5œkÑ*Ô*ñ	ˆ�4”:˜tœ{¨D¬M¸4¼>ØŒõ �5˜$˜s 3˜wœ-Ñ(Ô(ñ 	(ˆŒ˜œà�qŠ=ˆ=Ý'¨Ñ+Ô+ˆDŒIˆIå  Q x°¡z \Ô 2°KÑ@Ô@ˆDŒIØˆŒØˆŒÝ˜W d¨3¨s¨7¤mÑ4Ô4ˆŒØð 	Ø�IŠI�eÑÔÐÐÐð	ð 	r   r   c                 óð   — t          | j        d| j        | j        | j        | j        | j        | j        | j        | j	        | j
        | j        ¦  «         |dk    rt          d| j        | j        ¬¦  «         d S d S )NzbDID=%d name=%r etype=%d DIDs(left=%d right=%d root=%d parent=%d kids=%r) first_SID=%d tot_size=%d
r   ztimestamp info©Úfile)Úfprintfr    r   r)   r!   r#   r$   r%   r,   r+   r&   r'   Úprintr-   )r/   r1   s     r   r.   zDirNode.dump5   sz   € ÝØŒLØqØŒH�d”i ¤¨T¬]ØŒN˜DœM¨4¬;¸¼ÀtÄ~ÐW[ÔWdñ		
ô 	
ð 	
ð �AŠ:ˆ:åÐ" D¤K°d´lÐCÑCÔCÐCÐCÐCð ˆ:r   N)r   )r   r   r   ÚsysÚstdoutr3   r.   r   r   r   r   r       sI   € € € € € à()°3´:ð ð ð ð ð&	Dð 	Dð 	Dð 	Dð 	Dð 	Dr   r   c                 ó>  — |dk     rd S t          | || |         j        ¦  «         | |         j                             |¦  «         || |         _        t          | || |         j        ¦  «         | |         j        dk    rt          | || |         j        ¦  «         d S d S )Nr   r   )Ú_build_family_treer#   r+   Úappendr,   r$   r!   r%   )ÚdirlistÚ
parent_DIDÚ	child_DIDs      r   r<   r<   @   s§   € Ø�1‚}€}�f�fÝ�w 
¨G°IÔ,>Ô,GÑHÔHÐHØˆJÔÔ ×'Ò'¨	Ñ2Ô2Ð2Ø *€GˆIÔÔÝ�w 
¨G°IÔ,>Ô,HÑIÔIÐIØˆyÔÔ 1Ò$Ð$Ý˜7 I¨w°yÔ/AÔ/JÑKÔKÐKÐKÐKð %Ð$r   c                   óL   — e Zd ZdZej        ddfd„Zdd„Zdd„Zd	„ Z	d
„ Z
d„ ZdS )ÚCompDoczÃ
    Compound document handler.

    :param mem:
      The raw contents of the file, as a string, or as an :class:`mmap.mmap`
      object. The only operation it needs to support is slicing.
    r   Fc                 óÌ  — || _         || _        || _        |dd…         t          k    rt	          d¦  «        ‚|dd…         dk    rt	          d|dd…         z  ¦  «        ‚t          d|d	d…         ¦  «        \  }}|rt          d
||fz  |¬¦  «         || _        t          d|dd…         ¦  «        \  }}|dk    rt          d|z  |¬¦  «         d}||k    rt          d|z  |¬¦  «         d}d|z  x| _        }	d|z  | _	        | j        dk    s| j	        dk    r t          d| j        | j	        fz  |¬¦  «         t          d|dd…         ¦  «        \  }
| _
        }| _        }}}}t          |¦  «        dz
  }t          ||	¦  «        \  }}|r(|dz  }t          dt          |¦  «        |	fz  |¬¦  «         || _        || _        t!          j        ddg¦  «        |z  x}| _        |r}t          d|||	| j	        |¬¦  «         t          d||fz  |¬¦  «         t          d|
| j
        | j        fz  |¬¦  «         t          d||fz  |¬¦  «         t          d||fz  |¬¦  «         |	d z  }d!|z  }d}t%          t          d"|dd…         ¦  «        ¦  «        }||z   dz
  |z  }t'          d|d#z
  |z   d$z
  |dz
  z  ¦  «        }d}|dk    r|t(          t*          dfv r�n,|}|t(          t*          t,          fv�r|dk    rt          d%||fz  |¬¦  «         ||k    r.d&||fz  }|dk    rt          ||¬¦  «         nÒt	          |¦  «        ‚|dk     rt	          d'|z  ¦  «        ‚||         rt	          d(|||         fz  ¦  «        ‚d||<   |dz  }|r||k    rt          d)||||||¬¦  «         d|	|z  z   }|                     t          |||||	z   …         ¦  «        ¦  «         |                     ¦   «         }|t(          t*          t,          fv�°|r||k    rt          d*||||||¬¦  «         |r0t          d+t          |¦  «        |¬¦  «         t3          |d,|¦  «         g | _        d}d}t7          t          |¦  «        ¦  «        D ]ø} ||          }!|!t*          t(          fv rŒ|!|k    r8|s)t          d-|¬¦  «         t          d.|!|fz  |¬¦  «         d}t8          || <   d}ŒY|!d/k     rt	          d0|!z  ¦  «        ‚||!         rt	          d1|!||!         fz  ¦  «        ‚d$||!<   |dz  }|r||k    rt          d2|||||||!|¬¦	  «	         d|	|!z  z   }| j                             t          |||||	z   …         ¦  «        ¦  «         Œù|rJt          d3t          | j        ¦  «        |¬¦  «         t3          | j        d,|¦  «         t          |¬¦  «         |r |ržt          d+t          |¦  «        |¬¦  «         t3          |d,|¦  «         t7          |t          | j        ¦  «        ¦  «        D ]}"t8          | j        |"<   Œt          d3t          | j        ¦  «        |¬¦  «         t3          | j        d,|¦  «         |                      | j        d| j        | j        | j
        d4d5¬6¦  «        }#g }$d7}%t7          dt          |#¦  «        d8¦  «        D ]7}&|%dz  }%|$                     t?          |%|#|&|&d8z   …         d|¦  «        ¦  «         Œ8|$| _         tC          |$d|$d         j"        ¦  «         |r|$D ]}'|' #                    |¦  «         Œ| j         d         }(|(j$        d9k    sJ ‚|(j%        dk     s|(j&        dk    rd:| _'        n6|                      | j        d| j        |	|(j%        |(j&        d;d ¬6¦  «        | _'        g | _(        |dk    r|(j&        dk    rt          d<|¬¦  «         |(j&        dk    rÊ|}|})|dk    r•|)dk    r�||         rt	          d=|||         fz  ¦  «        ‚d9||<   |)dz  })d||	z  z   }*t%          t          |||*|*|	z   …         ¦  «        ¦  «        }+| j(                             |+¦  «         | j        |         }|dk    r|)dk    °�|rt          d>||)fz  |¬¦  «         |)dk    r|t(          k    sJ ‚|r't          d?|¬¦  «         t3          | j(        d,|¦  «         |r$t          d@|¬¦  «         t3          |d|¦  «         d S d S )ANr   é   zNot an OLE2 compound documenté   é   s   þÿz)Expected "little-endian" marker, found %rz<HHé   z/
CompDoc format: version=0x%04x revision=0x%04xr5   é"   é   zMWARNING: sector size (2**%d) is preposterous; assuming 512 and continuing ...é	   zYWARNING: short stream sector size (2**%d) is preposterous; assuming 64 and continuing ...é   r   é   r   z"@@@@ sec_size=%d short_sec_size=%dz	<iiiiiiiié,   éL   zAWARNING *** file size (%d) not 512 + multiple of sector size (%d)ÚBz	sec sizesz mem data: %d bytes == %d sectorsz=SAT_tot_secs=%d, dir_first_sec_sid=%d, min_size_std_stream=%dz'SSAT_first_sec_sid=%d, SSAT_tot_secs=%dz)MSATX_first_sec_sid=%d, MSATX_tot_secs=%dé   z<%diz<109iém   r   zMSATX: sid=%d (0x%08X)z7MSAT extension: accessing sector %d but only %d in filez%MSAT extension: invalid sector id: %dzMSAT corruption: seen[%d] == %dz	[1]===>>>z	[2]===>>>zMSAT: len =é
   z8WARNING *** File is truncated, or OLE2 MSAT is corrupt!!z6INFO: Trying to access sector %d but only %d availabler   zMSAT: invalid sector id: %dz)MSAT extension corruption: seen[%d] == %dz	[3]===>>>z
SAT: len =Ú	directoryé   ©r)   Úseen_idr   é€   é   r   ÚSSCSzHWARNING *** OLE2 inconsistency: SSCS size is 0 but SSAT size is non-zerozSSAT corruption: seen[%d] == %dz&SSAT last sid %d; remaining sectors %dÚSSATÚseen))r    Úignore_workbook_corruptionr1   Ú	SIGNATUREr   r   r8   ÚmemÚsec_sizeÚshort_sec_sizeÚdir_first_sec_sidÚmin_size_std_streamÚlenÚdivmodÚmem_data_secsÚmem_data_lenÚarrayr[   ÚlistÚmaxÚEOCSIDÚFREESIDÚMSATSIDÚextendÚpopÚ	dump_listÚSATÚxrangeÚEVILSIDÚ_get_streamr=   r   r>   r<   r%   r.   r!   r&   r'   rY   rZ   ),r/   r^   r    r1   r\   ÚrevisionÚversionÚsszÚssszr_   ÚSAT_tot_secsÚ_unusedÚSSAT_first_sec_sidÚSSAT_tot_secsÚMSATX_first_sec_sidÚMSATX_tot_secsrf   re   Ú	left_overr[   ÚnentÚfmtÚtrunc_warnedÚMSATÚSAT_sectors_reqdÚexpected_MSATX_sectorsÚactual_MSATX_sectorsÚsidÚmsgÚoffsetÚactual_SAT_sectorsÚ
dump_againÚmsidxÚmsidÚsatxÚdbytesr>   ÚdidÚposÚdÚsscs_dirÚnsecsÚ	start_posÚnewss,                                               r   r3   zCompDoc.__init__T   s_  € ØˆŒØ*DˆÔ'ØˆŒ
Øˆq�ˆsŒ8•yÒ Ð ÝÐ>Ñ?Ô?Ð?Øˆr�"ˆuŒ:˜Ò$Ð$ÝÐJÈSÐQSÐTVÐQVÌZÑWÑXÔXÐXÝ" 5¨#¨b°¨e¬*Ñ5Ô5Ñˆ�'Øð 	jÝÐDÈÐQYÐGZÑZÐahÐiÑiÔiÐiØˆŒÝ˜5 # b¨ e¤*Ñ-Ô-‰	ˆˆTØ�Š8ˆ8ÝÐaØñØ#ð%ñ %ô %ð %àˆCØ�#Š:ˆ:ÝÐmØñØ$ð&ñ &ô &ð &àˆDØ#$¨¡8Ð+ˆŒ˜Ø 4™iˆÔØŒ=˜CÒÐ 4Ô#6¸"Ò#<Ð#<ÝÐ6¸$¼-ÈÔI\Ð9]Ñ]ÐdkÐlÑlÔlÐlõ
 �;  B r E¤
Ñ+Ô+ñ		
Ø˜$Ô0°'¸4Ô;SØ Ø å˜3‘x”x #‘~ˆÝ#)¨,¸Ñ#AÔ#AÑ ˆ�yØð 	6à˜QÑˆMÝÐUÝ�s‘8”8˜XÐ&ñ'Ø-4ð6ñ 6ô 6ð 6à*ˆÔØ(ˆÔÝ œ; s¨Q¨CÑ0Ô0°=Ñ@Ð@ˆˆtŒyàð 	vÝ�+˜s D¨(°DÔ4GÈgÐVÑVÔVÐVÝÐ4¸ÀmÐ7TÑTÐ[bÐcÑcÔcÐcÝÐQØ Ô!7¸Ô9QÐSñTØZaðcñ cô cð cåÐ;Ð?QÐS`Ð>bÑbÐipÐqÑqÔqÐqÝÐ=ÐATÐVdÐ@fÑfÐmtÐuÑuÔuÐuØ˜1‰}ˆØ�t‰mˆØˆõ •F˜7 C¨¨3¨¤KÑ0Ô0Ñ1Ô1ˆØ)¨DÑ0°1Ñ4¸Ñ=ÐÝ!$ QÐ)9¸CÑ)?À$Ñ)FÈÑ)JÐPTÐWXÑPXÑ(YÑ!ZÔ!ZÐØ ÐØ˜QÒÐÐ#6½6Å7ÈAÐ:NÐ#NÐ#Nñ à%ˆCØ�f¥g­wÐ7Ð7Ñ7ð ˜1’9�9ÝÐ2°c¸3°ZÑ?ÀgÐNÑNÔNÐNØ˜-Ò'Ð'ØSÐWZÐ\iÐVjÑj�CØ˜q’y�yÝ˜c¨Ð0Ñ0Ô0Ð0ØÝ& sÑ+Ô+Ð+Ø˜1’W�WÝ&Ð'NÐQTÑ'TÑUÔUÐUØ˜”9ð ]Ý&Ð'HÈCÐQUÐVYÔQZÐK[Ñ'[Ñ\Ô\Ð\Ø��S‘	Ø$¨Ñ)Ð$Øð JÐ1Ð4JÒJÐJÝ˜+ }°dÐ<LÐNdÐfzð  BIð  Jñ  Jô  Jð  JØ˜x¨#™~Ñ-�Ø—’�F 3¨¨F°6¸(±?Ð,BÔ(CÑDÔDÑEÔEÐEØ—h’h‘j”j�ð- �f¥g­wÐ7Ð7Ñ7ð0 ð 	BÐ)Ð-CÒCÐCÝ�+˜}¨dÐ4DÐF\Ð^rð  zAð  Bñ  Bô  Bð  BØð 	)Ý�-¥ T¡¤°Ð9Ñ9Ô9Ð9Ý�d˜B Ñ(Ô(Ð(ð ˆŒØÐØˆ
Ý�C ™IœIÑ&Ô&ð 	Fð 	FˆEØ˜”;ˆDØ�¥Ð(Ð(Ð(ð Ø�}Ò$Ð$Ø#ð %ÝÐTÐ[bÐcÑcÔcÐcÝÐRØ Ð/ñ0Ø6=ð?ñ ?ô ?ð ?à#$�LÝ%��U‘Ø�
ØØ˜’�Ý"Ð#@À4Ñ#GÑHÔHÐHØ�DŒzð eÝ"Ð#NÐRVÐX\Ð]aÔXbÐQcÑ#cÑdÔdÐdØˆD�‰JØ !Ñ#ÐØð `Ð+Ð.>Ò>Ð>Ý�k =°$Ð8HÐJ`Ðbvð  yKð  MQð  X_ð  `ñ  `ô  `ð  `Ø˜8 d™?Ñ*ˆFØŒH�OŠO�F 3¨¨F°6¸(±?Ð,BÔ(CÑDÔDÑEÔEÐEÐEàð 	 Ý�,¥ D¤H¡¤°GÐ<Ñ<Ô<Ð<Ý�d”h  GÑ,Ô,Ð,õ
 �wÐÑÔÐØð 	-�Zð 	-Ý�-¥ T¡¤°Ð9Ñ9Ô9Ð9Ý�d˜B Ñ(Ô(Ð(Ý˜}­c°$´(©m¬mÑ<Ô<ð )ð )�Ý!(�”˜‘�Ý�,¥ D¤H¡¤°GÐ<Ñ<Ô<Ð<Ý�d”h  GÑ,Ô,Ð,ð ×!Ò!ØŒH�c˜4œ8 T¤]°DÔ4JØ að "ñ )ô )ˆð ˆØˆÝ˜!�S ™[œ[¨#Ñ.Ô.ð 	Jð 	JˆCØ�1‰HˆCØ�NŠN�7 3¨¨s°3°s±7¨{Ô(;¸QÀÑHÔHÑIÔIÐIÐIØˆŒÝ˜7 A w¨q¤zÔ':Ñ;Ô;Ð;Øð 	Øð ð �Ø—’�u‘”��ð ”< ”?ˆØŒ~ Ò"Ð"Ð"Ð"ØÔ Ò!Ð! XÔ%6¸!Ò%;Ð%;ð ˆDŒIˆIà×(Ò(Ø”˜#˜tœx¨°8Ô3EØÔ!¨¸ð )ñ ;ô ;ˆDŒIð ˆŒ	Ø˜1ÒÐ Ô!2°aÒ!7Ð!7ÝÐ\ÐcjÐkÑkÔkÐkØÔ˜qÒ Ð Ø$ˆCØ!ˆEØ˜’(�(˜u qšy˜yØ˜”9ð ]Ý&Ð'HÈCÐQUÐVYÔQZÐK[Ñ'[Ñ\Ô\Ð\Ø��S‘	Ø˜‘
�Ø #¨¡.Ñ0�	Ý�F 3¨¨I°iÀÑ6HÐ,HÔ(IÑJÔJÑKÔK�Ø”	× Ò  Ñ&Ô&Ð&Ø”h˜s”m�ð ˜’(�(˜u qšy˜yð Ðb•eÐDÈÈUÀ|ÑSÐZaÐbÑbÔbÐbØ˜A’:�: #­¢- - -Ð/Øð 	.Ý�&˜wÐ'Ñ'Ô'Ð'Ý�d”i  WÑ-Ô-Ð-Øð 	)Ý�&˜wÐ'Ñ'Ô'Ð'Ý�d˜B Ñ(Ô(Ð(Ð(Ð(ð	)ð 	)r   Nr   c	                 ó6  — g }	|}
|€§|
dk    r“|�7| j         |
         r t          d||
| j         |
         fz  ¦  «        ‚|| j         |
<   ||
|z  z   }|	                     ||||z   …         ¦  «         	 ||
         }
n"# t          $ r t          d||
fz  ¦  «        ‚w xY w|
dk    °“|
t          k    sJ ‚nØ|}|
dk    r¢|�7| j         |
         r t          d||
| j         |
         fz  ¦  «        ‚|| j         |
<   ||
|z  z   }|}||k    r|}||z  }|	                     ||||z   …         ¦  «         	 ||
         }
n"# t          $ r t          d||
fz  ¦  «        ‚w xY w|
dk    °¢|
t          k    sJ ‚|dk    rt          | j        d||||z
  ¦  «         d                     |	¦  «        S )Nr   ú%s corruption: seen[%d] == %dz:OLE2 stream %r: sector allocation table invalid entry (%d)z=WARNING *** OLE2 stream %r: expected size %d, actual size %d
r   )r[   r   r=   Ú
IndexErrorrj   r7   r    Újoin)r/   r^   ÚbaseÚsatr_   Ú	start_sidÚsizer)   rV   ÚsectorsÚsr”   ÚtodoÚgrabs                 r   rs   zCompDoc._get_stream  s<  € àˆØˆØˆ<à�q’&�&ØÐ&Ø”y ”|ð fÝ*Ð+JÈdÐTUÐW[ÔW`ÐabÔWcÐMdÑ+dÑeÔeÐeØ#*�D”I˜a‘LØ  1 x¡<Ñ/�	Ø—’˜s 9¨Y°xÑ-?Ð#?Ô@ÑAÔAÐAðØ˜Aœ�A�AøÝ!ð ð ð Ý&ØTØ˜q˜	ñ"ñô ð ðøøøð �q’&�&ð �’;�;�;�;�;àˆDØ�q’&�&ØÐ&Ø”y ”|ð fÝ*Ð+JÈdÐTUÐW[ÔW`ÐabÔWcÐMdÑ+dÑeÔeÐeØ#*�D”I˜a‘LØ  1 x¡<Ñ/�	Ø�Ø˜$’;�;Ø�DØ˜‘�Ø—’˜s 9¨Y°t©^Ð#;Ô<Ñ=Ô=Ð=ðØ˜Aœ�A�AøÝ!ð ð ð Ý&ØTØ˜q˜	ñ"ñô ð ðøøøð �q’&�&ð$ �’;�;�;�;Ø�qŠyˆyÝ˜œØTØ˜$  t¡ñ-ô -ð -ð �xŠx˜Ñ Ô Ð s   Á/A8 Á8BÄ'D0 Ä0Ec                 ó®  — |d         }|dd …         }| j         }||         j        D ]­}||         j                             ¦   «         |                     ¦   «         k    rv||         j        }|dk    r
||         c S |dk    r)|st          d¦  «        ‚|                      ||¦  «        c S ||                              d¦  «         t          d¦  «        ‚Œ®d S )Nr   r   r   z"Requested component is a 'storage'z'Requested stream is not a 'user stream')r>   r+   r)   Úlowerr!   r   Ú_dir_searchr.   )r/   ÚpathÚstorage_DIDÚheadÚtailÚdlÚchildÚets           r   r¤   zCompDoc._dir_searchN  sî   € à�AŒwˆØ�A�B�BŒxˆØŒ\ˆØ˜”_Ô-ð 
	Nð 
	NˆEØ�%ŒyŒ~×#Ò#Ñ%Ô%¨¯ª©¬Ò5Ð5Ø˜”Y”_�Ø˜’7�7Ø˜eœ9Ð$Ð$Ð$Ø˜’7�7Øð QÝ*Ð+OÑPÔPÐPØ×+Ò+¨D°%Ñ8Ô8Ð8Ð8Ð8Ø�5”	—’˜qÑ!Ô!Ð!Ý"Ð#LÑMÔMÐMð 6ð ˆtr   c                 óh  — |                       |                     d¦  «        ¦  «        }|€dS |j        | j        k    r>|                      | j        d| j        | j        |j        |j        ||j	        dz   ¬¦  «        S |                      | j
        d| j        | j        |j        |j        |dz   d¬¦  «        S )a  
        Interrogate the compound document's directory; return the stream as a
        string if found, otherwise return ``None``.

        :param qname:
          Name of the desired stream e.g. ``'Workbook'``.
          Should be in Unicode or convertible thereto.
        ú/NrL   rK   rU   r   ú (from SSCS))r¤   Úsplitr'   rb   rs   r^   rp   r_   r&   r   rY   rZ   r`   )r/   Úqnamer‘   s      r   Úget_named_streamzCompDoc.get_named_streama  sÀ   € ð ×Ò˜UŸ[š[¨Ñ-Ô-Ñ.Ô.ˆØˆ9Ø�4ØŒ:˜Ô1Ò1Ð1Ø×#Ò#Ø”˜#˜tœx¨¬¸¼Ø”
 °´°a±ð $ñ 9ô 9ð 9ð ×#Ò#Ø”	˜1˜dœi¨Ô)<¸a¼kØ”
 ¨Ñ!7Àð $ñ Gô Gð Gr   c                 óF  — |                       |                     d¦  «        ¦  «        }|€dS |j        | j        k    rt	          d||j        | j        fz  ¦  «        ‚|j        | j        k    rw|                      | j        d| j        | j	        |j
        |j        ||j        dz   ¦  «        }| j        r1t          d| j        ¬¦  «         t          | j        d	| j        ¦  «         |S |                      | j        d
| j        | j        |j
        |j        |dz   d¦  «        d
|j        fS )aq  
        Interrogate the compound document's directory.

        If the named stream is not found, ``(None, 0, 0)`` will be returned.

        If the named stream is found and is contiguous within the original
        byte sequence (``mem``) used when the document was opened,
        then ``(mem, offset_to_start_of_stream, length_of_stream)`` is returned.

        Otherwise a new string is built from the fragments and
        ``(new_string, 0, length_of_stream)`` is returned.

        :param qname:
          Name of the desired stream e.g. ``'Workbook'``.
          Should be in Unicode or convertible thereto.
        r­   N)Nr   r   z7%r stream length (%d bytes) > file data size (%d bytes)rL   rK   z
seenr5   rI   r   r®   )r¤   r¯   r'   rf   r   rb   Ú_locate_streamr^   rp   r_   r&   r   r1   r8   r    ro   r[   rs   rY   rZ   r`   )r/   r°   r‘   Úresults       r   Úlocate_named_streamzCompDoc.locate_named_streamv  s4  € ð" ×Ò˜UŸ[š[¨Ñ-Ô-Ñ.Ô.ˆØˆ9Ø�<ØŒ:˜Ô)Ò)Ð)ÝÐXØ˜!œ* dÔ&7Ð8ñ 9ñ :ô :ð :àŒ:˜Ô1Ò1Ð1Ø×(Ò(Ø”˜#˜tœx¨¬¸¼Ø”
˜E 1¤5¨¡7ñ,ô ,ˆFð Œzð 7Ý�h T¤\Ð2Ñ2Ô2Ð2Ý˜$œ) R¨¬Ñ6Ô6Ð6ØˆMð × Ò Ø”I˜q $¤)¨TÔ-@À!Ä+Ø”J ¨Ñ 6¸ñ>ô >ð Ø”
ðð r   c	                 óÖ  ‡— |}	|	dk     rt          d|z  ¦  «        ‚d}
d}d}g }d}||z   dz
  |z  }|	dk    rÝ| j        |	         r[| j        sTt          d|z  | j        ¬¦  «         t          | j        d	| j        ¦  «         t          d
||	| j        |	         fz  ¦  «        ‚|| j        |	<   |dz  }||k    rt          d|||z  fz  ¦  «        ‚|	|
dz   k    r||z  }n*|
dk    r|                     ||f¦  «         ||	|z  z   }||z   }|	}
||	         }	|	dk    °Ý|	t          k    sJ ‚||k    sJ ‚|s‰||fS |                     ||f¦  «         d                     ˆfd„|D ¦   «         ¦  «        d|fS )Nr   z%_locate_stream: start_sid (%d) is -vei�ÿÿÿiñØÿÿiHÝÿÿr   z_locate_stream(%s): seenr5   rI   r—   z,%s: size exceeds expected %d bytes; corrupt?r   c              3   ó2   •K  — | ]\  }}‰||…         V — Œd S )Nr   )Ú.0r”   Úend_posr^   s      €r   ú	<genexpr>z)CompDoc._locate_stream.<locals>.<genexpr>Ê  s2   øè è € ÐQÐQÑ4F°I¸w˜˜Y wÐ.Ô/ÐQÐQÐQÐQÐQÐQr   )	r   r[   r\   r8   r    ro   r=   rj   r™   )r/   r^   rš   r›   r_   rœ   Úexpected_stream_sizer°   rV   rŸ   Úpr”   r¹   ÚslicesÚ	tot_foundÚfound_limits    `              r   r³   zCompDoc._locate_streamž  s  ø€ àˆØˆqŠ5ˆ5ÝÐFÈÑRÑSÔSÐSØˆØˆ	ØˆØˆØˆ	Ø+¨hÑ6¸Ñ:¸xÑGˆØ�1ŠfˆfØŒy˜Œ|ð cØÔ6ð cÝÐ4°uÑ<À4Ä<ÐPÑPÔPÐPÕR[Ð\`Ô\eÐgiÐkoÔkwÑRxÔRxÐRxÝ&Ð'FÈ%ÐQRÐTXÔT]Ð^_ÔT`ÐIaÑ'aÑbÔbÐbØ"ˆDŒI�a‰LØ˜‰NˆIØ˜;Ò&Ð&å"ØBØ˜k¨HÑ4Ð5ñ6ñô ð ð �A�a‘CŠxˆxà˜8Ñ#��ð ˜’6�6à—M’M 9¨gÐ"6Ñ7Ô7Ð7Ø  1 x¡<Ñ/�	Ø# hÑ.�ØˆAØ�A”ˆAð1 �1Šfˆfð2 •FŠ{ˆ{ˆ{ˆ{Ø˜KÒ'Ð'Ð'Ð'àð 	:à˜Ð$8Ð9Ð9Ø�Š�y 'Ð*Ñ+Ô+Ð+à—’ÐQÐQÐQÐQÈ&ÐQÑQÔQÑQÔQÐSTÐVjÐkÐkr   )Nr   N©r   )r   r   r   Ú__doc__r9   r:   r3   rs   r¤   r±   rµ   r³   r   r   r   rB   rB   J   s¢   € € € € € ðð ð %(¤J°aÐTYð G)ð G)ð G)ð G)ðR/!ð /!ð /!ð /!ðbð ð ð ð&Gð Gð Gð*&ð &ð &ðP,lð ,lð ,lð ,lð ,lr   rB   c                 ó¾   — t          d|d|         fz  d|¬¦  «         | |||z   …         D ]!}t          t          |¦  «        d|¬¦  «         Œ"t          |¬¦  «         d S ©Nz%5d%sz =ú )Úendr6   r5   ©r8   Ústr)ÚalistÚstrideÚfÚdposÚequalÚvalues         r   Úx_dump_linerÎ   Í  sq   € Ý	ˆ'�T˜4 œ;Ð'Ñ
'¨S°qÐ9Ñ9Ô9Ð9Ø�t˜D 6™MÐ)Ô*ð +ð +ˆÝ�c�%‰jŒj˜c¨Ð*Ñ*Ô*Ð*Ð*Ý	ˆq€M�M„M€M€M€Mr   c                 óD  ‡ ‡‡— dˆ ˆˆfd„	}d }d }t          dt          ‰ ¦  «        ‰¦  «        D ]T}|€ ||¦  «         |}Œ‰ ||‰z   …         ‰ ||‰z   …         k    r&||z
  ‰k    r ||‰z
  d¬¦  «          ||¦  «         |}ŒU|�|�||k    r ||d¬¦  «         d S d S d S d S )Nr   c                 óÀ   •— t          d| d|         fz  d‰¬¦  «         ‰| | ‰z   …         D ]!}t          t          |¦  «        d‰¬¦  «         Œ"t          ‰¬¦  «         d S rÃ   rÆ   )rË   rÌ   rÍ   rÈ   rÊ   rÉ   s      €€€r   Ú
_dump_linezdump_list.<locals>._dump_lineÔ  sr   ø€ Ýˆg˜˜t Eœ{Ð+Ñ+°¸1Ð=Ñ=Ô=Ð=Ø˜4  v¡Ð-Ô.ð 	/ð 	/ˆEÝ•#�e‘*”* #¨AÐ.Ñ.Ô.Ð.Ð.Ý�1ˆ‰Œˆˆˆr   r   )rÌ   rÀ   )rq   rc   )rÈ   rÉ   rÊ   rÑ   r�   Úoldposs   ```   r   ro   ro   Ó  s  øøø€ ðð ð ð ð ð ð ð ð
 €CØ€FÝ�a�˜U™œ VÑ,Ô,ð ð ˆØˆ>ØˆJ�s‰OŒOˆOØˆFˆFØ�3�s˜6‘z�>Ô" e¨F°6¸&±=Ð,@Ô&AÒAÐAØ�V‰|˜fÒ$Ð$Ø�
˜3 ™<¨qÐ1Ñ1Ô1Ð1ØˆJ�s‰OŒOˆOØˆFøØÐ˜c˜o°#¸²-°-Øˆ
�3˜aÐ Ñ Ô Ð Ð Ð ð Ð˜o˜o°-°-r   rÀ   )rÁ   Ú
__future__r   rg   r9   Ústructr   Útimemachiner]   rj   rk   ÚSATSIDrl   rr   Ú	Exceptionr   Úobjectr   r<   rB   rÎ   r:   ro   r   r   r   ú<module>rÙ      sV  ððð ð
 &Ð %Ð %Ð %Ð %Ð %à €€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð à Ð Ð Ð ð 0€	à	€Ø
€Ø	€Ø
€Ø
€ð	ð 	ð 	ð 	ð 	�9ñ 	ô 	ð 	ðDð Dð Dð Dð Dˆfñ Dô Dð Dð@Lð Lð Lð@lð @lð @lð @lð @lˆfñ @lô @lð @lðFð ð ð ð  #œzð !ð !ð !ð !ð !ð !r   