§
    qŠtjRt  ã                   óÜ  — d Z ddlmZ ddlZddlZddlZddlZddlZ	 ddlm	Z	 n# e
$ r	 ddlm	Z	 Y nw xY w	 ddlmZ n# e
$ r eZY nw xY wddlmZmZ dZdZ	 ddlmZmZ n# e
$ r ddlmZmZ eZY nw xY wd	Zd
ZdZdZej        dk    reefZ G d„ de¦  «        Z G d„ de¦  «        Z  G d„ de¦  «        Z! G d„ dee"¦  «        Z#d„ Z$ ej%        ej&        e$¬¦  «        Z'defd„Z(efd„Z) G d„ de*¦  «        Z+ G d„ de+¦  «        Z, G d„ d e+¦  «        Z- G d!„ d"e+¦  «        Z. G d#„ d$e+¦  «        Z/ G d%„ d&e+¦  «        Z0 G d'„ d(e+¦  «        Z1 G d)„ d*e*¦  «        Z2 G d+„ d,e*¦  «        Z3d-„ Z4dS ).z Apply JSON-Patches (RFC 6902) é    )Úunicode_literalsN)ÚSequence)ÚMappingProxyType)ÚJsonPointerÚJsonPointerExceptioné   )ÚMutableMappingÚMutableSequenceu    Stefan KÃ¶gl <stefan@skoegl.net>z1.33z0https://github.com/stefankoegl/python-json-patchzModified BSD License)é   r   c                   ó   — e Zd ZdZdS )ÚJsonPatchExceptionzBase Json Patch exceptionN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úG/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/jsonpatch.pyr   r   P   ó   € € € € € Ø#Ð#Ð#Ð#r   r   c                   ó   — e Zd ZdZdS )ÚInvalidJsonPatchz, Raised if an invalid JSON Patch is created Nr   r   r   r   r   r   T   s   € € € € € Ø6Ð6Ð6Ð6r   r   c                   ó   — e Zd ZdZdS )ÚJsonPatchConflicta
  Raised if patch could not be applied due to conflict situation such as:
    - attempt to add object key when it already exists;
    - attempt to operate with nonexistence object key;
    - attempt to insert value to array at position beyond its size;
    - etc.
    Nr   r   r   r   r   r   X   s   € € € € € ðð ð ð r   r   c                   ó   — e Zd ZdZdS )ÚJsonPatchTestFailedz A Test operation failed Nr   r   r   r   r   r   a   r   r   r   c                 óÐ   — t          j        t          ¦  «        }| D ] \  }}||                              |¦  «         Œ!t	          d„ |                     ¦   «         D ¦   «         ¦  «        S )z'Convert duplicate keys values to lists.c              3   óZ   K  — | ]&\  }}|t          |¦  «        d k    r|d         n|fV — Œ'dS )r   r   N)Úlen)Ú.0ÚkeyÚvaluess      r   ú	<genexpr>zmultidict.<locals>.<genexpr>l   sY   è è € ð ð ñ ˆC�ð 
�3˜v™;œ;¨!Ò+Ð+ˆf�QŒiˆi°Ð8ðð ð ð ð ð r   )ÚcollectionsÚdefaultdictÚlistÚappendÚdictÚitems)Úordered_pairsÚmdictr!   Úvalues       r   Ú	multidictr-   e   sz   € õ Ô#¥DÑ)Ô)€EØ#ð !ð !‰
ˆˆUØˆcŒ
×Ò˜%Ñ Ô Ð Ð åð ð ð !Ÿ;š;™=œ=ðñ ô ñ ô ð r   )Úobject_pairs_hookFc                 ó´   — t          |t          ¦  «        rt                               ||¬¦  «        }nt          ||¬¦  «        }|                     | |¦  «        S )a¬  Apply list of patches to specified json document.

    :param doc: Document object.
    :type doc: dict

    :param patch: JSON patch as list of dicts or raw JSON-encoded string.
    :type patch: list or str

    :param in_place: While :const:`True` patch will modify target document.
                     By default patch will be applied to document copy.
    :type in_place: bool

    :param pointer_cls: JSON pointer class to use.
    :type pointer_cls: Type[JsonPointer]

    :return: Patched document object.
    :rtype: dict

    >>> doc = {'foo': 'bar'}
    >>> patch = [{'op': 'add', 'path': '/baz', 'value': 'qux'}]
    >>> other = apply_patch(doc, patch)
    >>> doc is not other
    True
    >>> other == {'foo': 'bar', 'baz': 'qux'}
    True
    >>> patch = [{'op': 'add', 'path': '/baz', 'value': 'qux'}]
    >>> apply_patch(doc, patch, in_place=True) == {'foo': 'bar', 'baz': 'qux'}
    True
    >>> doc == other
    True
    ©Úpointer_cls)Ú
isinstanceÚ
basestringÚ	JsonPatchÚfrom_stringÚapply)ÚdocÚpatchÚin_placer1   s       r   Úapply_patchr:   x   sW   € õB �%�Ñ$Ô$ð :Ý×%Ò% e¸Ð%ÑEÔEˆˆå˜%¨[Ð9Ñ9Ô9ˆØ�;Š;�s˜HÑ%Ô%Ð%r   c                 ó<   — t                                | ||¬¦  «        S )a!  Generates patch by comparing two document objects. Actually is
    a proxy to :meth:`JsonPatch.from_diff` method.

    :param src: Data source document object.
    :type src: dict

    :param dst: Data source document object.
    :type dst: dict

    :param pointer_cls: JSON pointer class to use.
    :type pointer_cls: Type[JsonPointer]

    >>> src = {'foo': 'bar', 'numbers': [1, 3, 4, 8]}
    >>> dst = {'baz': 'qux', 'numbers': [1, 4, 7]}
    >>> patch = make_patch(src, dst)
    >>> new = patch.apply(src)
    >>> new == dst
    True
    r0   )r4   Ú	from_diff)ÚsrcÚdstr1   s      r   Ú
