+
    üÐjs}  ã                   óF  € ^ RI t ^ RIHtHt ^ RIHtHt ^ RIHtH	t	H
t
HtHtHtHtHtHtHtHtHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt R	 tR
 tR tR t ]!! 4       t"R t#R t$]$! R^. RCO. RDO. REO. RFO. RGO. RHO. RIO. RJO. RKO. RLO. RMO. RNO. ROO. RPO. RQO. RRO.] PJ                  ! R4      R7      t&]$! 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,.R-R...] PJ                  ! R/4      R7      t' ! R0 R14      t( ! R2 R34      t)R4t* ! R5 R6])4      t+A* ! R7 R8]+]PX                  4      t- ! R9 R:]+]PX                  4      t. ! R; R<]+]PX                  4      t/ ! R= R>]+]PX                  4      t0 ! R? R@]PX                  ])4      t1 ! RA RB]PX                  4      t2R# )Sé    N)ÚOptionalÚType)ÚValueConstantÚValues)ÚBLINKÚCS_ALTERNATEÚCS_ALTERNATE_SPECIALÚ
CS_DRAWINGÚCS_UKÚCS_USÚG0ÚG1Ú	UNDERLINEÚClientProtocolÚServerProtocolÚmodesÚprivateModes)ÚProtocol)ÚStringTransport)Ú	iterbytes)Úunittestc                 ó(   € \         \        V `  V4      # ©N)ÚsuperÚMockÚ__getattribute__)ÚmockÚnames   &&ÚA/usr/lib/python3/dist-packages/twisted/conch/test/test_insults.pyÚ_getattrr       s   € Ü”�tÑ-¨dÓ3Ð3ó    c                 ó   € \        V R 4      # )Úoccurrences©r    ©r   s   &r   r#   r#   #   s   € Ü�D˜-Ó(Ð(r!   c                 ó   € \        V R 4      # )Úmethodsr$   r%   s   &r   r'   r'   '   s   € Ü�D˜)Ó$Ð$r!   c                 ó:   € \        V 4      P                  V4       R # r   )r#   Úappend)r   Úobjs   &&r   Ú_appendr+   +   s   € Ü�Ó×Ñ˜SÖ!r!   c                óH   € \        \        V ^,          V,          .4      4      # )aÙ  
Return the byte in 7- or 8-bit code table identified by C{column}
and C{row}.

"An 8-bit code table consists of 256 positions arranged in 16
columns and 16 rows.  The columns and rows are numbered 00 to 15."

"A 7-bit code table consists of 128 positions arranged in 8
columns and 16 rows.  The columns are numbered 00 to 07 and the
rows 00 to 15 (see figure 1)."

p.5 of "Standard ECMA-35: Character Code Structure and Extension
Techniques", 6th Edition (December 1994).
)ÚbytesÚ	bytearray)ÚcolumnÚrows   &&r   Ú_ecmaCodeTableCoordinater1   2   s    € ô" ”˜V q�[¨CÕ/Ð0Ó1Ó2Ð2r!   c                 óò   € \        V4       UUUU u/ uF?  w  rE\        V4       F+  w  r`V '       g   K  V \        \        Wa,           V4      4      bK-  	  KA  	  ppppp W7R &   \        X \        3V4      # u up pppi )Ú__doc__)Ú	enumerater   r1   Útyper   )r   Ú	colOffsetÚnamesÚdocÚjr0   ÚiÚattrss   &&&&    r   Ú_makeControlFunctionSymbolsr<   F   sx   € ô   Ô&öá&‰FˆAÜ  –~‰GˆAÜô 	HˆŒmÔ4°Qµ]ÀAÓFÓGÒGá%ñ 	Ù&ð 
ó ð ˆ)ÑÜ�”v�i Ó'Ð'ùõs
   ‘A1
²$A1
ÚCSFinalByteaW  
    Symbolic constants for all control sequence final bytes
    that do not imply intermediate bytes.  This happens to cover
    movement control sequences.

    See page 11 of "Standard ECMA 48: Control Functions for Coded
    Character Sets", 5th Edition (June 1991).

    Each L{ValueConstant} maps a control sequence name to L{bytes}
    )r6   r7   r8   Ú
C1SevenBitÚDCSÚPU1ÚBPHÚPU2ÚNBHÚSTSÚCCHÚNELÚMWÚSSAÚSPAÚESAÚEPAÚHTSÚSOSÚHTJÚVTSÚSCIÚPLDÚCSIÚPLUÚSTÚRIÚOSCÚSS2ÚPMÚSS3ÚAPCa   
    Symbolic constants for all 7 bit versions of the C1 control functions

    See page 9 "Standard ECMA 48: Control Functions for Coded
    Character Sets", 5th Edition (June 1991).

    Each L{ValueConstant} maps a control sequence name to L{bytes}
    c                   ó>   a € ] tR t^œt o ]tR]3R ltR tR tRt	V t
R# )r   Nc                óP   € . V n         Vf   / pWn        V\        Jd	   W n        R# R# )zi
@param methods: Mapping of names to return values
@param callReturnValue: object __call__ should return
N)r#   r'   ÚdefaultÚcallReturnValue)Úselfr'   r^   s   &&&r   Ú__init__ÚMock.__init__Ÿ   s.   € ð
 ˆÔØŠ?ØˆGØŒØ¤'Ó)Ø#2Ö ñ *r!   c                ód   € \        V R 4      pV\        J d   \        4       p\        V RW1V34       V# )r^   Ú__call__)r    r]   r   r+   )r_   ÚaÚkwÚreturnValues   &*, r   rc   ÚMock.__call__«   s5   € Ü˜tÐ%6Ó7ˆØœ'Ó!Ü›&ˆKä��z ;°2Ð6Ô7ØÐr!   c                ó~   € \        V R 4      pW9   d   \        W!,          R7      pM
