§
    …Ûg*f  ã                  ó
  — d dl mZ d dlmZ d dlmZmZ d dlZd dl	m
Z
mZ d dlmZ d dlmZmZ d dlmZmZ d dlmZmZ erd dl	mZ d4d„Zd5d„Zd6d„Zd7d„Zd8d„Zd9d„Zd:d„Z d;d"„Z!d<d$„Z"d=d&„Z#d>d(„Z$d?d*„Z%d@d-„Z&dAd0„Z'dBd3„Z(dS )Cé    )Úannotations)Úpairwise)ÚTYPE_CHECKINGÚcastN)ÚFillTypeÚLineType)Úas_fill_typeÚas_line_type)Úcheck_filledÚcheck_lines)ÚMOVETOÚoffset_dtypeÚfilledúcpy.FillReturn_OuterCodeÚfill_type_tor   Úreturnúcpy.FillReturnc                óÜ  — |t           j        k    r| S |t           j        k    r| d         d„ | d         D ¦   «         fS t          | d         ¦  «        dk    r5t	          j        | d         ¦  «        }t	          j        | d         ¦  «        }nd }d }|t           j        k    r|g|gfS |t           j        k    r|g|€d nt	          j	        |¦  «        gfS |t           j
        k    r(|€d nt	          j        | d         ¦  «        }|g|g|gf}|S |t           j        k    rC|€	d gd gd gf}n6t	          j	        |¦  «        }t	          j        | d         ¦  «        }|g|g|gf}|S t          d|› �¦  «        ‚)Nr   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS © ©ÚarrÚoffsets_from_codes©Ú.0Úcodess     úG/granary/edev/quantum/lib/python3.11/site-packages/contourpy/convert.pyú
<listcomp>z2_convert_filled_from_OuterCode.<locals>.<listcomp>   s#   € ÐQÐQÐQ¸e�CÔ2°5Ñ9Ô9ÐQÐQÐQó    é   úInvalid FillType )r   Ú	OuterCodeÚOuterOffsetÚlenr   Úconcat_pointsÚconcat_codesÚChunkCombinedCodeÚChunkCombinedOffsetr   ÚChunkCombinedCodeOffsetÚoffsets_from_lengthsÚChunkCombinedOffsetOffsetÚ outer_offsets_from_list_of_codesÚ
ValueError)r   r   Úpointsr   Úouter_offsetsÚret1Úret2Úoffsetss           r   Ú_convert_filled_from_OuterCoder3      s™  € ð •xÔ)Ò)Ð)ØˆØ	�Ô-Ò	-Ð	-Ø�q”	ÐQÐQÀvÈaÄyÐQÑQÔQÐRÐRå
ˆ6�!Œ9�~„~˜ÒÐÝÔ" 6¨!¤9Ñ-Ô-ˆÝÔ  ¨¤Ñ+Ô+ˆˆàˆØˆà•xÔ1Ò1Ð1Ø�˜5˜'Ð"Ð"Ø	�Ô5Ò	5Ð	5Ø� 5 =˜4˜4µcÔ6LÈUÑ6SÔ6SÐTÐUÐUØ	�Ô9Ò	9Ð	9Ø & ˜˜µCÔ4LÈVÐTUÌYÑ4WÔ4WˆØ9?¸À5À'ÈMÈ?Ð7[ˆØˆØ	�Ô;Ò	;Ð	;Øˆ=Ø?C¸fÀtÀfÈtÈfÐ=UˆDˆDåÔ,¨UÑ3Ô3ˆGÝÔ@ÀÈÄÑKÔKˆMØ�H˜w˜i¨-¨Ð9ˆDØˆåÐ;¨\Ð;Ð;Ñ<Ô<Ð<r   úcpy.FillReturn_OuterOffsetc                óî  — |t           j        k    rd„ | d         D ¦   «         }| d         |fS |t           j        k    r| S t          | d         ¦  «        dk    r5t	          j        | d         ¦  «        }t	          j        | d         ¦  «        }nd }d }|t           j        k    r|g|€d nt	          j        |¦  «        gfS |t           j	        k    r|g|gfS |t           j
        k    rC|€	d gd gd gf}n6t	          j        |¦  «        }t	          j        | d         ¦  «        }|g|g|gf}|S |t           j        k    r/|€	d gd gd gf}n"t	          j        | d         ¦  «        }|g|g|gf}|S t          d|› �¦  «        ‚)Nc                ó6   — g | ]}t          j        |¦  «        ‘ŒS r   )r   Úcodes_from_offsets)r   r2   s     r   r   z4_convert_filled_from_OuterOffset.<locals>.<listcomp>;   s#   € ÐSÐSÐS¸g�#Ô0°Ñ9Ô9ÐSÐSÐSr   r    r   r!   )r   r"   r#   r$   r   r%   Úconcat_offsetsr'   r7   r(   r)   r*   r+   Ú"outer_offsets_from_list_of_offsetsr-   )	r   r   Úseparate_codesr.   r2   r0   r   r/   r1   s	            r   Ú _convert_filled_from_OuterOffsetr;   6   s®  € ð •xÔ)Ò)Ð)ØSÐSÈÐPQÌÐSÑSÔSˆØ�q”	˜>Ð*Ð*Ø	�Ô-Ò	-Ð	-Øˆå
