Ë
    ¹ûàgR  ã                   óê   — d dl mZmZ d dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZmZmZ d dlmZmZmZ  G d„ de«      Z G d	„ d
e«      Zd„ Zd„ Zd„ Zd„ Zd„ Zde_        d„ Zd„ Zd„ Z G d„ d«      Zy)é    )ÚCounterÚdefaultdict)ÚpartialÚreduce)Úchain)Ú
attrgetterÚor_)ÚIntegrityErrorÚconnectionsÚmodelsÚtransaction)Úquery_utilsÚsignalsÚsqlc                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚProtectedErrorc                 ó4   •— || _         t        ‰| �	  ||«       y ©N)Úprotected_objectsÚsuperÚ__init__)ÚselfÚmsgr   Ú	__class__s      €úW/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django/db/models/deletion.pyr   zProtectedError.__init__   s   ø€ Ø!2ˆÔÜ‰Ñ˜Ð/Õ0ó    ©Ú__name__Ú
__module__Ú__qualname__r   Ú__classcell__©r   s   @r   r   r   
   s   ø„ ÷1ð 1r   r   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚRestrictedErrorc                 ó4   •— || _         t        ‰| �	  ||«       y r   )Úrestricted_objectsr   r   )r   r   r&   r   s      €r   r   zRestrictedError.__init__   s   ø€ Ø"4ˆÔÜ‰Ñ˜Ð0Õ1r   r   r"   s   @r   r$   r$      s   ø„ ÷2ð 2r   r$   c                 óü   — | j                  ||j                  j                  |j                  |j                  d¬«       |j                  r2t
        |   j                  j                  s| j                  |d |«       y y y )NF)ÚsourceÚsource_attrÚnullableÚfail_on_restricted)	ÚcollectÚremote_fieldÚmodelÚnameÚnullr   ÚfeaturesÚcan_defer_constraint_checksÚadd_field_update©Ú	collectorÚfieldÚsub_objsÚusings       r   ÚCASCADEr9      sn   € Ø×ÑØØ×!Ñ!×'Ñ'Ø—J‘JØ—‘Ø ð ô ð ‡z‚zœ+ eÑ,×5Ñ5×QÒQØ×"Ñ" 5¨$°Õ9ð R€zr   c           	      ó¬   — t        d|j                  j                  j                  ›d|d   j                  j                  ›d|j
                  ›d�|«      ‚)Nz'Cannot delete some instances of model 'z@' because they are referenced through a protected foreign key: 'r   ú.ú')r   r-   r.   r   r   r/   r4   s       r   ÚPROTECTr=   "   sJ   € Ý
