§
    aÒ³gB0  ã                  óö  — d dl mZ d dlZd dlm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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 )+é    )ÚannotationsN)ÚIOé   )ÚImageÚ	ImageFile)Úi16be)Úo8)Úo32les    	
Ú1ÚLÚRGBÚCMYKÚFÚPÚRGBA)ó   P1ó   P2ó   P3ó   P4ó   P5ó   P6s   P0CMYKó   Pfs   PyPs   PyRGBAs   PyCMYKÚprefixÚbytesÚreturnÚboolc                ó2   — | dd…         dk    o	| d         dv S )Nr   r   ó   Ps	   0123456fy© )r   s    úP/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/PIL/PpmImagePlugin.pyÚ_acceptr!   1   s#   € Ø�!�A�#Œ;˜$ÒÐ< 6¨!¤9°Ð#<Ð<ó    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_magic=   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|                     ¦   «         › �}t	          |¦  «        ‚|S )Nr"   é
   r   ó   #s   
z Reached EOF while reading headerzToken too long in file header: )r(   Úlenr*   r+   Ú
ValueErrorÚdecode)r,   Útokenr/   Úmsgs       r    Ú_read_tokenzPpmImageFile._read_tokenI   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˜"Š_ˆ_ØD°E·L²L±N´NÐDÐDˆCÝ˜S‘/”/Ð!Øˆ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| j        z   | 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   r   )r(   r0   ÚMODESÚKeyErrorÚSyntaxErrorÚ_modeÚcustom_mimetypeÚintr9   Ú_sizeÚfloatÚmathÚisfiniter5   ÚabsÚinfor   Ú_TileÚsizeÚtellÚtile)	r,   Úmagic_numberÚmoder8   Údecoder_nameÚargsr?   ÚrawmodeÚmaxvals	            r    Ú_openzPpmImageFile._opene   s_  € ØŒ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¨&°4´9Ñ*<¸d¼g¿lºl¹n¼nÈdÑSÔSð
ˆŒ	ˆ	ˆ	s	   Ÿ- ­A	N©r   r   )r   r:   )Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionr0   r9   r^   r   r"   r    r$   r$   9   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ÚstartrM   c                ó¬   — |                      d|¦  «        }|                      d|¦  «        }||z  dk    rt          ||¦  «        nt          ||¦  «        S )Nó   
ó   r   )ÚfindÚminÚmax)r,   rl   rm   Ú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 )NrA   r   FTr3   )rg   rv   rk   rq   )r,   rl   Ú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Úysizer4   rk   rz   ÚjoinÚsplitr   r5   Ú	maketransÚ	translate)r,   ÚdataÚtotal_bytesrl   Útokensr7   r8   Ú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                óF  — 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t          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 )Nr2   rC   é   r   rD   rB   r"   ó    rA   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�   r4   rk   rz   rƒ   ÚisspaceÚpopr5   rM   ÚroundÚo32r	   )r,   r]   r†   Úmax_lenÚout_byte_countÚout_maxÚbandsr‡   Ú
half_tokenrl   rˆ   r8   r7   ÚvalueÚmsg_strs                  r    Ú_decode_blockszPpmPlainDecoder._decode_blocksì   s^  € Ý‰{Œ{ˆØˆØ"œi¨3Ò.Ð.˜˜°AˆØœ9¨Ò+Ð+�%�%°ˆÝÔ" 4¤9Ñ-Ô-ˆØ”jÔ&¨¬Ô)9Ñ9¸EÑAÀNÑRˆàˆ
Ý�$‰iŒi˜;Ò&Ñ&Ø×$Ò$Ñ&Ô&ˆEØð Øð Ý% d™OœO�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ú$bytes | Image.SupportsArrayInterfaceú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;8rA   rC   úI;32©rA   r   )rg   rY   rŠ   r[   rš   Ú
set_as_rawr   )r,   r›   r†   r\   r]   s        r    r6   z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   )rl   r   rm   rM   r   rM   )rl   r   r   r   )r   r{   )r]   rM   r   r{   ©r›   rœ   r   r�   )r`   ra   rb   Ú	_pulls_fdÚ__annotations__rk   rv   rz   rŠ   rš   r6   r   r"   r    rf   rf   £   s¦   € € € € € € Ø€IØÐÐÑð1ð 1ð 1ð 1ð
5ð 5ð 5ð 5ð 5ð
 ð  ð  ð  ðD&ð &ð &ð &ð21ð 1ð 1ð 1ðf
ð 
ð 
ð 
ð 
ð 
r"   rf   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 )NrA   é   r   é   rC   rŒ   rD   rB   rŸ   r    )ri   r{   r[   rY   r   rŽ   r   r€   r�   r4   r*   r)   Úi16rr   r‘   r’   r	   r¡   r   )r,   r›   r†   r]   Úin_byte_countr”   r•   r–   Údest_lengthÚpixelsru   r˜   r\   s                r    r6   zPpmDecoder.decode/  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£   r6   r   r"   r    r¦   r¦   ,  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| j        z   d|d|f¦  «        g¦  «         d S )Nr   )r>   r   r   )r   r   )rC   zI;16)rE   r   )r   r   )r   r   r   )r@   r   zcannot write mode z as PPMs   
%d %d
r   s   255
r   s   65535
r   s   -1.0
rA   r   r<   rG   r   )rY   ÚOSErrorÚwriterU   r   Ú_saverT   )r®   r(   r±   r\   Úheadr8   Ú	row_orders          r    r¶   r¶   M  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•” ¨°´Ñ(8¸!¸gÀqÈ)Ð=TÑUÔUÐVñô ð ð ð r"   rF   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   rP   Útypingr   Ú r   r   Ú_binaryr   rª   r	   r
   r’   r+   rH   r!   r$   Ú	PyDecoderrf   r¦   r¶   Úregister_openrc   Úregister_saveÚregister_decoderÚregister_extensionsÚregister_mimer   r"   r    ú<module>rÃ      s  ðð  #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !ð
 +€ð ØØØØØàØàØØð	ð 	€ð$=ð =ð =ð =ð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"   