ˆ6�!Œ9�~„~˜ÒÐÝÔ" 6¨!¤9Ñ-Ô-ˆÝÔ$ V¨A¤YÑ/Ô/ˆˆàˆØˆà•xÔ1Ò1Ð1Ø� 7 ?˜4˜4½Ô8NÈwÑ8WÔ8WÐXÐYÐYØ	�Ô5Ò	5Ð	5Ø�˜7˜)Ð$Ð$Ø	�Ô9Ò	9Ð	9Øˆ?Ø=A¸FÀTÀFÈTÈFÐ;SˆDˆDåÔ*¨7Ñ3Ô3ˆEÝÔ4°V¸A´YÑ?Ô?ˆMØ�H˜u˜g¨ Ð7ˆDØˆØ	�Ô;Ò	;Ð	;Øˆ>Ø?C¸fÀtÀfÈtÈfÐ=UˆDˆDåÔBÀ6È!Ä9ÑMÔMˆMØ�H˜w˜i¨-¨Ð9ˆDØˆåÐ;¨\Ð;Ð;Ñ<Ô<Ð<r   ú cpy.FillReturn_ChunkCombinedCodec                ó¾   — |t           j        k    r| S |t           j        k    rd„ | d         D ¦   «         }| d         |fS t          dt           j        › d|› d�¦  «        ‚)Nc                ó>   — g | ]}|€d nt          j        |¦  «        ‘ŒS ©Nr   r   s     r   r   z:_convert_filled_from_ChunkCombinedCode.<locals>.<listcomp>e   s+   € ÐaÐaÐaÈe˜˜��­CÔ,BÀ5Ñ,IÔ,IÐaÐaÐar   r    r   úConversion from ú to ú not supported)r   r'   r(   r-   )r   r   r   s      r   Ú&_convert_filled_from_ChunkCombinedCoderC   ^   s|   € ð •xÔ1Ò1Ð1ØˆØ	�Ô5Ò	5Ð	5ØaÐaÐW]Ð^_ÔW`ÐaÑaÔaˆØ�q”	˜5Ð!Ð!åØ[�xÔ9Ð[Ð[¸|Ð[Ð[Ð[ñ]ô ]ð 	]r   ú"cpy.FillReturn_ChunkCombinedOffsetc                óR  — |t           j        k    rfg }t          | Ž D ]P\  }}|€|                     d ¦  «         Œt          r|€J ‚|                     t          j        ||¦  «        ¦  «         ŒQ| d         |fS |t           j        k    r| S t          dt           j        › d|› d�¦  «        ‚)Nr   r@   rA   rB   )	r   r'   ÚzipÚappendr   r   Úcodes_from_offsets_and_pointsr(   r-   )r   r   Úchunk_codesr.   r2   s        r   Ú(_convert_filled_from_ChunkCombinedOffsetrJ   l   sÔ   € ð •xÔ1Ò1Ð1Ø24ˆÝ" F˜|ð 	Wð 	W‰OˆF�GØˆ~Ø×"Ò" 4Ñ(Ô(Ð(Ð(å ð /Ø"Ð.Ð.Ð.Ø×"Ò"¥3Ô#DÀWÈfÑ#UÔ#UÑVÔVÐVÐVØ�q”	˜;Ð'Ð'Ø	�Ô5Ò	5Ð	5ØˆåØ]�xÔ;Ð]Ð]ÀÐ]Ð]Ð]ñ_ô _ð 	_r   ú&cpy.FillReturn_ChunkCombinedCodeOffsetc                óR  ‡— |t           j        k    rYg }g }t          | Ž D ]G\  }}}|�?t          r|€J ‚|€J ‚|t	          j        ||¦  «        z  }|t	          j        ||¦  «        z  }ŒH||fS |t           j        k    reg }g }t          | Ž D ]S\  }}}|�Kt          r|€J ‚|€J ‚|t	          j        ||¦  «        z  }t	          j        ||¦  «        }|d„ |D ¦   «         z  }ŒT||fS |t           j        k    r| d         | d         f}|S |t           j	        k    rd„ | d         D ¦   «         }	| d         |	f}
|
S |t           j
        k    r| S |t           j        k    rÅg }g }t          | dd …         Ž D ]¢\  }}|€+|                     d ¦  «         |                     d ¦  «         Œ2t          r|€J ‚t	          j        |¦  «        Št          j        ˆfd„|D ¦   «         t           ¬¦  «        }|                     ‰¦  «         |                     |¦  «         Œ£| d         ||f}|S t#          d|› �¦  «        ‚)Nc                ó6   — g | ]}t          j        |¦  «        ‘ŒS r   r   r   s     r   r   z@_convert_filled_from_ChunkCombinedCodeOffset.<locals>.<listcomp>š   s#   € Ð$_Ð$_Ð$_Àu¥SÔ%;¸EÑ%BÔ%BÐ$_Ð$_Ð$_r   r   r    c                ó>   — g | ]}|€d nt          j        |¦  «        ‘ŒS r?   r   r   s     r   r   z@_convert_filled_from_ChunkCombinedCodeOffset.<locals>.<listcomp>    s;   € ð /ð /ð /Ø ð  %˜}�t�tµ#Ô2HÈÑ2OÔ2Oð /ð /ð /r   c                óX   •— g | ]&}t          j        ‰|k    ¦  «        d          d          ‘Œ'S )r   )ÚnpÚnonzero)r   Úoor2   s     €r   r   z@_convert_filled_from_ChunkCombinedCodeOffset.<locals>.<listcomp>±   s1   ø€ Ð)bÐ)bÐ)bÈb­"¬*°WÀ²]Ñ*CÔ*CÀAÔ*FÀqÔ*IÐ)bÐ)bÐ)br   )Údtyper!   )r   r"   rF   r   r   Úsplit_points_by_offsetsÚsplit_codes_by_offsetsr#   r'   r(   r)   r+   rG   r   rP   Úarrayr   r-   )r   r   Úseparate_pointsr:   r.   r   r/   Úseparate_offsetsr0   Úall_offsetsr1   Úchunk_offsetsÚchunk_outer_offsetsÚret3r2   s                 @r   Ú,_convert_filled_from_ChunkCombinedCodeOffsetr]   �   sÛ  ø€ ð •xÔ)Ò)Ð)ØˆØˆÝ,/°¨Lð 	Sð 	SÑ(ˆF�E˜=ØÐ!Ý ð 5Ø Ð,Ð,Ð,Ø(Ð4Ð4Ð4Ø¥3Ô#>¸vÀ}Ñ#UÔ#UÑU�Ø¥#Ô"<¸UÀMÑ"RÔ"RÑR�øØ Ð0Ð0Ø	�Ô-Ò	-Ð	-ØˆØÐÝ,/°¨Lð 	`ð 	`Ñ(ˆF�E˜=ØÐ!Ý ð 5Ø Ð,Ð,Ð,Ø(Ð4Ð4Ð4Ø¥3Ô#>¸vÀ}Ñ#UÔ#UÑU�Ý!$Ô!;¸EÀ=Ñ!QÔ!Q�Ø Ð$_Ð$_ÐP^Ð$_Ñ$_Ô$_Ñ_Ð øØÐ!1Ð2Ð2Ø	�Ô3Ò	3Ð	3Ø28¸´)¸VÀA¼YÐ1GˆØˆØ	�Ô5Ò	5Ð	5ð/ð /Ø$*¨1¤Ið/ñ /ô /ˆà4:¸1´I¸{Ð3KˆØˆØ	�Ô9Ò	9Ð	9ØˆØ	�Ô;Ò	;Ð	;Ø68ˆØ<>ÐÝ$'¨°°°¬Ð$4ð 	:ð 	:Ñ ˆE�=Øˆ}Ø×$Ò$ TÑ*Ô*Ð*Ø#×*Ò*¨4Ñ0Ô0Ð0Ð0å ð 5Ø(Ð4Ð4Ð4ÝÔ0°Ñ7Ô7�Ý "¤Ð)bÐ)bÐ)bÐ)bÐTaÐ)bÑ)bÔ)bÝ/;ð!=ñ !=ô !=�à×$Ò$ WÑ-Ô-Ð-Ø#×*Ò*¨=Ñ9Ô9Ð9Ð9à�1ŒI�}Ð&9ð:
ˆð ˆåÐ;¨\Ð;Ð;Ñ<Ô<Ð<r   ú(cpy.FillReturn_ChunkCombinedOffsetOffsetc                ó.  ‡— |t           j        k    rvg }g }t          | Ž D ]d\  }Š}|�\t          r‰€J ‚|€J ‚t	          j        ‰|¦  «        }‰|         }|t	          j        ||¦  «        z  }|t	          j        ||¦  «        z  }Œe||fS |t           j        k    rŽg }g }t          | Ž D ]|\  }Š}|�tt          r‰€J ‚|€J ‚t          |¦  «        dk    r|ˆfd„t          |¦  «        D ¦   «         z  }n|                     ‰¦  «         |t	          j        |‰|         ¦  «        z  }Œ}||fS |t           j        k    rmg }t          | Ž D ]U\  }Š}|€|                     d ¦  «         Œt          r‰€J ‚|€J ‚|                     t	          j        ‰|¦  «        ¦  «         ŒV| d         |f}	|	S |t           j        k    r| d         | d         fS |t           j        k    r g }g }
t          | Ž D ]…\  }Š}|€+|                     d ¦  «         |
                     d ¦  «         Œ3t          r‰€J ‚|€J ‚|                     t	          j        ‰|¦  «        ¦  «         |
                     ‰|         ¦  «         Œ†| d         ||
