
    F j[7                        S r SSKJrJr  SSKJrJrJrJrJ	r	  SSK
Jr  SSKJrJrJrJrJr  SSKJr   SSKJr  \(       a  SS
KJr  SrSrSrSr " S S\5      r " S S\5      r " S S\5      r  " S S\5      r!g	! \ a    S	r NLf = f)z
This module is in work-in-progress state.
Hint tables / hint streams have not been implemented yet,
and there are a few "TODO" comment remaining.
cf. https://github.com/py-pdf/fpdf2/issues/62
    )TYPE_CHECKINGOptional   )ContentWithoutIDOutputProducer
PDFCatalog	PDFHeaderPDFInfo)sign_content)DestinationXYZPDFArrayPDFContentStream	PDFObjectiobj_ref)buffer_subst)signerN)StandardSecurityHandlerz0%1%2%3%4%5%6%7%8%9%a%b%c%dz1%2%3%4%5%6%z2%3%4%5%6%7%z3%4%5%6%7%8%c                   4   ^  \ rS rSrS\SS4U 4S jjrSrU =r$ )PDFLinearization%   pages_countreturnNc                    > [         TU ]  5         SU l        Xl        [        U l        S U l        [        U l        [        U l
        [        U l        g )N1)super__init__
linearizedn%HINT_STREAM_OFFSET_LENGTH_PLACEHOLDERho!FIRST_PAGE_END_OFFSET_PLACEHOLDERe&MAIN_XREF_1ST_ENTRY_OFFSET_PLACEHOLDERtFILE_LENGTH_PLACEHOLDERl)selfr   	__class__s     c/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/fpdf/linearization.pyr   PDFLinearization.__init__&   s=    627(    )r#   r    r'   r   r   r!   r%   )__name__
__module____qualname____firstlineno__intr   __static_attributes____classcell__r)   s   @r*   r   r   %   s    
)C 
)D 
) 
)r,   r   c                   x    \ rS rSrSrS\SS4S jr\S\4S j5       r	\S\4S j5       r
 SS	\S
   S\4S jjrSrg)PDFXrefAndTrailer3   z0%1*2+3-2/1^output_builderr   Nc                     Xl         UR                  S-   U l        SU l        S U l        S U l        S U l        S U l        S U l        g )Nr   )	r8   obj_idcountstart_obj_idcatalog_objinfo_obj
