§
    yØj‘0  ã                  ó  — d dl mZ ddhZd dlZddlmZmZ ddlmZ	 ddlm
Z
 dd	lmZ d
Zerd dlmZ dZddddddddddddœZd,d„Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Zd-d'„Z ej        ej        ee¦  «          ej        ej        e¦  «          ej        d(e¦  «          ej        d)e¦  «          ej        ej        g d*¢¦  «          ej        ej        d+¦  «         dS ).é    )ÚannotationszPIL._binaryÚmathNé   )ÚImageÚ	ImageFile)Úi16be)Úo8)Úo32leF)ÚIOs    	
Ú1ÚLÚRGBÚCMYKÚFÚPÚRGBA)ó   P1ó   P2ó   P3ó   P4ó   P5ó   P6s   P0CMYKó   Pfs   PyPs   PyRGBAs   PyCMYKÚprefixÚbytesÚreturnÚboolc                óf   — t          | ¦  «        dk    o|                      d¦  «        o	| d         dv S )Né   ó   Pr   s	   0123456fy)ÚlenÚ
startswith)r   s    ú‡/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/PIL/PpmImagePlugin.pyÚ_acceptr$   6   s4   € Ýˆv‰;Œ;˜!ÒÐU × 1Ò 1°$Ñ 7Ô 7ÐU¸FÀ1¼IÈÐ<UÐUó    c                  ó.   — e Zd ZdZdZd
d„Zd
d„Zdd„Zd	S )ÚPpmImageFileÚPPMzPbmplus imager   r   c                ó˜   — | j         €J ‚d}t          d¦  «        D ].}| j                              d¦  «        }|r	|t          v r n||z  }Œ/|S )Nr%   é   r   )ÚfpÚrangeÚreadÚb_whitespace)ÚselfÚmagicÚ_Úcs       r#   Ú_read_magiczPpmImageFile._read_magicB   sb   € ØŒwÐ"Ð"Ð"àˆå�q‘”ð 	ð 	ˆAØ”—’˜Q‘”ˆAØð ˜�\Ð)Ð)Ø�Ø�Q‰JˆEˆEØˆr%   c                óº  — | j         €J ‚d}t          |¦  «        dk    r‚| j                              d¦  «        }|sne|t          v r|sŒ<nX|dk    r:| j                              d¦  «        dvr	 | j                              d¦  «        dv°Œ}||z  }t          |¦  «        dk    °‚|sd}t	          |¦  «        ‚t          |¦  «        dk    rd|z  }t	          |¦  «        ‚|S )Nr%   é
   r   ó   #s   