f}|S |t           j        k    r| S t!          d|› �¦  «        ‚)Né   c                óB   •— g | ]\  }}‰||d z   …         ‰|         z
  ‘ŒS )r    r   )r   ÚsÚer2   s      €r   r   zB_convert_filled_from_ChunkCombinedOffsetOffset.<locals>.<listcomp>×   sD   ø€ ð )Bð )Bð )BÉÈÈA¨°°1°Q±3°¬¸'À!¼*Ñ)Dð )Bð )Bð )Br   r   r    r!   )r   r"   rF   r   r   rH   rT   rU   r#   r$   r   rG   r'   r(   r)   r+   r-   )r   r   rW   r:   r.   r/   r   rX   rI   r0   r[   r1   r2   s               @r   Ú._convert_filled_from_ChunkCombinedOffsetOffsetrd   ½   sk  ø€ ð •xÔ)Ò)Ð)ØˆØˆÝ.1°6¨lð 	Sð 	SÑ*ˆF�G˜]ØÐ!Ý ð 5Ø"Ð.Ð.Ð.Ø(Ð4Ð4Ð4ÝÔ9¸'À6ÑJÔJ�Ø '¨Ô 6�Ø¥3Ô#>¸vÀ}Ñ#UÔ#UÑU�Ø¥#Ô"<¸UÀMÑ"RÔ"RÑR�øØ Ð0Ð0Ø	�Ô-Ò	-Ð	-ØˆØÐÝ.1°6¨lð 
	_ð 
	_Ñ*ˆF�G˜]ØÐ!Ý ð 5Ø"Ð.Ð.Ð.Ø(Ð4Ð4Ð4Ý�}Ñ%Ô%¨Ò)Ð)Ø$ð )Bð )Bð )Bð )BÝ)1°-Ñ)@Ô)@ð)Bñ )Bô )Bñ BÐ$Ð$ð %×+Ò+¨GÑ4Ô4Ð4Ø¥3Ô#>¸vÀwÈ}ÔG]Ñ#^Ô#^Ñ^�øØÐ!1Ð2Ð2Ø	�Ô3Ò	3Ð	3Ø24ˆÝ.1°6¨lð 	Wð 	WÑ*ˆF�G˜]Øˆ~Ø×"Ò" 4Ñ(Ô(Ð(Ð(å ð 5Ø"Ð.Ð.Ð.Ø(Ð4Ð4Ð4Ø×"Ò"¥3Ô#DÀWÈfÑ#UÔ#UÑVÔVÐVÐVØ28¸´)¸[Ð1IˆØˆØ	�Ô5Ò	5Ð	5Ø�q”	˜6 !œ9Ð%Ð%Ø	�Ô9Ò	9Ð	9ØˆØ<>ÐÝ.1°6¨lð 		Cð 		CÑ*ˆF�G˜]Øˆ~Ø×"Ò" 4Ñ(Ô(Ð(Ø#×*Ò*¨4Ñ0Ô0Ð0Ð0å ð 5Ø"Ð.Ð.Ð.Ø(Ð4Ð4Ð4Ø×"Ò"¥3Ô#DÀWÈfÑ#UÔ#UÑVÔVÐVØ#×*Ò*¨7°=Ô+AÑBÔBÐBÐBØ8>¸q¼	À;ÐPcÐ7dˆØˆØ	�Ô;Ò	;Ð	;ØˆåÐ;¨\Ð;Ð;Ñ<Ô<Ð<r   Úfill_type_fromúFillType | strc                óŽ  — t          |¦  «        }t          |¦  «        }t          | |¦  «         |t          j        k    r1t          rt          t          j        | ¦  «        } t          | |¦  «        S |t          j	        k    r1t          rt          t          j
        | ¦  «        } t          | |¦  «        S |t          j        k    r1t          rt          t          j        | ¦  «        } t          | |¦  «        S |t          j        k    r1t          rt          t          j        | ¦  «        } t#          | |¦  «        S |t          j        k    r1t          rt          t          j        | ¦  «        } t)          | |¦  «        S |t          j        k    r1t          rt          t          j        | ¦  «        } t/          | |¦  «        S t1          d|› �¦  «        ‚)a÷  Convert filled contours from one :class:`~.FillType` to another.

    Args:
        filled (sequence of arrays): Filled contour polygons to convert, such as those returned by
            :meth:`.ContourGenerator.filled`.
        fill_type_from (FillType or str): :class:`~.FillType` to convert from as enum or
            string equivalent.
        fill_type_to (FillType or str): :class:`~.FillType` to convert to as enum or string
            equivalent.

    Return:
        Converted filled contour polygons.

    When converting non-chunked fill types (``FillType.OuterCode`` or ``FillType.OuterOffset``) to
    chunked ones, all polygons are placed in the first chunk. When converting in the other
    direction, all chunk information is discarded. Converting a fill type that is not aware of the
    relationship between outer boundaries and contained holes (``FillType.ChunkCombinedCode`` or
    ``FillType.ChunkCombinedOffset``) to one that is will raise a ``ValueError``.

    .. versionadded:: 1.2.0
    r!   )r	   r   r   r"   r   r   ÚcpyÚFillReturn_OuterCoder3   r#   ÚFillReturn_OuterOffsetr;   r'   ÚFillReturn_ChunkCombinedCoderC   r(   ÚFillReturn_ChunkCombinedOffsetrJ   r)   Ú"FillReturn_ChunkCombinedCodeOffsetr]   r+   Ú$FillReturn_ChunkCombinedOffsetOffsetrd   r-   )r   re   r   s      r   Úconvert_filledro      s™  € õ4 " .Ñ1Ô1€NÝ Ñ-Ô-€Lå�˜Ñ(Ô(Ð(à�Ô+Ò+Ð+Ýð 	<Ý�#Ô2°FÑ;Ô;ˆFÝ-¨f°lÑCÔCÐCØ	�8Ô/Ò	/Ð	/Ýð 	>Ý�#Ô4°fÑ=Ô=ˆFÝ/°¸ÑEÔEÐEØ	�8Ô5Ò	5Ð	5Ýð 	DÝ�#Ô:¸FÑCÔCˆFÝ5°f¸lÑKÔKÐKØ	�8Ô7Ò	7Ð	7Ýð 	FÝ�#Ô<¸fÑEÔEˆFÝ7¸ÀÑMÔMÐMØ	�8Ô;Ò	;Ð	;Ýð 	JÝ�#Ô@À&ÑIÔIˆFÝ;¸FÀLÑQÔQÐQØ	�8Ô=Ò	=Ð	=Ýð 	LÝ�#ÔBÀFÑKÔKˆFÝ=¸fÀlÑSÔSÐSåÐ=¨^Ð=Ð=Ñ>Ô>Ð>r   Úlinesúcpy.LineReturn_SeparateÚline_type_tor   úcpy.LineReturnc                ó.  — |t           j        k    r| S |t           j        k    rd„ | D ¦   «         }| |fS |t           j        k    rN| sd gd gf}nCt	          j        | ¦  «        }t	          j        | ¦  «        }t	          j        ||¦  «        }|g|gf}|S |t           j        k    r5| sd gd gf}n*t	          j        | ¦  «        gt	          j        | ¦  «        gf}|S |t           j	        k    r| sd gf}nt	          j
        | ¦  «        gf}|S t          d|› �¦  «        ‚)Nc                ó6   — g | ]}t          j        |¦  «        ‘ŒS r   ©r   Úcodes_from_points©r   Úlines     r   r   z0_convert_lines_from_Separate.<locals>.<listcomp>B  s#   € ÐHÐHÐH¸$�#Ô/°Ñ5Ô5ÐHÐHÐHr   úInvalid LineType )r   ÚSeparateÚSeparateCoder'   r   r%   r*   rH   r(   ÚChunkCombinedNanÚconcat_points_with_nanr-   )	rp   rr   r:   r0   r.   r2   r   r1   r\   s	            r   Ú_convert_lines_from_Separater   ;  sS  € ð •xÔ(Ò(Ð(ØˆØ	�Ô.Ò	.Ð	.ØHÐHÀ%ÐHÑHÔHˆØ�~Ð&Ð&Ø	�Ô3Ò	3Ð	3Øð 	'Ø7;°f¸t¸fÐ5EˆDˆDåÔ& uÑ-Ô-ˆFÝÔ.¨uÑ5Ô5ˆGÝÔ5°g¸vÑFÔFˆEØ�H˜u˜gÐ&ˆDØˆØ	�Ô5Ò	5Ð	5Øð 	SØ9=¸ÀÀÐ7GˆDˆDåÔ& uÑ-Ô-Ð.µÔ1IÈ%Ñ1PÔ1PÐ0QÐRˆDØˆØ	�Ô2Ò	2Ð	2Øð 	:Ø6:°V°IˆDˆDåÔ/°Ñ6Ô6Ð7Ð9ˆDØˆåÐ;¨\Ð;Ð;Ñ<Ô<Ð<r   úcpy.LineReturn_SeparateCodec                óL  — |t           j        k    r| d         S |t           j        k    r| S |t           j        k    rG| d         sd gd gf}n6t	          j        | d         ¦  «        gt	          j        | d         ¦  «        gf}|S |t           j        k    rG| d         sd gd gf}n6t	          j        | d         ¦  «        gt	          j        | d         ¦  «        gf}|S |t           j	        k    r+| d         sd gf}nt	          j
        | d         ¦  «        gf}|S t          d|› �¦  «        ‚)Nr   r    rz   )r   r{   r|   r'   r   r%   r&   r(   r*   r}   r~   r-   )rp   rr   r0   r1   r\   s        r   Ú _convert_lines_from_SeparateCoder‚   ]  sF  € ð •xÔ(Ò(Ð(à�QŒxˆØ	�Ô.Ò	.Ð	.ØˆØ	�Ô3Ò	3Ð	3Ø�QŒxð 	QØ7;°f¸t¸fÐ5EˆDˆDåÔ& u¨Q¤xÑ0Ô0Ð1µCÔ4DÀUÈ1ÄXÑ4NÔ4NÐ3OÐPˆDØˆØ	�Ô5Ò	5Ð	5Ø�QŒxð 	YØ9=¸ÀÀÐ7GˆDˆDåÔ& u¨Q¤xÑ0Ô0Ð1µCÔ4LÈUÐSTÌXÑ4VÔ4VÐ3WÐXˆDØˆØ	�Ô2Ò	2Ð	2Ø�QŒxð 	=Ø6:°V°IˆDˆDåÔ/°°a´Ñ9Ô9Ð:Ð<ˆDØˆåÐ;¨\Ð;Ð;Ñ<Ô<Ð<r   ú cpy.LineReturn_ChunkCombinedCodec                ó4  — |t           j        t           j        fv r¬g }t          | Ž D ]~\  }}|�wt          r|€J ‚t          j        |t          k    ¦  «        d         }t          |¦  «        dk    r!|t          j	        ||dd …         ¦  «        z  }Œi| 
                    |¦  «         Œ|t           j        k    r|S d„ |D ¦   «         }||fS |t           j        k    r| S |t           j        k    rd„ | d         D ¦   «         }| d         |fS |t           j        k    rsg }t          | Ž D ]d\  }}|€| 
                    d ¦  «         Œt          r|€J ‚t          j        |¦  «        }	| 
                    t          j        ||	¦  «        ¦  «         Œe|fS t#          d|› �¦  «        ‚)Nr   r    c                ó6   — g | ]}t          j        |¦  «        ‘ŒS r   rv   rx   s     r   r   z9_convert_lines_from_ChunkCombinedCode.<locals>.<listcomp>Ž  ó#   € ÐUÐUÐU¸d�cÔ3°DÑ9Ô9ÐUÐUÐUr   c                ó>   — g | ]}|€d nt          j        |¦  «        ‘ŒS r?   r   r   s     r   r   z9_convert_lines_from_ChunkCombinedCode.<locals>.<listcomp>“  s;   € ð 0ð 0ð 0Ø"ð "' ˜˜µCÔ4JÈ5Ñ4QÔ4Qð 0ð 0ð 0r   rz   )r   r{   r|   rF   r   rP   rQ   r   r$   ÚsplitrG   r'   r(   r}   r   r   Úinsert_nan_at_offsetsr-   )
