
    xZi                     *   S SK Jr  S SKrS SKrSSKJrJrJr  SSK7  SSK	7  SSK
7   S SKJr  S SKr\R                   r\R"                  rS rSrS r S SKrSr\rSr\" S	5      u  rrrrrS
rSSSSSSSSSSSSSSS.r 0 r!0 r"\ RG                  5        H   u  r$r%\&" \$5      r$\&" \%5      r%\%\"\$'   \$\!\%'   M"     C$C%C S\RN                  S \SSSSS4	S jr( " S S\)5      r* " S S\)5      r+S  r,S$S! jr-S" r.S# r/g! \ a	    S SKJr   Nf = f! \ a    S r Nf = f)%    )print_functionN   )compdoc
formattingsheet)*)perf_counter)clocki    )P   F   2   -   (             	
)Consolidate_Area	Auto_Open
Auto_CloseExtractDatabaseCriteria
Print_AreaPrint_TitlesRecorder	Data_FormAuto_ActivateAuto_DeactivateSheet_Title_FilterDatabaseFc	                    [        5       n	[        (       a1  [        R                  " 5       n
U
(       a  [        R                  " 5         [        5       n UR                  XXUUUUUS9	  [        5       nX-
  Ul        UR                  [        5      nU(       d  [        S5      eU[        ;  a  [        S[        U   -  5      eXl        US::  a7  U(       a  [        UR                  S5        S=Ul        nUR#                  5         OUS:X  a7  UR%                  5         U(       a  [        UR                  S5        S=Ul        nOIUR%                  5         UR&                   Vs/ s H  nS PM     snUl        U(       d  UR+                  5         [-        UR(                  5      Ul        US:X  a1  UR.                  S:  a!  [        UR                  S	UR.                  5        [        (       a  W
(       a  [        R0                  " 5         [        5       nX-
  Ul        U(       d  UR5                  5         U$ s  snf !   UR5                  5         e = f)
N)	filenamefile_contentslogfile	verbosityuse_mmapencoding_overrideformatting_info	on_demandragged_rowsz#Can't determine file's BIFF versionz BIFF version %s is not supportedr   z`*** WARNING: on_demand is not supported for this Excel version.
*** Setting on_demand to False.
Fr   r   z|*** WARNING: Excel 4.0 workbook (.XLW) file contains %d worksheets.
*** Book-level data will be that of the last worksheet.
)r	   	TOGGLE_GCgc	isenableddisableBookbiff2_8_loadload_time_stage_1getbofXL_WORKBOOK_GLOBALS	XLRDErrorSUPPORTED_VERSIONSbiff_text_from_numbiff_versionfprintfr3   r8   fake_globals_get_sheetparse_globals_sheet_names_sheet_list
get_sheetslennsheetsenableload_time_stage_2release_resources)r1   r3   r4   r5   r2   r6   r7   r8   r9   t0orig_gc_enabledbkt1rF   sht2s                   c/var/www/eduai.edurigo.com/question_generate/ques_gen_env/lib/python3.13/site-packages/xlrd/book.pyopen_workbook_xlsrY   F   s   
 
By,,.JJL	B7
8/+# 	 	
 ^!wyy!45ABB112$\23  '2

89 ,10y%%'R

 %H I+00y-/__=_rd_=BN(
2"**q.

L

	 9		^!w
 
I- > 
s    DH2 H-*B*H2 -H2 2Ic                   r    \ rS rSrSrS/rSrSrSrSr	Sr
SrSrSrSrSr\" S5      rSrSrSrS	 rSS
 jrSrg)Name   z
Information relating to a named reference, formula, macro, etc.

.. note::

  Name information is **not** extracted from files older than
  Excel 5.0 (``Book.biff_version < 50``)
stackNr        c                 L   U R                   nU(       a  UR                  nUR                  nU[        :X  a  [	        U5      S:X  a  US   nSUR
                  s=::  a  UR                  S-
  :X  a  O  OUR                  UR                  S-
  :X  ah  UR                  UR                  S-
  :X  aK  U R                  R                  UR
                  5      nUR                  UR                  UR                  5      $ U R                  U R                  R                  SSS9  [!        S5      e)a  
This is a convenience method for the frequent use case where the name
refers to a single cell.

:returns: An instance of the :class:`~xlrd.sheet.Cell` class.

:raises xlrd.biffh.XLRDError:
  The name is not a constant absolute reference
  to a single cell.
r   r   === Dump of Name object ========== End of dump =======headerfooterz2Not a constant absolute reference to a single cell)resultkindvalueoREFrM   shtxloshtxhirowxlorowxhicolxlocolxhibooksheet_by_indexcelldumpr3   rC   )selfresrh   ri   ref3drV   s         rX   rs   	Name.cell   s     kk88DIIEt|E
aa9)99q(88q(8811%,,?B775<<>>		II00 	 	

 LMMr_   c                    U R                   nU(       Ga  UR                  nUR                  nU[        :X  Gaw  [	        U5      S:X  Gag  US   nSUR
                  s=::  a  UR                  S-
  :X  Ga=  O  GO9U R                  R                  UR
                  5      nU(       d.  XeR                  UR                  UR                  UR                  4$ [        UR                  UR                  5      n[        U[        UR                  UR                  5      5      n[        UR                  UR                   5      n	[        U	[        UR                  UR                   5      5      n
SUs=::  a  Us=::  a  UR                  ::  d   e   eSU	s=::  a  U
s=::  a  UR                   ::  d   e   eXgXU
4$ U R#                  U R                  R$                  SSS9  ['        S5      e)ad  
This is a convenience method for the use case where the name
refers to one rectangular area in one worksheet.

:param clipped:
  If ``True``, the default, the returned rectangle is clipped
  to fit in ``(0, sheet.nrows, 0, sheet.ncols)``.
  it is guaranteed that ``0 <= rowxlo <= rowxhi <= sheet.nrows`` and
  that the number of usable rows in the area (which may be zero) is
  ``rowxhi - rowxlo``; likewise for columns.

:returns: a tuple ``(sheet_object, rowxlo, rowxhi, colxlo, colxhi)``.

:raises xlrd.biffh.XLRDError:
   The name is not a constant absolute reference
   to a single area in a single sheet.
r   r   rb   rc   rd   zDNot a constant absolute reference to a single area in a single sheet)rg   rh   ri   rj   rM   rk   rl   rq   rr   rm   rn   ro   rp   minnrowsmaxncolsrt   r3   rC   )ru   clippedrv   rh   ri   rw   rV   rm   rn   ro   rp   s              rX   area2dName.area2d   st   $ kk88DIIEt|E
aa8q(88811%,,?B"!<<u||U\\YY rxx8F U\\288)DEF rxx8F U\\288)DEF<&<BHH<<<<<<&<BHH<<<<<vv==		II00 	 	

 ^__r_    T)__name__
__module____qualname____firstlineno____doc___repr_theserq   hiddenfuncvbasicmacrocomplexbuiltin	funcgroupbinary
name_indexUNICODE_LITERALnameraw_formulascoperg   rs   r   __static_attributes__r   r_   rX   r[   r[      s     )KD F D F E
 G G I
 F J 2D K E FN<)`r_   r[   c            	          \ rS rSrSrSrSrSr/ rSr	Sr
Sr\" S5      r/ r/ r/ r0 r0 r0 r/ rSrSrS rS	 rS
 rS rS rS rS rS rS r0 r 0 r!S r"SS\#RH                  S\%SSSS4	S jr&S r'S r(S r)S r*S0S jr+S r,S r-S r.S r/S r0S r1S r2S  r3S! r4S" r5S# r6S$ r7S% r8S& r9S' r:S( r;S) r<S* r=S+ r>S, r?S- r@S. rAS/rBg)1r>   i  z
Contents of a "workbook".

.. warning::

  You should not instantiate this class yourself. You use the :class:`Book`
  object that was returned when you called :func:`~xlrd.open_workbook`.
r   Nr   r   r^   g      c                     [        U R                  5       H*  nU R                  U   (       a  M  U R                  U5        M,     U R                  SS $ )z\
:returns: A list of all sheets in the book.

All sheets not already loaded will be loaded.
N)xrangerN   rK   	get_sheetru   sheetxs     rX   sheetsBook.sheets  sG     T\\*F##F++v& + ""r_   c                 P    U R                   U   =(       d    U R                  U5      $ )zZ
:param sheetx: Sheet index in ``range(nsheets)``
:returns: A :class:`~xlrd.sheet.Sheet`.
)rK   r   r   s     rX   rr   Book.sheet_by_index  s#    
 'A4>>&+AAr_   c                      U R                   R                  U5      nU R	                  U5      $ ! [         a    [        SU-  5      ef = f)zX
:param sheet_name: Name of the sheet required.
:returns: A :class:`~xlrd.sheet.Sheet`.
No sheet named <%r>)rJ   index
ValueErrorrC   rr   )ru   
sheet_namer   s      rX   sheet_by_nameBook.sheet_by_name  sU    
	@&&,,Z8F ""6**  	@1J>??	@s	   . Ac                      U R                   SS $ )z
:returns:
  A list of the names of all the worksheets in the workbook file.
  This information is available even when no sheets have yet been
  loaded.
N)rJ   ru   s    rX   sheet_namesBook.sheet_names  s       ##r_   c                     [        U[        5      (       a  UnO U R                  R                  U5      n[        U R                  U   5      $ ! [         a    [        SU-  5      ef = f)z
:param sheet_name_or_index: Name or index of sheet enquired upon
:returns: ``True`` if sheet is loaded, ``False`` otherwise.

.. versionadded:: 0.7.1
r   )
isinstanceintrJ   r   r   rC   boolrK   ru   sheet_name_or_indexr   s      rX   sheet_loadedBook.sheet_loaded  sq     )3//(FM**001DE D$$V,--  M 58K KLLMs   A A&c                     [        U[        5      (       a  UnO U R                  R                  U5      nSU R                  U'   g! [         a    [        SU-  5      ef = f)z]
:param sheet_name_or_index: Name or index of sheet to be unloaded.

.. versionadded:: 0.7.1
r   N)r   r   rJ   r   r   rC   rK   r   s      rX   unload_sheetBook.unload_sheet  sk     )3//(FM**001DE $(   M 58K KLLMs   A Ac                    SU l         [        U R                  S5      (       a  U R                  R                  5         SU l        [        U R                  S5      (       a  U R                  R                  5         SU l        SU l        SU l        g)a  
This method has a dual purpose. You can call it to release
memory-consuming objects and (possibly) a memory-mapped file
(:class:`mmap.mmap` object) when you have finished loading sheets in
``on_demand`` mode, but still require the :class:`Book` object to
examine the loaded sheets. It is also called automatically (a) when
:func:`~xlrd.open_workbook`
raises an exception and (b) if you are using a ``with`` statement, when
the ``with`` block is exited. Calling this method multiple times on the
same object has no ill effect.
r   closeN)_resources_releasedhasattrmemr   filestr_sharedstrings_rich_text_runlist_mapr   s    rX   rQ   Book.release_resources  sj     $% 488W%%HHNN4<<))LL "&*#r_   c                     U $ Nr   r   s    rX   	__enter__Book.__enter__  s    r_   c                 $    U R                  5         g r   )rQ   )ru   exc_type	exc_valueexc_tbs       rX   __exit__Book.__exit__!  s     r_   c                    / U l         / U l        / U l        SU l        / U l        / U l        0 U l        SU l        SU l        SU l	        U R                  5         SU l        SU l        S U l        S U l        / U l        / U l        / U l        0 U l        0 U l        SU l        / U l        SU l        / U l        / U l        0 U l        / U l        / U l        0 U l        SU l        SU l        g )Nr   Fr`   r_   )rK   rJ   _sheet_visibilityrN   _sh_abs_posnr   r   raw_user_name_sheethdr_countbuiltinfmtcountinitialise_format_info_all_sheets_count_supbook_count_supbook_locals_inx_supbook_addins_inx_all_sheets_map_externsheet_info_externsheet_type_b57_extnsht_name_from_num_sheet_num_from_name_extnsht_count_supbook_typesr   addin_func_namesname_obj_list
colour_mappalette_recordxf_liststyle_name_mapr   r   r   s    rX   __init__Book.__init__2  s    !# &(#" !##%!"#' #' !!#%'"&(#$&! #$  "  r_   Fc
                 2   X0l         X@l        U=(       a    [        U l        X`l        Xpl        Xl        Xl        U(       d  [        US5       n
U
R                  SS5        U
R                  5       nU
R                  SS5        US:X  a  [        S5      eU R                  (       a>  [        R                  " U
R                  5       U[        R                  S9U l        Xl        O/U
R#                  5       U l        [%        U R                  5      U l        S S S 5        OX l        [%        U5      U l        SU l        U R                  S S [(        R*                  :w  a  U R                  U l        GO>[(        R.                  " U R                  U R                   S9n[0        (       aT  S HC  nUR3                  [5        U5      5      u  U l        U l        U l        U R,                  (       d  MC    Om   [        S	5      eS H5  nUR7                  [5        U5      5      U l        U R,                  (       d  M5    O   [        S	5      e[%        U R,                  5      U l        AU R,                  U R                  La<  [9        U R                  S
5      (       a  U R                  R;                  5         SU l        U R&                  U l        [>        (       aB  [A        S[C        U R,                  5      U R&                  U R                   4-  U R                   S9  g g ! , (       d  f       GN= f)Nrbr      zFile size is 0 bytes)access   )r3   )Workbookr>   z-Can't find workbook in OLE2 compound documentr   r_   zmem: %s, base: %d, len: %dfile)"r3   r4   MMAP_AVAILABLEr5   r6   r7   r8   r9   openseektellrC   mmapfilenoACCESS_READr   
stream_lenreadrM   baser   	SIGNATUREr   CompDocUSE_FANCY_CDlocate_named_streamr   get_named_streamr   r   	_positionDEBUGprinttype)ru   r1   r2   r3   r4   r5   r6   r7   r8   r9   fsizecdqnames                 rX   r?   Book.biff2_8_loadS  s<    " 3^!2."&h%q!vvxq!19#$:;;==#'99QXXZdFVFV#WDL&*O#$668DL&)$,,&7DO &% )L!-0DO	<<w000||DHt||DB|1E " 6 6u7M N 9DHdixxx 2
 $$STT1E!22?53IJDHxxx 2 $$STT"%dhh-xxt||+4<<11LL&&("5.$txx.$))T__1]]dhdpdpq U &%s   CL
Lc                     0 U l         / U l        SU l        SU l        S[        0U l        SU l        / U l        / U l        g )Nr   )	
format_mapformat_listxfcountactualfmtcountXL_CELL_NUMBER_xf_index_to_xl_type_map_xf_epilogue_doner   	font_listr   s    rX   r   Book.initialise_format_info  sC    )*N(;%!"r_   c                     U R                   nU R                  XS-    n[        U5      nU =R                   U-  sl         US:  a  [        $ Uu  pE[	        U5      S-  [	        U5      -  $ )Nr   r   )r   r   rM   MY_EOF	BYTES_ORD)ru   posbuff_twolenbufflohis         rX   	get2bytesBook.get2bytes  s_    nn88CA&h-'!Q;M""im33r_   c                     U R                   nU R                  n[        SX!US-    5      u  p4US-  nX!X-    nX-   U l         X4U4$ )N<HH   r   r   unpack)ru   r  r   codelengthdatas         rX   get_record_partsBook.get_record_parts  sS    nnhheSSU^4qsz"d##r_   c                     U R                   nU R                  n[        SX2US-    5      u  pEXA:w  a  gUS-  nX2X%-    nX%-   U l         XEU4$ )Nr  r  )Nr   r_   r  )ru   reqd_recordr  r   r  r  r   s          rX   get_record_parts_conditional!Book.get_record_parts_conditional  s\    nnhheSSU^4!qsz"d##r_   c                 <   U R                   (       a  [        S5      eU(       a  U R                  U   U l        U R	                  [
        5        [        R                  " U U R                  U R                  U   U5      nUR                  U 5        X0R                  U'   U$ )Nz,Can't load sheets after releasing resources.)r   rC   r   r   rA   XL_WORKSHEETr   SheetrJ   r   rK   )ru   	sh_number
update_posrV   s       rX   r   Book.get_sheet  s    ##JKK!..y9DNL! [[NNi(	
 	&(#	r_   c           	      D   [         (       a*  [        SU R                  U R                  U R                  S9  [        [        U R                  5      5       HI  n[         (       a*  [        SXR                  U R                  U R                  S9  U R                  U5        MK     g )NzGET_SHEETS:r   zGET_SHEETS: sheetno =)r   r   rJ   r   r3   r   rM   r   )ru   sheetnos     rX   rL   Book.get_sheets  st    5%t'8'8$:K:KRVR^R^_c$"3"345Gue3W>O>OQUQbQbimiuiuvNN7# 6r_   c                     [         R                  " U 5        [        S5      nU/U l        S/U l        S/U l        U R                  R                  S 5        U R                  5         g )NzSheet 1r   )	r   initialise_bookr   rJ   r   r   rK   appendrL   )ru   fake_sheet_names     rX   rH   Book.fake_globals_get_sheet  sW    ""4())4,-C"#%r_   c           	      p   U R                   nU R                  5         [        (       a  [        U R                  SX!5        US:X  aT  [        USU R                  SS9nSn[        n[        U R                  5      S:X  a  U R                  U R                  -   nOOSnOL[        SUSS 5      u  ptnXpR                  -   nU[        :  a  [        USU R                  SS9nO[        USSS9n[        (       d  U R                  S	:  a#  [        U R                  S
U R                   XCXe5        U =R                   S-  sl        U[        :w  af  U R"                  R%                  S5        SSSS.R'                  US5      n[        (       d  U R                  S:  a  [        U R                  SX5U5        g g [        U R(                  5      n	U R"                  R%                  U	5        U R(                  R%                  U5        U R                  R%                  U5        U R*                  R%                  U5        XR,                  U'   g )NzBOUNDSHEET: bv=%d data %r
r   r   r   lenlenr`   z<iBB   r   zFBOUNDSHEET: inx=%d vis=%r sheet_name=%r abs_posn=%d sheet_type=0x%02x
zMacro sheetChartzVisual Basic module)r   r   r8  UNKNOWNzANOTE *** Ignoring non-worksheet data named %r (type 0x%02x = %s)
)rF   derive_encodingr   rG   r3   unpack_stringencodingXL_BOUNDSHEET_WORKSHEETrM   r   _sheetsoffsetr   r  BIFF_FIRST_UNICODEunpack_unicoder4   r   r   r2  getrJ   r   r   )
ru   r   bvr   
visibility
sheet_typeabs_posnoffsetdescrsnums
             rX   handle_boundsheetBook.handle_boundsheet  s   5DLL"?J8 'tQaHJJ0J4$$%*--		9
 -3FD1I-F*F
		)H&&*4DMM!L
+D!A>
5DNNa'DLLY&&
V 	!#00  ''+ ( c*i(	  u!+XE3 ,
 t(()D  ''-$$Z0$$X.""))*548%%j1r_   c                 x    [        SUSS 5      S   n[        (       a  [        U R                  SU5        X l        g )N<Hr   r   zBUILTINFMTCOUNT: %r
)r  r   rG   r3   r   )ru   r   r   s      rX   handle_builtinfmtcountBook.handle_builtinfmtcount  s6     !tAay1!45'$,,(?Q.r_   c           
         U R                   (       a  U R                   U l        OU R                  c\  U R                  S:  a  [	        U R
                  S5        SU l        OSU l        U R                  S:  a  [	        U R
                  S5        OU R                  nU[        ;   a
  [        U   nO-SUs=::  a  S::  a  O  OS	[        U5      -   nOS
[        U5      -   n[        (       d   U R                  (       a&  X R                  :w  a  [	        U R
                  SX5        X l        U R                  S:w  a   [        SU R                  5        U R                  (       a=  [!        U R"                  SU R                  SS9nUR%                  5       nX@l        SU l        U R                  $ ! [         aY  n[	        U R
                  SU R                  U R                  [        U5      R                  R                  S5      S   U5        e S nAff = f)Nr   z?*** No CODEPAGE record, no encoding_override: will use 'ascii'
asciii  r   z2*** No CODEPAGE record; assuming 1200 (utf_16_le)
i,  i  cpunknown_codepage_z%CODEPAGE: codepage %r -> encoding %r
s   trialz/ERROR *** codepage %r -> encoding %r -> %s: %s
.r`   r   r   r6  F)r6   r=  codepagerF   rG   r3   r4   encoding_from_codepagestrr   unicodeBaseExceptionr   r   splitr   r<  	user_namerstrip)ru   rU  r=  estrgs        rX   r;  Book.derive_encoding  s   !! 22DM]]"  2%VX ' $>>Q&DLL*_`}}H111(;(D(#h-/.X>uH,E&NPXc$M==D $--0  DMM!LD;;=D "N!&D}} ! FMM4==$q'2B2B2H2H2Mb2QSTV 	s   3F# #
H-AHHc                 T    [        SUSS 5      S   nX l        U R                  5         g )NrM  r   r   )r  rU  r;  )ru   r   rU  s      rX   handle_codepageBook.handle_codepageC  s*    $Qq	*1- r_   c                     [        SUSS 5      nU R                  (       a  [        SX R                  S9  U R                  S:X  d  U R                  U:X  d   eX l        g )Nr  r   r  z
Countries:r   r   )r  r4   r   r3   	countries)ru   r   rd  s      rX   handle_countryBook.handle_countryI  sJ    5$q),	>>5y||L~~'4>>Y+FFF"r_   c                     [        SUSS 5      S   n[        (       d  U R                  (       a  [        U R                  SU5        US;   d   eX l        g )NrM  r   r   zDATEMODE: datemode %r
)r   r   )r  r   r4   rG   r3   datemode)ru   r   rh  s      rX   handle_datemodeBook.handle_datemodeP  sH    $Qq	*1-5DNNDLL";XF6!!! r_   c           	      d   [         =(       d    U R                  S:  nU R                  S:  a  [        SUS S 5      u  p4Sn[	        XSS9u  peXS  nU R
                  S   [        :X  a  U R                  R                  U5        U(       a'  [        U R                  SU R
                  S   X4Xg5        g g g )	Nr   r   <HIr8  r   r6  r`   zCEXTERNNAME: sbktype=%d oflags=0x%04x oinfo=0x%08x name=%r extra=%r
)r   r4   rF   r  unpack_unicode_update_posr   SUPBOOK_ADDINr   r2  rG   r3   )ru   r   blahoption_flags
other_infor  r   extras           rX   handle_externnameBook.handle_externnameW  s    +!+"&,UD!H&=$LC1$AFIDJE""2&-7%%,,T2Z''+\tT  #r_   c           	         U R                  5         U =R                  S-  sl        [        =(       d    U R                  S:  n[        =(       d    U R                  S:  nU R                  S:  a  [        SUSS 5      S   nUS-  S-   n[        U5      U:  ae  U(       a!  [        U R                  SU[        U5      5        U R                  5       u  pgnU[        :w  a  [        S5      eX-  n[        U5      U:  a  Me  Sn	[        U5       HZ  n
[        S	XU	S-    5      nUu  pnU R                  R                  U5        U	S-  n	U(       d  MB  [        U R                  S
XX5        M\     g [        SUS S 5      u  nnU(       ad  [        SU R                  S9  [!        US[        U5      U R                  S9  SSSSS.R#                  US5      n[        SUUU4-  U R                  S9  US:X  aZ  [%        USUS-    U R&                  5      nUU R(                  U R                  '   U(       a  [        U R(                  U R                  S9  SUs=::  a  S::  d  O  SnU R*                  R                  U5        g )Nr   r   r   rM  r   r8  z*INFO: EXTERNSHEET needs %d bytes, have %d
z)Missing CONTINUE after EXTERNSHEET recordz<HHHzLEXTERNSHEET(b8): k = %2d, record = %2d, first_sheet = %5d, last sheet = %5d
z<BBzEXTERNSHEET(b7-):r   foutzEncoded URLzCurrent sheet!!zSpecific sheet in own doc'tz Nonspecific sheet in own doc't!!)r   r      r  zNot encodedz   %3d chars, type is %d (%s)rx  r  )r;  r   r   r4   rF   r  rM   rG   r3   r!  XL_CONTINUErC   r   r   r2  r   hex_char_dumprB  rX  r=  r   r   )ru   r   blah1blah2num_refs
bytes_reqdcode2length2data2r  kinforef_recordxref_first_sheetxref_last_sheetxnctymsgr   s                      rX   handle_externsheetBook.handle_externsheete  s?   q ,1,,1,"dD1I.q1H!A)Jd)j(E"CI
 )-(=(=(?%K'#$OPP d)j( CH%fds1uo6AE>&&--d3q5g(8 & E48,FB)=dAs4yt||D$(49	
 #b-(  5REDLLYQw$T!BqD\4==A
CM++D,?,?@% ; ;$,,OLqL&&--b1r_   c                    U R                   S:  a  U R                  n[        US5        [        US[	        U5      SUS9  U R
                  S:  an  [        SUS S 5      u  nUS:X  a  [        SUSS  5      u  pE[        USXE5        O8US	:X  a2  [        SUS
S 5      u  nUS	:X  a  SnOUS:X  a  SnOSn[        USU5        [        S5      e)Nr   z
FILEPASS:
r   )r   rw  r   rM  r  z!weak XOR: key=0x%04x hash=0x%04x
r   r  r8  z	BIFF8 stdzBIFF8 strongz** UNKNOWN ENCRYPTION METHOD **z%s
zWorkbook is encrypted)r4   r3   rG   rz  rM   rF   r  rC   )ru   r   logfkind1key
hash_valuekind2captions           rX   handle_filepassBook.handle_filepass  s    >>Q<<DD-($3t914@  B&d2Ah/A:&,UDH&=OCD<) aZ#D$q)4FEz"-!"0"CD&'2/00r_   c                    [         =(       d    U R                  S:  nU R                  nUS:  a  g U R                  5         [	        SUSS 5      u
  pEpgppp[        5       nXl        [        U R                  5      nXl	        U R                  R                  U5        XNl        / SQnU H  u  nnn[        UUUU-  U-	  5        M     SUR                     nUS:  a  [        USU R                  US	9u  nnO[!        USUS	9u  nnXl        Xl        S Ul        U(       a  [)        U R*                  S
UUXFXxU	U5
        UnUR,                  (       a4  [.        R1                  US5      nU(       a  [3        SU-  U R*                  S9  UUl        UUS  Ul        X~l        SUl        U(       a  UR=                  U R*                  SU-  SS9  g g )Nr   r   z	<HBBHHH4Br      ))r   r   r   )r   r   r   )r   r  r   )r   r   rx  )r      r  )r       r   )r   i  r8  )r   i      z Mr   )	known_lenzZNAME[%d]:%s oflags=%d, name_len=%d, fmla_len=%d, extsht_index=%d, sheet_index=%d, name=%r
z??Unknown??z    builtin: %sr   z--- handle_name: name[%d] ---z-------------------rd   )r   r4   rF   r;  r  r[   rq   rM   r   r   r2  rp  setattrr   unpack_string_update_posr=  rm  extn_sheet_numexcel_sheet_indexr   rG   r3   r   builtin_name_from_coderB  r   r   r   basic_formula_len	evaluatedrt   )ru   r   ro  rC  rp  kb_shortcutname_lenfmla_lenextsht_indexsheet_indexmenu_text_lendescription_text_lenhelp_topic_text_lenstatus_bar_text_lennobjr   attrsattrmasknshift
macro_flaginternal_namer  r   s                           rX   handle_nameBook.handle_name  s   +!+7 ;Qr
+	
x<1Dv	++,
$!!$'(	
 #(D$D$!4 ?@ #( $**%
7!9$DMM]e!fM3!:4x!XM3*!,
mJ]	D
 <<)--dMBDU,t3$,,G	:!)II6C,   r_   c                 d   U R                   S:  nU R                  nU(       ad  [        SUS9  [        S[        U R                  5      US9  [        S[        U R
                  5      US9  [        S[        U R                  5      US9  [        U R                  5      n[        U5       H  nU R                  U   nU R                  S:  aV  UR                  nUS:X  a  S	nOS
Us=::  a  [        U R                  5      ::  a  O  OU R                  US
-
     nUS	:X  a  SnO]SnOZSU R                  s=::  a  S::  aC  O  O@UR                  nUS:X  a  S	nO+U R
                  U   nU R                  R                  US5      nWUl        M     [        U5       HS  nU R                  U   nUR                  (       d  UR                   (       a  M6  UR"                  (       a  MI  [%        XXAS9  MU     U R                   S:  aH  [        SUS9  [        U5       H%  nU R                  U   nUR'                  USU-  S9  M'     [        SUS9  0 n	0 n
[        U5       H  nU R                  U   nUR(                  R+                  5       nXR                  4nX;   a  U R                   (       a  [-        USU5        XYU'   UR                  XE4nX;   a  X   R/                  U5        M  U/X'   M     U
R1                  5        H.  nX   nUR3                  5         U Vs/ s H  oS   PM	     snX'   M0     Xl        Xl        g s  snf )Nr   z+++++ names_epilogue +++++r   r   r   r   r   r   r`   r   r   r   )ro  z&---------- name object dump ----------z--- name[%d] ---)re   z&--------------------------------------z)Duplicate entry %r in name_and_scope_map
)r4   r3   r   REPRr   r   r   rM   r   rangerF   r  r  rB  r   r   r   r  evaluate_name_formulart   r   lowerrG   r2  keyssortname_and_scope_mapname_map)ru   ro  r   	num_namesnamexr  r  intl_sheet_indexr   r  r  
name_lcaser  	sort_dataalistxs                   rX   names_epilogueBook.names_epilogue  s   ~~"LL.Q7#T$*>*>%?aH*D1L1L,MTUV($t/H/H*IPQR**+	9%E%%e,D
   B&"44!#')$+BT-A-A)BB'+';';KM'J$'2-+-( (*$t((.B."11!#')$!%!<!<[!IJ'+'@'@'D'DZQS'T$)DJ1 &4 9%E%%e,DzzT[[(~~x!$e? & >>Q:Cy)))%0		!$6$>	? * :C  9%E%%e,D*Jzz*C(T^^GM&*s#U1I %$++I6(1{$ & ==?CMEJJL+015aqT51HM # #5  2s   	L-c                 &    [        SUSS 5      u  p#g )Nrl  r  
   )r  )ru   r   obj_typeobj_ids       rX   
handle_objBook.handle_obj5  s     "%a4&r_   c           	      4   U R                   R                  S 5        [        =(       d    U R                  S:  nU(       a3  [	        SU R
                  S9  [        US[        U5      U R
                  S9  [        SUSS 5      S   nU(       a  [	        SU-  U R
                  S9  U R                  nU =R                  S-  sl	        USS	 S
:X  af  [        U R                   S'   U R                  S-
  U l        U(       a7  [	        SXC4-  U R
                  S9  [	        SU R                  U R
                  S9  g USS	 S:X  aF  [        U R                   S'   U R                  S-
  U l        U(       a  [	        SU-  U R
                  S9  g [        USSS9u  pVUS:X  a2  [         U R                   S'   U(       a  [#        U R
                  SXE5        g [$        U R                   S'   U(       a  [#        U R
                  SXE5        / n['        U5       HL  n [        XSS9u  pUR                  U	5        U(       d  M*  [#        U R
                  SU[        U	5      X5        MN     g ! [(        R*                   a.    U R                  (       a  [	        SXU4-  U R
                  S9     g f = f)Nr   zSUPBOOK:r   r   rv  rM  znum_sheets = %dr   r  s   r`   z(SUPBOOK[%d]: internal 3D refs; %d sheetsz    _all_sheets_maps    :zSUPBOOK[%d]: add-in functionsr6  z#SUPBOOK[%d]: DDE/OLE document = %r
zSUPBOOK[%d]: url = %r
zK*** WARNING: unpack failure in sheet %d of %d in SUPBOOK record for file %rz-  sheetx=%d namelen=%d name=%r (next pos=%d)
)r   r2  r   r4   r   r3   rz  rM   r  r   SUPBOOK_INTERNALr   r   rn  r   rm  SUPBOOK_DDEOLErG   SUPBOOK_EXTERNALr  structerror)
ru   r   ro  
num_sheetssbnurlr  r   r  shnames
             rX   handle_supbookBook.handle_supbook<  sH   ""4(+!+*4<<0$3t94<<@D$q),Q/
(:5DLLI!!q !9#&6D#'+':':Q'>D$@CCTT[_[g[gh+T-A-AU!9++&3D#'+':':Q'>D$U:S@t||T,T1Q??&4D#WT\\+QSV\"2B'@#Kz"A7!L v&tWT\\+[]^`cdj`kmsy # << 	 >>e#./!\\
 	s   I>JJc                    U R                  5         [        SUS S 5      S   n[        USU R                  SS9nU R                  nX0R
                  U   :X  d   eU =R                  S-  sl        U R                  nUS-
  [        U5      -
  n[        (       a  [        U R                  SXFX#5        U R                  5         [        (       a!  [        SU R                  -  U R                  S9  U R                  R                  S 5        U R!                  US	S
9  [        (       a  [        SU R                  U R                  S9  XR-   U l        g )N<ir  r   r   r6  z'SHEETHDR %d at posn %d: len=%d name=%r
z SHEETHDR: xf epilogue flag is %dr   F)r+  z"SHEETHDR: posn after get_sheet() =)r;  r  r<  r=  r   rJ   r   rM   r   rG   r3   r   r   r  rK   r2  r   )ru   r   	sheet_lenr   r.  BOF_posnposns          rX   handle_sheethdrBook.handle_sheethdrk  s   
 	4bq*1-	"4DMM!D
&&..w7777!>>!|c$i'5'$,,(RT[cly##%5%:T=S=SSZ^ZfZfg%w515%<dnnSWS_S_`!-r_   c                 l    [        SU5      S   n[        (       a  [        SX R                  S9  X l        g )Nr  r   zSHEETSOFFSET:r   )r  r   r   r3   r?  )ru   r   r  s      rX   handle_sheetsoffsetBook.handle_sheetsoffset  s+    dD!!$5%LLA!r_   c                 Z   [         (       a  [        SU R                  S9  [        5       n[	        U5      nU/n[        SUSS 5      S   n[         (       d  U R                  S:  a  [        U R                  SU5         U R                  [        5      u  pgnUc  O8X7-  n[         S:  a  [        U R                  S	Xs5        UR                  U5        MT  [        XE5      u  U l        nU R                  (       a  Xl        [         (       a&  [        5       n	[        S
U	W-
  4-  U R                  S9  g g )NzSST Processingr   r  r  r   r   r   zSST: unique strings: %d
z'CONTINUE: adding %d bytes to SST -> %d
z SST processing took %.2f seconds)r   r   r3   r	   rM   r  r4   rG   r%  ry  r2  unpack_SST_tabler   r7   r   )
ru   r   rR   nbtstrlistuniquestringsr  nb
rt_runlistrU   s
             rX   
handle_sstBook.handle_sst  s   5"6B$i&tT!AY/25T^^q(DLL"=}M!>>{KNDd|ICz&PRTZNN4   +;7*R'Z*4'5B4R{BV r_   c                 <   SnU R                   S:  a6  U R                  (       d  SU l        Xl        g [	        USU R                  SS9nO[        USSS9nU(       a,  [        U R                  S[        U5      U R                  U5        UR                  5       nX0l        g )Nr   r   Tr   r6  r   z!WRITEACCESS: %d bytes; raw=%s %r
)
rF   r=  r   r[  r<  rA  rG   r3   rM   r\  )ru   r   r   r^  s       rX   handle_writeaccessBook.handle_writeaccess  s    r!==%)"!% q$--BD!$!4D'$,,(LcRViY]YkYkmqr{{}r_   c                 z   [         R                  " U 5         U R                  5       u  pn[        (       a  [	        SU-  U R
                  S9  U[        :X  a  U R                  U5        GOU[        :X  d
  U[        :X  a  U R                  U5        GOU[        :X  a  U R                  U5        GOU[        :X  a  U R                  U5        GOoU[        :X  a  U R!                  U5        GORU["        :X  a  U R%                  U5        GO5U[&        :X  a  U R)                  U5        GOU[*        :X  a  U R-                  U5        GOU[.        :X  a  U R1                  U5        GOU[2        :X  a  U R5                  U5        GOU[6        :X  a  U R9                  U5        GOU[:        :X  a  U R=                  U5        GOU[>        :X  a  U RA                  U5        GOjU[B        :X  a  U RE                  U5        GOMU[F        :X  a  U RI                  U5        GO0U[J        :X  a  U RM                  U5        GOU[N        :X  a  U RQ                  U5        OU[R        :X  a  U RU                  U5        OUS-  S:X  a;  U RV                  (       a*  [Y        U R
                  SU RZ                  U-
  S-
  XU5        OU[\        :X  a  U R_                  5         U Ra                  5         U Rc                  5         U Rd                  (       d  U Rg                  5         U Rh                  S:X  a*  [        (       a  [	        SU RZ                  U R
                  S9  g  GM%  )	Nz$parse_globals: record code is 0x%04xr      	   z5*** Unexpected BOF at posn %d: 0x%04x len=%d data=%r
r  r   zglobal EOF: position)5r   r1  r!  r   r   r3   XL_SSTr  XL_FONTXL_FONT_B3B4handle_font	XL_FORMAThandle_formatXL_XF	handle_xfXL_BOUNDSHEETrJ  XL_DATEMODEri  XL_CODEPAGEra  
XL_COUNTRYre  XL_EXTERNNAMErs  XL_EXTERNSHEETr  XL_FILEPASSr  XL_WRITEACCESSr  XL_SHEETSOFFSETr  XL_SHEETHDRr  
XL_SUPBOOKr  XL_NAMEr  
XL_PALETTEhandle_paletteXL_STYLEhandle_styler4   rG   r   XL_EOFxf_epiloguer  palette_epiloguer=  r;  rF   )ru   rcr  r   s       rX   rI   Book.parse_globals  sy    	""4(#446BueBRGdll[V|%w""4  &y""4(ut$%&&t,{"$$T*{"$$T*z!##D)}$&&t,~%''-{"$$T*~%''-&((.{"$$T*z!##D)w  &z!##D)x!!$'daDNN&^NNV+a/TC  "##%%%'}}((*$$*ue$:DNNQUQ]Q]^  u r_   c                 N    U R                   XU-    nU[        U5      -   U l        U$ r   )r   rM   r   )ru   r  r  r   s       rX   r   	Book.read  s(    xxJ's4yr_   c           	      h   [         (       a  [        SU-  U R                  S9  S nU R                  nU R	                  5       nU[
        :X  a  U" S5        U[        ;  a  U" SU R                  X3S-    -  5        U R	                  5       nU[
        :X  a  U" S5        SUs=::  a  S	::  d  O  U" S
XT4-  5        S[        S[        U   U-
  5      -  nU R                  U R                  U5      n[         (       a  [        U R                  SU5        [        U5      U:  a  U" S5        Xv-  nUS-	  n[        SUSS 5      u  p[         (       a  [        SXIU
4-  U R                  S9  U R                  S-
  U-
  n[         (       a  [        SX4-  U R                  S9  S=n=pUS:X  aK  [        SUSS 5      u  pU	S:X  a  SnO@U	S:X  a  US:  d  US;   a  SnO+SnO(SSSSSS.R                  U	S5      nOUS;   a	  SSSS.U   nUS:X  a  U
[        :X  a  Sn[         (       d  U R                   S:  a  [        S XIXX4-  U R                  S9  U
["        :H  =(       d    US:H  =(       a	    U
[        :H  nU["        :X  a  U(       d  X:X  a  U$ US:  a  U
[$        :X  a  U$ US:  a  U
S!:X  a  U" S"5        U" S#XIXX4-  5        g )$Nzreqd: 0x%04xr   c                     [        SU -   5      e)Nz%Unsupported format, or corrupt file: )rC   )r  s    rX   	bof_errorBook.getbof.<locals>.bof_error  s    CcIJJr_   z$Expected BOF record; met end of filezExpected BOF record; found %rr   z)Incomplete BOF record[1]; met end of filer  r   z.Invalid length (%d) for BOF record type 0x%04x    r   z
getbof(): data=%r
z)Incomplete BOF record[2]; met end of filer  z5getbof(): op=0x%04x version2=0x%04x streamtype=0x%04xz+getbof(): BOF found at offset %d; savpos=%di   r   i   i  )il	  i  i  r   r   r   r   r   )r      i   i   i   )r  r   r   r   r   zHBOF: op=0x%04x vers=0x%04x stream=0x%04x buildid=%d buildyr=%d -> BIFF%d   z%Workspace file -- no spreadsheet datazXBOF not workbook/worksheet: op=0x%04x vers=0x%04x strm=0x%04x build=%d year=%d -> BIFF%d)r   r   r3   r   r  r  bofcodesr   r|   boflenr   rG   rM   r  rB  XL_WORKBOOK_GLOBALS_4Wr4   rB   r(  )ru   
rqd_streamr  savposopcoder  paddingr   version1version2
streamtype
bof_offsetversionbuildyeargot_globalss                   rX   rA   Book.getbof  s    5%3$,,G	K!V<=!5q8QQR!VABV!r!@"#$ #a&!899yy05'$,,(?Ft9vABQ;%eT!AY75IZ017;||E^^a'&0
5?&'-1\\;!"""%t Qq	2KE6!V#$;%+="= G G  #h"  ++r4X>Gb=Z+AAG5DNNa'\ZFGMQ\\[ $77 DrMBj,BB 	--+*BZNR<J,6Nb=Z61=>fDBC	
r_   )7r   r   r   r   r   r   r   r   r   r   r   rK   rJ   r   r   r   r?  r   r   r   r   r  r  r	  r   r   r   rU  r   rd  rh  r=  r6   r   r  r  r  r7   r3   r   r  r  r   rN   r8   r   r9   r   r   r   r5   r[  r4   r   r  r   )Cr   r   r   r   r   rN   rh  rF   r   rU  r=  rd  r   r[  r  r   r  r  r   r   r   r@   rP   r   rr   r   r   r   r   rQ   r   r   r  r  r   sysstdoutUSE_MMAPr?   r   r  r!  r%  r   rL   rH   rJ  rN  r;  ra  re  ri  rs  r  r  r  r  r  r  r  r  r  r  rI   r   rA   r   r   r_   rX   r>   r>     s    G H
 L M H H I  #I I G K J: N  J N  	#B	+$. (+.!  HB %) ZZ1x'+%*$!&;rz	4$	$*$29h/(T#!T12f1.:xH!T5-z^.*"W2>@
J
r_   r>   c                     U nUS-  (       a  US:  a  US-  nSnOSnUS-  nUS-  (       a  US:  a  US-  nSnOSnX$X54$ )	Ni   i   r   r   r  i @     r  r   )inrowincoloutrowrelrowoutcolrelcols         rX   expand_cell_addressr4  @  s]    Fv~U?eOFT\Fv~S=cMF6))r_   c                 t    U S:  d   e[        S5      n [        U S5      u  p4X   U-   nU(       d  U$ US-
  n M%  )Nr   r^   r      )r   divmod)colx_A2Zr   quotrems        rX   colnamer<  R  sK    1992D
4$	y4Kax r_   c                     U(       a  SSU S:     [        U 5      4-  nO	SU S-   4-  nU(       a  SSUS:     [        U5      4-  nXT-   $ S[        U5      -   nXT-   $ )Nz(*%s%d)z+-r   z$%dr   $)absr<  )rowxr8  r1  r3  rowpartcolparts         rX   display_cell_addressrC  \  sr    tD1H~s4y9946)#tD1H~s4y99  %r_   c                    Sn[        U 5      nU S   n[        U5      nSn/ nUR                  n0 n	[        n
[        n[        nSn[        U5       GH  nU
" SXFUS-    5      S   nUS-  nU" XF   5      nUS-  nSnSnUS-  (       a  U
" SXFUS-    5      S   nUS-  nUS-  (       a  U
" SXFUS-    5      S   nUS-  n[        S	5      nSn UU-
  nUS-  (       a1  U" XV-
  S-	  U5      nXFUSU-  -    n U[        US
5      -  nUSU-  -  nO&U" XV-
  U5      nXFUU-    nU[        UU5      -  nUU-  nUU-  nUU:X  a  O#US-  nX   n[        U5      nU" US   5      nSnM  U(       a_  / n[        U5       H@  nXe:X  a  SnUS-  nX   n[        U5      nUR                  U
" SXFUS-    5      5        US-  nMB     UU	[        U5      '   UU-  nXe:  a(  Xe-
  nUS-  nX#:  a  X   n[        U5      nO
XS-
  :X  d   eU" U5        GM     Xy4$ !   e = f)zReturn list of stringsr   r   latin_1rM  r   r   r  r  r^   	utf_16_ler  )rM   r2  r  rz   r  r   r   rX  )datatabnstringsdatainxndatasr   datalenr  strings	strappendrichtext_runslocal_unpack	local_minlocal_BYTES_ORDrE  	_unused_incharsoptionsrtcountphoszaccstrgcharsgot	charsneed
charsavailrawstrgrunsrunindexs                             rX   r  r  g  s   G\F1:D$iG
CGIMLIOGH%	dDSUO4Q7q!$),qT>"4#a%9!<G1HCT> tA7:E1HC!"%)I~&!';YG
3q|#34ww<<G q|# 'w}i@
3z>277G44z!
"H6!qLG#D$iG%d1g.GC? B D"7O>CqLG"+D!$iGLQ@Aq , +/M#g,'u>-CqLG'd) qL000'M &N !!_ s   2HH
)ABCDEFGHIJKLMNOPQRSTUVWXYZ)0
__future__r   r;   r)  r^   r   r   r   biffhformulatimemachinetimer	   ImportErrorr
   r  r  
empty_cellr   r   r:   r   r   r+  r  r  SUPBOOK_UNKr  r  rn  r  rD   _code_from_builtin_namer  code_from_builtin_nameitems_bin_bicr   r*  rY   
BaseObjectr[   r>   r4  r<  rC  r  r   r_   rX   <module>rm     s  
 & 	 
 ( (   +!
 v
		N 	QVWXQY N/5       )//1JD$4 D4 D#'4 #'4 	 2
 	$'#!jjA$((,&+u%	FRL`: L`^^
: ^
D!*$	U"m*  +*+$  Ns#   C5 D 5DDDD