\        4       p\        WV34       V# )r'   )r^   )r    r   r+   )r_   r   r'   Ú	attrValues   &&  r   r   ÚMock.__getattribute__³   s9   € Ü˜4 Ó+ˆØŒ?Ü¨W­]Ô;‰Iä›ˆIä�˜YÐ'Ô(ØÐr!   )r^   r'   r#   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r]   r^   r`   rc   r   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r   œ   s#   ø‡ € Ø€Oà#°Wô 
3ò÷ð r!   r   c                   ó.   a € ] tR t^¾t o R/ 3R ltRtV tR# )Ú	MockMixinc                ó   € Vw  rVV P                  WR4       V P                  \        \        V4      4      ^4       \        V4      w  w  rxršV P                  VR4       V P                  W“4       V P                  W¤4       V# )é   rc   )ÚassertEqualÚlenr#   )r_   Ú
occurrenceÚ
methodNameÚexpectedPositionalArgsÚexpectedKeywordArgsÚattrr   ÚcallÚresultÚargsre   s   &&&&&      r   Ú
assertCallÚMockMixin.assertCall¿   sv   € ð  ‰
ˆØ×Ñ˜Ô*Ø×Ñœœ[¨Ó.Ó/°Ô3Ü%0°Ó%6Ñ"Ñ	!ˆ$˜Ø×Ñ˜˜zÔ*Ø×Ñ˜Ô6Ø×Ñ˜Ô1Øˆr!   © N)rk   rl   rm   rn   r�   ro   rp   rq   s   @r   rt   rt   ¾   s   ø‡ € à=?ÐUW÷
ò 
r!   rt   a“  def testByte%(groupName)s(self):
    transport = StringTransport()
    proto = Mock()
    parser = self.protocolFactory(lambda: proto)
    parser.factory = self
    parser.makeConnection(transport)

    bytes = self.TEST_BYTES
    while bytes:
        chunk = bytes[:%(bytesPer)d]
        bytes = bytes[%(bytesPer)d:]
        parser.dataReceived(chunk)

    self.verifyResults(transport, proto, parser)
c                   óx   a € ] tR t^Þt o RtR F  w  tt]! ]R]R]/,          4       K  	  AAR t	V 3R lt
RtV tR# )ÚByteGroupingsMixinNÚ	groupNameÚbytesPerc                ó”   € V P                  \        V4      P                  ^ 4      RV34      pV P                  \        V4      . 4       R# )r   ÚmakeConnectionN)r�   r#   Úpoprw   )r_   Ú	transportÚprotoÚparserr   s   &&&& r   ÚverifyResultsÚ ByteGroupingsMixin.verifyResultsë   s<   € Ø—‘¤¨UÓ!3×!7Ñ!7¸Ó!:Ð<LÈvÈiÓXˆØ×Ñœ VÓ,¨bÖ1r!   c                óF   <€ V ^8„  d   Qh/ S[ S[S[,          ,          ;R&   # )é   ÚprotocolFactory)r   r   r   )Úformatrr   s   "€r   Ú__annotate__ÚByteGroupingsMixin.__annotate__Þ   s   ø‡ ‚ Ù™d¡8�nÕ-Ñ4ò r!   rƒ   ))ÚPairsr‘   )ÚTriplesé   )ÚQuadsé   )ÚQuintsé   )ÚSexesé   )rk   rl   rm   rn   r’   ÚwordÚnÚexecÚ_byteGroupingTestTemplaterŽ   Ú__annotate_func__ro   rp   rq   s   @r   r…   r…   Þ   sF   ø‡ € Ø04€Oó‰ˆˆañ 	Ð&¨+°t¸ZÈÐ)KÕKÖLñð 	ˆaò2÷ ƒ r!   r…   c                   ó.   a € ] tR t^ót o ]tRtR tRtV t	R# )ÚServerArrowKeysTestss   [A[B[C[Dc                ó`  € \         P                  WW#4       VP                  VP                  VP                  VP
                  3 FK  pV P                  \        V4      P                  ^ 4      RVR34      pV P                  \        V4      . 4       KM  	  V P                  \        V4      4       R# )r   ÚkeystrokeReceivedN)r…   rŽ   ÚUP_ARROWÚ
DOWN_ARROWÚRIGHT_ARROWÚ
LEFT_ARROWr�   r#   rŠ   rw   ÚassertFalse)r_   r‹   rŒ   r�   Úarrowr   s   &&&&  r   rŽ   Ú"ServerArrowKeysTests.verifyResultsù   sš   € Ü×(Ñ(¨¸%ÔHð �O‰OØ×ÑØ×ÑØ×Ñó	
ˆEð —_‘_Ü˜EÓ"×&Ñ& qÓ)Ð+>ÀÈÀóˆFð ×Ñœ[¨Ó0°"Ö5ñ
ð 	×Ñœ UÓ+Ö,r!   rƒ   N©
rk   rl   rm   rn   r   r’   Ú
TEST_BYTESrŽ   ro   rp   rq   s   @r   r¥   r¥   ó   s   ø‡ € Ø$€Oð -€J÷-ð -r!   r¥   c                   ó.   a € ] tR tRt o ]tRtR tRtV t	R# )ÚPrintableCharactersTestsi	  s   abc123ABC!@#abc123c                óì  € \         P                  WW#4       \        R 4       FK  pV P                  \	        V4      P                  ^ 4      RVR34      pV P                  \	        V4      . 4       KM  	  \        R4       FT  pV P                  \	        V4      P                  ^ 4      RWCP                  34      pV P                  \	        V4      . 4       KV  	  \	        V4      pV P                  Wf: R24       R# )s   abc123ABC!@#r§   Ns   abc123z should have been [])	r…   rŽ   r   r�   r#   rŠ   rw   ÚALTr¬   )r_   r‹   rŒ   r�   Úcharr   Úoccss   &&&&   r   rŽ   Ú&PrintableCharactersTests.verifyResults  sÙ   € Ü×(Ñ(¨¸%ÔHä˜oÖ.ˆDØ—_‘_Ü˜EÓ"×&Ñ& qÓ)Ð+>ÀÀtÀóˆFð ×Ñœ[¨Ó0°"Ö5ñ	 /ô ˜iÖ(ˆDØ—_‘_Ü˜EÓ"×&Ñ& qÓ)Ð+>ÀÇzÁzÐ@RóˆFð ×Ñœ[¨Ó0°"Ö5ñ	 )ô ˜5Ó!ˆØ×Ñ˜¡Ð)=Ð>Ö?r!   rƒ   Nr¯   rq   s   @r   r²   r²   	  s   ø‡ € Ø$€Oð
 ?€J÷@ð @r!   r²   c                   óš   a € ] tR tRt o Rt]t. tR F  t]P                  R],           4       K  	  RP                  ]4      tAAR tRtV tR# )	ÚServerFunctionKeysTestsi$  z9Test for parsing and dispatching function keys (F1 - F12)ó   [r!   c                óD  € \         P                  WW#4       \        ^^4       F_  p\        VRV3,          4      pV P	                  \        V4      P                  ^ 4      RVR34      pV P                  \        V4      . 4       Ka  	  V P                  \        V4      4       R# )rv   zF%dr§   N)	r…   rŽ   ÚrangeÚgetattrr�   r#   rŠ   rw   r¬   )r_   r‹   rŒ   r�   ÚfuncNumÚfuncArgr   s   &&&&   r   rŽ   Ú%ServerFunctionKeysTests.verifyResults<  s‹   € Ü×(Ñ(¨¸%ÔHÜ˜Q –|ˆGÜ˜f e¨w¨jÕ&8Ó9ˆGØ—_‘_Ü˜EÓ"×&Ñ& qÓ)Ð+>ÀÈ$ÀóˆFð ×Ñœ[¨Ó0°"Ö5ñ $ð 	×Ñœ UÓ+Ö,r!   rƒ   N)s   OPs   OQs   ORs   OSs   15~s   17~s   18~s   19~s   20~s   21~s   23~s   24~)rk   rl   rm   rn   r3   r   r’   ÚbyteListÚ	byteCodesr)   Újoinr°   rŽ   ro   rp   rq   s   @r   r¹   r¹   $  sP   ø‡ € ÙCà$€Oà€Hóˆ	ð 	�‰˜ 9Õ,Ö-ñð —‘˜(Ó#€JØ�)÷-ð -r!   r¹   c                   óŒ   a € ] tR tRt o ]tRtRtRtRt	]],           ],           ]	,           ],           ]	,           t