make_patchr?       s   € õ* ×Ò˜s C°[ÐÑAÔAÐAr   c                   ó€   — e Zd ZdZefd„Zd„ Zd„ Zd„ Zd„ Z	e
d„ ¦   «         Ze
d„ ¦   «         Zej        d	„ ¦   «         Zd
S )ÚPatchOperationz'A single operation inside a JSON Patch.c                 ó~  — || _         |                     d¦  «        st          d¦  «        ‚t          |d         | j         ¦  «        r |d         j        | _        |d         | _        nO|d         | _        	 |                       | j        ¦  «        | _        n!# t          $ r}t          d¦  «        ‚d }~ww xY w|| _        d S )NÚpathz#Operation must have a 'path' memberzInvalid 'path')	r1   Ú__contains__r   r2   rC   ÚlocationÚpointerÚ	TypeErrorÚ	operation)ÚselfrH   r1   Úexs       r   Ú__init__zPatchOperation.__init__»   sÌ   € Ø&ˆÔà×%Ò% fÑ-Ô-ð 	JÝ"Ð#HÑIÔIÐIå�i Ô'¨Ô)9Ñ:Ô:ð 	9Ø% fÔ-Ô2ˆDŒMØ$ VÔ,ˆDŒLˆLà% fÔ-ˆDŒMð9Ø#×/Ò/°´Ñ>Ô>�”�øÝð 9ð 9ð 9Ý&Ð'7Ñ8Ô8Ð8øøøøð9øøøð #ˆŒˆˆs   Á5B Â
B3ÂB.Â.B3c                 ó    — t          d¦  «        ‚)zGAbstract method that applies a patch operation to the specified object.z%should implement the patch operation.)ÚNotImplementedError)rI   Úobjs     r   r6   zPatchOperation.applyÍ   s   € å!Ð"IÑJÔJÐJr   c                 óh   — t          t          | j                             ¦   «         ¦  «        ¦  «        S ©N)ÚhashÚ	frozensetrH   r)   ©rI   s    r   Ú__hash__zPatchOperation.__hash__Ñ   s&   € Ý•I˜dœn×2Ò2Ñ4Ô4Ñ5Ô5Ñ6Ô6Ð6r   c                 óP   — t          |t          ¦  «        sdS | j        |j        k    S ©NF)r2   rA   rH   ©rI   Úothers     r   Ú__eq__zPatchOperation.__eq__Ô   s(   € Ý˜%¥Ñ0Ô0ð 	Ø�5ØŒ~ ¤Ò0Ð0r   c                 ó   — | |k     S rP   r   rW   s     r   Ú__ne__zPatchOperation.__ne__Ù   ó   € Ø˜5’=Ð!Ð!r   c                 óP   — d                      | j        j        d d…         ¦  «        S )Nú/éÿÿÿÿ)ÚjoinrF   ÚpartsrS   s    r   rC   zPatchOperation.pathÜ   s"   € à�xŠx˜œÔ*¨3¨B¨3Ô/Ñ0Ô0Ð0r   c                 ó†   — 	 t          | j        j        d         ¦  «        S # t          $ r | j        j        d         cY S w xY w)Nr_   )ÚintrF   ra   Ú
ValueErrorrS   s    r   r!   zPatchOperation.keyà   sP   € ð	*Ý�t”|Ô)¨"Ô-Ñ.Ô.Ð.øÝð 	*ð 	*ð 	*Ø”<Ô% bÔ)Ð)Ð)Ð)ð	*øøøs   ‚! ¡A ¿A c                 ó~   — t          |¦  «        | j        j        d<   | j        j        | _        | j        | j        d<   d S )Nr_   rC   )ÚstrrF   ra   rC   rE   rH   )rI   r,   s     r   r!   zPatchOperation.keyç   s7   € å!$ U¡¤ˆŒÔ˜2ÑØœÔ)ˆŒØ!%¤ˆŒ�vÑÐÐr   N)r   r   r   r   r   rK   r6   rT   rY   r[   ÚpropertyrC   r!   Úsetterr   r   r   rA   rA   ¸   sÃ   € € € € € Ø1Ð1à.9ð #ð #ð #ð #ð$Kð Kð Kð7ð 7ð 7ð1ð 1ð 1ð
"ð "ð "ð ð1ð 1ñ „Xð1ð ð*ð *ñ „Xð*ð 	„Zð/ð /ñ „Zð/ð /ð /r   rA   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚRemoveOperationz/Removes an object property or an array element.c                 ó\  — | j                              |¦  «        \  }}t          |t          ¦  «        r7t          |t          ¦  «        s"t          d                     |¦  «        ¦  «        ‚	 ||= n=# t          t          f$ r)}d                     |¦  «        }t          |¦  «        ‚d }~ww xY w|S )Nzinvalid array index '{0}'z(can't remove a non-existent object '{0}')
rF   Úto_lastr2   r   rc   r   ÚformatÚKeyErrorÚ
IndexErrorr   )rI   rN   ÚsubobjÚpartrJ   Úmsgs         r   r6   zRemoveOperation.applyñ   s·   € Ø”|×+Ò+¨CÑ0Ô0‰ˆ�å�f�hÑ'Ô'ð 	Qµ
¸4ÅÑ0EÔ0Eð 	QÝ&Ð'B×'IÒ'IÈ$Ñ'OÔ'OÑPÔPÐPð	)Ø�t��øÝ�*Ð%ð 	)ð 	)ð 	)Ø<×CÒCÀDÑIÔIˆCÝ# CÑ(Ô(Ð(øøøøð	)øøøð ˆ
s   Á+A/ Á/B)Â $B$Â$B)c                 ó^   — | j         |k    r!| j        |k    r| xj        dz  c_        n|dz  }|S ©Nr   ©rC   r!   ©rI   rC   r!   s      r   Ú_on_undo_removezRemoveOperation._on_undo_removeÿ   s9   € ØŒ9˜ÒÐØŒx˜3ŠˆØ�”˜A‘�”�à�q‘�Øˆ
r   c                 ó^   — | j         |k    r!| j        |k    r| xj        dz  c_        n|dz  }|S rt   ru   rv   s      r   Ú_on_undo_addzRemoveOperation._on_undo_add  ó9   € ØŒ9˜ÒÐØŒx˜#Š~ˆ~Ø�”˜A‘�”�à�q‘�Øˆ
r   N©r   r   r   r   r6   rw   ry   r   r   r   rj   rj   î   sG   € € € € € Ø9Ð9ðð ð ðð ð ðð ð ð ð r   rj   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚAddOperationz,Adds an object property or an array element.c                 ór  — 	 | j         d         }n!# t          $ r}t          d¦  «        ‚d }~ww xY w| j                             |¦  «        \  }}t          |t          ¦  «        r[|dk    r|                     |¦  «         n¸|t          |¦  «        k    s|dk     rt          d¦  «        ‚| 
                    ||¦  «         nyt          |t          ¦  «        r|€|}n_|||<   nY|€/t          d                     t          |¦  «        ¦  «        ¦  «        ‚t          d                     | j        |¦  «        ¦  «        ‚|S )Nr,   ú/The operation does not contain a 'value' memberú-r   zcan't insert outside of listúinvalid document type {0}ú2unable to fully resolve json pointer {0}, part {1})rH   rn   r   rF   rl   r2   r
   r'   r   r   Úinsertr	   rG   rm   ÚtyperE   )rI   rN   r,   rJ   rp   rq   s         r   r6   zAddOperation.apply  s[  € ð	CØ”N 7Ô+ˆEˆEøÝð 	Cð 	Cð 	CÝ"ØAñCô Cð Cøøøøð	Cøøøð ”|×+Ò+¨CÑ0Ô0‰ˆ�å�f�oÑ.Ô.ð 	zØ�sŠ{ˆ{Ø—’˜eÑ$Ô$Ð$Ð$à�˜F™œÒ#Ð# t¨a¢x xÝ'Ð(FÑGÔGÐGð —’˜d EÑ*Ô*Ð*Ð*å˜¥Ñ/Ô/ð 
	zØˆ|Ø��à$��t‘�ð ˆ|ÝÐ ;× BÒ BÅ4ÈÁ<Ä<Ñ PÔ PÑQÔQÐQå'Ð(\×(cÒ(cÐdhÔdqÐswÑ(xÔ(xÑyÔyÐyØˆ
ó   ‚ �
.š)©.c                 ó^   — | j         |k    r!| j        |k    r| xj        dz  c_        n|dz  }|S rt   ru   rv   s      r   rw   zAddOperation._on_undo_remove3  rz   r   c                 ó^   — | j         |k    r!| j        |k    r| xj        dz  c_        n|dz  }|S rt   ru   rv   s      r   ry   zAddOperation._on_undo_add;  rz   r   Nr{   r   r   r   r}   r}     sH   € € € € € Ø6Ð6ðð ð ð@ð ð ðð ð ð ð r   r}   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚReplaceOperationz?Replaces an object property or an array element by a new value.c                 ó†  — 	 | j         d         }n!# t          $ r}t          d¦  «        ‚d }~ww xY w| j                             |¦  «        \  }}|€|S |dk    rt          d¦  «        ‚t          |t          ¦  «        r)|t          |¦  «        k    s|dk     rt          d¦  «        ‚n—t          |t          ¦  «        r)||vr$d 
                    |¦  «        }t          |¦  «        ‚nY|€/t          d 
                    t          |¦  «        ¦  «        ¦  «        ‚t          d	 
                    | j        |¦  «        ¦  «        ‚|||<   |S )