ð ×Ñ×$Ñ$×-Ó-Ø�Q‰K×!Ñ!×*Ó*Ø�J‹Jð	
ð 	ó	ð 	r   c                 óˆ   — | j                  ||«       | j                  |j                  j                  |j                  «       y r   )Úadd_restricted_objectsÚadd_dependencyr-   r.   r4   s       r   ÚRESTRICTrA   /   s2   € Ø×$Ñ$ U¨HÔ5Ø×Ñ˜U×/Ñ/×5Ñ5°u·{±{ÕCr   c                 óV   ‡ — t        ‰ «      rˆ fd„}nˆ fd„}d|_        ˆ fd„|_        |S )Nc                 ó6   •— | j                  | ‰«       |«       y r   ©r3   ©r5   r6   r7   r8   Úvalues       €r   Úset_on_deletezSET.<locals>.set_on_delete7   s   ø€ Ø×&Ñ& u©e«g°xÕ@r   c                 ó,   •— | j                  |‰|«       y r   rD   rE   s       €r   rG   zSET.<locals>.set_on_delete<   s   ø€ Ø×&Ñ& u¨e°XÕ>r   Tc                  ó   •— d‰ fi fS )Nzdjango.db.models.SET© )rF   s   €r   ú<lambda>zSET.<locals>.<lambda>A   s   ø€ Ð)?À%ÀÈ2Ð(N€ r   )ÚcallableÚlazy_sub_objsÚdeconstruct)rF   rG   s   ` r   ÚSETrO   4   s-   ø€ Ü�„õ	Aô
	?ð '+ˆÔ#ã N€MÔØÐr   c                 ó*   — | j                  |d |«       y r   rD   r4   s       r   ÚSET_NULLrQ   E   s   € Ø×Ñ˜u d¨HÕ5r   Tc                 óF   — | j                  ||j                  «       |«       y r   )r3   Úget_defaultr4   s       r   ÚSET_DEFAULTrT   L   s   € Ø×Ñ˜u e×&7Ñ&7Ó&9¸8ÕDr   c                  ó   — y r   rJ   r4   s       r   Ú
DO_NOTHINGrV   P   s   € Ør   c                 ó4   — d„ | j                  d¬«      D «       S )Nc              3   ó€   K  — | ]6  }|j                   r(|j                  s|j                  s|j                  r|–— Œ8 y ­wr   )Úauto_createdÚconcreteÚ
one_to_oneÚone_to_many)Ú.0Úfs     r   ú	<genexpr>z4get_candidate_relations_to_delete.<locals>.<genexpr>W   s1   è ø€ ò àØ�>Š> !§*¢*°!·,²,À!Ç-Â-ô 	
ñùs   ‚<>T)Úinclude_hidden)Ú
get_fields)Úoptss    r   Ú!get_candidate_relations_to_deleterc   T   s   € ñà—‘°�Ó5ôð r   c                   ó~   — e Zd Zdd„Zdd„Zdd„Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
dd
„Zd„ Z	 	 	 	 	 	 	 dd„Zd„ Zd„ Zd„ Zd„ Zy)Ú	CollectorNc                 óê   — || _         || _        t        t        «      | _        t        t
        «      | _        t        t        t        t        «      «      | _        g | _	        t        t        «      | _
        y r   )r8   Úoriginr   ÚsetÚdataÚlistÚfield_updatesr   r&   Úfast_deletesÚdependencies)r   r8   rg   s      r   r   zCollector.__init___   sV   € ØˆŒ
àˆŒä¤Ó$ˆŒ	ä(¬Ó.ˆÔä"-¬g´kÄ3Ó.GÓ"HˆÔð ˆÔô (¬Ó,ˆÕr   c                 óÚ   — |sg S g }|d   j                   }| j                  |   }|D ]  }||vsŒ|j                  |«       Œ |j                  |«       |�|s| j	                  |||¬«       |S )a7  
        Add 'objs' to the collection of objects to be deleted.  If the call is
        the result of a cascade, 'source' should be the model that caused it,
        and 'nullable' should be set to True if the relation can be null.

        Return a list of all objects that were not already collected.
        r   ©Úreverse_dependency)r   ri   ÚappendÚupdater@   )	r   Úobjsr(   r*   rp   Únew_objsr.   Ú	instancesÚobjs	            r   ÚaddzCollector.addt   s†   € ñ ØˆIØˆØ�Q‘×!Ñ!ˆØ—I‘I˜eÑ$ˆ	Øò 	%ˆCØ˜)Ò#Ø—‘ Õ$ð	%ð 	×Ñ˜Ô"ð Ð¡hØ×Ñ ¨ÐBTÐÔUØˆr   c                 ó  — |r||}}| j                   |j                  j                     j                  |j                  j                  «       | j                  j                  || j                  j                  «       «       y r   )rm   Ú_metaÚconcrete_modelrw   ri   Ú
setdefaultÚdefault_factory)r   r.   Ú
dependencyrp   s       r   r@   zCollector.add_dependencyŒ   sc   € ÙØ *¨E�:ˆEØ×Ñ˜%Ÿ+™+×4Ñ4Ñ5×9Ñ9Ø×Ñ×+Ñ+ô	
ð 	�	‰	×Ñ˜Z¨¯©×)BÑ)BÓ)DÕEr   c                 óD   — | j                   ||f   j                  |«       y)z‰
        Schedule a field update. 'objs' must be a homogeneous iterable
        collection of model instances (e.g. a QuerySet).
        N)rk   rq   )r   r6   rF   rs   s       r   r3   zCollector.add_field_update”   s!   € ð
 	×Ñ˜5 %˜<Ñ(×/Ñ/°Õ5r   c                 ój   — |r1|d   j                   }| j                  |   |   j                  |«       y y )Nr   )r   r&   rr   )r   r6   rs   r.   s       r   r?   z Collector.add_restricted_objects›   s7   € ÙØ˜‘G×%Ñ%ˆEØ×#Ñ# EÑ*¨5Ñ1×8Ñ8¸Õ>ð r   c                 ó°   — || j                   v rB| j                   |   j                  «       D ��ci c]  \  }}|||z
  “Œ c}}| j                   |<   y y c c}}w r   )r&   Úitems)r   r.   rs   r6   r�   s        r   Ú!clear_restricted_objects_from_setz+Collector.clear_restricted_objects_from_set    s`   € Ø�D×+Ñ+Ñ+ð %)×$;Ñ$;¸EÑ$B×$HÑ$HÓ$J÷.á �E˜5ð �u˜t‘|Ñ#ó.ˆD×#Ñ# EÒ*ð ,ùó.s   ¯Ac           
      ó   — || j                   v rjt        |j                  | j                   |   j                  «       D ��cg c]  }|D ]  }|j                  ‘Œ Œ c}}¬«      «      }| j                  ||«       y y c c}}w )N)Úpk__in)r&   rh   ÚfilterÚvaluesÚpkr‚   )r   r.   Úqsrs   rv   s        r   Ú&clear_restricted_objects_from_querysetz0Collector.clear_restricted_objects_from_queryset§   sŒ   € Ø�D×+Ñ+Ñ+ÜØ—	‘	ð %)×$;Ñ$;¸EÑ$B×$IÑ$IÓ$K÷à Ø#'òð  ð Ÿ›ðØóð ó óˆDð ×2Ñ2°5¸$Õ?ð ,ùós   ¿A:c                 ó‚   — t         j                  j                  |«      xs t         j                  j                  |«      S r   )r   Ú