first_xref	main_xref	startxref)r(   r8   s     r*   r   PDFXrefAndTrailer.__init__6   sF    ,#**Q.
15+/9=8<(,r,   c                 ,    [        U R                  5      $ N)boolr@   r(   s    r*   is_first_xrefPDFXrefAndTrailer.is_first_xrefB   s    DNN##r,   c                 ,    [        U R                  5      $ rD   )rE   r?   rF   s    r*   is_main_xrefPDFXrefAndTrailer.is_main_xrefF   s    DOO$$r,   _security_handlerr   c                    U R                   nUc   eUR                  c   e/ n[        [        UR                  5      5      U l        U R
                  (       a@  [        UR                  U R                  U R                  R                  SS5      5      Ul        UR                  S5        UR                  U R                  S:X  a  SOU R                   SU R                   35        U R                  (       d  UR                  S5        [        UR                  5      S:  d   S5       e[        U R                  U R                  U R                  -   5       H%  nUR                  UR                  U   S S	35        M'     UR                  S
5        UR                  S5        U R
                  (       aF  U R                  c   eUR                  SU R                  U R                  R                  -
   35        GO^U R                  (       aV  U R                   c   eUR                  SU R                   R                   35        UR                  SU R                   35        OUR                  SU R                   35        U R"                  c   eU R$                  c   eUR                  S['        U R"                  R(                  5       35        UR                  S['        U R$                  R(                  5       35        UR*                  nUR-                  5       nUS:X  a  UR/                  UR                  5      nU(       a  UR                  SU S35        UR                  S5        UR                  S5        U R                  nU R
                  (       a7  U R                  c   e[        U R                  R                  =(       d    S5      nU R                  (       a  SnUR                  U5        UR                  S5        SR1                  U5      $ )N    xrefr   r   z0000000000 65535 f z<TODO: how to know the offsets in the 1st xref at this stage?010z	 00000 n trailerz<<z/Size z/Prev z/Root z/Info z/ID []z>>rA   0z%%EOF
)r8   bufferstrlenrA   rJ   r    PREV_MAIN_XREF_START_PLACEHOLDERrjustappendr<   r;   rG   offsetsranger?   r@   r=   r>   pdf_refidfpdffile_id_default_file_idjoin)r(   rL   builderoutr:   ra   rb   rA   s           r*   	serializePDFXrefAndTrailer.serializeJ   s9    %%"""~~)))S01)55$$R-GN
 	

6

4,,1at7H7HI4::,WX!!JJ,- 1$	JI	J$D--t/@/@4::/MNFJJ'//&1#6i@A O

9

4??...JJ

T__-B-B BCDE!!~~111

VDNN$8$8#9:;

VD$I$I#JKL

VDJJ<01##///==,,,JJ(8(8(;(; <=>?JJ(8(8 9:;<<<DllnG"}//NN 

U7)1-.

4

;NN	??...DOO55<=II

9

7yy~r,   )r=   r;   r?   r>   r@   r8   r<   rA   rD   )r-   r.   r/   r0   rZ   r   r   propertyrE   rG   rJ   r   rX   rg   r2    r,   r*   r6   r6   3   sx    '5$
-~ 
-$ 
- $t $ $ %d % % HL9!)*C!D9	9 9r,   r6   c                   <   ^  \ rS rSrSS\S\SS4U 4S jjjrSrU =r$ )	PDFHintStream   contentscompressr   Nc                    > [         TU ]  XS9  S U l        S U l        S U l        S U l        S U l        S U l        S U l        S U l	        S U l
        S U l        S U l        g )N)rn   ro   )r   r   sr%   r!   ar#   vicr'   rb)r(   rn   ro   r)   s      r*   r   PDFHintStream.__init__   s`    (>r,   )rr   rw   ru   r#   rt   r'   r!   rv   rq   r%   rs   )F)	r-   r.   r/   r0   bytesrE   r   r2   r3   r4   s   @r*   rl   rl      s"     $ 4  r,   rl   c                   "    \ rS rSrS\4S jrSrg)LinearizedOutputProducer   r   c           
         U R                   nU R                  R                  [        UR                  5      5        [        UR                  5      nU R                  U5        [        U 5      nU R                  R                  U5        U R                  5       n[        SR                  S5      5      nU R                  R                  U5        U R                  [        SS5      5      nU R                  S-   Ul        [!        U R                  5      nSU l        UR#                  U R                  [        SS 5      5      5        U R%                  5       nU R'                  5       n	U R)                  5       n
U R+                  5       nU R-                  5       nU R/                  5       nU R1                  U
UU5      nU R3                  UU
UUU5      nUR4                   H  nU R                  US5        M     U R7                  5       nU R9                  5       u  nnU R;                  5       nU R=                  5       n[        U 5      nU R                  R                  U5        U R                  S-   Ul        U HG  n[A        U[B        5      (       a  M  UULd  M!  U =R                  S-  sl        U R                  Ul"        MI     U =R                  S-  sl        U R                  Ul"        US   RD                  Ul#        [I        U5      Ul%        U RM                  UUUS   U	UUUS9  / nU H  nUUl'        UUl(        URR                  c   eURR                   H  nURT                  (       a  UR                  URT                  5        URV                  (       d  MB  [Y        URV                  S5      (       d  M_  UR                  URV                  RT                  5        M     URR                  (       a  M  S Ul)        M     U H-  nURT                  c  M  UR                  URT                  5        M/     U H-  n[[        UUR\                  S-
     RD                  5      Ul/        M/     UR`                  Rb                  Rd                   H  nUUR]                  5       S-
     Ul3        M      UUl4        UUl5        UU4 H  nUUl6        UUl7        M     U Rp                  (       a   SU Rp                   35       eU Rr                  (       a   S	[u        U Rr                  5       35       eU R                   H  n[A        U[B        5      (       a  S nOQ[u        U Rp                  5      U Rr                  URD                  '   U Rv                  Ry                  URD                  5      nU(       a;  U R{                  U5         U R}                  UR                  5       5        S S S 5        M  U R}                  UR                  5       5        M     U R                  5         U Rr                  URD                     n [u        UR                  5       5      n![        U Rp                  [        S
U S SU!S S35      U l8        [        U Rp                  [        U Rr                  US   RD                  S-      S 5      U l8        [        U Rp                  [        U Rr                  UR>                     S 5      U l8        [        U Rp                  [        [u        U Rp                  5      S 5      U l8        UR                  (       aV  [        [        U Rp                  UR                  UR                  UR                  UR                  UR                  5      U l8        U Rp                  $ ! , (       d  f       GMl  = f)N zlatin-1r   r   embedded_files)pages_root_objfirst_page_objsig_annotation_objxmp_metadata_objstruct_tree_root_objoutline_dict_objdestz@Nothing should have been appended to the .buffer at this stage: z.No offset should have been set at this stage: [z 12drO   rT   )Mra   pdf_objsr\   r	   pdf_versionr   r   _add_pdf_objr6   _add_catalogrl   encode
_add_pagesslicer:   r;   listextend_add_pages_root_add_annotations_as_objects_add_images_add_gfxstates_add_shadings_add_patterns
_add_fonts_add_resources_dictr   _add_structure_tree_add_document_outline_add_xmp_metadata	_add_infor<   
isinstancer   r`   r!   r   kids_finalize_catalogparent	resourcesannotsr   rr   hasattrr_   page_numberpage_refstruct_builderdoc_struct_elemkpgr?   r@   r=   r>   rW   r]   rY   trace_labels_per_obj_idget_trace_size_outrg   _log_final_sections_sizesr   r   r"   r$   r&   	_sign_keyr   r   
_sign_cert_sign_extra_certs_sign_hashalgo
_sign_time)"r(   ra   linearization_objr?   r=   hint_stream_obj	page_objsfirst_xref_pdf_objsr   r   img_objs_per_indexgfxstate_objs_per_nameshading_objs_per_namepattern_objs_per_namefont_objs_per_indexresources_dict_objembedded_filer   r   outline_itemsr   r>   r@   pdf_objdestspage_objannotoutline_itemr   struct_elemrP   trace_label
hs1_offset
hs1_lengths"                                     r*   	bufferize"LinearizedOutputProducer.bufferize   sM   yy 	Yt'7'789,T-=-=>+,&t,
Z('')'		)(<=_-OOE!QK0	  ;;?
"4==1 	q$89 --/!==?!--/!%!4!4!6 $ 2 2 4 $ 2 2 4"oo"!

 "55"!!
 "00Mm-=> 1#779*.*D*D*F'-113>>#%d+	Y' #'++/
*Gw(899?2q ![[
 + 	q![[ (loo&y1)$Q<1-!5- 	 	
 ')!H,HO!3H??...!::LL,777wuww77LL.	 )
 ???"& " *L  ,\../ * D#$$q("DM   ..>>@@K&{'>'>'@1'DEKN A)	(

+D*D$DM , 	\Mdkk][	\ 	P;C<M;NO	P}}G'#344"+.t{{+;WZZ("::>>wzzJ%%k2IIg//12 32 		'++-. % 	&&( \\/"4"45
2245
"KK1
4 *T!2!4

 #KK-||IaLOOa/06

 #KK2||I223D9

 #KK#4;;%
 >>&&&##DK {{U 32s   " ]::
^
	)rW   r:   N)r-   r.   r/   r0   	bytearrayr   r2   rj   r,   r*   r{   r{      s    r9 rr,   r{   )"__doc__typingr   r   outputr   r   r   r	   r
   signr   syntaxr   r   r   r   r   r_   utilr   endesiver   ImportError
encryptionr   r   r"   r$   r&   r   r6   rl   r{   rj   r,   r*   <module>r      s    + T T    3(E %$2 !)7 &( )y )P( Pf$  s~ s{  Fs   A< <BB