rp   rr   Úseparate_linesr.   r   Úsplit_atr:   rZ   Ú
points_nanr2   s
             r   Ú%_convert_lines_from_ChunkCombinedCoder�   |  sá  € ð �Ô)­8Ô+@ÐAÐAÐAØˆÝ  %˜[ð 	2ð 	2‰MˆF�EØÐ!Ý ð -Ø Ð,Ð,Ð,Ýœ: e­v¢oÑ6Ô6°qÔ9�Ý�x‘=”= 1Ò$Ð$Ø"¥b¤h¨v°xÀÀÀ´|Ñ&DÔ&DÑD�N�Nà"×)Ò)¨&Ñ1Ô1Ð1øØ�8Ô,Ò,Ð,Ø!Ð!àUÐUÀnÐUÑUÔUˆNØ" NÐ3Ð3Ø	�Ô3Ò	3Ð	3ØˆØ	�Ô5Ò	5Ð	5ð0ð 0Ø&+¨A¤hð0ñ 0ô 0ˆà�a”˜-Ð(Ð(Ø	�Ô2Ò	2Ð	2Ø24ˆ
Ý  %˜[ð 	Nð 	N‰MˆF�EØˆ~Ø×!Ò! $Ñ'Ô'Ð'Ð'å ð -Ø Ð,Ð,Ð,ÝÔ0°Ñ7Ô7�Ø×!Ò!¥#Ô";¸FÀGÑ"LÔ"LÑMÔMÐMÐMØˆ}ÐåÐ;¨\Ð;Ð;Ñ<Ô<Ð<r   ú"cpy.LineReturn_ChunkCombinedOffsetc                óø  — |t           j        t           j        fv rXg }t          | Ž D ]*\  }}|�#t          r|€J ‚|t          j        ||¦  «        z  }Œ+|t           j        k    r|S d„ |D ¦   «         }||fS |t           j        k    rfg }t          | Ž D ]P\  }}|€|                     d ¦  «         Œt          r|€J ‚|                     t          j	        ||¦  «        ¦  «         ŒQ| d         |fS |t           j
        k    r| S |t           j        k    r_g }t          | Ž D ]P\  }}|€|                     d ¦  «         Œt          r|€J ‚|                     t          j        ||¦  «        ¦  «         ŒQ|fS t          d|› �¦  «        ‚)Nc                ó6   — g | ]}t          j        |¦  «        ‘ŒS r   rv   rx   s     r   r   z;_convert_lines_from_ChunkCombinedOffset.<locals>.<listcomp>³  r†   r   r   rz   )r   r{   r|   rF   r   r   rT   r'   rG   rH   r(   r}   r‰   r-   )rp   rr   rŠ   r.   r2   r:   rI   rŒ   s           r   Ú'_convert_lines_from_ChunkCombinedOffsetr‘   ¥  sÝ  € ð �Ô)­8Ô+@ÐAÐAÐAØˆÝ" E˜{ð 	Oð 	O‰OˆF�GØÐ!Ý ð /Ø"Ð.Ð.Ð.Ø¥#Ô"=¸fÀgÑ"NÔ"NÑN�øØ�8Ô,Ò,Ð,Ø!Ð!àUÐUÀnÐUÑUÔUˆNØ" NÐ3Ð3Ø	�Ô3Ò	3Ð	3Ø24ˆÝ" E˜{ð 	Wð 	W‰OˆF�GØˆ~Ø×"Ò" 4Ñ(Ô(Ð(Ð(å ð /Ø"Ð.Ð.Ð.Ø×"Ò"¥3Ô#DÀWÈfÑ#UÔ#UÑVÔVÐVÐVØ�a”˜+Ð&Ð&Ø	�Ô5Ò	5Ð	5ØˆØ	�Ô2Ò	2Ð	2Ø24ˆ