pre_deleteÚhas_listenersÚpost_delete)r   r.   s     r   Ú_has_signal_listenerszCollector._has_signal_listeners´   s7   € Ü×!Ñ!×/Ñ/Øó
ò 6ä× Ñ ×.Ñ.¨uÓ5ð	6r   c                 ó  ‡— ‰r‰j                   j                  t        uryt        |d«      r|j                  j
                  }n&t        |d«      rt        |d«      r|j
                  }ny| j                  |«      ry|j                  }t        ˆfd„|j                  j                  j                  j                  «       D «       «      xr: t        d„ t        |«      D «       «      xr t        d„ |j                  D «       «       S )aÏ  
        Determine if the objects in the given queryset-like or single object
        can be fast-deleted. This can be done if there are no cascades, no
        parents and no signal listeners for the object class.

        The 'from_field' tells where we are coming from - we need this to
        determine if the objects are in fact to be deleted. Allow also
        skipping parent -> child -> parent chain preventing fast delete of
        the child.
        Fry   r.   Ú_raw_deletec              3   ó(   •K  — | ]	  }|‰k(  –— Œ y ­wr   rJ   )r]   ÚlinkÚ
from_fields     €r   r_   z,Collector.can_fast_delete.<locals>.<genexpr>Ò   s   øè ø€ ò àð ˜
Õ"ñùs   ƒc              3   óh   K  — | ]*  }|j                   j                  j                  t        u –— Œ, y ­wr   )r6   r-   Ú	on_deleterV   )r]   Úrelateds     r   r_   z,Collector.can_fast_delete.<locals>.<genexpr>Ø   s-   è ø€ ò àð —‘×*Ñ*×4Ñ4¼
ÔBñùs   ‚02c              3   ó4   K  — | ]  }t        |d «      –— Œ y­w)Úbulk_related_objectsN)Úhasattr)r]   r6   s     r   r_   z,Collector.can_fast_delete.<locals>.<genexpr>Þ   s    è ø€ ò àô ˜EÐ#9×:ñùó   ‚)r-   r•   r9   r™   ry   r.   rŽ   Úallrz   Úparentsr†   rc   ÚanyÚprivate_fields)r   rs   r“   r.   rb   s     `  r   Úcan_fast_deletezCollector.can_fast_delete¹   sï   ø€ ñ ˜*×1Ñ1×;Ñ;Ä7ÑJØÜ�4˜Ô!Ø—J‘J×$Ñ$‰EÜ�T˜7Ô#¬°°mÔ(DØ—J‘J‰EàØ×%Ñ% eÔ,Øð �{‰{ˆäó à ×/Ñ/×5Ñ5×=Ñ=×DÑDÓFôó ò ô ñ ä@ÀÓFôó òô ñ à!%×!4Ñ!4ôó ð ð	
r   c                 ó,  — |D �cg c]  }|j                   ‘Œ }}t        t        | j                     j                  j                  ||«      d«      }t        |«      |kD  r*t        dt        |«      |«      D �cg c]
  }||||z    ‘Œ c}S |gS c c}w c c}w )zT
        Return the objs in suitably sized batches for the used connection.
        é   r   )r/   Úmaxr   r8   ÚopsÚbulk_batch_sizeÚlenÚrange)r   rs   Úfieldsr6   Úfield_namesÚconn_batch_sizeÚis          r   Úget_del_batcheszCollector.get_del_batcheså   s�   € ð 06Ö6 e�u—z“zÐ6ˆÐ6ÜÜ˜Ÿ