AAAA	R tRtV tR# )	ÚClientCursorMovementTestsiG  s   [2Bs   [4Cs   [As   [2Dc                ó  € \         P                  WW#4       R FS  w  rEV P                  \        V4      P	                  ^ 4      RV,           V34      pV P                  \        V4      . 4       KU  	  V P                  \        V4      4       R# )ÚDownÚcursorN))rÇ   r‘   )ÚForwardrš   ©ÚUprv   ©ÚBackwardr‘   rÊ   rÌ   )r…   rŽ   r�   r#   rŠ   rw   r¬   )r_   r‹   rŒ   r�   ÚmethodÚcountr   s   &&&&   r   rŽ   Ú'ClientCursorMovementTests.verifyResultsR  sz   € Ü×(Ñ(¨¸%ÔHó
‰MˆFð —_‘_Ü˜EÓ"×&Ñ& qÓ)¨8°fÕ+<¸u¸hóˆFð ×Ñœ[¨Ó0°"Ö5ñ
ð 	×Ñœ UÓ+Ö,r!   rƒ   N)rk   rl   rm   rn   r   r’   Úd2Úr4Úu1Úl2r°   rŽ   ro   rp   rq   s   @r   rÅ   rÅ   G  sM   ø‡ € Ø$€Oà	€BØ	€BØ	€BØ	€Bà�b•˜2• Õ" RÕ'¨"Õ,€JØ
ˆB��B÷-ð -r!   rÅ   c                   ó¤   a € ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tRtV tR# )ÚClientControlSequencesTestsid  c                óŒ  a € \        4       S n        \        4       S n        \	        V 3R  l4      S n        S S P
                  n        S P
                  P                  S P                  4       S P                  \        S P                  4      P                  ^ 4      RS P
                  34      pS P                  \        V4      4       R# )c                  ó   <€ S P                   # r   )rŒ   ©r_   s   €r   Ú<lambda>Ú3ClientControlSequencesTests.setUp.<locals>.<lambda>h  s	   ø€ ¨T¯ZªZr!   r‰   N)r   r‹   r   rŒ   r   r�   Úfactoryr‰   r�   r#   rŠ   r¬   )r_   r   s   f r   ÚsetUpÚ!ClientControlSequencesTests.setUpe  sŠ   ø€ Ü(Ó*ˆŒÜ“VˆŒ
Ü$Ô%7Ó8ˆŒØ"ˆ�‰ÔØ�‰×"Ñ" 4§>¡>Ô2Ø—‘Ü˜Ÿ
™
Ó#×'Ñ'¨Ó*Ð,<¸t¿{¹{¸nó
ˆð 	×Ñœ VÓ,Ö-r!   c                ór  € V P                   P                  R P                  R \        R4       4       4      4       \	        V P
                  4      pR FP  pR FG  pV P                  VP                  ^ 4      RV,           V34      pV P                  \	        V4      4       KI  	  KR  	  V P                  V4       R# )r!   c              3   óT   "  € T F  pR F  pRV,           V,           x € K  	  K   	  R# 5i)r!   rº   N)r!   ó   2s   20s   200rƒ   )Ú.0Úchr    s   &  r   Ú	<genexpr>ÚBClientControlSequencesTests.testSimpleCardinals.<locals>.<genexpr>r  s0   é € ð á,�BÛ3�Að ˜1•˜r×!Ò!á3ñ "Û,ùs   ‚&(s   BACDrÈ   N)rÇ   rË   rÉ   rÍ   )rv   r‘   é   éÈ   )	r�   ÚdataReceivedrÃ   r   r#   rŒ   r�   rŠ   r¬   )r_   r¶   ÚmethrÏ   r   s   &    r   ÚtestSimpleCardinalsÚ/ClientControlSequencesTests.testSimpleCardinalsp  s™   € Ø�‰× Ñ Ø�H‰Hñ ä# GÔ,óó ô	
ô ˜4Ÿ:™:Ó&ˆã9ˆDÛ(�ØŸ™¨¯©°!«°hÀµoÈÀxÓP�Ø× Ñ ¤¨VÓ!4Ö5ó )ñ :ð 	×Ñ˜Ör!   c                óx  € V P                   P                  R 4       \        V P                  4      pV P	                  VP                  ^ 4      RR4      pV P                  \        V4      4       V P	                  VP                  ^ 4      RR4      pV P                  \        V4      4       V P                  V4       R# )s
   [5;22r[rÚsetScrollRegionN)rœ   é   )NN©r�   rè   r#   rŒ   r�   rŠ   r¬   ©r_   r¶   r   s   &  r   ÚtestScrollRegionÚ,ClientControlSequencesTests.testScrollRegion€  s�   € Ø�‰× Ñ Ð!4Ô5Ü˜4Ÿ:™:Ó&ˆà—‘ §¡¨!£Ð.?ÀÓIˆØ×Ñœ VÓ,Ô-à—‘ §¡¨!£Ð.?ÀÓNˆØ×Ñœ VÓ,Ô-Ø×Ñ˜Ör!   c                ód  € V P                   P                  R 4       \        V P                  4      pV P	                  VP                  ^ 4      RR4      pV P                  \        V4      4       V P	                  VP                  ^ 4      RR4      pV P                  \        V4      4       V P	                  VP                  ^ 4      R4      pV P                  \        V4      4       V P	                  VP                  ^ 4      R4      pV P                  \        V4      4       V P                  V4       R# )s   #3#4#5#6ÚdoubleHeightLineÚsingleWidthLineÚdoubleWidthLineN)T)Frï   rð   s   &  r   ÚtestHeightAndWidthÚ.ClientControlSequencesTests.testHeightAndWidth‹  så   € Ø�‰× Ñ Ð!<Ô=Ü˜4Ÿ:™:Ó&ˆà—‘ §¡¨!£Ð.@À'ÓJˆØ×Ñœ VÓ,Ô-à—‘ §¡¨!£Ð.@À(ÓKˆØ×Ñœ VÓ,Ô-à—‘ §¡¨!£Ð.?Ó@ˆØ×Ñœ VÓ,Ô-à—‘ §¡¨!£Ð.?Ó@ˆØ×Ñœ VÓ,Ô-Ø×Ñ˜Ör!   c                óB  € V P                   P                  R P                  \        R4       UUu. uF;  pR P                  \        R4       Uu. uF  pRV,           V,           NK  	  up4      NK=  	  upp4      4       \	        V P
                  4      p\        \        3 Fb  p\        \        \        \        \        3 F@  pV P                  VP                  ^ 4      RWT34      pV P                  \	        V4      4       KB  	  Kd  	  V P                  V4       R# u upi u uppi )r!   s   ()s   AB012ó   ÚselectCharacterSetN)r�   rè   rÃ   r   r#   rŒ   r   r   r   r   r
   r   r	   r�   rŠ   r¬   )r_   Úgr    r¶   ÚwhichÚcharsetr   s   &      r   ÚtestCharacterSetÚ,ClientControlSequencesTests.testCharacterSetœ  s÷   € Ø�‰× Ñ Ø�H‰Hô ' uÔ-ôá-˜ð —H‘H´yÀÔ7JÓKÑ7J°!˜g¨�k¨AŸo˜oÑ7JÑKÖLÙ-òóô	