Ý" E˜{ð 	Nð 	N‰OˆF�GØˆ~Ø×!Ò! $Ñ'Ô'Ð'Ð'å ð /Ø"Ð.Ð.Ð.Ø×!Ò!¥#Ô";¸FÀGÑ"LÔ"LÑMÔMÐMÐMØˆ}ÐåÐ;¨\Ð;Ð;Ñ<Ô<Ð<r   úcpy.LineReturn_ChunkCombinedNanc                óx  — |t           j        t           j        fv rHg }| d         D ]}|�|t          j        |¦  «        z  }Œ|t           j        k    r|S d„ |D ¦   «         }||fS |t           j        k    r”g }g }| d         D ]ƒ}|€+|                     d ¦  «         |                     d ¦  «         Œ/t          j        |¦  «        \  }}|                     |¦  «         |                     t          j        ||¦  «        ¦  «         Œ„||fS |t           j	        k    r�g }g }| d         D ]p}|€+|                     d ¦  «         |                     d ¦  «         Œ/t          j        |¦  «        \  }}|                     |¦  «         |                     |¦  «         Œq||fS |t           j
        k    r| S t          d|› �¦  «        ‚)Nr   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS r   rv   )r   r.   s     r   r   z8_convert_lines_from_ChunkCombinedNan.<locals>.<listcomp>Û  s#   € ÐYÐYÐYÀ�cÔ3°FÑ;Ô;ÐYÐYÐYr   rz   )r   r{   r|   r   Úsplit_points_at_nanr'   rG   Ú