™
Ñ#×'Ñ'×7Ñ7¸ÀTÓJÈAó
ˆô ˆt‹9�Ò&ô ˜q¤# d£)¨_Ó=öàð �Q˜˜_Ñ,Ò-òð ð
 �6ˆMùò 7ùò
s   …BÁ7Bc	           
      óZ
  — | j                  |«      r| j                  j                  |«       y| j                  ||||¬«      }	|	sy|	d   j                  }
|s�|
j
                  j                  }|j
                  j                  j                  «       D ]S  }|sŒ|	D �cg c]  }t        ||j                  «      ‘Œ }}| j                  ||
|j                  j                  ddd¬«       ŒU |syt        t        «      }t        t        «      }t!        |
j
                  «      D �]S  }|r#|j"                  |
j
                  j$                  v rŒ)|j&                  }|j                  j(                  }|t*        k(  rŒU|j,                  }| j                  ||¬«      r||   j                  |«       Œ‰| j/                  |	|g«      }|D ]³  }| j1                  ||g|«      }|j2                  j4                  sa| j7                  |«      sPt9        t;        j<                  d„ t!        |j
                  «      D «       «      «      } |j>                  tA        |«      Ž }t        |d	d«      s|sŒž	  || ||| jB                  «       Œµ �ŒV |rVtE        d|
jF                  ›ddjK                  |«      ›d�t9        t;        j<                  |j                  «       «      «      «      ‚|jM                  «       D ]L  \  }}| j/                  |	|«      }|D ]0  }| j1                  |||«      }| j                  j                  |«       Œ2 ŒN |
j
                  jN                  D ]@  }tQ        |d«      sŒ|jS                  |	| jB                  «      }| j                  ||
