+
    üÐj^<  ã                  óÂ   € ^ RI Ht ^ RIHt ^ RIHtHt ^ RIHt ^ RI	H
t
 ]P                  ! ]P                  4       ! R R4      4       t ! R R	]
P                  4      tR
# )é    )Úannotations)Ú	interface)ÚipÚraw)Ú
components)Úunittestc                  ó:   € ] tR t^tR R ltR R ltR R ltRtR# )	Ú
MyProtocolc               ó    € V ^8„  d   QhRRRR/# )é   Ú	expectingz(list[tuple[bytes, dict[str, str | int]]]ÚreturnÚNone© )Úformats   "Ú;/usr/lib/python3/dist-packages/twisted/pair/test/test_ip.pyÚ__annotate__ÚMyProtocol.__annotate__   s   € ÷ )ñ )Ð"Jð )Ètñ )ó    c                	ó&   € \        V4      V n        R # ©N)Úlistr   )Úselfr   s   &&r   Ú__init__ÚMyProtocol.__init__   s   € Ü˜i›ˆŽr   c               óT   € V ^8„  d   QhRRRRRRRRRRR	RR
RRRRRRRRRRRRRRRRR/# )r   ÚdataÚbytesÚpartialÚintÚsourceÚstrÚdestÚprotocolÚversionÚihlÚtosÚtot_lenÚfragment_idÚfragment_offsetÚdont_fragmentÚmore_fragmentsÚttlr   r   r   )r   s   "r   r   r      s±   € ÷ Lñ LàðLð ðLð ð	Lð
 ðLð ðLð ðLð ðLð ðLð ðLð ðLð ðLð ðLð ðLð ðLð  
ñ!Lr   c           	     	ór  € V P                   '       g   Q R 4       hV P                   P                  ^ 4      w  pp\        \        VP	                  4       4      4      p\        4       pV F8  pVV,          VV,          8X  d   K  Q RV RVV,          : RVV,          : 24       h	  Wñ8X  g   Q RV: RV: 24       hR# )z(Got a packet when not expecting anymore.z	Expected Ú=z, got N)r   Úpopr   ÚsortedÚkeysÚlocals)r   r   r   r!   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   Ú
expectDataÚexpectKwÚexpectKwKeysÚlocalVariablesÚks   &&&&&&&&&&&&&&&     r   ÚdatagramReceivedÚMyProtocol.datagramReceived   s·   € ð" �~�~ˆ~ÐIÐIÓIˆ~Ø#Ÿ~™~×1Ñ1°!Ó4Ñˆ
�HäœF 8§=¡=£?Ó3Ó4ˆÜ›ˆãˆAà˜•˜~¨aÕ0Ö0ðJà˜1˜#˜Q˜x¨�{™o¨V°NÀ1Õ4EÑ3HÐIóJØ0ñ ð Ô!ÐK Y¨z©n¸FÀ4Á(Ð#KÓKÒ!r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚnumÚobjectÚprotor   r   r   )r   s   "r   r   r   .   s!   € ÷ ñ ˜Fð ¨6ð °dñ r   c                	ó   € R # r   r   )r   r<   r>   s   &&&r   ÚaddProtoÚMyProtocol.addProto.   s   € ár   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r9   r@   Ú__static_attributes__r   r   r   r
   r
      s   † õ)õL÷:ñ r   r
   c                  ó‚   € ] tR t^3tR R ltR R ltR R ltR R ltR	 R
 ltR R lt	R R lt
R R ltR R ltRtR# )ÚIPTestsc               ó   € V ^8„  d   QhRR/# ©r   r   r   r   )r   s   "r   r   ÚIPTests.__annotate__4   s   € ÷ .
ñ .
 4ñ .
r   c                	ó$  € \         P                  ! 4       p\        R R^ RRRRR^R^R^R	^R
^RRRRR^ R^R^À/3.4      pVP                  ^V4       VP	                  R^ RRRR7       VP
                  '       d   Q RVP
                  ,          4       hR# ©ó   foobarr   r#   ú1.2.3.4r!   ú5.6.7.8r$   r%   r&   r'   r(   r)   é­Þ  r*   éï  r+   r,   r-   Údummy©r   r#   r!   r$   ú5Should not expect any more packets, but still want %rNó   T Þ­¾ïÀFEfoobar©r   Ú
IPProtocolr
   r@   r9   r   ©r   r>   Úp1s   &  r   ÚtestPacketParsingÚIPTests.testPacketParsing4   sÈ   € Ü—’“ˆÜð à! 1Ø 	Ø  )Ø" DØ! 1Ø˜rØ˜qØ! 6Ø% vØ)¨6Ø'¨Ø(¨!Ø˜tðððó
ˆð, 	�‰�t˜RÔ à×Ñð
ð ØØØð 	ô 	
ð$ —<—<�<ð 	
ØCÀbÇlÁlÕRó	
Ð‘<r   c               ó   € V ^8„  d   QhRR/# rJ   r   )r   s   "r   r   rK   d   s   € ÷ P
ñ P
 Tñ P