Nr,   r   r€   z7'path' with '-' can't be applied to 'replace' operationr   zcan't replace outside of listz)can't replace a non-existent object '{0}'r�   r‚   )rH   rn   r   rF   rl   r2   r
   r   r   r	   rm   rG   r„   rE   )rI   rN   r,   rJ   rp   rq   rr   s          r   r6   zReplaceOperation.applyG  sp  € ð	CØ”N 7Ô+ˆEˆEøÝð 	Cð 	Cð 	CÝ"ØAñCô Cð Cøøøøð	Cøøøð ”|×+Ò+¨CÑ0Ô0‰ˆ�àˆ<ØˆLà�3Š;ˆ;Ý"Ð#\Ñ]Ô]Ð]å�f�oÑ.Ô.ð 	zØ•s˜6‘{”{Ò"Ð" d¨Q¢h hÝ'Ð(GÑHÔHÐHð '/õ ˜¥Ñ/Ô/ð 	zØ˜6Ð!Ð!ØA×HÒHÈÑNÔN�Ý'¨Ñ,Ô,Ð,ð "ð ˆ|ÝÐ ;× BÒ BÅ4ÈÁ<Ä<Ñ PÔ PÑQÔQÐQå'Ð(\×(cÒ(cÐdhÔdqÐswÑ(xÔ(xÑyÔyÐyàˆˆt‰Øˆ
r…   c                 ó   — |S rP   r   rv   s      r   rw   z ReplaceOperation._on_undo_removeg  ó   € Øˆ
r   c                 ó   — |S rP   r   rv   s      r   ry   zReplaceOperation._on_undo_addj  rŒ   r   Nr{   r   r   r   r‰   r‰   D  sH   € € € € € ØIÐIðð ð ð@ð ð ðð ð ð ð r   r‰   c                   óp   — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zej        d„ ¦   «         Zd„ Z	d„ Z
dS )	ÚMoveOperationz?Moves an object property or an array element to a new location.c                 óþ  — 	 t          | j        d         | j        ¦  «        r| j        d         }n |                      | j        d         ¦  «        }n!# t          $ r}t	          d¦  «        ‚d }~ww xY w|                     |¦  «        \  }}	 ||         }n5# t          t          f$ r!}t          t          |¦  «        ¦  «        ‚d }~ww xY w| j	        |k    r|S t          |t          ¦  «        r)| j	                             |¦  «        rt          d¦  «        ‚t          d| j        d         dœ| j        ¬¦  «                             |¦  «        }t          d| j        |dœ| j        ¬¦  «                             |¦  «        }|S )	NÚfromú.The operation does not contain a 'from' memberz*Cannot move values into their own childrenÚremove©ÚoprC   r0   Úadd©r•   rC   r,   )r2   rH   r1   rn   r   rl   ro   r   rf   rF   r	   Úcontainsrj   r6   r}   rE   ©rI   rN   Úfrom_ptrrJ   rp   rq   r,   s          r   r6   zMoveOperation.applyq  sÆ  € ð	BÝ˜$œ.¨Ô0°$Ô2BÑCÔCð DØœ>¨&Ô1��à×+Ò+¨D¬N¸6Ô,BÑCÔC�øøÝð 	Bð 	Bð 	BÝ"Ø@ñBô Bð Bøøøøð	Bøøøð  ×'Ò'¨Ñ,Ô,‰ˆ�ð	-Ø˜4”LˆEˆEøÝ�*Ð%ð 	-ð 	-ð 	-Ý#¥C¨¡G¤GÑ,Ô,Ð,øøøøð	-øøøð Œ<˜8Ò#Ð#ØˆJå�f�nÑ-Ô-ð 	RØ”×%Ò% hÑ/Ô/ð	Rå#Ð$PÑQÔQÐQåØØ”N 6Ô*ð
ð 
ð Ô'ð)ñ )ô )÷ */ª¨s©¬ð 	õ
 ØØ”MØð