dd¬«       ŒB |�rK| jT                  jM                  «       D ]  \  }}| jW                  ||«       Œ | j                  D ]  }| jY                  |j"                  |«       Œ  | jZ                  j                  «       rÏt        t        «      }| jZ                  jM                  «       D ]J  \  }}|jM                  «       D ]2  \  }}|sŒ	d
|jF                  ›d|j                  ›d
�}||xx   |z  cc<   Œ4 ŒL |rVt]        d|
jF                  ›ddjK                  |«      ›d�t9        t;        j<                  |j                  «       «      «      «      ‚yyyc c}w # tD        $ rI}d
|j"                  jF                  ›d|j                  ›d
�}||xx   |jH                  z  cc<   Y d}~�Œjd}~ww xY w)a¦  
        Add 'objs' to the collection of objects to be deleted as well as all
        parent instances.  'objs' must be a homogeneous iterable collection of
        model instances (e.g. a QuerySet).  If 'collect_related' is True,
        related objects will be handled by their respective on_delete handler.

        If the call is the result of a cascade, 'source' should be the model
        that caused it and 'nullable' should be set to True, if the relation
        can be null.

        If 'reverse_dependency' is True, 'source' will be deleted before the
        current model, rather than after. (Needed for cascading to parent
        models, the one case in which the cascade follows the forwards
        direction of an FK rather than the reverse direction.)

        If 'keep_parents' is True, data of parent model's will be not deleted.

        If 'fail_on_restricted' is False, error won't be raised even if it's
        prohibited to delete such objects due to RESTRICT, that defers
        restricted object checking in recursive calls where the top-level call
        may need to collect more objects to determine whether restricted ones
        can be deleted.
        Nro   r   FT)r(   r)   Úcollect_relatedrp   r+   )r“   c              3   óV   K  — | ]!  }d „ |j                   j                  D «       –— Œ# y­w)c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   )Úattname)r]   Úrfs     r   r_   z.Collector.collect.<locals>.<genexpr>.<genexpr>Q  s   è ø€ ÒS¨B˜RŸZ�ZÑSùrš   N)r6   Úforeign_related_fields)r]   Úrels     r   r_   z$Collector.collect.<locals>.<genexpr>P  s+   è ø€ ò ,à #ñ T°#·)±)×2RÑ2R×SÐSñ,ùs   ‚')rM   r<   r;   z&Cannot delete some instances of model z= because they are referenced through protected foreign keys: z, r˜   )r(   r*   r+   z> because they are referenced through restricted foreign keys: )/rŸ   rl   rq   rw   r   ry   rz   rœ   r†   Úgetattrr/   r,   r-   Úrelated_namer   rj   rc   r.   Úall_parentsr6   r•   rV   Úrelated_modelr«   Úrelated_objectsÚqueryÚselect_relatedrŽ   rh   r   Úfrom_iterableÚonlyÚtupler8   r   r   r   Újoinr�   rž   r™   r˜   ri   r‚   r‰   r&   r$   ) r   rs   r(   r*   r­   r)   rp   Úkeep_parentsr+   rt   r.   rz   Úptrrv   Úparent_objsÚmodel_fast_deletesr   r–   r6   r•   r·   ÚbatchesÚbatchr7   Úreferenced_fieldsÚerrorÚkeyÚrelated_fieldsru   rˆ   r&   r§   s                                    r   r,   zCollector.collectõ   só  € ðD ×Ñ Ô%Ø×Ñ×$Ñ$ TÔ*ØØ—8‘8Ø�&˜(Ð7Ið ó 
