U e5dÜ}ã @s:dddddddddd d d d g Zd dlZd dlZd dlZd dlZd dlZd dlmZd dlZd dl Z d dl Z d dl Z d dl m Z d dlmZejdded�Zeƒ ej¡ejdd„ƒZdd„Zdd„Zdd„Zdd„ZGdd„dƒZGdd „d ƒZdZe  d¡Z dKd d!„Z!d"d#„Z"e  d$e j#¡Z$d%d&„Z%d'd(„Z&d)d*„Z'Gd+d,„d,ƒZ(Gd-d.„d.ƒZ)Gd/d0„d0e)ƒZ*d1d2„Z+Gd3d„de,ƒZ-d4d5d6d7d8œZ.e/ƒZ0Gd9d:„d:ƒZ1d;d<„Z2e3e4e5eje6fZ7Gd=d>„d>e/ƒZ8d?d@„Z9e:e;e+e(e*dA�eddBe;dCœdEd „Z?e:dBdFdGœdHd „Z@e:dFdBdIœdJd „ZAdS)LÚ readPlistÚ writePlistÚreadPlistFromBytesÚwritePlistToBytesÚDataÚInvalidFileExceptionÚFMT_XMLÚ FMT_BINARYÚloadÚdumpÚloadsÚdumpsÚUIDéN)ÚBytesIO)Úwarn)Ú ParserCreateÚ PlistFormatzFMT_XML FMT_BINARY)Úmodulec cs2t|tƒr(t||ƒ� }|VW5QRXn|VdS©N)Ú isinstanceÚstrÚopen)Ú pathOrFileÚmodeÚfp©rú /usr/lib64/python3.8/plistlib.pyÚ _maybe_openOs  rc Cs<tdtdƒt|dƒ�}t|ddd�W5QR£SQRXdS)Nz8The readPlist function is deprecated, use load() insteadéÚrbF©ÚfmtÚuse_builtin_types)rÚDeprecationWarningrr )rrrrrrYs ÿ c Cs8tdtdƒt|dƒ�}t||tddd�W5QRXdS)Nz9The writePlist function is deprecated, use dump() insteadrÚwbTF©r!Ú sort_keysÚskipkeys)rr#rr r)Úvaluerrrrrrfs ÿ cCstdtdƒtt|ƒddd�S)NzBThe readPlistFromBytes function is deprecated, use loads() insteadrFr )rr#r r©Údatarrrrss ÿcCs,tdtdƒtƒ}t||tddd�| ¡S)NzAThe writePlistToBytes function is deprecated, use dumps() insteadrTFr%)rr#rr rÚgetvalue)r(Úfrrrr~sÿc@s:eZdZdd„Zedd„ƒZd dd„Zdd „Zd d „Zd S)rcCst|tƒstdƒ‚||_dS)Nzdata must be as bytes)rÚbytesÚ TypeErrorr*©Úselfr*rrrÚ__init__’s z Data.__init__cCs |t|ƒƒSr)Ú_decode_base64)Úclsr*rrrÚ fromBase64—szData.fromBase64éLcCs t|j|ƒSr)Ú_encode_base64r*)r0Ú maxlinelengthrrrÚasBase64�sz Data.asBase64cCs4t||jƒr|j|jkSt|tƒr,|j|kStSdSr)rÚ __class__r*r-ÚNotImplemented©r0ÚotherrrrÚ__eq__ s     z Data.__eq__cCsd|jjt|jƒfS©Nz%s(%s)©r9Ú__name__Úreprr*©r0rrrÚ__repr__¨sz Data.__repr__N)r5) r@Ú __module__Ú __qualname__r1Ú classmethodr4r8r=rCrrrrr‹s   c@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)r cCs<t|tƒstdƒ‚|dkr"tdƒ‚|dkr2tdƒ‚||_dS)Nzdata must be an intìzUIDs cannot be >= 2**64rúUIDs must be positive)rÚintr.Ú ValueErrorr*r/rrrr1³s z UID.__init__cCs|jSrr)rBrrrÚ __index__¼sz UID.__index__cCsd|jjt|jƒfSr>r?rBrrrrC¿sz UID.__repr__cCs|j|jffSr)r9r*rBrrrÚ __reduce__ÂszUID.__reduce__cCst|tƒstS|j|jkSr)rr r:r*r;rrrr=Ås z UID.__eq__cCs t|jƒSr)Úhashr*rBrrrÚ__hash__Êsz UID.__hash__N) r@rDrEr1rKrCrLr=rNrrrrr ²s  sŽ 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]r5cCsP|dd}g}tdt|ƒ|ƒD]$}||||…}| t |¡¡q d |¡S)Nééró)ÚrangeÚlenÚappendÚbinasciiZ b2a_base64Újoin)Úsr7Z maxbinsizeÚpiecesÚiÚchunkrrrr6ßs  r6cCs(t|tƒrt | d¡¡St |¡SdS)Núutf-8)rrrUZ a2b_base64Úencode)rWrrrr2ès r2z{(?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]&}||}|dkr2qB| t|ƒ¡qtj|ŽS)N©ZyearZmonthZdayZhourZminuteÚsecond)Ú _dateParserÚmatchÚ groupdictrTrIÚdatetime)rWÚorderZgdZlstÚkeyÚvalrrrÚ_date_from_stringõsrfcCs d|j|j|j|j|j|jfS)Nz%04d-%02d-%02dT%02d:%02d:%02dZr])ÚdrrrÚ_date_to_stringsþrhcCsZt |¡}|dk rtdƒ‚| dd¡}| dd¡}| dd¡}| dd¡}| d d ¡}|S) Nzz>)Ú_controlCharPatÚsearchrJÚreplace)ÚtextÚmrrrÚ_escapes      rsc@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)*Ú _PlistParsercCs"g|_d|_d|_||_||_dSr)ÚstackÚ current_keyÚrootÚ_use_builtin_typesÚ _dict_type©r0r"Ú dict_typerrrr1s 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 ParseFilerw)r0ZfileobjrrrÚparses     z_PlistParser.parsecCs tdƒ‚dS)Nz8XML entity declarations are not supported in plist files)r)r0Z entity_nameZis_parameter_entityr(ÚbaseZ system_idZ public_idZ notation_namerrrr€$sz_PlistParser.handle_entity_declcCs*g|_t|d|dƒ}|dk r&||ƒdS)NZbegin_)r*Úgetattr)r0ÚelementÚattrsÚhandlerrrrr}*sz!_PlistParser.handle_begin_elementcCs"t|d|dƒ}|dk r|ƒdS)NZend_)rƒ)r0r„r†rrrr~0sz_PlistParser.handle_end_elementcCs|j |¡dSr)r*rTr/rrrr5sz_PlistParser.handle_datacCsŒ|jdk rFt|jdtiƒƒs.td|jjƒ‚||jd|j<d|_nB|jsT||_n4t|jdtgƒƒsxtd|jjƒ‚|jd |¡dS)Néÿÿÿÿzunexpected element at line %d) rvrruÚtyperJr|ÚCurrentLineNumberrwrT©r0r(rrrÚ add_object8s ÿÿz_PlistParser.add_objectcCsd |j¡}g|_|S)NÚ)rVr*r/rrrÚget_dataHs z_PlistParser.get_datacCs"| ¡}| |¡|j |¡dSr)ryr‹rurT)r0r…rgrrrÚ begin_dictOs z_PlistParser.begin_dictcCs*|jrtd|j|jjfƒ‚|j ¡dS)Nz%missing value for key '%s' at line %d)rvrJr|r‰ruÚpoprBrrrÚend_dictTs  ÿz_PlistParser.end_dictcCs8|jst|jdtiƒƒs*td|jjƒ‚| ¡|_dS)Nr‡zunexpected key at line %d)rvrrurˆrJr|r‰r�rBrrrÚend_keyZs ÿz_PlistParser.end_keycCsg}| |¡|j |¡dSr)r‹rurT)r0r…ÚarrrÚ begin_array`s z_PlistParser.begin_arraycCs|j ¡dSr)rur�rBrrrÚ end_arrayesz_PlistParser.end_arraycCs| d¡dS)NT©r‹rBrrrÚend_truehsz_PlistParser.end_truecCs| d¡dS)NFr•rBrrrÚ end_falseksz_PlistParser.end_falsecCs@| ¡}| d¡s| d¡r.| t|dƒ¡n| t|ƒ¡dS)NZ0xZ0Xé)r�Ú startswithr‹rI)r0ÚrawrrrÚ end_integernsz_PlistParser.end_integercCs| t| ¡ƒ¡dSr)r‹Úfloatr�rBrrrÚend_realusz_PlistParser.end_realcCs| | ¡¡dSr)r‹r�rBrrrÚ end_stringxsz_PlistParser.end_stringcCs2|jr| t| ¡ƒ¡n| t | ¡¡¡dSr)rxr‹r2r�rr4rBrrrÚend_data{sz_PlistParser.end_datacCs| t| ¡ƒ¡dSr)r‹rfr�rBrrrÚend_date‚sz_PlistParser.end_dateN)r@rDrEr1r�r€r}r~rr‹r�rŽr�r‘r“r”r–r—r›r�ržrŸr rrrrrts( rtc@s8eZdZddd„Zdd„Zdd„Zdd d „Zd d „Zd S)Ú_DumbXMLWriterrú cCs||_g|_||_||_dSr)ÚfileruÚ _indent_levelÚindent)r0r£Ú indent_levelr¥rrrr1‡sz_DumbXMLWriter.__init__cCs,|j |¡| d|¡|jd7_dS)Nz<%s>é)rurTÚwritelnr¤©r0r„rrrÚ begin_element�s z_DumbXMLWriter.begin_elementcCs |jd8_| d|¡dS)Nr§z)r¤r¨r©rrrÚ end_element’sz_DumbXMLWriter.end_elementNcCs8|dk r&t|ƒ}| d|||f¡n| d|¡dS)Nz <%s>%sz<%s/>)rsr¨)r0r„r(rrrÚsimple_element˜sz_DumbXMLWriter.simple_elementcCsH|r8t|tƒr| d¡}|j |j|j¡|j |¡|j d¡dS)Nr[ó )rrr\r£Úwriter¤r¥)r0Úlinerrrr¨ s    z_DumbXMLWriter.writeln)rr¢)N)r@rDrEr1rªr«r¬r¨rrrrr¡†s   r¡c@sFeZdZddd„Zdd „Zd d „Zd d „Zdd„Zdd„Zdd„Z dS)Ú _PlistWriterró r§TFcCs.|r| t¡t ||||¡||_||_dSr)r®Ú PLISTHEADERr¡r1Ú _sort_keysÚ _skipkeys)r0r£r¦r¥Z writeHeaderr&r'rrrr1­s  z_PlistWriter.__init__cCs"| d¡| |¡| d¡dS)Nzz)r¨Ú write_valuerŠrrrr®·s  z_PlistWriter.writecCs4t|tƒr| d|¡�n|dkr0| d¡�n|dkrD| d¡nìt|tƒr‚d|krbdkrxnn| dd |¡nt|ƒ‚n®t|tƒrž| d t|ƒ¡n’t|tƒr´| |¡n|t|t ƒrÊ|  |¡nft|t t fƒrä|  |¡nLt|tjƒ�r| d t|ƒ¡n,t|ttfƒ�r | |¡ntd t|ƒƒ‚dS) NÚstringTÚtrueFZfalselûÿÿÿrGZintegerz%dÚrealÚdatezunsupported type: %s)rrr¬rIÚ OverflowErrorrœrAÚdictÚ write_dictrÚ write_datar-Ú bytearrayÚ write_bytesrbrhÚtupleÚlistÚ write_arrayr.rˆrŠrrrrµ¼s.           z_PlistWriter.write_valuecCs| |j¡dSr)r¿r*r/rrrr½ász_PlistWriter.write_datacCsz| d¡|jd8_tddt|j dd¡|jƒƒ}t||ƒ d¡D]}|rJ| |¡qJ|jd7_|  d¡dS)Nr*r§r˜r5r±s r­) rªr¤ÚmaxrSr¥rpr6Úsplitr¨r«)r0r*r7r¯rrrr¿äs þ z_PlistWriter.write_bytescCs‚|rt| d¡|jr"t| ¡ƒ}n| ¡}|D]8\}}t|tƒsP|jrHq.tdƒ‚| d|¡|  |¡q.|  d¡n | d¡dS)Nr»úkeys must be stringsrd) rªr³ÚsortedÚitemsrrr´r.r¬rµr«)r0rgrÇrdr(rrrr¼ñs      z_PlistWriter.write_dictcCs<|r.| d¡|D]}| |¡q| d¡n | d¡dS)NÚarray)rªrµr«r¬)r0rÈr(rrrrÂs    z_PlistWriter.write_arrayN)rr±r§TF) r@rDrEr1r®rµr½r¿r¼rÂrrrrr°¬sþ % r°cCsŽd}|D]}| |¡rdSqtjdftjdftjdffD]N\}}| |¡sNq:|D]4}|| d¡ |¡}|dt|ƒ…|krRdSqRq:dS)N)s6xBBQQQ)Ú_fpÚseekÚosÚSEEK_ENDÚreadrSrÚstructÚunpackÚ _ref_sizeÚ _read_intsÚ_object_offsetsÚ _undefinedÚ_objectsÚ _read_objectÚOSErrorÚ IndexErrorÚerrorrºrJ)r0rÚtrailerÚ offset_sizeÚ num_objectsÚ top_objectÚoffset_table_offsetrrrr�Es*   ý    ÿ z_BinaryPlistParser.parsecCsL|dkrH|j d¡dd@}d|>}dt|}t ||j |¡¡dS|S)Nér§rrPrm)rÞrâÚ_BINARY_FORMATrãrä)r0ÚtokenLrrrWr,rrrÚ _get_size^s  z_BinaryPlistParser._get_sizecst|j ˆ|¡‰ˆtkr2t d|›tˆ›�ˆ¡SˆrFtˆƒˆ|krLtƒ‚t‡‡fdd„tdˆ|ˆƒDƒƒSdS)Nrmc3s&|]}t ˆ||ˆ…d¡VqdS)ÚbigN)rIÚ from_bytes)Ú.0rY©r*ÚsizerrÚ osÿz0_BinaryPlistParser._read_ints..r) rÞrârôrãrärSrrÀrR)r0Únrûrrúrræhsÿz_BinaryPlistParser._read_intscCs| ||j¡Sr)rærå)r0rýrrrÚ _read_refsrsz_BinaryPlistParser._read_refscsˆj|}|tk r|Sˆj|}ˆj |¡ˆj d¡d}|d@|d@}}|dkr^d}�n°|dkrnd}�n |dkr~d}�n�|dkrŽd }�n€|d krºtjˆj d|>¡d |d kd �}�nT|dkrÞt  dˆj d¡¡d}�n0|dk�rt  dˆj d¡¡d}�n |dk�rDt  dˆj d¡¡d}t   ddd¡t j |d�}�nÊ|dk�rŒˆ  |¡}ˆj |¡}t |ƒ|k�rxtƒ‚ˆj�st|ƒ}�n‚|dk�rΈ  |¡}ˆj |¡} t | ƒ|k�rÀtƒ‚|  d¡}�n@|dk�rˆ  |¡d}ˆj |¡} t | ƒ|k�rtƒ‚|  d¡}nü|dk�r:tt ˆj d|¡d ¡ƒ}nÔ|dk�r€ˆ  |¡}ˆ |¡} g}|ˆj|<| ‡fdd„| Dƒ¡nŽ|d k�rˆ  |¡}ˆ |¡} ˆ |¡} ˆ ¡}|ˆj|<z.t| | ƒD]\} } ˆ | ¡|ˆ | ¡<�qÆWntk �rtƒ‚YnXntƒ‚|ˆj|<|S)!Nr§réðrórÛFé TrQr˜r÷rP©Zsignedé"z>frOé#z>dé3éÑ)Zsecondsé@éPrÉé`rúutf-16beé€é c3s|]}ˆ |¡VqdSr)rê)rùÚxrBrrrüÃsz2_BinaryPlistParser._read_object..éÐ)rérèrçrÞrßrârIrørãrärbZ timedeltarörSrrxrrÎr rþÚextendryÚziprêr.)r0ÚrefÚresultÚoffsetÚtokenZtokenHrõr,rWr*Zobj_refsZkey_refsÚkÚorrBrrêusŒ   ÿ     ÿ                     z_BinaryPlistParser._read_objectN) r@rDrEr1r�rörærþrêrrrrrÜ9s   rÜcCs,|dkr dS|dkrdS|dkr$dSdSdS)Nér§érìrOrÛr)ÚcountrrrÚ_count_to_sizeÜsrc@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)Ú_BinaryPlistWritercCs||_||_||_dSr)rÞr³r´)r0rr&r'rrrr1ìsz_BinaryPlistWriter.__init__c Csàg|_i|_i|_| |¡t|jƒ}dg||_t|ƒ|_t|j|_ |j   d¡|jD]}|  |¡qZ|  |¡}|j  ¡}t|ƒ}dt||}|j   tj|f|jžŽ¡d}|||j|||f} |j   tjd| žŽ¡dS)Nróbplist00rmú >5xBBBQQQ)r)Ú_objlistÚ _objtableÚ _objidtableÚ_flattenrSrçrrårôÚ _ref_formatrÞr®Ú _write_objectÚ _getrefnumÚtellrãÚpack) r0r(rðÚobjrñròrïZ offset_formatZ sort_versionrîrrrr®ñs2          þz_BinaryPlistWriter.writec Csrt|tƒr"t|ƒ|f|jkrZdSn8t|tƒrHt|jƒ|jf|jkrZdSnt|ƒ|jkrZdSt|j ƒ}|j   |¡t|tƒrŽ||jt|ƒ|f<n0t|tƒr°||jt|jƒ|jf<n||jt|ƒ<t|t ƒ�rHg}g}|  ¡}|j rèt|ƒ}|D]:\}}t|tƒ�s|j�r qìtdƒ‚|  |¡|  |¡qìt ||¡D]}| |¡�q4n&t|ttfƒ�rn|D]}| |¡�q\dS)NrÅ)rÚ_scalarsrˆrrr*Úidr rSrrTr»rÇr³rÆrr´r.Ú itertoolsÚchainr!rÁrÀ) r0r(ZrefnumÚkeysÚvaluesrÇrÚvrrrrr!sB           z_BinaryPlistWriter._flattencCsNt|tƒr|jt|ƒ|fSt|tƒr<|jt|jƒ|jfS|jt|ƒSdSr)rr(rrˆrr*r r)rŠrrrr$Ns   z_BinaryPlistWriter._getrefnumcCs´|dkr"|j t d||B¡¡nŽ|dkrH|j t d|dBd|¡¡nh|dkrn|j t d|dBd|¡¡nB|d kr”|j t d |dBd |¡¡n|j t d |dBd |¡¡dS)Nróz>Brz>BBBr˜rz>BBHérz>BBLéz>BBQé)rÞr®rãr&)r0rrûrrrÚ _write_sizeVsz_BinaryPlistWriter._write_sizec s¢ˆ |¡}ˆj ¡ˆj|<|dkr2ˆj d¡�nl|dkrJˆj d¡�nT|dkrbˆj d¡�nBqr1rz>BBr˜rz>BHr/rz>BLr0lz>BQrGór÷rz>Bdrrr§rrrÉrr rrrHr é�éƒé‡csg|]}ˆ |¡‘qSr)r$)rùrrBrrÚ ­sz4_BinaryPlistWriter._write_object..r rmrÅr )$r$rÞr%rçr®rrIrãr&rírºÚto_bytesrœrbZ total_secondsrr2rSr*r-r¾rr\ÚUnicodeEncodeErrorr rJrÁrÀr"r»r³rÆrÇr´r.rT) r0r(rr,ÚtZrefsrWZkeyRefsZvalRefsZ rootItemsrr.rrBrr#fsœ                    $     "$z _BinaryPlistWriter._write_objectN) r@rDrEr1r®r!r$r2r#rrrrrës -0rcCs|dd…dkS)NrÛrr)rÏrrrÚ_is_fmt_binaryËsr=)Údetectr|ÚwriterT©r!r"r{cCsl|dkrJ| d¡}| d¡t ¡D]}|d|ƒr$|d}qVq$tƒ‚n t|d}|||d�}| |¡S)NrÝrr>r|)r"r{)rârßÚ_FORMATSr-rr�)rr!r"r{rÏÚinfoÚPÚprrrr ás      cCst|ƒ}t||||d�S)Nr@)rr )r(r!r"r{rrrrr ÷sÿFr%cCs:|tkrtd|fƒ‚t|d|||d�}| |¡dS)NzUnsupported format: %rr?)r&r')rArJr®)r(rr!r&r'r?rrrr s©r!r'r&cCs tƒ}t|||||d�| ¡S)NrE)rr r+)r(r!r'r&rrrrr s)r5)BÚ__all__rUrÊÚ contextlibrbÚenumÚiorr*ràÚrerãÚwarningsrZxml.parsers.expatrÚEnumr@rÚglobalsÚupdateÚ __members__Úcontextmanagerrrrrrrr r²Úcompilernr6r2ÚASCIIr_rfrhrsrtr¡r°rÔrJrrôÚobjectrèrÜrrrIrœr-r(rr=rr»rrAr r r r rrrrÚ1s˜ý         '"ÿ    s&d!$ a ýýú