o 0¦i°oã@sÖ gd¢ZddlZddlZddlZddlZddlmZddlZddlZddl Z ddl Z ddl m Z ej dded�Zeƒ ej¡dZGd d „d ƒZd Ze  d ¡Zd>dd„Zdd„Ze  de j¡Zdd„Zdd„Zdd„ZGdd„dƒZGdd„dƒZ Gdd„de ƒZ!dd „Z"Gd!d"„d"e#ƒZ$d#d$d%d&d'œZ%e&ƒZ'Gd(d)„d)ƒZ(d*d+„Z)e*e+e,eje-fZ.Gd,d-„d-e&ƒZ/d.d/„Z0e1e2e"ee!d0�e3e2e0e(e/d0�iZ4de2d1œd2d3„Z5de2d1œd4d5„Z6e1d6d7d8œd9d:„Z7e1d7d6d;œd= 2**64r úUIDs must be positive)Ú isinstanceÚintÚ TypeErrorÚ ValueErrorÚdata©Úselfr©rú//opt/alt/python310/lib64/python3.10/plistlib.pyÚ__init__Qs  z UID.__init__cCs|jS©N)r©rrrrÚ __index__Zsz UID.__index__cCsd|jjt|jƒfS)Nz%s(%s))Ú __class__Ú__name__ÚreprrrrrrÚ__repr__]óz UID.__repr__cCs|j|jffSr)rrrrrrÚ __reduce__`ózUID.__reduce__cCst|tƒstS|j|jkSr)rrÚNotImplementedr)rÚotherrrrÚ__eq__cs  z UID.__eq__cCs t|jƒSr)ÚhashrrrrrÚ__hash__hó z UID.__hash__N) rÚ __module__Ú __qualname__rrr!r#r'r)rrrrrPs  rsŽ zv[\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0b\x0c\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]éLcCsP|dd}g}tdt|ƒ|ƒD]}||||…}| t |¡¡qd |¡S)Néér ó)ÚrangeÚlenÚappendÚbinasciiZ b2a_base64Újoin)ÚsÚ maxlinelengthZ maxbinsizeÚpiecesÚiÚchunkrrrÚ_encode_base64|s  r;cCs$t|tƒr t | d¡¡St |¡S)Núutf-8)rÚstrr4Z a2b_base64Úencode)r6rrrÚ_decode_base64…s  r?z{(?P\d\d\d\d)(?:-(?P\d\d)(?:-(?P\d\d)(?:T(?P\d\d)(?::(?P\d\d)(?::(?P\d\d))?)?)?)?)?ZcCsLd}t |¡ ¡}g}|D]}||}|durn| t|ƒ¡q tj|ŽS)N©ZyearZmonthZdayZhourZminuteÚsecond)Ú _dateParserÚmatchÚ groupdictr3rÚdatetime)r6ZorderZgdZlstÚkeyÚvalrrrÚ_date_from_string’s rHcCs d|j|j|j|j|j|jfS)Nz%04d-%02d-%02dT%02d:%02d:%02dZr@)ÚdrrrÚ_date_to_stringžs  þrJcCsZt |¡}|dur tdƒ‚| dd¡}| dd¡}| dd¡}| dd¡}| d d ¡}|S) Nz;strings can't contain control characters; use bytes insteadz Ú ú ú&z&úz>)Ú_controlCharPatÚsearchrÚreplace)ÚtextÚmrrrÚ_escape¤s      rUc@s¬eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)S)*Ú _PlistParsercCsg|_d|_d|_||_dSr)ÚstackÚ current_keyÚrootÚ _dict_type©rÚ dict_typerrrr±ó z_PlistParser.__init__cCsBtƒ|_|j|j_|j|j_|j|j_|j|j_ |j  |¡|j Sr) r ÚparserÚhandle_begin_elementZStartElementHandlerÚhandle_end_elementZEndElementHandlerÚ handle_dataZCharacterDataHandlerÚhandle_entity_declZEntityDeclHandlerZ ParseFilerY)rZfileobjrrrÚparse·s     z_PlistParser.parsecCstdƒ‚)Nz8XML entity declarations are not supported in plist files)r)rZ entity_nameZis_parameter_entityÚvalueÚbaseZ system_idZ public_idZ notation_namerrrrbÀsz_PlistParser.handle_entity_declcCs.g|_t|d|dƒ}|dur||ƒdSdS)NZbegin_)rÚgetattr)rÚelementÚattrsÚhandlerrrrr_Æs  ÿz!_PlistParser.handle_begin_elementcCs&t|d|dƒ}|dur|ƒdSdS)NZend_)rf)rrgrirrrr`Ìs ÿz_PlistParser.handle_end_elementcCs|j |¡dSr)rr3rrrrraÑóz_PlistParser.handle_datacCs�|jdur$t|jdtiƒƒstd|jjƒ‚||jd|j<d|_dS|js,||_dSt|jdtgƒƒs>td|jjƒ‚|jd |¡dS)Néÿÿÿÿzunexpected element at line %d) rXrrWÚtyperr^ÚCurrentLineNumberrYr3©rrdrrrÚ add_objectÔs ÿ  ÿz_PlistParser.add_objectcCsd |j¡}g|_|S)NÚ)r5rrrrrÚget_dataäs z_PlistParser.get_datacCs"| ¡}| |¡|j |¡dSr)rZrorWr3)rrhrIrrrÚ begin_dictës z_PlistParser.begin_dictcCs*|jrtd|j|jjfƒ‚|j ¡dS)Nz%missing value for key '%s' at line %d)rXrr^rmrWÚpoprrrrÚend_dictðs  ÿz_PlistParser.end_dictcCs8|js t|jdtiƒƒstd|jjƒ‚| ¡|_dS)Nrkzunexpected key at line %d)rXrrWrlrr^rmrqrrrrÚend_keyös ÿz_PlistParser.end_keycCsg}| |¡|j |¡dSr)rorWr3)rrhÚarrrÚ begin_arrayüs z_PlistParser.begin_arraycCs|j ¡dSr)rWrsrrrrÚ end_arrayr$z_PlistParser.end_arraycCó| d¡dS)NT©rorrrrÚend_truer$z_PlistParser.end_truecCry)NFrzrrrrÚ end_falser$z_PlistParser.end_falsecCsB| ¡}| d¡s| d¡r| t|dƒ¡dS| t|ƒ¡dS)NZ0xZ0Xé)rqÚ startswithror)rÚrawrrrÚ end_integer sz_PlistParser.end_integercCó| t| ¡ƒ¡dSr)roÚfloatrqrrrrÚend_realr"z_PlistParser.end_realcCs| | ¡¡dSr)rorqrrrrÚ end_stringsz_PlistParser.end_stringcCr�r)ror?rqrrrrÚend_datar"z_PlistParser.end_datacCr�r)rorHrqrrrrÚend_dater"z_PlistParser.end_dateN)rr+r,rrcrbr_r`rarorqrrrtrurwrxr{r|r€rƒr„r…r†rrrrrV°s*  rVc@s8eZdZddd„Zdd„Zdd„Zdd d „Zd d „Zd S)Ú_DumbXMLWriterr ú cCs||_g|_||_||_dSr)ÚfilerWÚ _indent_levelÚindent)rr‰Ú indent_levelr‹rrrrr]z_DumbXMLWriter.__init__cCs,|j |¡| d|¡|jd7_dS)Nz<%s>é)rWr3ÚwritelnrŠ©rrgrrrÚ begin_element%s z_DumbXMLWriter.begin_elementcCs |jd8_| d|¡dS)Nr�z)rŠrŽr�rrrÚ end_element*sz_DumbXMLWriter.end_elementNcCs:|durt|ƒ}| d|||f¡dS| d|¡dS)Nz <%s>%sz<%s/>)rUrŽ)rrgrdrrrÚsimple_element0sz_DumbXMLWriter.simple_elementcCsH|rt|tƒr | d¡}|j |j|j¡|j |¡|j d¡dS)Nr<ó )rr=r>r‰ÚwriterŠr‹)rÚlinerrrrŽ8s    z_DumbXMLWriter.writeln)r rˆr)rr+r,rr�r‘r’rŽrrrrr‡s    r‡c@sBeZdZ  ddd„Zdd „Zd d „Zd d „Zdd„Zdd„ZdS)Ú _PlistWriterr ó r�TFcCs.|r| t¡t ||||¡||_||_dSr)r”Ú PLISTHEADERr‡rÚ _sort_keysÚ _skipkeys)rr‰rŒr‹Z writeHeaderÚ sort_keysÚskipkeysrrrrEs   z_PlistWriter.__init__cCs"| d¡| |¡| d¡dS)Nzz)rŽÚ write_valuernrrrr”Os  z_PlistWriter.writecCs(t|tƒr | d|¡dS|dur| d¡dS|dur#| d¡dSt|tƒrEd|kr2dkrAnt|ƒ‚| dd |¡dSt|ƒ‚t|tƒrT| d t|ƒ¡dSt|tƒr`| |¡dSt|t t fƒrn|  |¡dSt|t j ƒr~| d t |ƒ¡dSt|ttfƒrŒ| |¡dStd t|ƒƒ‚) NÚstringTÚtrueFZfalselûÿÿÿrZintegerz%dÚrealÚdatezunsupported type: %s)rr=r’rÚ OverflowErrorr‚r ÚdictÚ write_dictÚbytesÚ bytearrayÚ write_bytesrErJÚtupleÚlistÚ write_arrayrrlrnrrrr�Ts,  þ   z_PlistWriter.write_valuecCsz| d¡|jd8_tddt|j dd¡|jƒƒ}t||ƒ d¡D] }|r.| |¡q%|jd7_|  d¡dS)Nrr�r}r-r—s r“) r�rŠÚmaxr2r‹rRr;ÚsplitrŽr‘)rrr7r•rrrr§vs þ €z_PlistWriter.write_bytescCs„|r;| d¡|jrt| ¡ƒ}n| ¡}|D]\}}t|tƒs(|jr$qtdƒ‚| d|¡|  |¡q|  d¡dS| d¡dS)Nr£úkeys must be stringsrF) r�r™ÚsortedÚitemsrr=ršrr’r�r‘)rrIr¯rFrdrrrr¤ƒs     z_PlistWriter.write_dictcCs>|r| d¡|D]}| |¡q | d¡dS| d¡dS)NÚarray)r�r�r‘r’)rr°rdrrrrª—s   z_PlistWriter.write_arrayN)r r—r�TF) rr+r,rr”r�r§r¤rªrrrrr–Ds þ " r–cCsŽd}|D] }| |¡rdSqtjdftjdftjdffD]'\}}| |¡s'q|D]}|| d¡ |¡}|dt|ƒ…|krCdSq)qdS)N)sr2)ÚheaderÚprefixesZpfxZbomÚencodingÚstartÚprefixrrrÚ _is_fmt_xml¢s$ ÿ ý ÿþr¼c@seZdZddd„ZdS)rú Invalid filecCst ||¡dSr)rr)rÚmessagerrrrÄrjzInvalidFileException.__init__N)r½)rr+r,rrrrrrÃsrÚBÚHÚLÚQ)r�ér.éc@sFeZdZ dd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)Ú_BinaryPlistParsercCs ||_dSr)rZr[rrrrÓr*z_BinaryPlistParser.__init__c Cs z?||_|j dtj¡|j d¡}t|ƒdkrtƒ‚t d|¡\}|_ }}}|j |¡|  ||¡|_ t g||_ | |¡WStttjttfyOtƒ‚w)Niàÿÿÿé z>6xBBQQQ)Ú_fpÚseekÚosÚSEEK_ENDÚreadr2rÚstructÚunpackÚ _ref_sizeÚ _read_intsÚ_object_offsetsÚ _undefinedÚ_objectsÚ _read_objectÚOSErrorÚ IndexErrorÚerrorr¢r)rÚfpÚtrailerÚ offset_sizeÚ num_objectsÚ top_objectÚoffset_table_offsetrrrrcÖs&   ý      ÿþz_BinaryPlistParser.parsecCsN |dkr%|j d¡dd@}d|>}dt|}t ||j |¡¡dS|S)Nér�r r/rO)rÇrËÚ_BINARY_FORMATrÌrÍ)rÚtokenLrTr6ÚfrrrÚ _get_sizeïs z_BinaryPlistParser._get_sizecCs\t|tƒ}|j |¡} t|ƒ|krt‚||kr|St|||ƒ}||j |¡7}||7}q r)ÚminÚ_MIN_READ_BUF_SIZErÇrËr2r)rÚsizeZcursizerZdeltarrrÚ_readùs   ùz_BinaryPlistParser._readcs^| ˆ|¡‰ˆtvrt d|›tˆ›�ˆ¡Sˆstƒ‚t‡‡fdd„tdˆ|ˆƒDƒƒS)NrOc3s(�|]}t ˆ||ˆ…d¡VqdS)ÚbigN)rÚ from_bytes)Ú.0r9©rrärrÚ s€ ÿz0_BinaryPlistParser._read_ints..r )rårÞrÌrÍrr¨r1)rÚnrärrérrÏsÿz_BinaryPlistParser._read_intscCs| ||j¡Sr)rÏrÎ)rrërrrÚ _read_refsr$z_BinaryPlistParser._read_refscs¬ ˆj|}|tur |Sˆj|}ˆj |¡ˆj d¡d}|d@|d@}}|dkr0d}�n|dkr8d}�n|dkr@d}�n|dkrHd }�n|d kr]tjˆj d|>¡d |d kd �}nò|dkrnt  dˆj d¡¡d}ná|dkrt  dˆj d¡¡d}nÐ|dkr�t  dˆj d¡¡d}t   ddd¡t j |d�}n²|dkr¬ˆ  |¡}ˆ  |¡}n£|dkrÀˆ  |¡}ˆ  |¡} |  d¡}n�|dkrÖˆ  |¡d}ˆ  |¡} |  d¡}ny|dkrétt ˆj d|¡d ¡ƒ}nf|dk�r ˆ  |¡}ˆ |¡} g}|ˆj|<| ‡fdd„| Dƒ¡nC|d k�rLˆ  |¡}ˆ |¡} ˆ |¡} ˆ ¡}|ˆj|<zt| | ƒD]\} } ˆ | ¡|ˆ | ¡<�q/Wnt�yKtƒ‚wtƒ‚|ˆj|<|S)!Nr�r éðrÝrÄFé Tr0r}rær/©Zsignedé"z>fr.é#z>dé3éÑ)Zsecondsé@éPr±é`rÃúutf-16beé€é c3s�|]}ˆ |¡VqdSr)rÓ)rèÚxrrrrêXs€z2_BinaryPlistParser._read_object..éÐ)rÒrÑrÐrÇrÈrËrrçrÌrÍrEZ timedeltarárår¶rrìÚextendrZÚziprÓrr)rÚrefÚresultÚoffsetÚtokenZtokenHrßràr6rZobj_refsZkey_refsÚkÚorrrrÓs€   ÿ  ÿ                ÿÿ z_BinaryPlistParser._read_objectN) rr+r,rrcrárårÏrìrÓrrrrrÅËs   rÅcCs(|dkrdS|dkr dS|dkrdSdS)Nér�érÃìr.rÄr)ÚcountrrrÚ_count_to_sizeqsrc@r)Ú_BinaryPlistWritercCs||_||_||_dSr)rÇr™rš)rr×r›rœrrrr�s z_BinaryPlistWriter.__init__c Csæg|_i|_i|_| |¡t|jƒ}dg||_t|ƒ|_t|j|_ |j   d¡|jD]}|  |¡q-|  |¡}|j  ¡}t|ƒ}dt||}|j   tj|g|j¢RŽ¡d}|||j|||f} |j   tjdg| ¢RŽ¡dS)Nr óbplist00rOz >5xBBBQQQ)Ú_objlistÚ _objtableÚ _objidtableÚ_flattenr2rÐrrÎrÞÚ _ref_formatrÇr”Ú _write_objectÚ _getrefnumÚtellrÌÚpack) rrdrÚÚobjrÛrÜrÙZ offset_formatZ sort_versionrØrrrr”†s*           þz_BinaryPlistWriter.writec Cs$t|tƒrt|ƒ|f|jvrdSn t|ƒ|jvrdSt|jƒ}|j |¡t|tƒr4||jt|ƒ|f<n||jt|ƒ<t|t ƒr}g}g}|  ¡}|j rOt |ƒ}|D]\}}t|t ƒsb|jr^qQtdƒ‚| |¡| |¡qQt ||¡D]}| |¡qsdSt|ttfƒrŽ|D] }| |¡q†dSdS)Nr­)rÚ_scalarsrlr Úidr r2r r3r£r¯r™r®r=ršrÚ itertoolsÚchainrr©r¨) rrdZrefnumÚkeysÚvaluesr¯rÚvrrrrr³s@ ÿ         ÿ þz_BinaryPlistWriter._flattencCs*t|tƒr|jt|ƒ|fS|jt|ƒSr)rrr rlr rrnrrrrÝs z_BinaryPlistWriter._getrefnumcCs¼|dkr|j t d||B¡¡dS|dkr&|j t d|dBd|¡¡dS|dkr:|j t d|dBd|¡¡dS|d krN|j t d |dBd |¡¡dS|j t d |dBd |¡¡dS)NrÝz>Brz>BBBr}rz>BBHérz>BBLéz>BBQé)rÇr”rÌr)rrrärrrÚ _write_sizeãs    z_BinaryPlistWriter._write_sizec sjˆ |¡}ˆj ¡ˆj|<|durˆj d¡dS|dur%ˆj d¡dS|dur1ˆj d¡dSt|tƒr²|dkrVzˆj t dd|¡¡WdStj yUt |ƒd‚w|d krgˆj t d d |¡¡dS|d krxˆj t d d|¡¡dS|dkr‰ˆj t dd|¡¡dS|dkršˆj t dd|¡¡dS|dkr®ˆj d|j d ddd�¡dSt |ƒ‚t|t ƒrĈj t dd|¡¡dSt|t j ƒrâ|t   ddd¡ ¡}ˆj t dd|¡¡dSt|ttfƒrùˆ dt|ƒ¡ˆj |¡dSt|tƒ�r0z| d¡}ˆ dt|ƒ¡Wnt�y'| d ¡}ˆ d!t|ƒd"¡Ynwˆj |¡dSt|tƒ�r�|jdk�r@td#ƒ‚|jd k�rSˆj t d d$|¡¡dS|jd k�rfˆj t d d%|¡¡dS|jdk�ryˆj t dd&|¡¡dS|jdk�rŒˆj t dd'|¡¡dSt |ƒ‚t|ttfƒ�r¿‡fd(d)„|Dƒ}t|ƒ}ˆ d*|¡ˆj tjd+ˆj|g|¢RŽ¡dSt|tƒ�r1gg}}ˆj�rÕt| ¡ƒ} n| ¡} | D]%\} } t| tƒ�sïˆj �rë�qÛt!d,ƒ‚| "ˆ | ¡¡| "ˆ | ¡¡�qÛt|ƒ}ˆ d-|¡ˆj tjd+ˆj|g|¢RŽ¡ˆj tjd+ˆj|g|¢RŽ¡dSt!|ƒ‚).NóFóTr—r z>Bqrrz>BBr}rz>BHrrz>BLrlz>BQrórærïz>Bdrñrór�ròrôr±rõr÷rörÃrrøé�éƒé‡csg|]}ˆ |¡‘qSr)r)rèrrrrÚ 6sz4_BinaryPlistWriter._write_object..rùrOr­rû)#rrÇrrÐr”rrrÌrrÖr¢Úto_bytesr‚rEZ total_secondsr¥r¦rr2r=r>ÚUnicodeEncodeErrorrrrr©r¨rr£r™r®r¯ršrr3) rrdrþràÚtZrefsr6ZkeyRefsZvalRefsZ rootItemsrrrrrrósš   ÿ      þ       (     $(z _BinaryPlistWriter._write_objectN) rr+r,rr”rrrrrrrrr €s-* r cCs|dd…dkS)NrÄr r)r·rrrÚ_is_fmt_binaryTrjr*)Údetectr^Úwriter©Úfmtr\cCsl |dur&| d¡}| d¡t ¡D]}|d|ƒr!|d}nqtƒ‚nt|d}||d�}| |¡S)NrÆr r+r^)r\)rËrÈÚ_FORMATSrrrc)r×r.r\r·ÚinfoÚPÚprrrrjs    þý   rcCs t|ƒ}t|||d�S)Nr-)r r)rdr.r\r×rrrr€srTF)r.r›rœcCs< |tvr td|fƒ‚t|d|||d�}| |¡dS)NzUnsupported format: %rr,)r›rœ)r/rr”)rdr×r.r›rœr,rrrrˆs r©r.rœr›cCs" tƒ}t|||||d�| ¡S)Nr3)r rÚgetvalue)rdr.rœr›r×rrrr“sr)r-)9Ú__all__r4r²rEÚenumÚior rrÉÚrerÌZxml.parsers.expatr ÚEnumrr ÚglobalsÚupdateÚ __members__rãrr˜ÚcompilerPr;r?ÚASCIIrBrHrJrUrVr‡r–r¼rrrÞÚobjectrÑrÅrr=rr‚r¥rr r*rr£rr/rrrrrrrrÚsn8  !ÿ     n&^!' U ýýú