r   c                	óŠ  € \         P                  ! 4       p\        R R^ RRRRR^R^R^R	^R
^RRRRR^ R^R^À/3RR^RRRRR^R^R^R	^R
^RRRRR^ R^R^À/3.4      pVP                  ^V4       VP	                  R^ RRRR7       VP	                  R^RRRR7       VP
                  '       d   Q RVP
                  ,          4       hR# )rN   r   r#   rO   r!   rP   r$   r%   r&   r'   r(   r)   rQ   r*   rR   r+   r,   r-   ó   quuxú5.4.3.2ú6.7.8.9rS   rT   rU   NrV   ó   T Þ­¾ïÀFE	quuxrW   rY   s   &  r   ÚtestMultiplePacketsÚIPTests.testMultiplePacketsd   sA  € Ü—’“ˆÜð à! 1Ø 	Ø  )Ø" DØ! 1Ø˜rØ˜qØ! 6Ø% vØ)¨6Ø'¨Ø(¨!Ø˜tððð& à! 1Ø 	Ø  )Ø" DØ! 1Ø˜rØ˜qØ! 6Ø% vØ)¨6Ø'¨Ø(¨!Ø˜tððð'%ó'
ˆðP 	�‰�t˜RÔ Ø×Ñð
ð ØØØð 	ô 	
ð" 	×Ñð
ð ØØØð 	ô 	
ð$ —<—<�<ð 	
ØCÀbÇlÁlÕRó	
Ð‘<r   c               ó   € V ^8„  d   QhRR/# rJ   r   )r   s   "r   r   rK   ¶   s   € ÷ J
ñ J
¨ñ J
r   c                	óì  € \         P                  ! 4       p\        R R^ RRRRR^R^R^R	^R
^RRRRR^ R^R^À/3.4      p\        R R^ RRRRR^R^R^R	^R
^RRRRR^ R^R^À/3.4      pVP                  ^V4       VP                  ^V4       VP	                  R^ RRRR7       VP
                  '       d   Q RVP
                  ,          4       hVP
                  '       d   Q RVP
                  ,          4       hR# rM   rW   ©r   r>   rZ   Úp2s   &   r   ÚtestMultipleSameProtosÚIPTests.testMultipleSameProtos¶   s[  € Ü—’“ˆÜð à! 1Ø 	Ø  )Ø" DØ! 1Ø˜rØ˜qØ! 6Ø% vØ)¨6Ø'¨Ø(¨!Ø˜tðððó
ˆô. ð à! 1Ø 	Ø  )Ø" DØ! 1Ø˜rØ˜qØ! 6Ø% vØ)¨6Ø'¨Ø(¨!Ø˜tðððó
ˆð. 	�‰�t˜RÔ Ø�‰�t˜RÔ à×Ñð
ð ØØØð 	ô 	
ð$ —<—<�<ð 	
ØCÀbÇlÁlÕRó	
Ðð —<—<�<ð 	
ØCÀbÇlÁlÕRó	
Ð‘<r   c               ó   € V ^8„  d   QhRR/# rJ   r   )r   s   "r   r   rK     s   € ÷ 
ñ 
 tñ 
r   c                	ó–   € \         P                  ! 4       p\        . 4      pVP                  ^V4       VP	                  R^ RRRR7       R# )é   rS   rT   NrV   )r   rX   r
   r@   r9   rY   s   &  r   ÚtestWrongProtoNotSeenÚIPTests.testWrongProtoNotSeen  sJ   € Ü—’“ˆÜ˜‹^ˆØ�‰�q˜"Ôà×Ñð
ð ØØØð 	ö 	
r   c               ó   € V ^8„  d   QhRR/# rJ   r   )r   s   "r   r   rK     s   € ÷ `
ñ `
˜dñ `
r   c                	óä  € \         P                  ! 4       p\        R R^ RRRRR^R^R^R	^R
^RRRRR^ R^R^À/3RR^RRRRR^R^R^R	^R
^RRRRR^ R^R^À/3.4      pVP                  ^V4       \        RR^RRRRR^
R^R^R	^R
^RRRRR^ R^R^À/3R R^ RRRRR^
R^R^R	^R
^RRRRR^ R^R^À/3.4      pVP                  ^
V4       VP	                  R^RRRR7       VP	                  R^ RRRR7       VP	                  R^RRRR7       VP	                  R^ RRRR7       VP
                  '       d   Q RVP
                  ,          4       hVP
                  '       d   Q RVP
                  ,          4       hR# )rN   r   r#   rO   r!   rP   r$   r%   r&   r'   r(   r)   rQ   r*   rR   r+   r,   r-   r_   r`   ra   rS   rT   rU   Ns   T Þ­¾ïÀ