ô ˜4Ÿ:™:Ó&ˆäœ"“XˆEäÜÜÜÜ$ó�ð Ÿ™Ø—H‘H˜Q“KÐ!5¸Ð7Gó�ð × Ñ ¤¨VÓ!4Ö5óñ ð 	×Ñ˜Öùò' Lùós   ¯DÁDÁ%DÄDc                ót  € V P                   P                  R 4       \        V P                  4      pV P	                  VP                  ^ 4      R4      pV P                  \        V4      4       V P	                  VP                  ^ 4      R4      pV P                  \        V4      4       V P                  V4       R# )s   ÚshiftInÚshiftOutNrï   rð   s   &  r   ÚtestShiftingÚ(ClientControlSequencesTests.testShiftingµ  s†   € Ø�‰× Ñ  Ô-Ü˜4Ÿ:™:Ó&ˆà—‘ §¡¨!£¨iÓ8ˆØ×Ñœ VÓ,Ô-à—‘ §¡¨!£¨jÓ9ˆØ×Ñœ VÓ,Ô-Ø×Ñ˜Ör!   c                ót  € V P                   P                  R 4       \        V P                  4      pV P	                  VP                  ^ 4      R4      pV P                  \        V4      4       V P	                  VP                  ^ 4      R4      pV P                  \        V4      4       V P                  V4       R# )s   NOÚsingleShift2ÚsingleShift3Nrï   rð   s   &  r   ÚtestSingleShiftsÚ,ClientControlSequencesTests.testSingleShiftsÀ  s†   € Ø�‰× Ñ  Ô/Ü˜4Ÿ:™:Ó&ˆà—‘ §¡¨!£¨nÓ=ˆØ×Ñœ VÓ,Ô-à—‘ §¡¨!£¨nÓ=ˆØ×Ñœ VÓ,Ô-Ø×Ñ˜Ör!   c                ót  € V P                   P                  R 4       \        V P                  4      pV P	                  VP                  ^ 4      R4      pV P                  \        V4      4       V P	                  VP                  ^ 4      R4      pV P                  \        V4      4       V P                  V4       R# )s   =>ÚapplicationKeypadModeÚnumericKeypadModeNrï   rð   s   &  r   ÚtestKeypadModeÚ*ClientControlSequencesTests.testKeypadModeË  sˆ   € Ø�‰× Ñ  Ô/Ü˜4Ÿ:™:Ó&ˆà—‘ §¡¨!£Ð.EÓFˆØ×Ñœ VÓ,Ô-à—‘ §¡¨!£Ð.AÓBˆØ×Ñœ VÓ,Ô-Ø×Ñ˜Ör!   c                ót  € V P                   P                  R 4       \        V P                  4      pV P	                  VP                  ^ 4      R4      pV P                  \        V4      4       V P	                  VP                  ^ 4      R4      pV P                  \        V4      4       V P                  V4       R# )s   78Ú
saveCursorÚrestoreCursorNrï   rð   s   &  r   Ú
testCursorÚ&ClientControlSequencesTests.testCursorÖ  s†   € Ø�‰× Ñ  Ô/Ü˜4Ÿ:™:Ó&ˆà—‘ §¡¨!£¨lÓ;ˆØ×Ñœ VÓ,Ô-à—‘ §¡¨!£¨oÓ>ˆØ×Ñœ VÓ,Ô-Ø×Ñ˜Ör!   c                óþ   € V P                   P                  R 4       \        V P                  4      pV P	                  VP                  ^ 4      R4      pV P                  \        V4      4       V P                  V4       R# )s   cÚresetNrï   rð   s   &  r   Ú	testResetÚ%ClientControlSequencesTests.testResetá  s[   € Ø�‰× Ñ  Ô*Ü˜4Ÿ:™:Ó&ˆà—‘ §¡¨!£¨gÓ6ˆØ×Ñœ VÓ,Ô-Ø×Ñ˜Ör!   c                óê  € V P                   P                  R 4       \        V P                  4      pV P	                  VP                  ^ 4      R4      pV P                  \        V4      4       V P	                  VP                  ^ 4      R4      pV P                  \        V4      4       V P	                  VP                  ^ 4      R4      pV P                  \        V4      4       V P                  V4       R# )s   DMEÚindexÚreverseIndexÚnextLineNrï   rð   s   &  r   Ú	testIndexÚ%ClientControlSequencesTests.testIndexé  s²   € Ø�‰× Ñ Ð!3Ô4Ü˜4Ÿ:™:Ó&ˆà—‘ §¡¨!£¨gÓ6ˆØ×Ñœ VÓ,Ô-à—‘ §¡¨!£¨nÓ=ˆØ×Ñœ VÓ,Ô-à—‘ §¡¨!£¨jÓ9ˆØ×Ñœ VÓ,Ô-Ø×Ñ˜Ör!   c           	     óª  € V P                   P                  R RP                  R \        P                  \        P
                  \        P                  3 4       4      ,           R,           4       V P                   P                  R RP                  R \        P                  \        P
                  \        P                  3 4       4      ,           R,           4       \        V P                  4      pV P                  VP                  ^ 4      R\        P                  \        P
                  \        P                  .34      pV P                  \        V4      4       V P                  VP                  ^ 4      R\        P                  \        P
                  \        P                  .34      pV P                  \        V4      4       V P                  V4       R# )	rº   ó   ;c              3   ó6   "  € T F  pR V3,          x € K  	  R# 5i©s   %dNrƒ   ©râ   Úms   & r   rä   Ú8ClientControlSequencesTests.testModes.<locals>.<genexpr>ú  ó   é € ÐPÑ.O¨˜  ŸšÓ.Oùó   ‚ó   hc              3   ó6   "  € T F  pR V3,          x € K  	  R# 5ir"  rƒ   r#  s   & r   rä   r%  ÿ  r&  r'  ó   lÚsetModesÚ
resetModesN)r�   rè   rÃ   r   ÚKAMÚIRMÚLNMr#   rŒ   r�   rŠ   r¬   rð   s   &  r   Ú	testModesÚ%ClientControlSequencesTests.testModes÷  sB  € Ø�‰× Ñ ØØ�i‰iÑP¬u¯y©y¼%¿)¹)ÄUÇYÁYÑ.OÓPÓPõQàõô	
ð
 	�‰× Ñ ØØ�i‰iÑP¬u¯y©y¼%¿)¹)ÄUÇYÁYÑ.OÓPÓPõQàõô	
ô
 ˜4Ÿ:™:Ó&ˆà—‘Ø�H‰H�Q‹K˜¤u§y¡y´%·)±)¼U¿Y¹YÐ&GÐ%Ió