ð 
ð Ô'ð	)ñ )ô )÷ */ª¨s©¬ð	 	ð ˆ
s0   ‚AA Á
A/ÁA*Á*A/ÂB ÂCÂ%CÃCc                 ó†   — |                       | j        d         ¦  «        }d                     |j        d d…         ¦  «        S )Nr‘   r^   r_   )r1   rH   r`   ra   ©rI   rš   s     r   Ú	from_pathzMoveOperation.from_path–  s9   € à×#Ò# D¤N°6Ô$:Ñ;Ô;ˆØ�xŠx˜œ s¨ sÔ+Ñ,Ô,Ð,r   c                 ó²   — |                       | j        d         ¦  «        }	 t          |j        d         ¦  «        S # t          $ r |j        d         cY S w xY w©Nr‘   r_   )r1   rH   rc   ra   rG   rœ   s     r   Úfrom_keyzMoveOperation.from_key›  sd   € à×#Ò# D¤N°6Ô$:Ñ;Ô;ˆð	&Ý�x”~ bÔ)Ñ*Ô*Ð*øÝð 	&ð 	&ð 	&Ø”> "Ô%Ð%Ð%Ð%ð	&øøøs   ¢< ¼AÁAc                 ó’   — |                       | j        d         ¦  «        }t          |¦  «        |j        d<   |j        | j        d<   d S rŸ   )r1   rH   rf   ra   rC   )rI   r,   rš   s      r   r    zMoveOperation.from_key£  sB   € à×#Ò# D¤N°6Ô$:Ñ;Ô;ˆÝ  ™ZœZˆŒ�rÑØ!)¤ˆŒ�vÑÐÐr   c                 ó¶   — | j         |k    r!| j        |k    r| xj        dz  c_        n|dz  }| j        |k    r!| j        |k    r| xj        dz  c_        n|dz  }|S rt   ©r�   r    rC   r!   rv   s      r   rw   zMoveOperation._on_undo_remove©  sn   € ØŒ>˜TÒ!Ð!ØŒ} Ò#Ð#Ø�” Ñ"�”�à�q‘�ØŒ9˜ÒÐØŒx˜#Š~ˆ~Ø�”˜A‘�”�à�q‘�Øˆ
r   c                 ó¶   — | j         |k    r!| j        |k    r| xj        dz  c_        n|dz  }| j        |k    r!| j        |k    r| xj        dz  c_        n|dz  }|S rt   r£   rv   s      r   ry   zMoveOperation._on_undo_add¶  sn   € ØŒ>˜TÒ!Ð!ØŒ}˜sÒ"Ð"Ø�” Ñ"�”�à�q‘�ØŒ9˜ÒÐØŒx˜#Š~ˆ~Ø�”˜A‘�”�à�q‘�Øˆ
r   N)r   r   r   r   r6   rg   r�   r    rh   rw   ry   r   r   r   r�   r�   n  s›   € € € € € ØIÐIð#ð #ð #ðJ ð-ð -ñ „Xð-ð ð&ð &ñ „Xð&ð „_ð/ð /ñ „_ð/ð
ð ð ðð ð ð ð r   r�   c                   ó   — e Zd ZdZd„ ZdS )ÚTestOperationz!Test value by specified location.c           
      óÎ  — 	 | j                              |¦  «        \  }}|€|}n| j                              ||¦  «        }n.# t          $ r!}t	          t          |¦  «        ¦  «        ‚d }~ww xY w	 | j        d         }n!# t          $ r}t          d¦  «        ‚d }~ww xY w||k    rAd}t	          | 	                    |t          |¦  «        |t          |¦  «        ¦  «        ¦  «        ‚|S )Nr,   r   z0{0} ({1}) is not equal to tested value {2} ({3}))rF   rl   Úwalkr   r   rf   rH   rn   r   rm   r„   )rI   rN   rp   rq   ÚvalrJ   r,   rr   s           r   r6   zTestOperation.applyÇ  s  € ð	/Øœ<×/Ò/°Ñ4Ô4‰LˆF�DØˆ|Ø��à”l×'Ò'¨°Ñ5Ô5�øøÝ#ð 	/ð 	/ð 	/Ý%¥c¨"¡g¤gÑ.Ô.Ð.øøøøð	/øøøð	CØ”N 7Ô+ˆEˆEøÝð 	Cð 	Cð 	CÝ"ØAñCô Cð Cøøøøð	Cøøøð �%Š<ˆ<ØDˆCÝ% c§j¢j°µd¸3±i´iØ16½¸U¹¼ñ'Eô 'Eñ Fô Fð Fð ˆ
s/   ‚=A  Á 
A+Á
A&Á&A+Á/A= Á=
BÂBÂBN©r   r   r   r   r6   r   r   r   r¦   r¦   Ä  s)   € € € € € Ø+Ð+ðð ð ð ð r   r¦   c                   ó   — e Zd ZdZd„ ZdS )ÚCopyOperationzA Copies an object property or an array element to a new location c                 óÂ  — 	 |                       | j        d         ¦  «        }n!# t          $ r}t          d¦  «        ‚d }~ww xY w|                     |¦  «        \  }}	 t          j        ||         ¦  «        }n5# t          t          f$ r!}t          t          |¦  «        ¦  «        ‚d }~ww xY wt          d| j        |dœ| j         ¬¦  «                             |¦  «        }|S )Nr‘   r’   r–   r—   r0   )r1   rH   rn   r   rl   ÚcopyÚdeepcopyro   r   rf   r}   rE   r6   r™   s          r   r6   zCopyOperation.applyâ  s  € ð	BØ×'Ò'¨¬°vÔ(>Ñ?Ô?ˆHˆHøÝð 	Bð 	Bð 	BÝ"Ø@ñBô Bð Bøøøøð	Bøøøð  ×'Ò'¨Ñ,Ô,‰ˆ�ð	-Ý”M &¨¤,Ñ/Ô/ˆEˆEøÝ�*Ð%ð 	-ð 	-ð 	-Ý#¥C¨¡G¤GÑ,Ô,Ð,øøøøð	-øøøõ ØØ”MØð
ð 
ð Ô'ð	)ñ )ô )÷ */ª¨s©¬ð	 	ð ˆ
s*   ‚ # £
A­<¼AÁA8 Á8B*Â	B%Â%B*Nrª   r   r   r   r¬   r¬   ß  s)   € € € € € ØKÐKðð ð ð ð r   r¬   c            	       ó  — e Zd Z eej        ¦  «        Z ee¦  «        Z e	e
eeeeedœ¦  «        Z	 efd„Zd„ Zd„ ZeZd„ Zd„ Zd„ Zd„ Zed	efd
„¦   «         Zedd	efd„¦   «         Zdd„Zed„ ¦   «         Zdd„Z d„ Z!d	S )r4   )r“   r–   ÚreplaceÚmoveÚtestr®   c                 ó¨   — || _         || _        | j         D ];}t          |t          ¦  «        rt	          d¦  «        ‚|                      |¦  «         Œ<d S )NzMDocument is expected to be sequence of operations, got a sequence of strings.)r8   r1   r2   r3   r   Ú_get_operation)rI   r8   r1   r•   s       r   rK   zJsonPatch.__init__2  sw   € ØˆŒ
Ø&ˆÔð ”*ð 	$ð 	$ˆBõ ˜"�jÑ)Ô)ð QÝ&ð (Pñ Qô Qð Qð ×Ò Ñ#Ô#Ð#Ð#ð	$ð 	$r   c                 ó*   — |                       ¦   «         S )zstr(self) -> self.to_string())Ú	to_stringrS   s    r   Ú__str__zJsonPatch.__str__J  s   € à�~Š~ÑÔÐr   c                 ó*   — t          | j        ¦  «        S rP   )Úboolr8   rS   s    r   Ú__bool__zJsonPatch.__bool__N  ó   € Ý�D”JÑÔÐr   c                 ó*   — t          | j        ¦  «        S rP   )Úiterr8   rS   s    r   Ú__iter__zJsonPatch.__iter__S  r¼   r   c                 óD   — t          t          | j        ¦  «        ¦  «        S rP   )rQ   ÚtupleÚ_opsrS   s    r   rT   zJsonPatch.__hash__V  s   € Ý•E˜$œ)Ñ$Ô$Ñ%Ô%Ð%r   c                 óP   — t          |t          ¦  «        sdS | j        |j        k    S rV   )r2   r4   rÂ   rW   s     r   rY   zJsonPatch.__eq__Y  s(   € Ý˜%¥Ñ+Ô+ð 	Ø�5ØŒy˜EœJÒ&Ð&r   c                 ó   — | |k     S rP   r   rW   s     r   r[   zJsonPatch.__ne__^  r\   r   Nc                 óD   — |p| j         } ||¦  «        } | ||¬¦  «        S )a¨  Creates JsonPatch instance from string source.

        :param patch_str: JSON patch as raw string.
        :type patch_str: str

        :param loads: A function of one argument that loads a serialized
                      JSON string.
        :type loads: function

        :param pointer_cls: JSON pointer class to use.
        :type pointer_cls: Type[JsonPointer]

        :return: :class:`JsonPatch` instance.
        r0   )Újson_loader)ÚclsÚ	patch_strÚloadsr1   rÆ   r8   s         r   r5   zJsonPatch.from_stringa  s4   € ð  Ð.˜sœˆØ�˜IÑ&Ô&ˆØˆs�5 kÐ2Ñ2Ô2Ð2r   Tc                 óÆ   — |p| j         }t          ||||¬¦  «        }|                     dd||¦  «         t          |                     ¦   «         ¦  «        } | ||¬¦  «        S )aC  Creates JsonPatch instance based on comparison of two document
        objects. Json patch would be created for `src` argument against `dst`
        one.

        :param src: Data source document object.
        :type src: dict

        :param dst: Data source document object.
        :type dst: dict

        :param dumps: A function of one argument that produces a serialized
                      JSON string.
        :type dumps: function

        :param pointer_cls: JSON pointer class to use.
        :type pointer_cls: Type[JsonPointer]

        :return: :class:`JsonPatch` instance.

        >>> src = {'foo': 'bar', 'numbers': [1, 3, 4, 8]}
        >>> dst = {'baz': 'qux', 'numbers': [1, 4, 7]}
        >>> patch = JsonPatch.from_diff(src, dst)
        >>> new = patch.apply(src)
        >>> new == dst
        True
        r0   Ú N)Újson_dumperÚDiffBuilderÚ_compare_valuesr&   Úexecute)	rÇ   r=   r>   ÚoptimizationÚdumpsr1   rÌ   ÚbuilderÚopss	            r   r<   zJsonPatch.from_diffu  sl   € ð> Ð.˜sœˆÝ˜c 3¨ÀÐMÑMÔMˆØ×Ò  D¨#¨sÑ3Ô3Ð3Ý�7—?’?Ñ$Ô$Ñ%Ô%ˆØˆs�3 KÐ0Ñ0Ô0Ð0r   c                 ó4   — |p| j         } || j        ¦  «        S )z!Returns patch set as JSON string.)rÌ   r8   )rI   rÑ   rÌ   s      r   r·   zJsonPatch.to_stringš  s!   € àÐ/˜tÔ/ˆØˆ{˜4œ:Ñ&Ô&Ð&r   c                 óP   — t          t          | j        | j        ¦  «        ¦  «        S rP   )rÁ   Úmaprµ   r8   rS   s    r   rÂ   zJsonPatch._opsŸ  s   € å•S˜Ô,¨d¬jÑ9Ô9Ñ:Ô:Ð:r   Fc                 óp   — |st          j        |¦  «        }| j        D ]}|                     |¦  «        }Œ|S )a5  Applies the patch to a given object.

        :param obj: Document object.
        :type obj: dict

        :param in_place: Tweaks the way how patch would be applied - directly to
                         specified `obj` or to its copy.
        :type in_place: bool

        :return: Modified `obj`.
        )r®   r¯   rÂ   r6   )rI   rN   r9   rH   s       r   r6   zJsonPatch.apply£  sD   € ð ð 	%Ý”- Ñ$Ô$ˆCàœð 	'ð 	'ˆIØ—/’/ #Ñ&Ô&ˆCˆCàˆ
r   c                 ó  — d|vrt          d¦  «        ‚|d         }t          |t          ¦  «        st          d¦  «        ‚|| j        vr"t          d                     |¦  «        ¦  «        ‚| j        |         } ||| j        ¬¦  «        S )Nr•   z&Operation does not contain 'op' memberzOperation's op must be a stringzUnknown operation {0!r}r0   )r   r2   r3   Ú
operationsrm   r1   )rI   rH   r•   rÇ   s       r   rµ   zJsonPatch._get_operation¸  s•   € Ø�yÐ Ð Ý"Ð#KÑLÔLÐLà�tŒ_ˆå˜"�jÑ)Ô)ð 	FÝ"Ð#DÑEÔEÐEà�T”_Ð$Ð$Ý"Ð#<×#CÒ#CÀBÑ#GÔ#GÑHÔHÐHàŒo˜bÔ!ˆØˆs�9¨$Ô*:Ð;Ñ;Ô;Ð;r   rP   )F)"r   r   r   ÚstaticmethodÚjsonrÑ   rÌ   Ú
_jsonloadsrÆ   r   rj   r}   r‰   r�   r¦   r¬   rÙ   r   rK   r¸   r»   Ú__nonzero__r¿   rT   rY   r[   Úclassmethodr5   r<   r·   rg   rÂ   r6   rµ   r   r   r   r4   r4   ø  s‚  € € € € € Ø�,˜tœzÑ*Ô*€KØ�,˜zÑ*Ô*€Kà!Ð!Ø!ØØ#ØØØð#ð #ñ ô €Jð,ðZ +6ð $ð $ð $ð $ð0 ð  ð  ð ð  ð  ð €Kð ð  ð  ð&ð &ð &ð'ð 'ð 'ð
"ð "ð "ð Ø*.¸Kð 3ð 3ð 3ñ „[ð3ð& à(,°DØ#ð"1ð "1ð "1ñ „[ð"1ðH'ð 'ð 'ð 'ð
 ð;ð ;ñ „Xð;ðð ð ð ð*<ð <ð <ð <ð <r   r4   c                   ór   — e Zd Zej        efd„Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ ZdS )rÍ   c                 óˆ   — || _         || _        i i g| _        g g g| _        g x| _        }|| _        || _        ||d g|d d …<   d S rP   )rÑ   r1   Úindex_storageÚindex_storage2Ú_DiffBuilder__rootÚsrc_docÚdst_doc)rI   rä   rå   rÑ   r1   Úroots         r   rK   zDiffBuilder.__init__Ê  s[   € ØˆŒ
Ø&ˆÔØ  "˜XˆÔØ! 2˜hˆÔØÐˆŒ�dØˆŒØˆŒØ˜˜tÐ$ˆˆQˆQˆQ‰ˆˆr   c                 ó  — |t          |¦  «        f}	 | j        |         }|                     |¦  «        }|€|g||<   d S ||                              |¦  «         d S # t          $ r& | j        |                              ||f¦  «         Y d S w xY wrP   )r„   rá   Úgetr'   rG   râ   )rI   r,   ÚindexÚstÚ	typed_keyÚstorageÚstoreds          r   Ústore_indexzDiffBuilder.store_indexÔ  s°   € Ø�D ™KœKÐ(ˆ	ð		?ØÔ(¨Ô,ˆGØ—[’[ Ñ+Ô+ˆFØˆ~Ø&+ W�˜	Ñ"Ð"Ð"à˜	Ô"×)Ò)¨%Ñ0Ô0Ð0Ð0Ð0øåð 	?ð 	?ð 	?ØÔ Ô#×*Ò*¨I°uÐ+=Ñ>Ô>Ð>Ð>Ð>Ð>ð	?øøøs   “*A ¿A Á,BÂBc                 ó|  — |t          |¦  «        f}	 | j        |                              |¦  «        }|r|                     ¦   «         S d S # t          $ rf | j        |         }t          t          |¦  «        dz
  dd¦  «        D ]3}||         d         |k    r|                     |¦  «        d         c cY S Œ4Y d S w xY w)Nr   r_   r   )r„   rá   rè   ÚpoprG   râ   Úranger   )rI   r,   rê   rë   rí   rì   Úis          r   Ú
take_indexzDiffBuilder.take_indexá  sé   € Ø�D ™KœKÐ(ˆ	ð		-ØÔ'¨Ô+×/Ò/°	Ñ:Ô:ˆFØð $Ø—z’z‘|”|Ð#ð$ð $øõ ð 	-ð 	-ð 	-ØÔ)¨"Ô-ˆGÝ�3˜w™<œ<¨™>¨2¨rÑ2Ô2ð -ð -�Ø˜1”:˜a”= IÒ-Ð-Ø"Ÿ;š; q™>œ>¨!Ô,Ð,Ð,Ð,Ð,Ð,ð .ð-ð -ð -ð	-øøøs   “5A ÁA)B;Â6B;Â:B;c                 óJ   — | j         }|d         }|||gx|d<   |d<   |d         S )Nr   r   ©rã   )rI   r•   ræ   Úlasts       r   rƒ   zDiffBuilder.insertî  s4   € ØŒ{ˆØ�AŒwˆØ! 4¨Ð,Ð,ˆˆQ‰�$�q‘'Ø�AŒwˆr   c                 ó4   — |\  }}}||d<   ||d<   g |d d …<   d S )Nr   r   r   )rI   ré   Ú	link_prevÚ	link_nextÚ_s        r   r“   zDiffBuilder.removeô  s1   € Ø"'Ñˆ	�9˜aØ ˆ	�!‰Ø ˆ	�!‰Øˆˆaˆaˆa‰ˆˆr   c              #   ó`   K  — | j         }|d         }||ur|d         V — |d         }||u°d S d S ©Nr   é   rõ   )rI   Ústartræ   Úcurrs       r   Ú	iter_fromzDiffBuilder.iter_fromú  sP   è è € ØŒ{ˆØ�QŒxˆØ˜$ÐÐØ�q”'ˆMˆMˆMØ˜”7ˆDð ˜$ÐÐÐÐÐÐr   c              #   ó`   K  — | j         }|d         }||ur|d         V — |d         }||u°d S d S rü   rõ   )rI   ræ   rÿ   s      r   r¿   zDiffBuilder.__iter__  sP   è è € ØŒ{ˆØ�AŒwˆØ˜$ÐÐØ�q”'ˆMˆMˆMØ˜”7ˆDð ˜$ÐÐÐÐÐÐr   c              #   óª  K  — | j         }|d         }||ur½|d         |ur–|d         |d         d         }}|j        |j        k    rpt          |¦  «        t          k    rXt          |¦  «        t          k    r@t          d|j        |j        d         dœ| j        ¬¦  «        j        V — |d         d         }Œ¤|d         j        V — |d         }||u°»d S d S )Nr   rý   r±   r,   r—   r0   )rã   rE   r„   rj   r}   r‰   rH   r1   )rI   ræ   rÿ   Úop_firstÚ	op_seconds        r   rÏ   zDiffBuilder.execute  s  è è € ØŒ{ˆØ�AŒwˆØ˜$ÐÐØ�AŒw˜dÐ"Ð"Ø&*¨1¤g¨t°A¬w°q¬z˜)�ØÔ$¨	Ô(:Ò:Ð:Ý˜X™œ­/Ò9Ð9Ý˜Y™œ­<Ò7Ð7Ý*Ø'Ø )Ô 2Ø!*Ô!4°WÔ!=ð,ð ,ð $(Ô#3ð	5ñ 5ô 5ô 6?ð	?ð ?ð ?ð
   œ7 1œ:�DØà�q”'Ô#Ð#Ð#Ð#Ø˜”7ˆDð ˜$ÐÐÐÐÐÐr   c                 óÎ  — |                       |t          ¦  «        }|�î|d         }t          |j        ¦  «        t          k    rUt          |¦  «        t          k    r=|                      |¦  «        D ]'}|                     |j        |j        ¦  «        |_        Œ(|                      |¦  «         |j	        t          ||¦  «        k    rDt          d|j	        t          ||¦  «        dœ| j        ¬¦  «        }|                      |¦  «         d S d S t          dt          ||¦  «        |dœ| j        ¬¦  «        }|                      |¦  «        }|                      ||t           ¦  «         d S )Nrý   r²   ©r•   r‘   rC   r0   r–   r—   )ró   Ú