z Reached EOF while reading headers!   Token too long in file header: %s)r+   r!   r-   r.   Ú
ValueError)r/   Útokenr2   ÚmsgÚmsg_too_longs        r#   Ú_read_tokenzPpmImageFile._read_tokenN   sý   € ØŒwÐ"Ð"Ð"àˆÝ�%‰jŒj˜BÒÐØ”—’˜Q‘”ˆAØð ØØ•lÐ"Ð"Øð àØØ�d’�à”g—l’l 1‘o”o¨WÐ4Ð4Øð ”g—l’l 1‘o”o¨WÐ4Ð4àØ�Q‰JˆEõ �%‰jŒj˜BÒÐð ð 	+à4ˆCÝ˜S‘/”/Ð!Ý�‰ZŒZ˜"Š_ˆ_Ø?À%ÑGˆLÝ˜\Ñ*Ô*Ð*Øˆr%   ÚNonec                ó  — | j         €J ‚|                      ¦   «         }	 t          |         }n# t          $ r d}t	          |¦  «        ‚w xY w|| _        |dv rd| _        n|dv rd| _        n|dv rd| _        t          |                      ¦   «         ¦  «        t          |                      ¦   «         ¦  «        f| _	        d}|d	v rd
}|dk    rd}nø|dk    rst          |                      ¦   «         ¦  «        }|dk    st          j        |¦  «        sd}t          |¦  «        ‚t          |¦  «        | j        d<   |dk     rdnd}|ddf}nt          |                      ¦   «         ¦  «        }d|cxk     rdk     sn d}t          |¦  «        ‚|dk    r|dk    rd| _        |}|d
k    r|dk    r	|dk    rd}n|dk    rd}|dk    r|n||f}t!          j        |ddg| j        ¢R | j                              ¦   «         |¦  «        g| _        d S )Nznot a PPM file)r   r   zimage/x-portable-bitmap)r   r   zimage/x-portable-graymap)r   r   zimage/x-portable-pixmapÚraw)r   r   r   Ú	ppm_plainr   ú1;Ir   g        z!scale must be finite and non-zeroÚscaler   úF;32FzF;32BFéÿÿÿÿi   z1maxval must be greater than 0 and less than 65536éÿ   r   ÚIéÿÿ  úI;16BÚppm)r+   r3   ÚMODESÚKeyErrorÚSyntaxErrorÚ_modeÚcustom_mimetypeÚintr;   Ú_sizeÚfloatr   Úisfiniter7   ÚabsÚinfor   Ú_TileÚsizeÚtellÚtile)	r/   Úmagic_numberÚmoder9   Údecoder_nameÚargsrA   ÚrawmodeÚmaxvals	            r#   Ú_openzPpmImageFile._openj   sg  € ØŒwÐ"Ð"Ð"à×'Ò'Ñ)Ô)ˆð	#Ý˜Ô&ˆDˆDøÝð 	#ð 	#ð 	#Ø"ˆCÝ˜cÑ"Ô"Ð"ð	#øøøð ˆŒ
à˜>Ð)Ð)Ø#<ˆDÔ Ð Ø˜^Ð+Ð+Ø#=ˆDÔ Ð Ø˜^Ð+Ð+Ø#<ˆDÔ å˜×)Ò)Ñ+Ô+Ñ,Ô,­c°$×2BÒ2BÑ2DÔ2DÑ.EÔ.EÐEˆŒ
àˆØÐ0Ð0Ð0Ø&ˆLð �3Š;ˆ;ØˆDˆDØ�SŠ[ˆ[Ý˜$×*Ò*Ñ,Ô,Ñ-Ô-ˆEØ˜Š|ˆ|¥4¤=°Ñ#7Ô#7ˆ|Ø9�Ý  ‘o”oÐ%Ý!$ U¡¤ˆDŒI�gÑà!&¨¢ �g�g°ˆGØ˜Q Ð#ˆDˆDå˜×)Ò)Ñ+Ô+Ñ,Ô,ˆFØ�vÐ%Ð%Ò%Ð% Ò%Ð%Ð%Ð%ØI�Ý  ‘o”oÐ%Ø˜Š|ˆ| ¨¢ Ø �”
àˆGØ˜{Ò*Ð*à˜U’?�? t¨s¢{ {Ø%�G�GØ˜s’]�]Ø#(�Là*¨eÒ3Ð3�7�7¸'À6Ð9JˆDåŒO˜L¨1¨aÐ*<°$´)Ð*<Ð*<¸d¼g¿lºl¹n¼nÈdÑSÔSð
ˆŒ	ˆ	ˆ	s	   Ÿ- ­A	N©r   r   )r   r<   )Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionr3   r;   r^   © r%   r#   r'   r'   >   s[   € € € € € Ø€FØ(Ðð
ð 
ð 
ð 
ðð ð ð ð87
ð 7
ð 7
ð 7
ð 7
ð 7
r%   r'   c                  óP   — e Zd ZU dZded<   dd„Zddd„Zdd„Zdd„Zdd„Z	dd„Z
dS )ÚPpmPlainDecoderTr   Ú_comment_spansr   r   c                ó\   — | j         €J ‚| j                              t          j        ¦  «        S )N)Úfdr-   r   Ú	SAFEBLOCK)r/   s    r#   Ú_read_blockzPpmPlainDecoder._read_block¬   s'   € ØŒwÐ"Ð"Ð"àŒw�|Š|�IÔ/Ñ0Ô0Ð0r%   r   ÚblockÚstartrN   c                ó¬   — |                      d|¦  «        }|                      d|¦  «        }||z  dk    rt          ||¦  «        nt          ||¦  «        S )Nó   
ó   r   )ÚfindÚminÚmax)r/   rm   rn   ÚaÚbs        r#   Ú_find_comment_endz!PpmPlainDecoder._find_comment_end±   sN   € Ø�JŠJ�u˜eÑ$Ô$ˆØ�JŠJ�u˜eÑ$Ô$ˆØ ™E AšI˜I�s�1�a‰yŒyˆy­3¨q°!©9¬9Ð4r%   c                ón  — | j         rA|r?|                      |¦  «        }|dk    r||dz   d …         }n|                      ¦   «         }|°?d| _         	 |                     d¦  «        }|dk    rnH|                      ||¦  «        }|dk    r|d |…         ||dz   d …         z   }n|d |…         }d| _         nŒd|S )NrC   r   FTr6   )rh   rw   rl   rr   )r/   rm   Úcomment_endÚcomment_starts       r#   Ú_ignore_commentsz PpmPlainDecoder._ignore_comments¶   s  € ØÔð 	/àð 
/Ø"×4Ò4°UÑ;Ô;�Ø "Ò$Ð$ð " +°¡/Ð"3Ð"3Ô4�EØð !×,Ò,Ñ.Ô.�Eð ð 
/ð $ˆÔð	Ø!ŸJšJ tÑ,Ô,ˆMØ Ò"Ð"àØ×0Ò0°¸ÑFÔFˆKØ˜bÒ Ð ð ˜n˜}˜nÔ-°°kÀA±oÐ6GÐ6GÔ0HÑH��ð ˜n˜}˜nÔ-�Ø&*�Ô#Øð	ð ˆr%   Ú	bytearrayc                ó  — t          ¦   «         }| j        j        | j        j        z  }t	          |¦  «        |k    rž|                      ¦   «         }|sn‡|                      |¦  «        }d                     |                     ¦   «         ¦  «        }|D ](}|dvr"dt          |g¦  «        z  }t          |¦  «        ‚Œ)||z   d|…         }t	          |¦  «        |k    °žt                               dd¦  «        }|                     |¦  «        S )z¥
        This is a separate method because in the plain PBM format, all data tokens are
        exactly one byte, so the inter-token whitespace is optional.
        r%   )é0   é1   s   Invalid token for this mode: %sNs   01s   ÿ )r|   ÚstateÚxsizeÚysizer!   rl   r{   ÚjoinÚsplitr   r7   Ú	maketransÚ	translate)r/   ÚdataÚtotal_bytesrm   Útokensr8   r9   Úinverts           r#   Ú_decode_bitonalzPpmPlainDecoder._decode_bitonalØ   s  € õ
 ‰{Œ{ˆØ”jÔ&¨¬Ô)9Ñ9ˆå�$‰iŒi˜;Ò&Ð&Ø×$Ò$Ñ&Ô&ˆEØð àà×)Ò)¨%Ñ0Ô0ˆEà—X’X˜eŸkšk™mœmÑ,Ô,ˆFØð *ð *�Ø Ð(Ð(Ø<½uÀeÀW¹~¼~ÑM�CÝ$ S™/œ/Ð)ð )ð ˜6‘M < K <Ô0ˆDõ �$‰iŒi˜;Ò&Ð&õ —’ ¨Ñ4Ô4ˆØ�~Š~˜fÑ%Ô%Ð%r%   r]   c                ó,  — t          ¦   «         }d}| j        dk    rdnd}| j        dk    rdnd}t          j        | j        ¦  «        }| j        j        | j        j        z  |z  |z  }d}t          |¦  «        |k    �r—|                      ¦   «         }	|	s|rd}	n�nz|  	                    |	¦  «        }	|r||	z   }	d}|	 
                    ¦   «         }
