L i$ddlmZddlZddlmZddlmZmZddlm Z m Z m Z m Z m Z mZmZ ddlmZddlmZddlmZdd lmZd gZej4d Zd d dZdeddZeddZddZd dZ d!dZ! d"dZ"d#dZ# d$dZ$d%dZ%d&dZ&d'dZ'eejPdd(dZ)y#e$rdZYwxYw))) annotationsN) lru_cache)chaincount)DictIterableIteratorListOptionalSetTuple)etree)ttLib) _add_method) SVGDocument subset_glyphsz ^glyph(\d+)$zhttp://www.w3.org/2000/svgzhttp://www.w3.org/1999/xlink)svgxlink{rz}href)maxsizec8tj|tS)N) namespaces)rXPath NAMESPACES)paths Z/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/fontTools/subset/svg.pyxpathr!s ;;t 33cftd|Dcic]}|jd|c}Scc}w)Nz //svg:*[@id]id)rattrib)treeels rgroup_elements_by_idr$'s2+@%*?*E FBBIIdOR  FF Fs.c i}|jdD]l}|jddk(r8|jd\}}|j}|j||<O|js`td||S)N;:z Invalid CSS declaration syntax: )splitrstrip ValueError) style_attrresult declaration property_namevalues rparse_css_declarationsr1.sF!'',O   S !Q &#.#4#4S#9 M5)//1M$)KKMF= !    ? }MN N O Mrc#bKtd}t|g||D]}t|}|||j}d|vr%it |t |jd}dD]=}||vs||}|j ds|jds1|dd}|sJ|?yw)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(#))rrhref_local_targetr!dictr1 startswithendswith)r"!find_svg_elements_with_referencesr#ref_idattrsattrr0s riter_referenced_idsr@<s ). )%TF=dCD!"2&  L  e QtE{Q&z subset_glyphs..s51OA&5s)r ImportErrororig_glyph_orderreverseOrigGlyphMapr^docListrange startGlyphID endGlyphID intersectionglyphs fromstringdataencode XMLParserr$rJrNoptions retain_gidsrerltostring pretty_svgdecodervappendr compressedbool)selfs glyph_orderrev_orig_glyph_mapnew_docsdocrrrrEggidsrFr_new_docnew_gidsrsrtr^s @rrrs }JKK//K)*)>)>&'&7&7O"$H||+N$)#*:*:CNNQrs&" "GGG -5   O $ ( + *W%&f -  444 G !<&5= $& )7@1   U  ();*;q EsCCC