ˆð 	×Ñœ VÓ,Ô-à—‘Ø�H‰H�Q‹K˜¬¯©´E·I±I¼u¿y¹yÐ(IÐ'Kó
ˆð 	×Ñœ VÓ,Ô-Ø×Ñ˜Ör!   c                óˆ  € V P                   P                  R 4       \        V P                  4      pR F>  pV P	                  VP                  ^ 4      V4      pV P                  \        V4      4       K@  	  V P	                  VP                  ^ 4      RR4      pV P                  \        V4      4       V P                  V4       R# )s   [K[1K[2K[J[1J[2J[3PÚdeleteCharacterN)ÚeraseToLineEndÚeraseToLineBeginningÚ	eraseLineÚeraseToDisplayEndÚeraseToDisplayBeginningÚeraseDisplay)r˜   rï   )r_   r¶   ré   r   s   &   r   ÚtestErasureÚ'ClientControlSequencesTests.testErasure  sš   € Ø�‰× Ñ Ð!SÔTÜ˜4Ÿ:™:Ó&ˆó
ˆDð —_‘_ T§X¡X¨a£[°$Ó7ˆFØ×Ñœ[¨Ó0Ö1ñ
ð —‘ §¡¨!£Ð.?ÀÓFˆØ×Ñœ VÓ,Ô-Ø×Ñ˜Ör!   c                ó  € V P                   P                  R 4       \        V P                  4      pR F@  pV P	                  VP                  ^ 4      RV34      pV P                  \        V4      4       KB  	  V P                  V4       R# )s   [M[3MÚ
deleteLineN©rv   r˜   rï   ©r_   r¶   Úargr   s   &   r   ÚtestLineDeletionÚ,ClientControlSequencesTests.testLineDeletion"  ól   € Ø�‰× Ñ Ð!1Ô2Ü˜4Ÿ:™:Ó&ˆãˆCØ—_‘_ T§X¡X¨a£[°,ÀÀÓGˆFØ×Ñœ[¨Ó0Ö1ñ ð 	×Ñ˜Ör!   c                ó  € V P                   P                  R 4       \        V P                  4      pR F@  pV P	                  VP                  ^ 4      RV34      pV P                  \        V4      4       KB  	  V P                  V4       R# )s   [L[3LÚ
insertLineNr>  rï   r?  s   &   r   ÚtestLineInsertionÚ-ClientControlSequencesTests.testLineInsertion+  rC  r!   c                óP  € R\        V P                  4      R&   V P                  P                  R4       V P	                  V P
                  P                  4       R4       \        V P                  4      pV P                  VP                  ^ 4      R4      pV P	                  VR4       R# )rž   ÚreportCursorPositions   [6ns   [7;8RN)rž   é   )
r'   rŒ   r�   rè   rw   r‹   Úvaluer#   r�   rŠ   rð   s   &  r   ÚtestCursorPositionÚ.ClientControlSequencesTests.testCursorPosition4  s~   € Ø6<Œ�—
‘
ÓÐ2Ñ3Ø�‰× Ñ  Ô,Ø×Ñ˜Ÿ™×-Ñ-Ó/°Ô>Ü˜4Ÿ:™:Ó&ˆà—‘ §¡¨!£Ð.DÓEˆð 	×Ñ˜ Ö(r!   c                ó$  € \        V P                  4      pV P                  P                  R4       V P	                  VP                  ^ 4      RR4       V P                  P                  R4       V P	                  VP                  ^ 4      RR4       R# )zŽ
Contiguous non-control bytes are passed to a single call to the
C{write} method of the terminal to which the L{ClientProtocol} is
connected.
ó   aÚwriteó   bcN)rO  )rQ  )r#   rŒ   r�   rè   r�   rŠ   )r_   r¶   s   & r   Útest_applicationDataBytesÚ5ClientControlSequencesTests.test_applicationDataBytes?  sf   € ô ˜4Ÿ:™:Ó&ˆØ�‰× Ñ  Ô&Ø�‰˜Ÿ™ › W¨gÔ6Ø�‰× Ñ  Ô'Ø�‰˜Ÿ™ › W¨hÖ7r!   c                ó
  € \        V P                  4      pV P                  P                  V4       V'       d5   V P                  ! VP                  ^ 4      .VP                  ^ 4      O5!   K<  V P                  VRV: 24       R# )r   zNo other calls should happen: N)r#   rŒ   r�   rè   r�   rŠ   r¬   )r_   ÚdataÚcallsr¶   s   &&& r   Ú_applicationDataTestÚ0ClientControlSequencesTests._applicationDataTestK  s^   € Ü˜4Ÿ:™:Ó&ˆØ�‰× Ñ  Ô&ßØ�OŠO˜DŸH™H Q›KÐ7¨%¯)©)°A«,Ö7Ø×Ñ˜Ð!?À¹xÐHÖIr!   c                ó.   € V P                  RRR.4       R# )z‹
Application data bytes followed by a shift-in command are passed to a
call to C{write} before the terminal's C{shiftIn} method is called.
s   abN©rP  )s   ab)r  ©rW  rÙ   s   &r   Ú test_shiftInAfterApplicationDataÚ<ClientControlSequencesTests.test_shiftInAfterApplicationDataR  s   € ð
 	×!Ñ! )Ð.AÀ<Ð-PÖQr!   c                ó.   € V P                  RRR.4       R# )z�
Application data bytes followed by a shift-out command are passed to a
call to C{write} before the terminal's C{shiftOut} method is called.
s   abNrZ  )r  r[  rÙ   s   &r   Ú!test_shiftOutAfterApplicationDataÚ=ClientControlSequencesTests.test_shiftOutAfterApplicationDataY  s   € ð
 	×!Ñ! )Ð.AÀ=Ð-QÖRr!   c                ó.   € V P                  RRR.4       R# )z™
Application data bytes followed by a cursor-backward command are passed
to a call to C{write} before the terminal's C{cursorBackward} method is
called.
s   abNrZ  )ÚcursorBackwardr[  rÙ   s   &r   Ú'test_cursorBackwardAfterApplicationDataÚCClientControlSequencesTests.test_cursorBackwardAfterApplicationData`  s   € ð 	×!Ñ! )Ð.AÐCVÐ-WÖXr!   c                ó^   € V P                  RRR.4       V P                  RRR^.33.4       R# )z˜
Application data bytes followed by an escape character are passed to a
call to C{write} before the terminal's handler method for the escape is
called.
s   abDs   ab[4hr+  NrZ  )r  r[  rÙ   s   &r   Útest_escapeAfterApplicationDataÚ;ClientControlSequencesTests.test_escapeAfterApplicationDatah  s>   € ð 	×!Ñ! *Ð/BÀJÐ.OÔPð 	×!Ñ!ØÐ.°¸q¸c¸VÐ0DÐEö	
r!   )r�   rŒ   r‹   N)rk   rl   rm   rn   rÝ   rê   rñ   r÷   rÿ   r  r	  r  r  r  r  r0  r:  rA  rF  rL  rR  rW  r\  r_  rc  rf  ro   rp   rq   s   @r   rÖ   rÖ   d  s|   ø‡ € ò	.òò 	òò"ò2	ò	ò	ò	òòòò0ò&òò	)ò
8òJòRòSòY÷
ð 
r!   rÖ   c                   ó  a € ] tR tRt o Rt]! ^^4      t]]! ^^4      ,           tR tR t	R t
R tR tR tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R t#R t$R  t%R! t&R"t'V t(R## )$ÚServerProtocolOutputTestsiz  z\
Tests for the bytes L{ServerProtocol} writes to its transport when its
methods are called.
c                óŒ   € \        4       V n        \        4       V n        V P                  P	                  V P                  4       R # r   )r   Úprotocolr   r‹   r‰   rÙ   s   &r   rÝ   ÚServerProtocolOutputTests.setUp†  s,   € Ü&Ó(ˆŒÜ(Ó*ˆŒØ�‰×$Ñ$ T§^¡^Ö4r!   c                óð   € V P                   P                  ^4       V P                  V P                  P	                  4       V P
                  R,           \        P                  P                  ,           4       R# )zi
L{ServerProtocol.cursorUp} writes the control sequence
ending with L{CSFinalByte.CUU} to its transport.
ó   1N)rk  ÚcursorUprw   r‹   rK  rR   r=   ÚCUUrÙ   s   &r   Útest_cursorUpÚ'ServerProtocolOutputTests.test_cursorUp‹  sM   € ð
 	�‰×Ñ˜qÔ!Ø×ÑØ�N‰N× Ñ Ó" D§H¡H¨t¥O´k·o±o×6KÑ6KÕ$Kö	
r!   c                óð   € V P                   P                  ^4       V P                  V P                  P	                  4       V P
                  R,           \        P                  P                  ,           4       R# )zk
L{ServerProtocol.cursorDown} writes the control sequence
ending with L{CSFinalByte.CUD} to its transport.
rn  N)rk  Ú
cursorDownrw   r‹   rK  rR   r=   ÚCUDrÙ   s   &r   Útest_cursorDownÚ)ServerProtocolOutputTests.test_cursorDown•  sM   € ð
 	�‰× Ñ  Ô#Ø×ÑØ�N‰N× Ñ Ó" D§H¡H¨t¥O´k·o±o×6KÑ6KÕ$Kö	