FE	quuxrV   rb   s   T Þ­¾ïÀ
FEfoobarrW   rg   s   &   r   ÚtestDemuxingÚIPTests.testDemuxing  su  € Ü—’“ˆÜð à! 1Ø 	Ø  )Ø" DØ! 1Ø˜rØ˜qØ! 6Ø% vØ)¨6Ø'¨Ø(¨!Ø˜tððð& à! 1Ø 	Ø  )Ø" DØ! 1Ø˜rØ˜qØ! 6Ø% vØ)¨6Ø'¨Ø(¨!Ø˜tððð'%ó'
ˆðP 	�‰�t˜RÔ äð à! 1Ø 	Ø  )Ø" DØ! 1Ø˜rØ˜qØ! 6Ø% vØ)¨6Ø'¨Ø(¨!Ø˜tððð& à! 1Ø 	Ø  )Ø" DØ! 1Ø˜rØ˜qØ! 6Ø% vØ)¨6Ø'¨Ø(¨!Ø˜tððð'%ó'
ˆðP 	�‰�t˜RÔ à×Ñð
ð ØØØð 	ô 	
ð" 	×Ñð
ð ØØØð 	ô 	
ð" 	×Ñð
ð ØØØð 	ô 	
ð" 	×Ñð
ð ØØØð 	ô 	
ð$ —<—<�<ð 	
ØCÀbÇlÁlÕRó	
Ðð —<—<�<ð 	
ØCÀbÇlÁlÕRó	
Ð‘<r   c               ó   € V ^8„  d   QhRR/# rJ   r   )r   s   "r   r   rK   »  s   € ÷ Wñ W°ñ Wr   c                ó    € \         P                  ! 4       p VP                  ^*R4       \        R4      h  \        P
                   d     R# i ; i)z2Adding a wrong level protocol raises an exception.Ú	sillinessú2addProto must raise an exception for bad protocolsN)r   rX   r@   ÚAssertionErrorr   ÚCannotAdapt©r   Úes   & r   ÚtestAddingBadProtos_WrongLevelÚ&IPTests.testAddingBadProtos_WrongLevel»  sI   € ä�MŠM‹Oˆð	WØ�J‰J�r˜;Ô'ô !Ð!UÓVÐVøô ×%Ñ%ô 	Úð	ús   —4 ´AÁAc               ó   € V ^8„  d   QhRR/# rJ   r   )r   s   "r   r   rK   Å  s   € ÷ Wñ W¨dñ Wr   c                óÐ   € \         P                  ! 4       p VP                  R\        . 4      4       \	        R4      h  \
         d   pTP                  R8X  d    Rp?R# h Rp?ii ; i)z=Adding a protocol with a negative number raises an exception.rw   Néÿÿÿÿ)z'Added protocol must be positive or zero©r   rX   r@   r
   rx   Ú	TypeErrorÚargsrz   s   & r   ÚtestAddingBadProtos_TooSmallÚ$IPTests.testAddingBadProtos_TooSmallÅ  sX   € ä�MŠM‹Oˆð	WØ�J‰J�rœ: b›>Ô*ô !Ð!UÓVÐVøô ô 	Ø�v‰vÐEÔEÝàûð		úó   —= ½A%ÁA ÁA Á A%c               ó   € V ^8„  d   QhRR/# rJ   r   )r   s   "r   r   rK   Ò  s   € ÷ Wñ W¨Dñ Wr   c                óÐ   € \         P                  ! 4       p VP                  R\        . 4      4       \	        R4      h  \
         d   pTP                  R8X  d    Rp?R# h Rp?ii ; i)ú<Adding a protocol with a number >=2**32 raises an exception.rw   Nl        ©z"Added protocol must fit in 32 bitsr�   rz   s   & r   ÚtestAddingBadProtos_TooBigÚ"IPTests.testAddingBadProtos_TooBigÒ  sX   € ä�MŠM‹Oˆð	WØ�J‰J�uœj¨›nÔ-ô !Ð!UÓVÐVøô ô 	Ø�v‰vÐ@Ô@Ýàûð		úr†   c               ó   € V ^8„  d   QhRR/# rJ   r   )r   s   "r   r   rK   ß  s   € ÷ Wñ W¨Tñ Wr   c                óÐ   € \         P                  ! 4       p VP                  R\        . 4      4       \	        R4      h  \
         d   pTP                  R8X  d    Rp?R# h Rp?ii ; i)r‰   rw   Nl       rŠ   r�   rz   s   & r   ÚtestAddingBadProtos_TooBig2Ú#IPTests.testAddingBadProtos_TooBig2ß  sX   € ä�MŠM‹Oˆð	WØ�J‰J�y¤*¨R£.Ô1ô !Ð!UÓVÐVøô ô 	Ø�v‰vÐ@Ô@Ýàûð		úr†   r   N)rB   rC   rD   rE   r[   rc   ri   rn   rr   r|   r„   r‹   r�   rF   r   r   r   rH   rH   3   s@   † õ.
õ`P
õdJ
õX
õ.`
õDWõWõW÷Wñ Wr   rH   N)Ú
__future__r   Úzoper   Útwisted.pairr   r   Útwisted.pythonr   Útwisted.trialr   ÚimplementerÚIRawDatagramProtocolr
   ÚTestCaserH   r   r   r   Ú<module>r™      sW   ðõ #å ç  Ý %Ý "ð ×Ò�s×/Ñ/Ó0÷#ð #ó 1ð#ôLwWˆh×Ñö wWr   