_ST_REMOVEr„   r!   rc   r   rw   rC   r“   rE   Ú
_path_joinr�   r1   rƒ   r}   rî   Ú_ST_ADD)	rI   rC   r!   Úitemré   r•   ÚvÚnew_opÚ	new_indexs	            r   Ú_item_addedzDiffBuilder._item_added  ss  € Ø—’ ¥jÑ1Ô1ˆØÐØ�q”ˆBÝ�B”F‰|Œ|�sÒ"Ð"¥t¨C¡y¤yµCÒ'7Ð'7ØŸš¨Ñ.Ô.ð @ð @�AØ×.Ò.¨r¬w¸¼Ñ?Ô?�B”F�Fà�KŠK˜ÑÔÐØŒ{�j¨¨sÑ3Ô3Ò3Ð3Ý&Ø ØœKÝ& t¨SÑ1Ô1ð(ð (ð  $Ô/ð	1ñ 1ô 1�ð
 —’˜FÑ#Ô#Ð#Ð#Ð#ð 4Ð3õ "ØÝ" 4¨Ñ-Ô-Øð#ð #ð  Ô+ð	-ñ -ô -ˆFð
 Ÿš FÑ+Ô+ˆIØ×Ò˜T 9­gÑ6Ô6Ð6Ð6Ð6r   c                 óÂ  — t          dt          ||¦  «        dœ| j        ¬¦  «        }|                      |t          ¦  «        }|                      |¦  «        }|�é|d         }|j                             | j        ¦  «        d         }t          |¦  «        t          k    r=|                      |¦  «        D ]'}	|	                     |j        |j        ¦  «        |_        Œ(|                      |¦  «         |j        |j        k    r+t#          d|j        |j        dœ| j        ¬¦  «        }||d<   d S |                      |¦  «         d S |                      ||t&          ¦  «         d S )Nr“   r”   r0   rý   r   r²   r  )rj   r  r1   ró   r	  rƒ   rF   rl   rå   r„   r&   r   ry   rC   r!   r“   rE   r�   rî   r  )