r!   c                óð   € V P                   P                  ^4       V P                  V P                  P	                  4       V P
                  R,           \        P                  P                  ,           4       R# )zn
L{ServerProtocol.cursorForward} writes the control sequence
ending with L{CSFinalByte.CUF} to its transport.
rn  N)rk  ÚcursorForwardrw   r‹   rK  rR   r=   ÚCUFrÙ   s   &r   Útest_cursorForwardÚ,ServerProtocolOutputTests.test_cursorForwardŸ  sM   € ð
 	�‰×#Ñ# AÔ&Ø×ÑØ�N‰N× Ñ Ó" D§H¡H¨t¥O´k·o±o×6KÑ6KÕ$Kö	
r!   c                óð   € V P                   P                  ^4       V P                  V P                  P	                  4       V P
                  R,           \        P                  P                  ,           4       R# )zo
L{ServerProtocol.cursorBackward} writes the control sequence
ending with L{CSFinalByte.CUB} to its transport.
rn  N)rk  rb  rw   r‹   rK  rR   r=   ÚCUBrÙ   s   &r   Útest_cursorBackwardÚ-ServerProtocolOutputTests.test_cursorBackward©  sM   € ð
 	�‰×$Ñ$ QÔ'Ø×ÑØ�N‰N× Ñ Ó" D§H¡H¨t¥O´k·o±o×6KÑ6KÕ$Kö	
r!   c                óò   € V P                   P                  ^ ^ 4       V P                  V P                  P	                  4       V P
                  R,           \        P                  P                  ,           4       R# )z•
L{ServerProtocol.cursorPosition} writes a control sequence
ending with L{CSFinalByte.CUP} and containing the expected
coordinates to its transport.
s   1;1N)rk  ÚcursorPositionrw   r‹   rK  rR   r=   ÚCUPrÙ   s   &r   Útest_cursorPositionÚ-ServerProtocolOutputTests.test_cursorPosition³  sP   € ð 	�‰×$Ñ$ Q¨Ô*Ø×ÑØ�N‰N× Ñ Ó" D§H¡H¨vÕ$5¼¿¹×8MÑ8MÕ$Mö	
r!   c                óà   € V P                   P                  4        V P                  V P                  P	                  4       V P
                  \        P                  P                  ,           4       R# )z‘
L{ServerProtocol.cursorHome} writes a control sequence ending
with L{CSFinalByte.CUP} and no parameters, so that the client
defaults to (1, 1).
N)rk  Ú
cursorHomerw   r‹   rK  rR   r=   rƒ  rÙ   s   &r   Útest_cursorHomeÚ)ServerProtocolOutputTests.test_cursorHome¾  sD   € ð 	�‰× Ñ Ô"Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¼K¿O¹O×<QÑ<QÕ1QÖRr!   c                óÄ   € V P                   P                  4        V P                  V P                  P	                  4       V P
                  \        ^^4      ,           4       R# )z”
L{ServerProtocol.index} writes the control sequence ending in
the 8-bit code table coordinates 4, 4.

Note that ECMA48 5th Edition removes C{IND}.
N)rk  r  rw   r‹   rK  ÚESCr1   rÙ   s   &r   Ú
test_indexÚ$ServerProtocolOutputTests.test_indexÇ  sE   € ð 	�‰×ÑÔØ×ÑØ�N‰N× Ñ Ó" D§H¡HÔ/GÈÈ1Ó/MÕ$Mö	
r!   c                óà   € V P                   P                  4        V P                  V P                  P	                  4       V P
                  \        P                  P                  ,           4       R# )z\
L{ServerProtocol.reverseIndex} writes the control sequence
ending in the L{C1SevenBit.RI}.
N)rk  r  rw   r‹   rK  r‹  r>   rU   rÙ   s   &r   Útest_reverseIndexÚ+ServerProtocolOutputTests.test_reverseIndexÓ  sD   € ð
 	�‰×"Ñ"Ô$Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¼J¿M¹M×<OÑ<OÕ1OÖPr!   c                óŽ   € V P                   P                  4        V P                  V P                  P	                  4       R4       R# )zM
        L{ServerProtocol.nextLine} writes C{"
"} to its transport.
        s   
N)rk  r  rw   r‹   rK  rÙ   s   &r   Útest_nextLineÚ'ServerProtocolOutputTests.test_nextLineÛ  s1   € ð 	�‰×ÑÔ Ø×Ñ˜Ÿ™×-Ñ-Ó/°Ö9r!   c                óz  € \         P                  \         P                  \         P                  .pV P                  P                  V4       V P                  V P                  P                  4       V P                  RP                  R V 4       4      ,           \        P                  P                  ,           4       R# )zz
L{ServerProtocol.setModes} writes a control sequence
containing the requested modes and ending in the
L{CSFinalByte.SM}.
r   c              3   ó6   "  € T F  pR V3,          x € K  	  R# 5ir"  rƒ   r#  s   & r   rä   Ú:ServerProtocolOutputTests.test_setModes.<locals>.<genexpr>ð  ó   é € Ð9©j¨˜  Ÿš«jùr'  N)r   r-  r.  r/  rk  r+  rw   r‹   rK  rR   rÃ   r=   ÚSM©r_   Ú
modesToSets   & r   Útest_setModesÚ'ServerProtocolOutputTests.test_setModeså  s|   € ô —i‘i¤§¡¬E¯I©IÐ6ˆ
Ø�‰×Ñ˜zÔ*Ø×ÑØ�N‰N× Ñ Ó"Ø�H‰HØ�i‰iÑ9©jÓ9Ó9õ:ä�n‰n×"Ñ"õ#ö	
r!   c                óz  € \         P                  \         P                  \         P                  .pV P                  P                  V4       V P                  V P                  P                  4       V P                  RP                  R V 4       4      ,           \        P                  P                  ,           4       R# )zŠ
L{ServerProtocol.setPrivatesModes} writes a control sequence
containing the requested private modes and ending in the
L{CSFinalByte.SM}.
r   c              3   ó6   "  € T F  pR V3,          x € K  	  R# 5ir"  rƒ   r#  s   & r   rä   ÚAServerProtocolOutputTests.test_setPrivateModes.<locals>.<genexpr>  s   é € Ð@Ñ.?¨˜  ŸšÓ.?ùr'  N)r   ÚERRORÚCOLUMNÚORIGINrk  r+  rw   r‹   rK  rR   rÃ   r=   r˜  )r_   ÚprivateModesToSets   & r   Útest_setPrivateModesÚ.ServerProtocolOutputTests.test_setPrivateModesô  sŒ   € ô ×ÑÜ×ÑÜ×Ñð
Ðð
 	�‰×ÑÐ0Ô1Ø×ÑØ�N‰N× Ñ Ó"Ø�H‰HØ�i‰iÑ@Ñ.?Ó@Ó@õAä�n‰n×"Ñ"õ#ö	