|	rb|	d	d …                              ¦   «         sF|
                     ¦   «         }t          |¦  «        |k    rd
|d |dz   …         z  }t          |¦  «        ‚|
D ]Í}t          |¦  «        |k    rd
|d |dz   …         z  }t          |¦  «        ‚t          |¦  «        }|dk     rd|› �}t          |¦  «        ‚||k    rd|› �}t          |¦  «        ‚t          ||z  |z  ¦  «        }|| j        dk    rt!          |¦  «        nt#          |¦  «        z  }t          |¦  «        |k    r nŒÎt          |¦  «        |k    �°—|S )Nr5   rE   é   r   rF   rD   r%   ó    rC   s    Token too long found in data: %sr   zChannel value is negative: z'Channel value too large for this mode: )r|   rY   r   Úgetmodebandsr€   r�   r‚   r!   rl   r{   r„   ÚisspaceÚpopr7   rN   ÚroundÚo32r	   )r/   r]   r‡   Úmax_lenÚout_byte_countÚout_maxÚbandsrˆ   Ú
half_tokenrm   r‰   r9   r8   ÚvalueÚmsg_strs                  r#   Ú_decode_blockszPpmPlainDecoder._decode_blocksñ   sX  € Ý‰{Œ{ˆØˆØ"œi¨3Ò.Ð.˜˜°AˆØœ9¨Ò+Ð+�%�%°ˆÝÔ" 4¤9Ñ-Ô-ˆØ”jÔ&¨¬Ô)9Ñ9¸EÑAÀNÑRˆàˆ
Ý�$‰iŒi˜;Ò&Ñ&Ø×$Ò$Ñ&Ô&ˆEØð Øð Ø �E�Eñ à×)Ò)¨%Ñ0Ô0ˆEàð !Ø" UÑ*�Ø �
à—[’[‘]”]ˆFàð *˜U 2 3 3œZ×/Ò/Ñ1Ô1ð *Ø#ŸZšZ™\œ\�
Ý�z‘?”? WÒ,Ð,à;¸jÈÈ7ÐUVÉ;ÈÔ>WÑWð õ % S™/œ/Ð)àð ð �Ý�u‘:”: Ò'Ð'Ø=ÀÀmÈÐRSÉÀmÔ@TÑT�CÝ$ S™/œ/Ð)Ý˜E™
œ
�Ø˜1’9�9ØC¸EÐCÐC�GÝ$ WÑ-Ô-Ð-Ø˜6’>�>ØOÈÐOÐO�GÝ$ WÑ-Ô-Ð-Ý˜e f™n¨wÑ6Ñ7Ô7�Ø d¤i°3Ò&6Ð&6�˜E™
œ
˜
½B¸u¹I¼IÑE�Ý�t‘9”9 Ò+Ð+Ø�Eð ,õM �$‰iŒi˜;Ò&Ñ&ðP ˆr%   ÚbufferúImage.DecoderInputútuple[int, int]c                ó
  — d| _         | j        dk    r|                      ¦   «         }d}n6| j        d         }|                      |¦  «        }| j        dk    rdn| j        }|                      t          |¦  «        |¦  «         dS )NFr   z1;8rC   rE   úI;32©rC   r   )rh   rY   r‹   r[   r›   Ú
set_as_rawr   )r/   rœ   r‡   r\   r]   s        r#   ÚdecodezPpmPlainDecoder.decode$  sƒ   € Ø#ˆÔØŒ9˜ÒÐØ×'Ò'Ñ)Ô)ˆDØˆGˆGà”Y˜r”]ˆFØ×&Ò& vÑ.Ô.ˆDØ $¤	¨SÒ 0Ð 0�f�f°d´iˆGØ�Š�˜d™œ WÑ-Ô-Ð-Øˆur%   Nr_   )r   )rm   r   rn   rN   r   rN   )rm   r   r   r   )r   r|   )r]   rN   r   r|   ©rœ   r�   r   rž   )r`   ra   rb   Ú	_pulls_fdÚ__annotations__rl   rw   r{   r‹   r›   r£   re   r%   r#   rg   rg   ¨   s¦   € € € € € € Ø€IØÐÐÑð1ð 1ð 1ð 1ð
5ð 5ð 5ð 5ð 5ð
 ð  ð  ð  ðD&ð &ð &ð &ð21ð 1ð 1ð 1ðf