rI   rC   r!   r
  r  ré   r  r•   Ú
added_itemr  s
             r   Ú_item_removedzDiffBuilder._item_removed5  sq  € Ý ØÝ˜t SÑ)Ô)ð"
ð "
ð Ô'ð)ñ )ô )ˆð —’ ¥gÑ.Ô.ˆØ—K’K Ñ'Ô'ˆ	ØÐØ�q”ˆBð
 œ×+Ò+¨D¬LÑ9Ô9¸!Ô<ˆJÝ�JÑÔ¥4Ò'Ð'ØŸš¨Ñ.Ô.ð =ð =�AØŸ^š^¨B¬G°R´VÑ<Ô<�B”F�Fà�KŠK˜ÑÔÐØŒ "¤+Ò-Ð-Ý&Ø Ø"œOØœKð(ð (ð  $Ô/ð	1ñ 1ô 1�ð
  &�	˜!‘��ð —’˜IÑ&Ô&Ð&Ð&Ð&ð ×Ò˜T 9­jÑ9Ô9Ð9Ð9Ð9r   c           	      ó|   — |                       t          dt          ||¦  «        |dœ| j        ¬¦  «        ¦  «         d S )Nr±   r—   r0   )rƒ   r‰   r  r1   )rI   rC   r!   r
  s       r   Ú_item_replacedzDiffBuilder._item_replacedV  sY   € Ø�ŠÕ$ØÝ˜t SÑ)Ô)Øð&
