� ��g�$���ddlmZddlZddlmZddlmZmZddlm Z m Z m Z m Z m Z mZmZ ddlmZn #e$rdZYnwxYwddlmZddlmZdd lmZd gZejd ��Zd d d�Zded�d�Zed���d���Zd6d�Zd7d�Z d8d�Z!d9d#�Z"d:d'�Z#d;d+�Z$d<d-�Z%d=d/�Z&d>d3�Z'eej(d4����d?d5���Z)dS)@�)� annotationsN)� lru_cache)�chain�count)�Dict�Iterable�Iterator�List�Optional�Set�Tuple)�etree)�ttLib)� _add_method)� SVGDocument� subset_glyphsz ^glyph(\d+)$zhttp://www.w3.org/2000/svgzhttp://www.w3.org/1999/xlink)�svg�xlink�{rz}href)�maxsizec�8�tj|t���S)N)� namespaces)r�XPath� NAMESPACES)�paths �d/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/fontTools/subset/svg.py�xpathr!s�� �;�t� � 3� 3� 3�3��tree� etree.Element�return�Dict[str, etree.Element]c�F�d�td��|��D��S)Nc�*�i|]}|jd|��S)�id)�attrib)�.0�els r� <dictcomp>z(group_elements_by_id.<locals>.<dictcomp>+s �� F� F� F�B�B�I�d�O�R� F� F� Frz //svg:*[@id])r)rs r�group_elements_by_idr*'s,�� G� F�*?�%��*?�*?��*E�*E� F� F� F�Fr� style_attr�str�Dict[str, str]c�@�i}|�d��D]�}|�d��dkrD|�d��\}}|���}|���||<�_|���rtd|�������|S)N�;�:�z Invalid CSS declaration syntax: )�splitr�strip� ValueError)r+�result� declaration� property_name�values r�parse_css_declarationsr9.s����F�!�'�'��,�,�O�O� � � � �S� !� !�Q� &� &�#.�#4�#4�S�#9�#9� �M�5�)�/�/�1�1�M�$)�K�K�M�M�F�=� !� !� � � � � � O��M� �M�M�N�N� N� O� �Mr� Iterator[str]c#�K�td��}t|g||����D]�}t|��}|�|V�|j}d|vr+it |���t |jd���}dD]J}||vrD||}|�d��r'|�d��r|dd�}|sJ�|V��K��dS)Nz�.//svg:*[ starts-with(@xlink:href, '#') or starts-with(@fill, 'url(#') or starts-with(@clip-path, 'url(#') or contains(@style, ':url(#') ]�style)�fillz clip-pathzurl(#�)������)rr�href_local_targetr&�dictr9� startswith�endswith)r�!find_svg_elements_with_referencesr(�ref_id�attrs�attrr8s r�iter_referenced_idsrI<s���� ).� �)�)�%��T�F�=�=�d�C�C�D�D�!�!��"�2�&�&�� � ��L�L�L�� �� �e� � �Q�t�E�{�{�Q�&<�R�Y�w�=O�&P�&P�Q�E�)� !� !�D��u�}�}��d� ���#�#�G�,�,�!�����1D�1D�!�"�1�R�4�[�F�!�M�M�6� �L�L�L��  !�!�!r�elements� element_ids�Set[str]�Nonec���|}|r`t��}|D]/}||vr�|�t||�����0||z}|�|��|}|�^dSdS�N)�set�updaterI)rJrK� unvisited� referenced�el_ids r�closure_element_idsrUZs��� �I� � �"�u�u� �� D� D�E��H�$�$�� � � �1�(�5�/�B�B� C� C� C� C��k�!� ����:�&�&�&�� � � � � � � rr(� retained_ids�boolc����|j�d���vrdSt�fd�|D����rdSt|��dksJ�|���}|�|�|��dS)Nr%Tc�0��g|]}t|�����S�)�subset_elements)r'�erVs �r� <listcomp>z#subset_elements.<locals>.<listcomp>vs#��� 9� 9� 9��O�A�|� ,� ,� 9� 9� 9rrF)r&�get�any�len� getparent�remove)r(rV�parents ` rr[r[ls���� �y�}�}�T���l�*�*��t� � 9� 9� 9� 9�b� 9� 9� 9�:�:���t� �r�7�7�a�<�<�<�<� �\�\�^�^�F� ��� � �b���� �5rr�glyph_index_map�Dict[int, int]c��t|��}i}|���D]�\}}t�|��}|s�"t |�d����}|�|��}|� ||kr�bd|��} n0d|��} td��} | |vr| �dt| ����} | |v�| ||<| |j d<��|S)Nr1�glyph�.r%) r*�items�GID_RE�match�int�groupr^r�nextr&) rrdrJ�id_maprTr(�m� old_index� new_index�new_id�ns r�remap_glyph_idsrus�� $�C�(�(�H� �F��^�^�%�%�!�!� ��r� �L�L�� � ��� � ������ � �O�O� �#�'�'� �2�2� � � ��I�%�%��(�Y�(�(�F�F� !��[�[�F��a���A��H�$�$�"�.�.�T�!�W�W�.�.���H�$�$���u� � �� �$��� �Mr� Optional[str]c��t|jvrD|jt}|�d��rt|��dkr |dd�SdS)N�#r1)� XLINK_HREFr&rCr`)r(�hrefs rrArA�sO���R�Y����y��$�� �?�?�3� � � �C��I�I��M�M�����8�O� �4rroc��td��|��D]3}t|��}|�J�||vr||}d|��|jt<�4dS)Nz,.//svg:*[starts-with(@xlink:href, '#glyph')]rx)rrAr&ry)rror(�old_idrss r�update_glyph_href_linksr}�sn��C�e�B�C�C�C�H�H�1�1��"�2�&�&���!�!�!� �V� � ��F�^�F�$0��L�L�B�I�j� !�� 1�1r�ints� Iterable[int]�Iterator[Tuple[int, int]]c#��K�ttt|������} t|��x}}n#t$rYdSwxYw|D]}|dz |kr|}�||fV�|x}}�||fV�dS)Nr1)�iter�sortedrPrn� StopIteration)r~� sorted_ints�start�end�vs r�rangesr��s������v�c�$�i�i�(�(�)�)�K���;�'�'�'����� ����������� ���� �q�5�C�<�<��C�C��#�,� � � ��O�E�C�C� �#�,�����s�?� A � A zSVG c �����t�td���|j�|j�|j�g}|jD�]�}�fd�t |j|jdz��D��� |j ��}|s�Gtj |j � d��tjddd������}t|��}�fd �|D��}d �|D��}t!||��t#||��s��|jjs t)|���} t+|| ��tj||jj� ���d��} �fd �|D��} t3| ��D]/\} } |�t7| | | |j�����0���||_t;|j��S) Nz.No module named 'lxml', required to subset SVGc� ��h|] }�|�� SrZrZ)r'�i� glyph_orders �r� <setcomp>z subset_glyphs.<locals>.<setcomp>�s*��� � � � �K��N� � � rr1zutf-8TF)� huge_tree�remove_blank_text�resolve_entities)�parserc� ��h|] }�|�� SrZrZ)r'�g�rev_orig_glyph_maps �rr�z subset_glyphs.<locals>.<setcomp>�s���6�6�6�!�"�1�%�6�6�6rc��h|]}d|����S)rgrZ)r'r�s rr�z subset_glyphs.<locals>.<setcomp>�s��1�1�1�q�{�q�{�{�1�1�1r)� pretty_printc3�(�K�|] }�|V�� dSrOrZ)r'r�rds �r� <genexpr>z subset_glyphs.<locals>.<genexpr>�s(�����5�5�1�O�A�&�5�5�5�5�5�5r)r� ImportError�orig_glyph_order�reverseOrigGlyphMaprd�docList�range� startGlyphID� endGlyphID� intersection�glyphs� fromstring�data�encode� XMLParserr*rUr[�options� retain_gidsrur}�tostring� pretty_svg�decoder��appendr� compressedrW)�self�s�new_docs�docr�rrJ�gidsrKro�new_doc�new_gidsr�r�rdr�r�s @@@rrr�s"����� �}��J�K�K�K��/�K�)*�)>��&'�&7�O�"$�H��|�+N�+N�� � � � �$)�#�*:�C�N�Q�<N�$O�$O� � � � �,�q�x� � � �� � ��� �H�O�O�G� $� $��?� �#'�"'� � � �  � � ��&(��,�,��6�6�6�6�v�6�6�6��1�1�D�1�1�1� ��H�k�2�2�2��s�K�0�0� � ��y�$� 1�$�S�/�:�:�F� #�C�� 0� 0� 0��.��1�9�3G�H�H�H�O�O�PW�X�X��5�5�5�5��5�5�5�� ��*�*� N� N�J�E�3� �O�O�K����S�^�L�L� M� M� M� M� N��D�L� �� � � �r)rr r!r")r+r,r!r-)rr r!r:)rJr"rKrLr!rM)r(r rVrLr!rW)rr rdrer!r-)r(r r!rv)rr ror-r!rM)r~rr!r�)r!rW)*� __future__r�re� functoolsr� itertoolsrr�typingrrr r r r r �lxmlrr�� fontToolsr�fontTools.subset.utilr�fontTools.ttLib.tables.S_V_G_r�__all__�compilerjrryrr*r9rIrUr[rurAr}r�� getTableClassrrZrr�<module>r�se��"�"�"�"�"�"� � � � �������"�"�"�"�"�"�"�"�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�������������� �E�E�E����� ������-�-�-�-�-�-�5�5�5�5�5�5� � �� ���O� $� $�� (� +��� �.�*�W�%� -� -� -� � ��4����4�4���4� G�G�G�G� � � � �!�!�!�!�<����$����&����@����1�1�1�1� � � � �  �� �U� �� (� (�)�)�;�;�;�*�)�;�;�;s �3�=�=
Memory