remove_nanrH   r(   r}   r-   )	rp   rr   rŠ   r.   r:   Úchunk_pointsrI   r2   rZ   s	            r   Ú$_convert_lines_from_ChunkCombinedNanr˜   Ï  s  € ð �Ô)­8Ô+@ÐAÐAÐAØˆØ˜A”hð 	Bð 	BˆFØÐ!Ø¥#Ô"9¸&Ñ"AÔ"AÑA�øØ�8Ô,Ò,Ð,Ø!Ð!àYÐYÈ.ÐYÑYÔYˆNØ" NÐ3Ð3Ø	�Ô3Ò	3Ð	3Ø46ˆØ24ˆØ˜A”hð 	Wð 	WˆFØˆ~Ø×#Ò# DÑ)Ô)Ð)Ø×"Ò" 4Ñ(Ô(Ð(Ð(å"%¤.°Ñ"8Ô"8‘�˜Ø×#Ò# FÑ+Ô+Ð+Ø×"Ò"¥3Ô#DÀWÈfÑ#UÔ#UÑVÔVÐVÐVØ˜kÐ*Ð*Ø	�Ô5Ò	5Ð	5ØˆØ68ˆØ˜A”hð 	.ð 	.ˆFØˆ~Ø×#Ò# DÑ)Ô)Ð)Ø×$Ò$ TÑ*Ô*Ð*Ð*å"%¤.°Ñ"8Ô"8‘�˜Ø×#Ò# FÑ+Ô+Ð+Ø×$Ò$ WÑ-Ô-Ð-Ð-Ø˜mÐ,Ð,Ø	�Ô2Ò	2Ð	2ØˆåÐ;¨\Ð;Ð;Ñ<Ô<Ð<r   Úline_type_fromúLineType | strc                ó  — t          |¦  «        }t          |¦  «        }t          | |¦  «         |t          j        k    r1t          rt          t          j        | ¦  «        } t          | |¦  «        S |t          j	        k    r1t          rt          t          j
        | ¦  «        } t          | |¦  «        S |t          j        k    r1t          rt          t          j        | ¦  «        } t          | |¦  «        S |t          j        k    r1t          rt          t          j        | ¦  «        } t#          | |¦  «        S |t          j        k    r1t          rt          t          j        | ¦  «        } t)          | |¦  «        S t+          d|› �¦  «        ‚)aa  Convert contour lines from one :class:`~.LineType` to another.

    Args:
        lines (sequence of arrays): Contour lines to convert, such as those returned by
            :meth:`.ContourGenerator.lines`.
        line_type_from (LineType or str): :class:`~.LineType` to convert from as enum or
            string equivalent.
        line_type_to (LineType or str): :class:`~.LineType` to convert to as enum or string
            equivalent.

    Return:
        Converted contour lines.

    When converting non-chunked line types (``LineType.Separate`` or ``LineType.SeparateCode``) to
    chunked ones (``LineType.ChunkCombinedCode``, ``LineType.ChunkCombinedOffset`` or
    ``LineType.ChunkCombinedNan``), all lines are placed in the first chunk. When converting in the
    other direction, all chunk information is discarded.

    .. versionadded:: 1.2.0
    rz   )r
   r   r   r{   r   r   rh   ÚLineReturn_Separater   r|   ÚLineReturn_SeparateCoder‚   r'   ÚLineReturn_ChunkCombinedCoder�   r(   ÚLineReturn_ChunkCombinedOffsetr‘   r}   ÚLineReturn_ChunkCombinedNanr˜   r-   )rp   r™   rr   s      r   Úconvert_linesr¡   û  s`  € õ2 " .Ñ1Ô1€NÝ Ñ-Ô-€Lå��~Ñ&Ô&Ð&à�Ô*Ò*Ð*Ýð 	9Ý�Ô0°%Ñ8Ô8ˆEÝ+¨E°<Ñ@Ô@Ð@Ø	�8Ô0Ò	0Ð	0Ýð 	=Ý�Ô4°eÑ<Ô<ˆEÝ/°°|ÑDÔDÐDØ	�8Ô5Ò	5Ð	5Ýð 	BÝ�Ô9¸5ÑAÔAˆEÝ4°U¸LÑIÔIÐIØ	�8Ô7Ò	7Ð	7Ýð 	DÝ�Ô;¸UÑCÔCˆEÝ6°u¸lÑKÔKÐKØ	�8Ô4Ò	4Ð	4Ýð 	AÝ�Ô8¸%Ñ@Ô@ˆEÝ3°E¸<ÑHÔHÐHåÐ=¨^Ð=Ð=Ñ>Ô>Ð>r   Úmulti_filledúlist[cpy.FillReturn]c                ó`   ‡‡— t          ‰¦  «        Št          ‰¦  «        Šˆˆfd„| D ¦   «         S )a   Convert multiple sets of filled contours from one :class:`~.FillType` to another.

    Args:
        multi_filled (nested sequence of arrays): Filled contour polygons to convert, such as those
            returned by :meth:`.ContourGenerator.multi_filled`.
        fill_type_from (FillType or str): :class:`~.FillType` to convert from as enum or
            string equivalent.
        fill_type_to (FillType or str): :class:`~.FillType` to convert to as enum or string
            equivalent.

    Return:
        Converted sets filled contour polygons.

    When converting non-chunked fill types (``FillType.OuterCode`` or ``FillType.OuterOffset``) to
    chunked ones, all polygons are placed in the first chunk. When converting in the other
    direction, all chunk information is discarded. Converting a fill type that is not aware of the
    relationship between outer boundaries and contained holes (``FillType.ChunkCombinedCode`` or
    ``FillType.ChunkCombinedOffset``) to one that is will raise a ``ValueError``.

    .. versionadded:: 1.3.0
    c                ó2   •— g | ]}t          |‰‰¦  «        ‘ŒS r   )ro   )r   r   re   r   s     €€r   r   z(convert_multi_filled.<locals>.<listcomp>N  s%   ø€ Ð\Ð\Ð\ÀV�N˜6 >°<Ñ@Ô@Ð\Ð\Ð\r   )r	   )r¢   re   r   s    ``r   Úconvert_multi_filledr¦   1  s=   øø€ õ4 " .Ñ1Ô1€NÝ Ñ-Ô-€Là\Ð\Ð\Ð\Ð\È|Ð\Ñ\Ô\Ð\r   Úmulti_linesúlist[cpy.LineReturn]c                ó`   ‡‡— t          ‰¦  «        Št          ‰¦  «        Šˆˆfd„| D ¦   «         S )aŒ  Convert multiple sets of contour lines from one :class:`~.LineType` to another.

    Args:
        multi_lines (nested sequence of arrays): Contour lines to convert, such as those returned by
            :meth:`.ContourGenerator.multi_lines`.
        line_type_from (LineType or str): :class:`~.LineType` to convert from as enum or
            string equivalent.
        line_type_to (LineType or str): :class:`~.LineType` to convert to as enum or string
            equivalent.

    Return:
        Converted set of contour lines.

    When converting non-chunked line types (``LineType.Separate`` or ``LineType.SeparateCode``) to
    chunked ones (``LineType.ChunkCombinedCode``, ``LineType.ChunkCombinedOffset`` or
    ``LineType.ChunkCombinedNan``), all lines are placed in the first chunk. When converting in the
    other direction, all chunk information is discarded.

    .. versionadded:: 1.3.0
    c                ó2   •— g | ]}t          |‰‰¦  «        ‘ŒS r   )r¡   )r   rp   r™   rr   s     €€r   r   z'convert_multi_lines.<locals>.<listcomp>m  s%   ø€ ÐXÐXÐXÀ5�M˜% °Ñ>Ô>ÐXÐXÐXr   )r
   )r§   r™   rr   s    ``r   Úconvert_multi_linesr«   Q  s=   øø€ õ2 " .Ñ1Ô1€NÝ Ñ-Ô-€LàXÐXÐXÐXÐXÈKÐXÑXÔXÐXr   )r   r   r   r   r   r   )r   r4   r   r   r   r   )r   r<   r   r   r   r   )r   rD   r   r   r   r   )r   rK   r   r   r   r   )r   r^   r   r   r   r   )r   r   re   rf   r   rf   r   r   )rp   rq   rr   r   r   rs   )rp   r€   rr   r   r   rs   )rp   rƒ   rr   r   r   rs   )rp   rŽ   rr   r   r   rs   )rp   r’   rr   r   r   rs   )rp   rs   r™   rš   rr   rš   r   rs   )r¢   r£   re   rf   r   rf   r   r£   )r§   r¨   r™   rš   rr   rš   r   r¨   ))Ú
__future__r   Ú	itertoolsr   Útypingr   r   ÚnumpyrP   Úcontourpy._contourpyr   r   Úcontourpy.arrayrV   r   Úcontourpy.enum_utilr	   r
   Úcontourpy.typecheckr   r   Úcontourpy.typesr   r   Ú
_contourpyrh   r3   r;   rC   rJ   r]   rd   ro   r   r‚   r�   r‘   r˜   r¡   r¦   r«   r   r   r   ú<module>r¶      s0  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &à Ð Ð Ð à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø Ð Ð Ð Ð Ð Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0àð 'Ø&Ð&Ð&Ð&Ð&Ð&ð!=ð !=ð !=ð !=ðH%=ð %=ð %=ð %=ðP]ð ]ð ]ð ]ð_ð _ð _ð _ð*9=ð 9=ð 9=ð 9=ðx@=ð @=ð @=ð @=ðF8?ð 8?ð 8?ð 8?ðv=ð =ð =ð =ðD=ð =ð =ð =ð>&=ð &=ð &=ð &=ðR'=ð '=ð '=ð '=ðT)=ð )=ð )=ð )=ðX3?ð 3?ð 3?ð 3?ðl]ð ]ð ]ð ]ð@Yð Yð Yð Yð Yð Yr   