ð &
ð Ô'ð	)ñ )ô )ñ 	*ô 	*ð 	*ð 	*ð 	*r   c                 ó²  — t          |                     ¦   «         ¦  «        }t          |                     ¦   «         ¦  «        }||z
  }||z
  }|D ],}|                      |t          |¦  «        ||         ¦  «         Œ-|D ],}|                      |t          |¦  «        ||         ¦  «         Œ-||z  D ]&}|                      ||||         ||         ¦  «         Œ'd S rP   )ÚsetÚkeysr  rf   r  rÎ   )	rI   rC   r=   r>   Úsrc_keysÚdst_keysÚ
added_keysÚremoved_keysr!   s	            r   Ú_compare_dictszDiffBuilder._compare_dicts]  së   € Ý�s—x’x‘z”z‘?”?ˆÝ�s—x’x‘z”z‘?”?ˆØ Ñ(ˆ
Ø (Ñ*ˆàð 	9ð 	9ˆCØ×Ò˜t¥S¨¡X¤X¨s°3¬xÑ8Ô8Ð8Ð8àð 	7ð 	7ˆCØ×Ò˜T¥3 s¡8¤8¨S°¬XÑ6Ô6Ð6Ð6à˜hÑ&ð 	@ð 	@ˆCØ× Ò   s¨C°¬H°c¸#´hÑ?Ô?Ð?Ð?ð	@ð 	@r   c                 ó  — t          |¦  «        t          |¦  «        }}t          ||¦  «        }t          ||¦  «        }t          |¦  «        D �]1}||k     ræ||         ||         }
}	|	|
k    rŒ t	          |	t
          ¦  «        r;t	          |
t
          ¦  «        r&|                      t          ||¦  «        |	|
¦  «         Œpt	          |	t          ¦  «        r;t	          |
t          ¦  «        r&|  	                    t          ||¦  «        |	|
¦  «         ŒÀ|  
                    |||	¦  «         |                      |||
¦  «         Œï||k    r|  
                    ||||         ¦  «         �Œ|                      ||||         ¦  «         �Œ3d S rP   )r   ÚmaxÚminrñ   r2   r	   r  r  r
   Ú_compare_listsr  r  )rI   rC   r=   r>   Úlen_srcÚlen_dstÚmax_lenÚmin_lenr!   ÚoldÚnews              r   r  zDiffBuilder._compare_listsl  sŒ  € Ý˜s™8œ8¥S¨¡X¤X�ˆÝ�g˜wÑ'Ô'ˆÝ�g˜wÑ'Ô'ˆÝ˜‘>”>ð 	6ñ 	6ˆCØ�WŠ}ˆ}Ø˜sœ8 S¨¤X�S�Ø˜#’:�:Øå ¥^Ñ4Ô4ð 