ˆñ Øà˜‘×%Ñ%ˆáð #Ÿ[™[×7Ñ7ˆNØ%×+Ñ+×3Ñ3×:Ñ:Ó<ò 
�ÚØEMÖ"N¸c¤7¨3°·±Õ#9Ð"N�KÐ"NØ—L‘LØ#Ø$Ø$'×$4Ñ$4×$AÑ$AØ(-Ø+/Ø+0ð !õ ð
ñ Øä(¬Ó.ÐÜ'¬Ó-ÐÜ8¸¿¹ÓEó '	JˆGá §¡°·±×1HÑ1HÑ HØØ—M‘MˆEØ×*Ñ*×4Ñ4ˆIØœJÒ&ØØ#×1Ñ1ˆMØ×#Ñ# M¸eÐ#ÔDØ" =Ñ1×8Ñ8¸Ô?ØØ×*Ñ*¨8°e°WÓ=ˆGØ ò J�Ø×/Ñ/°À¸wÈÓN�ð —N‘N×1Ò1Ø×1Ñ1°-Ô@ä(+Ü×+Ñ+ñ ,ä'HØ -× 3Ñ 3ó(ô,ó ó)Ð%ð  -˜xŸ}™}¬eÐ4EÓ.FÐG�HÜ˜9 o°uÔ=ÂðJÙ! $¨¨x¸¿¹ÕDò/Jð'	JñP Ý ð —N“NØ—I‘IÐ/Õ0ð	ô ”E×'Ñ'Ð(9×(@Ñ(@Ó(BÓCÓDóð ð .@×-EÑ-EÓ-Gò 	3Ñ)ˆM˜>Ø×*Ñ*¨8°^ÓDˆGØ ò 3�Ø×/Ñ/°¸~ÈuÓU�Ø×!Ñ!×(Ñ(¨Õ2ñ3ð	3ð
 —[‘[×/Ñ/ò 	ˆEÜ�uÐ4Õ5à ×5Ñ5°hÀÇ
Á
ÓK�Ø—‘Ø U°TÈeð õ ð		ò ð -1¯I©I¯O©OÓ,=ò QÑ(�˜yØ×6Ñ6°}ÀiÕPðQà×'Ñ'ò J�Ø×;Ñ;¸B¿H¹HÀbÕIðJà×&Ñ&×-Ñ-Ô/Ü%0´Ó%6Ð"Ø-1×-DÑ-D×-JÑ-JÓ-Lò <Ñ)�M 6Ø'-§|¡|£~ò <™˜˜tÛØ/<×/EÓ/EÀuÇzÃzÐ"R˜CØ.¨sÓ3°tÑ;Ô3ñ<ð<ñ
 &Ý)ð
 "ŸN›NØ ŸI™IÐ&8Õ9ðô œE×/Ñ/Ð0B×0IÑ0IÓ0KÓLÓMó	ð 	ð &ð 0ð ùò[ #Oøôf *ó JØ+0¯;©;×+?Ó+?ÀÇÃÐL˜Ø)¨#Ó.°%×2IÑ2IÑI×.Ñ.ûðJús   ÂSÉSÓ	T*Ó!>T%Ô%T*c                 ó   — t         j                  j                  |D �cg c]  }|j                  › d�|f‘Œ c}t         j                  j                  ¬«      }|j
                  j                  | j                  «      j                  |«      S c c}w )zQ
        Get a QuerySet of the related model to objs via related fields.
        Ú__in)Ú	connector)r   ÚQÚcreater/   ÚORÚ_base_managerr8   r…   )r   r·   rÈ   rs   Úrelated_fieldÚ	predicates         r   r¸   zCollector.related_objects�  sy   € ô  —M‘M×(Ñ(ØFTÖU°]�×#Ñ#Ð$ DÐ)¨4Ò0ÒUÜ!—m‘m×&Ñ&ð )ó 
ˆ	ð ×*Ñ*×0Ñ0°·±Ó<×CÑCÀIÓNÐNùò Vs   žBc              #   ój   K  — | j                   j                  «       D ]  \  }}|D ]  }||f–— Œ
 Œ y ­wr   )ri   r�   )r   r.   ru   rv   s       r   Úinstances_with_modelzCollector.instances_with_model™  s>   è ø€ Ø $§	¡	§¡Ó 1ò 	!ÑˆE�9Ø ò !�Ø˜S�jÓ ñ!ñ	!ùs   ‚13c                 ó  — g }t        «       }t        | j                  «      }t        |«      t        |«      k  r¤d}|D ]‚  }||v rŒ| j                  j                  |j                  j                  «      }|r|j                  |«      rŒK|j                  |«       |j                  |j                  j                  «       d}Œ„ |sy t        |«      t        |«      k  rŒ¤|D �ci c]  }|| j                  |   “Œ c}| _        y c c}w )NFT)rh   rj   ri   r¥   rm   Úgetry   rz   Ú