ð 
ð 
ð 
ð 
ð 
r%   rg   c                  ó   — e Zd ZdZdd„ZdS )	Ú
PpmDecoderTrœ   r�   r   rž   c                ó4  — | j         €J ‚t          ¦   «         }| j        d         }|dk     rdnd}| j        dk    rdnd}| j        dk    rdnd}t	          j        | j        ¦  «        }| j        j        | j        j        z  |z  |z  }t          |¦  «        |k     rÉ| j          
                    ||z  ¦  «        }	t          |	¦  «        ||z  k     rn•t          |¦  «        D ]r}
|dk    r|	|
         nt          |	|
|z  ¦  «        }t          |t          ||z  |z  ¦  «        ¦  «        }|| j        dk    rt          |¦  «        nt!          |¦  «        z  }Œst          |¦  «        |k     °É| j        dk    rd	n| j        }|                      t%          |¦  «        |¦  «         d
S )NrC   é   r   r   rE   r�   rF   rD   r    r¡   )rj   r|   r[   rY   r   r�   r€   r�   r‚   r!   r-   r,   Úi16rs   r’   r“   r	   r¢   r   )r/   rœ   r‡   r]   Úin_byte_countr•   r–   r—   Údest_lengthÚpixelsrv   r™   r\   s                r#   r£   zPpmDecoder.decode4  s¦  € ØŒwÐ"Ð"Ð"å‰{Œ{ˆØ”˜2”ˆØ# cš\˜\˜˜¨qˆØ"œi¨3Ò.Ð.˜˜°AˆØœ9¨Ò+Ð+�%�%°ˆÝÔ" 4¤9Ñ-Ô-ˆØ”jÔ&¨¬Ô)9Ñ9¸EÑAÀNÑRˆÝ�$‰iŒi˜+Ò%Ð%Ø”W—\’\ -°%Ñ"7Ñ8Ô8ˆFÝ�6‰{Œ{˜]¨UÑ2Ò2Ð2àÝ˜5‘\”\ð Fð F�à!.°!Ò!3Ð!3�F˜1”I�I½¸VÀQÈÑEVÑ9WÔ9Wð õ ˜G¥U¨5°6©>¸GÑ+CÑ%DÔ%DÑEÔE�Ø d¤i°3Ò&6Ð&6�˜E™
œ
˜
½B¸u¹I¼IÑE��õ �$‰iŒi˜+Ò%Ð%ð !œI¨Ò,Ð,�&�&°$´)ˆØ�Š�˜d™œ WÑ-Ô-Ð-Øˆur%   Nr¤   )r`   ra   rb   r¥   r£   re   r%   r#   r¨   r¨   1  s-   € € € € € Ø€Iðð ð ð ð ð r%   r¨   ÚimúImage.Imager+   ú	IO[bytes]Úfilenameústr | bytesr<   c                óŠ  — | j         dk    rd\  }}nZ| j         dk    rd\  }}nI| j         dv rd\  }}n:| j         dv rd\  }}n+| j         d	k    rd
\  }}nd| j         › d�}t          |¦  «        ‚|                     |d| j        z  z   ¦  «         |dk    r|                     d¦  «         nS|dk    r2|dk    r|                     d¦  «         n1|                     d¦  «         n|dk    r|                     d¦  «         | j         d	k    rdnd}t	          j        | |t	          j        dddg| j        ¢R d|d|f¦  «        g¦  «         d S )Nr   )r@   r   r   )r   r   )rE   zI;16)rG   r   )r   r   )r   r   r   )rB   r   zcannot write mode z as PPMs   
%d %d
r   s   255
r   s   65535
r   s   -1.0
rC   r   r>   r   )rY   ÚOSErrorÚwriterU   r   Ú_saverT   )r¯   r+   r²   r\   Úheadr9   Ú	row_orders          r#   r·   r·   R  s†  € Ø	„w�#‚~€~Ø$‰ˆ��Ø	Œ�CŠˆØ"‰ˆ��Ø	Œ�MÐ	!Ð	!Ø&‰ˆ��Ø	Œ�OÐ	#Ð	#Ø$‰ˆ��Ø	Œ�CŠˆØ&‰ˆ��à3 2¤7Ð3Ð3Ð3ˆÝ�c‰lŒlÐØ‡H‚HˆT�L 2¤7Ñ*Ñ*Ñ+Ô+Ð+Øˆu‚}€}Ø
�Š�ÑÔÐÐØ	�ŠˆØ�cŠ>ˆ>Ø�HŠH�XÑÔÐÐà�HŠH�ZÑ Ô Ð Ð Ø	�ŠˆØ
�Š�ÑÔÐØ”g ’n�n��¨!€IÝ„OØ
ˆB•” ¨¨AÐ(8°´Ð(8Ð(8¸!¸gÀqÈ)Ð=TÑUÔUÐVñô ð ð ð r%   rH   r?   )z.pbmz.pgmz.ppmz.pnmz.pfmzimage/x-portable-anymap)r   r   r   r   )r¯   r°   r+   r±   r²   r³   r   r<   )Ú
__future__r   Ú__lazy_modules__r   Ú r   r   Ú_binaryr   r«   r	   r
   r“   ÚTYPE_CHECKINGÚtypingr   r.   rI   r$   r'   Ú	PyDecoderrg   r¨   r·   Úregister_openrc   Úregister_saveÚregister_decoderÚregister_extensionsÚregister_mimere   r%   r#   ú<module>rÆ      s3  ðð  #Ð "Ð "Ð "Ð "Ð "à! 6Ð*Ð à €€€à Ð Ð Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !à€Øð ØÐÐÐÐÐð
 +€ð ØØØØØàØàØØð	ð 	€ð$Vð Vð Vð Vðc
ð c
ð c
ð c
ð c
�9Ô&ñ c
ô c
ð c
ðTFð Fð Fð Fð F�iÔ)ñ Fô Fð FðRð ð ð ð �Ô$ñ ô ð ðBð ð ð ðD €Ô �LÔ'¨°wÑ ?Ô ?Ð ?Ø €Ô �LÔ'¨Ñ /Ô /Ð /à €Ô �u˜jÑ )Ô )Ð )Ø €Ô �{ OÑ 4Ô 4Ð 4à €Ô ˜,Ô-Ð/WÐ/WÐ/WÑ XÔ XÐ Xà €Ô �LÔ'Ð)BÑ CÔ CÐ CÐ CÐ Cr%   