5Ý˜s¥NÑ3Ô3ð
5à×'Ò'­
°4¸Ñ(=Ô(=¸sÀCÑHÔHÐHÐHå ¥_Ñ5Ô5ð 5Ý" 3­Ñ8Ô8ð5à×'Ò'­
°4¸Ñ(=Ô(=¸sÀCÑHÔHÐHÐHð ×&Ò& t¨S°#Ñ6Ô6Ð6Ø×$Ò$ T¨3°Ñ4Ô4Ð4Ð4à˜7Ò"Ð"Ø×"Ò" 4¨°#°c´(Ñ;Ô;Ð;Ñ;ð × Ò   s¨C°¬HÑ5Ô5Ð5Ñ5ð-	6ð 	6r   c                 óÔ  — t          |t          ¦  «        r<t          |t          ¦  «        r'|                      t          ||¦  «        ||¦  «         d S t          |t          ¦  «        r<t          |t          ¦  «        r'|                      t          ||¦  «        ||¦  «         d S |                      |¦  «        |                      |¦  «        k    rd S |                      |||¦  «         d S rP   )r2   r	   r  r  r
   r  rÑ   r  )rI   rC   r!   r=   r>   s        r   rÎ   zDiffBuilder._compare_valuesˆ  sà   € Ý�c�>Ñ*Ô*ð 	0Ý˜3¥Ñ/Ô/ð	0à×Ò¥
¨4°Ñ 5Ô 5°s¸CÑ@Ô@Ð@Ð@Ð@å˜�_Ñ-Ô-ð 	0Ý˜3¥Ñ0Ô0ð	0à×Ò¥
¨4°Ñ 5Ô 5°s¸CÑ@Ô@Ð@Ð@Ð@ð �ZŠZ˜‰_Œ_ §
¢
¨3¡¤Ò/Ð/ØˆFð ×Ò  c¨3Ñ/Ô/Ð/Ð/Ð/r   N)r   r   r   rÛ   rÑ   r   rK   rî   ró   rƒ   r“   r   r¿   rÏ   r  r  r  r  r  rÎ   r   r   r   rÍ   rÍ   È  sö   € € € € € à/3¬zÀ{ð %ð %ð %ð %ð?ð ?ð ?ð-ð -ð -ðð ð ðð ð ðð ð ðð ð ðð ð ð(7ð 7ð 7ð2:ð :ð :ðB*ð *ð *ð@ð @ð @ð6ð 6ð 6ð80ð 0ð 0ð 0ð 0r   rÍ   c                 ó„   — |€| S | dz   t          |¦  «                             dd¦  «                             dd¦  «        z   S )Nr^   ú~z~0z~1)rf   r±   ru   s     r   r  r  Ÿ  sA   € Ø
€{Øˆà�#‰:�˜C™œ×(Ò(¨¨dÑ3Ô3×;Ò;¸CÀÑFÔFÑFÐFr   )5r   Ú
__future__r   r$   r®   Ú	functoolsrÛ   ÚsysÚcollections.abcr   ÚImportErrorÚtypesr   r(   Újsonpointerr   r   r	  r  r	   r
   Úunicoderf   Ú
__author__Ú__version__Ú__website__Ú__license__Úversion_infoÚbytesr3   Ú	Exceptionr   r   r   ÚAssertionErrorr   r-   ÚpartialrÉ   rÜ   r:   r?   ÚobjectrA   rj   r}   r‰   r�   r¦   r¬   r4   rÍ   r  r   r   r   ú<module>r;     sY  ððB &Ð %à 'Ð 'Ð 'Ð 'Ð 'Ð 'à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø 
€
€
€
ð%Ø(Ð(Ð(Ð(Ð(Ð(Ð(øØð %ð %ð %Ø$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ð%øøøðØ&Ð&Ð&Ð&Ð&Ð&Ð&øØð ð ð àÐÐÐðøøøð :Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ð €Ø€
ðØ?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?øàð ð ð Ø;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ø
€C€C€Cðøøøð
 0€
Ø€Ø@€Ø$€ð Ô�vÒÐØ˜�€Jð$ð $ð $ð $ð $˜ñ $ô $ð $ð7ð 7ð 7ð 7ð 7Ð)ñ 7ô 7ð 7ðð ð ð ð Ð*ñ ô ð ð$ð $ð $ð $ð $Ð,¨nñ $ô $ð $ðð ð ð  ˆYÔ˜tœz¸YÐGÑGÔG€
ð &+¸ð %&ð %&ð %&ð %&ðP &1ð Bð Bð Bð Bð03/ð 3/ð 3/ð 3/ð 3/�Vñ 3/ô 3/ð 3/ðlð ð ð ð �nñ ô ð ðD1ð 1ð 1ð 1ð 1�>ñ 1ô 1ð 1ðh'ð 'ð 'ð 'ð '�~ñ 'ô 'ð 'ðTSð Sð Sð Sð S�Nñ Sô Sð Sðlð ð ð ð �Nñ ô ð ð6ð ð ð ð �Nñ ô ð ð2M<ð M<ð M<ð M<ð M<�ñ M<ô M<ð M<ð`T0ð T0ð T0ð T0ð T0�&ñ T0ô T0ð T0ðnGð Gð Gð Gð Gs-   ž% ¥3²3·> ¾AÁAÁA! Á!A3Á2A3