r!   c                óz  € \         P                  \         P                  \         P                  .pV P                  P                  V4       V P                  V P                  P                  4       V P                  RP                  R V 4       4      ,           \        P                  P                  ,           4       R# )z[
L{ServerProtocol.resetModes} writes the control sequence
ending in the L{CSFinalByte.RM}.
r   c              3   ó6   "  € T F  pR V3,          x € K  	  R# 5ir"  rƒ   r#  s   & r   rä   Ú<ServerProtocolOutputTests.test_resetModes.<locals>.<genexpr>  r—  r'  N)r   r-  r.  r/  rk  r,  rw   r‹   rK  rR   rÃ   r=   ÚRMr™  s   & r   Útest_resetModesÚ)ServerProtocolOutputTests.test_resetModes  s|   € ô
 —i‘i¤§¡¬E¯I©IÐ6ˆ
Ø�‰× Ñ  Ô,Ø×ÑØ�N‰N× Ñ Ó"Ø�H‰HØ�i‰iÑ9©jÓ9Ó9õ:ä�n‰n×"Ñ"õ#ö	
r!   c                óà   € V P                   P                  4        V P                  V P                  P	                  4       V P
                  \        P                  P                  ,           4       R# )zX
L{ServerProtocol.singleShift2} writes an escape sequence
followed by L{C1SevenBit.SS2}
N)rk  r  rw   r‹   rK  r‹  r>   rW   rÙ   s   &r   Útest_singleShift2Ú+ServerProtocolOutputTests.test_singleShift2  óD   € ð
 	�‰×"Ñ"Ô$Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¼J¿N¹N×<PÑ<PÕ1PÖQr!   c                óà   € V P                   P                  4        V P                  V P                  P	                  4       V P
                  \        P                  P                  ,           4       R# )zX
L{ServerProtocol.singleShift3} writes an escape sequence
followed by L{C1SevenBit.SS3}
N)rk  r  rw   r‹   rK  r‹  r>   rY   rÙ   s   &r   Útest_singleShift3Ú+ServerProtocolOutputTests.test_singleShift3  r¯  r!   c                óH  € V P                   P                  \        \        4      \        \        4      4       V P                  V P                  P                  4       V P                  R\        \        3,          ,           \        P                  P                  ,           4       R# )z‹
L{ServerProtocol.selectGraphicRendition} writes a control
sequence containing the requested attributes and ending with
L{CSFinalByte.SGR}
s   %d;%dN)rk  ÚselectGraphicRenditionÚstrr   r   rw   r‹   rK  rR   r=   ÚSGRrÙ   s   &r   Útest_selectGraphicRenditionÚ5ServerProtocolOutputTests.test_selectGraphicRendition%  sc   € ð 	�‰×,Ñ,¬S´«Z¼¼Y»ÔHØ×ÑØ�N‰N× Ñ Ó"Ø�H‰H�x¤5¬)Ð"4Õ4Õ4´{·±×7LÑ7LÕLö	
r!   c                óà   € V P                   P                  4        V P                  V P                  P	                  4       V P
                  \        P                  P                  ,           4       R# )zb
L{ServerProtocol.horizontalTabulationSet} writes the escape
sequence ending in L{C1SevenBit.HTS}
N)rk  ÚhorizontalTabulationSetrw   r‹   rK  r‹  r>   rL   rÙ   s   &r   Útest_horizontalTabulationSetÚ6ServerProtocolOutputTests.test_horizontalTabulationSet1  sD   € ð
 	�‰×-Ñ-Ô/Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¼J¿N¹N×<PÑ<PÕ1PÖQr!   c                óà   € V P                   P                  4        V P                  V P                  P	                  4       V P
                  \        P                  P                  ,           4       R# )zç
L{ServerProtocol.eraseToLineEnd} writes the control sequence
sequence ending in L{CSFinalByte.EL} and no parameters,
forcing the client to default to 0 (from the active present
position's current location to the end of the line.)
N)rk  r4  rw   r‹   rK  rR   r=   ÚELrÙ   s   &r   Útest_eraseToLineEndÚ-ServerProtocolOutputTests.test_eraseToLineEnd9  sD   € ð 	�‰×$Ñ$Ô&Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¼K¿N¹N×<PÑ<PÕ1PÖQr!   c                óî   € V P                   P                  4        V P                  V P                  P	                  4       V P
                  R,           \        P                  P                  ,           4       R# )zá
L{ServerProtocol.eraseToLineBeginning} writes the control
sequence sequence ending in L{CSFinalByte.EL} and a parameter
of 1 (from the beginning of the line up to and include the
active present position's current location.)
rn  N)rk  r5  rw   r‹   rK  rR   r=   r¾  rÙ   s   &r   Útest_eraseToLineBeginningÚ3ServerProtocolOutputTests.test_eraseToLineBeginningC  sH   € ð 	�‰×*Ñ*Ô,Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¸DµÄ;Ç>Á>×CWÑCWÕ1WÖXr!   c                óî   € V P                   P                  4        V P                  V P                  P	                  4       V P
                  R,           \        P                  P                  ,           4       R# )z†
L{ServerProtocol.eraseLine} writes the control
sequence sequence ending in L{CSFinalByte.EL} and a parameter
of 2 (the entire line.)
rá   N)rk  r6  rw   r‹   rK  rR   r=   r¾  rÙ   s   &r   Útest_eraseLineÚ(ServerProtocolOutputTests.test_eraseLineM  sH   € ð 	�‰×ÑÔ!Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¸DµÄ;Ç>Á>×CWÑCWÕ1WÖXr!   c                óà   € V P                   P                  4        V P                  V P                  P	                  4       V P
                  \        P                  P                  ,           4       R# )zê
L{ServerProtocol.eraseToDisplayEnd} writes the control
sequence sequence ending in L{CSFinalByte.ED} and no parameters,
forcing the client to default to 0 (from the active present
position's current location to the end of the page.)
N)rk  r7  rw   r‹   rK  rR   r=   ÚEDrÙ   s   &r   Útest_eraseToDisplayEndÚ0ServerProtocolOutputTests.test_eraseToDisplayEndV  sD   € ð 	�‰×'Ñ'Ô)Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¼K¿N¹N×<PÑ<PÕ1PÖQr!   c                óî   € V P                   P                  4        V P                  V P                  P	                  4       V P
                  R,           \        P                  P                  ,           4       R# )zà