differencerq   rw   )r   Úsorted_modelsÚconcrete_modelsr   Úfoundr.   rm   s          r   ÚsortzCollector.sortž  sç   € ØˆÜ›%ˆÜ�d—i‘i“ˆÜ�-Ó ¤3 v£;Ò.ØˆEØò !�Ø˜MÑ)ØØ#×0Ñ0×4Ñ4°U·[±[×5OÑ5OÓP�Ù$¨×)@Ñ)@ÀÕ)QØ!×(Ñ(¨Ô/Ø#×'Ñ'¨¯©×(BÑ(BÔCØ ‘Eð!ñ Øô �-Ó ¤3 v£;Ó.ð ;HÖH°�U˜DŸI™I eÑ,Ñ,ÒHˆ�	ùÒHs   Ã!Dc           
      ó 
  — | j                   j                  «       D ](  \  }}t        |t        d«      ¬«      | j                   |<   Œ* | j	                  «        t        «       }t        | j                   «      dk(  rÔt        «      dk(  rÆt        |«      d   }| j                  |«      r§t        j                  | j                  «      5  t        j                  «      j                  |j                  g| j                  «      }d d d «       t!        |j"                  j                  j$                  d «       |j"                  j&                  |ifS t        j(                  | j                  d¬«      5  | j+                  «       D ]S  \  }}|j"                  j,                  rŒt.        j0                  j3                  ||| j                  | j4                  ¬«       ŒU | j6                  D ]L  }|j9                  | j                  ¬«      }|sŒ"||j:                  j"                  j&                  xx   |z  cc<   ŒN | j<                  j                  «       D ]ý  \  \  }}	}