L{ServerProtocol.eraseToDisplayBeginning} writes the control
sequence sequence ending in L{CSFinalByte.ED} a parameter of 1
(from the beginning of the page up to and include the active
present position's current location.)
rn  N)rk  r8  rw   r‹   rK  rR   r=   rÈ  rÙ   s   &r   Útest_eraseToDisplayBeginningÚ6ServerProtocolOutputTests.test_eraseToDisplayBeginning`  sH   € ð 	�‰×-Ñ-Ô/Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¸DµÄ;Ç>Á>×CWÑCWÕ1WÖXr!   c                óî   € V P                   P                  4        V P                  V P                  P	                  4       V P
                  R,           \        P                  P                  ,           4       R# )z„
L{ServerProtocol.eraseDisplay} writes the control sequence
sequence ending in L{CSFinalByte.ED} a parameter of 2 (the
entire page)
rá   N)rk  r9  rw   r‹   rK  rR   r=   rÈ  rÙ   s   &r   Útest_eraseToDisplayÚ-ServerProtocolOutputTests.test_eraseToDisplayj  sH   € ð 	�‰×"Ñ"Ô$Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¸DµÄ;Ç>Á>×CWÑCWÕ1WÖXr!   c                óð   € V P                   P                  ^4       V P                  V P                  P	                  4       V P
                  R,           \        P                  P                  ,           4       R# )zŽ
L{ServerProtocol.deleteCharacter} writes the control sequence
containing the number of characters to delete and ending in
L{CSFinalByte.DCH}
ó   4N)rk  r3  rw   r‹   rK  rR   r=   ÚDCHrÙ   s   &r   Útest_deleteCharacterÚ.ServerProtocolOutputTests.test_deleteCharacters  sM   € ð 	�‰×%Ñ% aÔ(Ø×ÑØ�N‰N× Ñ Ó" D§H¡H¨t¥O´k·o±o×6KÑ6KÕ$Kö	
r!   c                óð   € V P                   P                  ^4       V P                  V P                  P	                  4       V P
                  R,           \        P                  P                  ,           4       R# )zƒ
L{ServerProtocol.insertLine} writes the control sequence
containing the number of lines to insert and ending in
L{CSFinalByte.IL}
ó   5N)rk  rE  rw   r‹   rK  rR   r=   ÚILrÙ   s   &r   Útest_insertLineÚ)ServerProtocolOutputTests.test_insertLine~  óJ   € ð 	�‰× Ñ  Ô#Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¸DµÄ;Ç>Á>×CWÑCWÕ1WÖXr!   c                óð   € V P                   P                  ^4       V P                  V P                  P	                  4       V P
                  R,           \        P                  P                  ,           4       R# )zƒ
L{ServerProtocol.deleteLine} writes the control sequence
containing the number of lines to delete and ending in
L{CSFinalByte.DL}
ó   6N)rk  r=  rw   r‹   rK  rR   r=   ÚDLrÙ   s   &r   Útest_deleteLineÚ)ServerProtocolOutputTests.test_deleteLine‡  rÛ  r!   c                ó¾   € V P                   P                  4        V P                  V P                  P	                  4       V P
                  R,           R,           4       R# )z–
With no arguments, L{ServerProtocol.setScrollRegion} writes a
control sequence with no parameters, but a parameter
separator, and ending in C{b'r'}.
r   ó   rN©rk  rí   rw   r‹   rK  rR   rÙ   s   &r   Útest_setScrollRegionNoArgsÚ4ServerProtocolOutputTests.test_setScrollRegionNoArgs�  s>   € ð 	�‰×%Ñ%Ô'Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¸DµÀ4Õ1GÖHr!   c                óÂ   € V P                   P                  ^R7       V P                  V P                  P	                  4       V P
                  R,           R,           4       R# )z­
With just a value for its C{first} argument,
L{ServerProtocol.setScrollRegion} writes a control sequence with
that parameter, a parameter separator, and finally a C{b'r'}.
)Úfirsts   1;râ  Nrã  rÙ   s   &r   Útest_setScrollRegionJustFirstÚ7ServerProtocolOutputTests.test_setScrollRegionJustFirst™  sD   € ð 	�‰×%Ñ%¨AÐ%Ô.Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¸EÕ1AÀDÕ1HÖIr!   c                óÂ   € V P                   P                  ^R7       V P                  V P                  P	                  4       V P
                  R,           R,           4       R# )z¬
With just a value for its C{last} argument,
L{ServerProtocol.setScrollRegion} writes a control sequence with
a parameter separator, that parameter, and finally a C{b'r'}.
)Úlasts   ;1râ  Nrã  rÙ   s   &r   Útest_setScrollRegionJustLastÚ6ServerProtocolOutputTests.test_setScrollRegionJustLast¢  sD   € ð 	�‰×%Ñ%¨1Ð%Ô-Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¸EÕ1AÀDÕ1HÖIr!   c                óÄ   € V P                   P                  ^^R7       V P                  V P                  P	                  4       V P
                  R,           R,           4       R# )z¾
When given both C{first} and C{last}
L{ServerProtocol.setScrollRegion} writes a control sequence with
the first parameter, a parameter separator, the last
parameter, and finally a C{b'r'}.
)rç  rë  s   1;2râ  Nrã  rÙ   s   &r   Ú test_setScrollRegionFirstAndLastÚ:ServerProtocolOutputTests.test_setScrollRegionFirstAndLast«  sF   € ð 	�‰×%Ñ%¨A°AÐ%Ô6Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¸FÕ1BÀTÕ1IÖJr!   c                óî   € V P                   P                  4        V P                  V P                  P	                  4       V P
                  R,           \        P                  P                  ,           4       R# )zµ
L{ServerProtocol.reportCursorPosition} writes a control
sequence ending in L{CSFinalByte.DSR} with a parameter of 6
(the Device Status Report returns the current active
position.)
rÝ  N)rk  rI  rw   r‹   rK  rR   r=   ÚDSRrÙ   s   &r   Útest_reportCursorPositionÚ3ServerProtocolOutputTests.test_reportCursorPositionµ  sK   € ð 	�‰×*Ñ*Ô,Ø×ÑØ�N‰N× Ñ Ó" D§H¡H¨t¥O´k·o±o×6KÑ6KÕ$Kö	
r!   )rk  r‹   N))rk   rl   rm   rn   r3   r1   r‹  rR   rÝ   rq  rv  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ó  ro   rp   rq   s   @r   ri  ri  z  sÛ   ø‡ € ññ # 1 bÓ
)€CØ
Ñ(¨¨BÓ/Õ
/€Cò5ò

ò
ò
ò
ò	
òSò

òQò:ò
ò
ò&
òRòRò

òRòRòYòYòRòYòYò	
òYòYòIòJòJòK÷

ð 

r!   ri  )ÚICHrÓ  ÚHPA)rp  ÚSSEÚHPR)ru  ÚCPRÚREP)rz  ÚSUÚDA)r~  ÚSDÚVPA)ÚCNLÚNPÚVPR)ÚCPLÚPPÚHVP)ÚCHAÚCTCÚTBC)rƒ  ÚECHr˜  )ÚCHTÚCVTÚMC)rÈ  ÚCBTÚHPB)r¾  ÚSRSÚVPB)rØ  ÚPTXr©  )rÞ  ÚSDSr¶  )ÚEFÚSIMDrò  )ÚEANÚDAQ)3ÚtextwrapÚtypingr   r   Ú
constantlyr   r   Útwisted.conch.insults.insultsr   r   r	   r
   r   r   r   r   r   r   r   r   r   Útwisted.internet.protocolr   Útwisted.internet.testingr   Útwisted.python.compatr   Útwisted.trialr   r    r#   r'   r+   Úobjectr]   r1   r<   Údedentr=   r>   r   rt   r¢   r…   ÚTestCaser¥   r²   r¹   rÅ   rÖ   ri  rƒ   r!   r   Ú<module>r!     s  ðó
 ß !ç ,÷÷ ÷ õ õ /Ý 4Ý +Ý "ò4ò)ò%ò"ñ ‹(€ò3ò((ñ *ØØò 	ÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚð#ð& 	�Šð		ó	ô-"€ñJ )ØØà	ˆuˆØ	ˆuˆØ	�ˆØ	�ˆØ	ˆuˆØ	�ˆØ	�ˆØ	�ˆØ	�ˆØ	�ˆØ	�ˆØ	�ˆØ	�ˆØ	ˆuˆØ	�ˆØ	�ˆð!ð$ 	�Šð	ó		ô+€
÷Dñ ÷Dñ ðÐ ô$2˜ô 2ð$ ô-Ð-¨x×/@Ñ/@ô -ô,@Ð1°8×3DÑ3Dô @ô6 -Ð0°(×2CÑ2Cô  -ôF-Ð 2°H×4EÑ4Eô -ô:P
 (×"3Ñ"3°Yô P
ôlE
 × 1Ñ 1ö E
r!   