g }g }|
D ]K  }t?        |t@        jB                  «      r|jD                  €|jG                  |«       Œ;|jI                  |«       ŒM |r.tK        tL        |«      } |jN                  d	i |jP                  |	i¤Ž |sŒ�|d   jR                  }t        jT                  |«      }|jW                  t        |D �ch c]  }|j                  ’Œ c}«      |jP                  |	i| j                  «       Œÿ | j                   jY                  «       D ]  }|j[                  «        Œ | j                   j                  «       D ]Ç  \  }}t        j                  |«      }|D �cg c]  }|j                  ‘Œ }}|j                  || j                  «      }|r!||j"                  j&                  xx   |z  cc<   |j"                  j,                  rŒŠ|D ]9  }t.        j\                  j3                  ||| j                  | j4                  ¬«       Œ; ŒÉ 	 d d d «       | j                   j                  «       D ]7  \  }}|D ]-  }t!        ||j"                  j                  j$                  d «       Œ/ Œ9 t_        |jY                  «       «      ta        |«      fS # 1 sw Y   �ŒàxY wc c}w c c}w # 1 sw Y   Œ˜xY w)
Nr‡   )rÇ   r¡   r   F)r8   Ú	savepoint)ÚsenderÚinstancer8   rg   )r8   rJ   )1ri   r�   Úsortedr   rÚ   r   r¥   rj   rŸ   r   Úmark_for_rollback_on_errorr8   r   ÚDeleteQueryÚdelete_batchr‡   Úsetattrry   r°   ÚlabelÚatomicrÓ   rY   r   r‹   Úsendrg   rl   r�   r.   rk   Ú
isinstancer   ÚQuerySetÚ_result_cacherq   Úextendr   r	   rr   r/   r   ÚUpdateQueryÚupdate_batchr†   Úreverser�   ÚsumÚdict)r   r.   ru   Údeleted_counterrÞ   Úcountrv   rˆ   r6   rF   Úinstances_listÚupdatesrs   Úcombined_updatesr¹   Úpk_lists                   r   ÚdeletezCollector.delete°  s;  € à $§	¡	§¡Ó 1ò 	GÑˆE�9Ü% i´ZÀÓ5EÔFˆD�I‰I�eÒð	Gð 	�	‰	Œä!›)ˆô ˆt�y‰y‹>˜QÒ¤3 y£>°QÒ#6Ü˜I“ qÑ)ˆHØ×#Ñ# HÔ-Ü ×;Ñ;¸D¿J¹JÓGñ ÜŸO™O¨EÓ2×?Ñ?Ø!Ÿ™˜ t§z¡zó�E÷ô ˜ %§+¡+§.¡.×"8Ñ"8¸$Ô?Ø˜uŸ{™{×0Ñ0°%Ð8Ð8Ð8ä×Ñ d§j¡j¸EÔBñ :	à"×7Ñ7Ó9ò ‘
��sØ—{‘{×/Ó/Ü×&Ñ&×+Ñ+Ø$Ø!$Ø"Ÿj™jØ#Ÿ{™{ð	 ,õ ðð ×'Ñ'ò C�ØŸ™¨T¯Z©Z˜Ó8�ÚØ# B§H¡H§N¡N×$8Ñ$8Ó9¸UÑBÔ9ðCð 37×2DÑ2D×2JÑ2JÓ2Lò Ñ.‘�˜ Ø�Ø�Ø!/ò /�Iä" 9¬f¯o©oÔ>Ø%×3Ñ3Ð;àŸ™ yÕ1àŸ™ IÕ.ð/ñ Ü'-¬c°7Ó';Ð$Ø+Ð$×+Ñ+ÑB¨u¯z©z¸5Ð.AÒBÚØ  ™G×-Ñ-�EÜŸO™O¨EÓ2�EØ×&Ñ&Ü°Ö5¨˜cŸf›fÒ5Ó6¸¿¹ÀUÐ8KÈTÏZÉZõð#ð, "ŸY™Y×-Ñ-Ó/ò $�	Ø×!Ñ!Õ#ð$ð %)§I¡I§O¡OÓ$5ò Ñ ��yÜŸ™¨Ó.�Ø-6Ö7 c˜3Ÿ6›6Ð7�Ð7Ø×*Ñ*¨7°D·J±JÓ?�ÙØ# E§K¡K×$5Ñ$5Ó6¸%Ñ?Ó6à—{‘{×/Ó/Ø(ò ˜Ü×+Ñ+×0Ñ0Ø#(Ø%(Ø"&§*¡*Ø#'§;¡;ð	 1õ ññ÷Y:	ðx !%§	¡	§¡Ó 1ò 	@ÑˆE�9Ø%ò @�Ü˜ %§+¡+§.¡.×"8Ñ"8¸$Õ?ñ@ð	@ô �?×)Ñ)Ó+Ó,¬d°?Ó.CÐCÐC÷Mñ üòV 6ùò 8÷]:	ð :	úsS   Ã;SÅ--S4ÆA&S4ÈCS4Ë8S4ÌS*Ì$BS4Î1S/ÏAS4ÐA S4ÓS'Ó*
S4Ó4S=r   )NFF)F)NFTNFFT)r   r   r    r   rw   r@   r3   r?   r‚   r‰   rŽ   rŸ   r«   r,   r¸   rÓ   rÚ   rö   rJ   r   r   re   re   ^   sm   „ ó-ó*ó0Fò6ò?ò
ò@ò6ó
*
òXð& ØØØØ ØØóXòtOò!ò
Ió$VDr   re   N) Úcollectionsr   r   Ú	functoolsr   r   Ú	itertoolsr   Úoperatorr   r	   Ú	django.dbr
   r   r   r   Údjango.db.modelsr   r   r   r   r$   r9   r=   rA   rO   rQ   rM   rT   rV   rc   re   rJ   r   r   ú<module>rý      sw   ðß ,ß %Ý ß $ç FÓ Fß 6Ñ 6ô1�^ô 1ô2�nô 2ò	:ò
òDò
ò"6ð €Ô òEò	ò÷hDò hDr   