Ë
    ÖÉ�juR  ã                   óL  — d dl Z d dlZd dlZd dlmZ d dlmZmZmZ ddl	m
Z
 ddlmZmZ ddlmZmZ ddlmZmZmZmZmZ dd	lmZ g d
¢ZddddœZ eej9                  «       D � �cg c]	  \  } }|| f‘Œ c}} «      Zg d¢Z G d„ d«      Z G d„ de j@                  «      Z! G d„ de jD                  «      Z#d ed«      e!jH                  fd ed«      e!jH                  fd ed«      e!jH                  fd ed«      e!jJ                  fd ed«      e!jJ                  fd ed«      e!jL                  fd ed «      e!jN                  fd ed!«      e!jP                  fd" ed «      e!jR                  fg	Z*d#e+d$efd%„Z,d&ed$e+fd'„Z-d#e+d$e.e/e+   e/e/e+      f   fd(„Z0d#e+d$e+fd)„Z1d*e+d$e+fd+„Z2d#e+d$efd,„Z3d-ed$e+fd.„Z4d/e+d$e.e+ee+   f   fd0„Z5d1e+d$e.e!e#f   fd2„Z6e G d3„ d4«      «       Z7e+fd5e/e7   d6e+d7ee8e+   e8e9   f   d$dfd8„Z:e G d9„ d:«      «       Z;g d;¢Z< G d<„ d=«      Z= G d>„ d?«      Z>yc c}} w )@é    N)Ú	dataclass)ÚAnyÚOptionalÚUnioné   )Úrtp)ÚRTCDtlsFingerprintÚRTCDtlsParameters)ÚRTCIceCandidateÚRTCIceParameters)ÚParametersDictÚRTCRtcpFeedbackÚRTCRtpCodecParametersÚRTCRtpHeaderExtensionParametersÚRTCRtpParameters)ÚRTCSctpCapabilities)ÚinactiveÚsendonlyÚrecvonlyÚsendrecvÚactpassÚactiveÚpassive)ÚautoÚclientÚserver)Úaptzmax-frzmax-fsÚmaxplaybackrateÚminptimeÚstereoÚuseinbandfecc                   ó@   — e Zd Zdeddfd„Zdedefd„Zdededefd„Zy)	Ú
BitPatternÚvÚreturnNc                 ób   — | j                  d|«       | _        | j                  d|«      | _        y )NÚxÚ1)Ú_bytemaskstringÚ_maskÚ_masked_value©Úselfr$   s     úK/home/uftp/webrtc-recorder/.venv/lib/python3.12/site-packages/aiortc/sdp.pyÚ__init__zBitPattern.__init__$   s.   € Ø×*Ñ*¨3°Ó2Ð2ˆŒ
Ø!×1Ñ1°#°qÓ9ˆÕó    c                 ó:   — || j                   z  | j                  k(  S ©N)r*   r+   r,   s     r.   ÚmatcheszBitPattern.matches(   s   € Ø�D—J‘J‘ 4×#5Ñ#5Ñ5Ð5r0   ÚcÚsc                 óÀ   — |d   |k(  dz  |d   |k(  dz  z  |d   |k(  dz  z  |d   |k(  dz  z  |d   |k(  dz  z  |d   |k(  dz  z  |d   |k(  dz  z  |d   |k(  dz  z  S )	Nr   é   r   é   é   é   é   é   © )r-   r4   r5   s      r.   r)   zBitPattern._bytemaskstring+   s´   € àˆq‰T�Q‰Y˜1ÑØ�‰t�q‰y˜QÑñà�‰t�q‰y˜QÑñð �‰t�q‰y˜QÑñð �‰t�q‰y˜QÑñ	ð
 �‰t�q‰y˜QÑñð �‰t�q‰y˜QÑñð �‰t�q‰y˜QÑñð		
r0   )	Ú__name__Ú
__module__Ú__qualname__Ústrr/   ÚintÚboolr3   r)   r=   r0   r.   r#   r#   #   sB   „ ð:˜#ð : $ó :ð6˜ð 6 ó 6ð

 ð 

¨ð 

°ô 

r0   r#   c                   ó$   — e Zd ZdZdZdZdZdZdZy)ÚH264Profiler   r   r9   r;   r<   r:   N)	r>   r?   r@   ÚPROFILE_CONSTRAINED_BASELINEÚPROFILE_BASELINEÚPROFILE_MAINÚPROFILE_CONSTRAINED_HIGHÚPROFILE_HIGHÚPROFILE_PREDICTIVE_HIGH_444r=   r0   r.   rE   rE   8   s$   „ Ø#$Ð ØÐØ€LØ ÐØ€LØ"#Ñr0   rE   c                   óP   — e 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ZdZdZdZdZy)Ú	H264Leveléÿÿÿÿé
   é   é   é   é   é   é   é   é   é    é(   é)   é*   é2   é3   é4   N)r>   r?   r@   ÚLEVEL1_BÚLEVEL1ÚLEVEL1_1ÚLEVEL1_2ÚLEVEL1_3ÚLEVEL2ÚLEVEL2_1ÚLEVEL2_2ÚLEVEL3ÚLEVEL3_1ÚLEVEL3_2ÚLEVEL4ÚLEVEL4_1ÚLEVEL4_2ÚLEVEL5ÚLEVEL5_1ÚLEVEL5_2r=   r0   r.   rM   rM   A   sW   „ Ø€HØ€FØ€HØ€HØ€HØ€FØ€HØ€HØ€FØ€HØ€HØ€FØ€HØ€HØ€FØ€HØ�Hr0   rM   éB   Úx1xx0000éM   Ú1xxx0000éX   Ú11xx0000Úx0xx0000Ú10xx0000Ú0x0x0000éd   Ú00000000Ú00001100éô   Úsdpr%   c           
      óœ  — | j                  «       }t        |«      dk\  sJ ‚t        t        |d   «      |d   |d   t        |d   «      t        |d   «      |d   |d   ¬	«      }t	        dt        |«      dz
  d«      D ]M  }||   d
k(  r||dz      |_        Œ||   dk(  rt        ||dz      «      |_        Œ8||   dk(  sŒA||dz      |_        ŒO |S )Né   r   r   r<   r:   r;   r9   r7   )Ú	componentÚ
foundationÚipÚportÚpriorityÚprotocolÚtypeÚraddrÚrportÚtcptype)ÚsplitÚlenr   rB   ÚrangeÚrelatedAddressÚrelatedPortÚtcpType)r}   ÚbitsÚ	candidateÚis       r.   Úcandidate_from_sdpr“   b   sç   € Ø�9‰9‹;€DÜˆt‹9˜Š>Ðˆ>äÜ�d˜1‘g“,Ø˜‘7Ø�‰7Ü��a‘‹\Ü�T˜!‘W“Ø�a‘Ø�!‰Wô€Iô �1”c˜$“i !‘m QÓ'ò ,ˆØ�‰7�gÒØ'+¨A°©E¡{ˆIÕ$Ø�!‰W˜ÒÜ$'¨¨Q°©U©Ó$4ˆIÕ!Ø�!‰W˜	Ó!Ø $ Q¨¡U¡ˆIÕð,ð Ðr0   r‘   c                 ór  — | j                   › d| j                  › d| j                  › d| j                  › d| j                  › d| j
                  › d| j                  › �}| j                  �|d| j                  › �z  }| j                  �|d| j                  › �z  }| j                  �|d| j                  › �z  }|S )Nú z typ z raddr z rport z	 tcptype )
r�   r€   r…   r„   r‚   rƒ   r†   r�   rŽ   r�   )r‘   r}   s     r.   Úcandidate_to_sdpr–   {   sÔ   € à×ÑÐ
   )×"5Ñ"5Ð!6°a¸	×8JÑ8JÐ7KÈ1Ø×ÑÐ
˜a 	§¡˜~¨Q¨y¯~©~Ð.>¸eÀIÇNÁNÐCSð	Uð ð
 ×ÑÐ+Ø�˜×1Ñ1Ð2Ð3Ñ3ˆØ×ÑÐ(Ø�˜×.Ñ.Ð/Ð0Ñ0ˆØ×ÑÐ$Ø�˜9×,Ñ,Ð-Ð.Ñ.ˆØ€Jr0   c                 óæ   — g }g }| j                  «       D ]W  }|j                  d«      r|j                  |g«       Œ't        |«      r|d   j                  |«       ŒG|j                  |«       ŒY ||fS )Núm=rN   )Ú
splitlinesÚ
startswithÚappendr‹   )r}   ÚsessionÚmediaÚlines       r.   Ú
grouplinesrŸ   Š   sm   € Ø€GØ€EØ—‘Ó ò !ˆØ�?‰?˜4Ô Ø�L‰L˜$˜Õ Ü�ŒZØ�"‰I×Ñ˜TÕ"à�N‰N˜4Õ ð!ð �Eˆ>Ðr0   c                 óX   — t        j                  d| «      }|sJ ‚|j                  d«      S )Nz^IN (IP4|IP6) ([^ ]+)$r9   )ÚreÚmatchÚgroup)r}   Úms     r.   Úipaddress_from_sdpr¥   —   s(   € Ü
�‰Ð)¨3Ó/€AÙ€Hˆ1Ø�7‰7�1‹:Ðr0   Úaddrc                 óP   — t        j                  | «      j                  }d|› d| › �S )NzIN IPr•   )Ú	ipaddressÚ
ip_addressÚversion)r¦   rª   s     r.   Úipaddress_to_sdpr«   �   s+   € Ü×"Ñ" 4Ó(×0Ñ0€GØ�7�)˜1˜T˜FÐ#Ð#r0   c                 ó¬   — i }| j                  d«      D ]=  }d|v r2|j                  dd«      \  }}|t        v rt        |«      ||<   Œ3|||<   Œ9d ||<   Œ? |S )Nú;ú=r   )rŠ   ÚFMTP_INT_PARAMETERSrB   )r}   Ú
parametersÚparamÚkr$   s        r.   Úparameters_from_sdpr³   ¢   sj   € Ø!#€JØ—‘˜3“ò %ˆØ�%‰<Ø—;‘;˜s AÓ&‰DˆAˆqØÔ'Ñ'Ü # A£�
˜1’à !�
˜1’à $ˆJ�uÒð%ð Ðr0   r°   c                 ó¬   — g }| j                  «       D ]/  \  }}|�|j                  |› d|› �«       Œ|j                  |«       Œ1 dj                  |«      S )Nr®   r­   )Úitemsr›   Újoin)r°   ÚparamsÚparam_kÚparam_vs       r.   Úparameters_to_sdprº   °   s^   € Ø€FØ&×,Ñ,Ó.ò #Ñˆ�ØÐØ�M‰M˜W˜I Q w iÐ0Õ1à�M‰M˜'Õ"ð	#ð
 �8‰8�FÓÐr0   rž   c                 óV   — d| v r| dd  j                  dd«      }|d   |d   fS | dd  d fS )Nú:r9   r   r   )rŠ   )rž   r�   s     r.   Ú
parse_attrr½   º   sB   € Ø
ˆd�{Ø�A�Bˆx�~‰~˜c 1Ó%ˆØ�A‰w˜˜Q™ÐÐà�A�Bˆx˜ˆ~Ðr0   Úprofile_strc                 óÞ  — t        | t        «      r%t        j                  d| t        j                  «      st        d«      ‚t        | dd d«      }t        | dd d«      }t        | dd d«      }|t        j                  k(  r&|dz  rt        j                  nt        j                  }nt        |«      }t        D ]#  \  }}}||k(  sŒ|j                  |«      sŒ||fc S  t        d|› d	|› �«      ‚)
Nz[0-9a-f]{6}z)Expected a 6 character hexadecimal stringr<   r8   é   r9   r   zUnrecognized profile_iop = z, profile_idc = )Ú
isinstancerA   r¡   r¢   ÚIÚ
ValueErrorrB   rM   ra   r_   ÚH264_PROFILE_PATTERNSr3   )r¾   Ú	level_idcÚprofile_iopÚprofile_idcÚlevelÚidcÚpatternÚprofiles           r.   Úparse_h264_profile_level_idrÌ   Â   sð   € Ü�k¤3Ô'¬r¯x©xØ�{¤B§D¡Dô0ô ÐDÓEÐEä�K  !Ð$ bÓ)€IÜ�k ! AÐ&¨Ó+€KÜ�k ! AÐ&¨Ó+€Kð ”I×&Ñ&Ò&Ø'2°TÒ'9”	×"Ò"Ä	×@RÑ@R‰ä˜)Ó$ˆä!6ò "ÑˆˆW�gØ�+Ó '§/¡/°+Õ">Ø˜E�>Ò!ð"ô Ø
% k ]Ð2BÀ;À-ÐPóð r0   c                   ó>   — e Zd ZU eed<   eeeef      ed<   defd„Zy)ÚGroupDescriptionÚsemanticrµ   r%   c                 ór   — | j                   › ddj                  t        t        | j                  «      «      › �S )Nr•   )rÏ   r¶   ÚmaprA   rµ   ©r-   s    r.   Ú__str__zGroupDescription.__str__à   s,   € Ø—-‘-�  #§(¡(¬3¬s°D·J±JÓ+?Ó"@Ð!AÐBÐBr0   N)	r>   r?   r@   rA   Ú__annotations__Úlistr   rB   rÓ   r=   r0   r.   rÎ   rÎ   Û   s(   … àƒMØ��c˜3�h‘Ñ Ó ðC˜ô Cr0   rÎ   ÚdestÚvaluer†   c                 ó”   — |j                  «       }|r6| j                  t        |d   t        t	        ||dd  «      «      ¬«      «       y y )Nr   r   )rÏ   rµ   )rŠ   r›   rÎ   rÕ   rÑ   )rÖ   r×   r†   r�   s       r.   Úparse_grouprÙ   ä   sC   € ð �;‰;‹=€DÙØ�‰Ô$¨d°1©g¼TÄ#ÀdÈDÐQRÐQSÈHÓBUÓ=VÔWÕXð r0   c                   óh   — e Zd ZU eed<   dZee   ed<   dZee   ed<   dZ	ee   ed<   dZ
ee   ed<   y)ÚSsrcDescriptionÚssrcNÚcnameÚmsidÚmslabelÚlabel)r>   r?   r@   rB   rÔ   rÝ   r   rA   rÞ   rß   rà   r=   r0   r.   rÛ   rÛ   ì   s?   … à
ƒIØ€Eˆ8�C‰=ÓØ€Dˆ(�3‰-ÓØ!€GˆX�c‰]Ó!Ø€Eˆ8�C‰=Ôr0   rÛ   )rÝ   rÞ   rß   rà   c            
       ó:   — e Zd Zdedededee   ddf
d„Zdefd„Zy)	ÚMediaDescriptionÚkindrƒ   rË   Úfmtr%   Nc                 ó:  — || _         || _        d | _        || _        d | _        d | _        d | _        d | _        d| _        g | _	        g | _
        || _        t        «       | _        d | _        i | _        d | _        d | _        d | _        g | _        d| _        d | _        y )NF)rã   rƒ   ÚhostrË   Ú	directionrÞ   Ú	rtcp_portÚ	rtcp_hostÚrtcp_muxrÜ   Ú
ssrc_grouprä   r   r   ÚsctpCapabilitiesÚsctpmapÚ	sctp_portÚdtlsÚiceÚice_candidatesÚice_candidates_completeÚice_options)r-   rã   rƒ   rË   rä   s        r.   r/   zMediaDescription.__init__ù   sª   € àˆŒ	ØˆŒ	Ø#'ˆŒ	ØˆŒØ(,ˆŒØ#'ˆŒ	ð )-ˆŒØ(,ˆŒØˆŒð ,.ˆŒ	Ø24ˆŒð ˆŒÜ#Ó%ˆŒð @DˆÔØ')ˆŒØ(,ˆŒð 26ˆŒ	ð 04ˆŒØ57ˆÔØ',ˆÔ$Ø*.ˆÕr0   c                 ó„
  — g }|j                  d| j                  › d| j                  › d| j                  › ddj	                  t        t        | j                  «      «      › �«       | j                  �'|j                  dt        | j                  «      › �«       | j                  �|j                  d| j                  › �«       | j                  j                  D ]-  }|j                  d|j                  › d|j                  › �«       Œ/ | j                  j                  r(|j                  d| j                  j                  › �«       | j                   r|j                  d| j                   › �«       | j"                  �dd| j"                  › �}| j$                  �|dt        | j$                  «      › �z  }|j                  |«       | j&                  r|j                  d	«       | j(                  D ]  }|j                  d
|› �«       Œ | j*                  D ]@  }t,        D ]5  }t/        ||«      }|€Œ|j                  d|j*                  › d|› d|› �«       Œ7 ŒB | j                  j0                  D ]¸  }|j                  d|j2                  › d|› �«       |j4                  D ]M  }	|	j6                  }
|	j8                  r|
d|	j8                  › �z  }
|j                  d|j2                  › d|
› �«       ŒO t;        |j<                  «      }|sŒ˜|j                  d|j2                  › d|› �«       Œº | j>                  jA                  «       D ]  \  }}|j                  d|› d|› �«       Œ | jB                  �|j                  d| jB                  › �«       | jD                  �(|j                  d| jD                  jF                  › �«       | jH                  D ]  }|j                  dtK        |«      z   «       Œ! | jL                  r|j                  d«       | jN                  jP                  �(|j                  d| jN                  jP                  › �«       | jN                  jR                  �(|j                  d| jN                  jR                  › �«       | jT                  �|j                  d| jT                  › �«       | jV                  ru| jV                  jX                  D ]-  }|j                  d|jZ                  › d|j\                  › �«       Œ/ |j                  dt^        | jV                  j`                     › �«       dj	                  |«      dz   S )Nr˜   r•   úc=úa=z	a=extmap:za=mid:za=msid:za=rtcp:z
a=rtcp-muxza=ssrc-group:za=ssrc:r¼   z	a=rtpmap:z
a=rtcp-fb:za=fmtp:z
a=sctpmap:za=sctp-port:za=max-message-size:za=candidate:za=end-of-candidatesza=ice-ufrag:z
a=ice-pwd:za=ice-options:za=fingerprint:za=setup:ú
)1r›   rã   rƒ   rË   r¶   rÑ   rA   rä   ræ   r«   rç   r   ÚheaderExtensionsÚidÚuriÚmuxIdrÞ   rè   ré   rê   rë   rÜ   ÚSSRC_INFO_ATTRSÚgetattrÚcodecsÚpayloadTypeÚrtcpFeedbackr†   Ú	parameterrº   r°   rí   rµ   rî   rì   ÚmaxMessageSizerñ   r–   rò   rð   ÚusernameFragmentÚpasswordró   rï   ÚfingerprintsÚ	algorithmr×   ÚDTLS_ROLE_SETUPÚrole)r-   ÚlinesÚheaderrž   r£   Ú	ssrc_infoÚ	ssrc_attrÚ
ssrc_valueÚcodecÚfeedbackr×   r·   r²   r$   r‘   Úfingerprints                   r.   rÓ   zMediaDescription.__str__  s§  € ØˆØ�‰Ø�—‘�˜1˜TŸY™Y˜K q¨¯©¨°a¸¿¹ÄÄSÈ$Ï(É(ÓASÓ8TÐ7UÐVô	
ð �9‰9Ð Ø�L‰L˜2Ô.¨t¯y©yÓ9Ð:Ð;Ô<Ø�>‰>Ð%Ø�L‰L˜2˜dŸn™nÐ-Ð.Ô/à—h‘h×/Ñ/ò 	?ˆFØ�L‰L˜9 V§Y¡Y K¨q°·±°Ð=Õ>ð	?ð �8‰8�>Š>Ø�L‰L˜6 $§(¡(§.¡.Ð!1Ð2Ô3à�9Š9Ø�L‰L˜7 4§9¡9 +Ð.Ô/à�>‰>Ð%Ø˜TŸ^™^Ð,Ð-ˆDØ�~‰~Ð)Ø˜!Ô,¨T¯^©^Ó<Ð=Ð>Ñ>�Ø�L‰L˜ÔØ�}Š}Ø—‘˜\Ô*à—_‘_ò 	2ˆEØ�L‰L˜=¨¨Ð0Õ1ð	2àŸ™ò 	VˆIÜ,ò V�	Ü$ Y°	Ó:�
ØÑ)Ø—L‘L 7¨9¯>©>Ð*:¸!¸I¸;ÀaÈ
À|Ð!TÕUñVð	Vð —X‘X—_‘_ò 	EˆEØ�L‰L˜9 U×%6Ñ%6Ð$7°q¸¸Ð@ÔAð "×.Ñ.ò G�Ø Ÿ™�Ø×%Ò%Ø˜q ×!3Ñ!3Ð 4Ð5Ñ5�EØ—‘˜z¨%×*;Ñ*;Ð)<¸A¸e¸WÐEÕFð	Gô ' u×'7Ñ'7Ó8ˆFÚØ—‘˜w u×'8Ñ'8Ð&9¸¸6¸(ÐCÕDð	Eð —L‘L×&Ñ&Ó(ò 	/‰DˆAˆqØ�L‰L˜: a S¨¨!¨Ð-Õ.ð	/à�>‰>Ð%Ø�L‰L˜<¨¯©Ð'7Ð8Ô9Ø× Ñ Ð,Ø�L‰LÐ.¨t×/DÑ/D×/SÑ/SÐ.TÐUÔVð ×,Ñ,ò 	GˆIØ�L‰L˜Ô*:¸9Ó*EÑEÕFð	Gà×'Ò'Ø�L‰LÐ.Ô/Ø�8‰8×$Ñ$Ð0Ø�L‰L˜<¨¯©×(AÑ(AÐ'BÐCÔDØ�8‰8×ÑÐ(Ø�L‰L˜: d§h¡h×&7Ñ&7Ð%8Ð9Ô:Ø×ÑÐ'Ø�L‰L˜>¨$×*:Ñ*:Ð);Ð<Ô=ð �9Š9Ø#Ÿy™y×5Ñ5ò �Ø—‘Ø$ [×%:Ñ%:Ð$;¸1¸[×=NÑ=NÐ<OÐPõðð �L‰L˜8¤O°D·I±I·N±NÑ$CÐ#DÐEÔFà�{‰{˜5Ó! FÑ*Ð*r0   )	r>   r?   r@   rA   rB   rÕ   r   r/   rÓ   r=   r0   r.   râ   râ   ø   s=   „ ð"/˜Sð "/¨ð "/°cð "/ÀÀSÁ	ð "/Èdó "/ðHM+˜ô M+r0   râ   c                   óP   — e Zd Zd	d„Zededd fd„«       Zdedee   fd„Z	defd„Z
y)
ÚSessionDescriptionr%   Nc                 ó‚   — d| _         d | _        d| _        d| _        d | _        g | _        g | _        g | _        d | _        y )Nr   ú-z0 0)	rª   ÚoriginÚnameÚtimeræ   r£   Úmsid_semanticr�   r†   rÒ   s    r.   r/   zSessionDescription.__init__n  sB   € ØˆŒØ%)ˆŒØˆŒ	ØˆŒ	Ø#'ˆŒ	Ø-/ˆŒ
Ø57ˆÔØ-/ˆŒ
Ø#'ˆ�	r0   r}   c                 ób  ‡&‡'— d Š&g }d }d}d }d }d }dt         dt        fˆ&fd„}t        |«      \  }	}
 | «       }|	D �]�  }|j                  d«      r"t        |j	                  «       dd  «      |_        Œ7|j                  d«      r|j	                  «       dd  |_        Œa|j                  d«      r|j	                  «       dd  |_        Œ‹|j                  d	«      rt        |dd  «      |_	        Œ°|j                  d
«      r|j	                  «       dd  |_
        ŒÚ|j                  d«      sŒìt        |«      \  }}|dk(  r1|j                  «       \  }}|j                  t        ||¬«      «       �Œ0|dk(  rd}�Œ9|dk(  r|}�ŒB|dk(  r|}�ŒK|dk(  r|}�ŒT|dk(  rt        |j                   |«       �Œq|dk(  rt        |j"                  |«       �ŒŽ|dk(  s�Œ•t$        |   }�Œ  |
D �]  }t'        j(                  d|d   «      }|sJ ‚|j!                  d«      }|j!                  d«      j                  «       }d }|dv r?|D �cg c]  }t        |«      ‘Œ }}|D ]"  }|dk\  r|dk  sJ ‚|t*        j,                  vrŒ"J ‚ t/        |t        |j!                  d«      «      |j!                  d«      |xs |¬«      Š&t1        |d d  |¬«      ‰&_        t5        |||¬«      ‰&_        |‰&_        |j:                  j                  ‰&«       |dd  D �]á  }|j                  d	«      rt        |dd  «      ‰&_	        Œ)|j                  d«      sŒ;t        |«      \  }}|d k(  r%‰&j<                  j                  t?        |«      «       Œs|d!k(  rd‰&_         Œ€|d"k(  rg|j                  «       \  }}d#|v r|j                  d#«      \  }}tC        t        |«      |¬$«      }‰&j*                  jD                  j                  |«       Œì|dk(  rE|j                  «       \  }}‰&j2                  jF                  j                  t        ||¬«      «       �Œ6|dk(  r	|‰&_        �ŒD|dk(  r|‰&j6                  _$        �Œ\|dk(  r|‰&j6                  _%        �Œt|d%k(  rtM        t        |«      ¬&«      ‰&_'        �Œ•|d'k(  r|‰&j*                  _(        �Œ­|d(k(  r	|‰&_)        �Œ»|d)k(  rJ|j                  d*d«      }t        |d   «      ‰&_*        tW        |«      dkD  s�Œõt        |d   «      ‰&_,        �Œ
|d+k(  r	d‰&_-        �Œ|dk(  rt$        |   ‰&j2                  _.        �Œ7|t^        v r	|‰&_0        �ŒH|d,k(  rµ|j                  d*d«      \  }}|j                  d#«      }‰&jb                  d-k(  r tW        |«      dkD  rt        |d   «      }nd}nd }t        ‰&jb                  d#z   |d   z   |t        |d   «      t        |«      ¬.«      } ‰&j*                  jd                  j                  | «       �Œ|d/k(  r/|j                  d*d«      \  }}|tg        ‰&|«      t        |«      <   �Œ6|d0k(  rt        |«      ‰&_4        �ŒM|d1k(  rt        ‰&jj                  |t         ¬2«       �Œp|d3k(  s�Œw|j                  d*d«      \  }!}"t        |!«      Š'|"j                  d4d«      \  }#}$	 tm        ˆ'fd5„‰&jn                  D «       «      }%|#tt        v s�ŒÕtw        |%|#|$«       �Œä ‰&j2                  j\                  €d ‰&_        |dd  D ]ê  }|j                  d«      sŒt        |«      \  }}|d7k(  r7|j                  d*d«      \  }} |t        |«      «      } ty        |«      | _=        Œ_|d8k(  sŒe|j                  d*d«      }‰&j*                  jd                  D ][  } |d   d9t}        | j~                  «      fv sŒ | j€                  j                  tƒ        |d   tW        |«      dkD  r|d   nd ¬:«      «       Œ] Œì �Œ |S c c}w # tp        $ r+ ts        ‰'¬6«      }%‰&jn                  j                  |%«       Y �Œfw xY w);NFÚptr%   c                 ó^   •‡ — t        t        ˆ fd„‰j                  j                  «      «      S )Nc                 ó"   •— | j                   ‰k(  S r2   )rÿ   )r'   r  s    €r.   ú<lambda>z>SessionDescription.parse.<locals>.find_codec.<locals>.<lambda>„  s   ø€ ¨¯©¸"Ñ)<€ r0   )ÚnextÚfilterr   rþ   )r  Úcurrent_medias   `€r.   Ú
find_codecz,SessionDescription.parse.<locals>.find_codecƒ  s"   ù€ ÜœÓ<¸m×>OÑ>O×>VÑ>VÓWÓXÐXr0   úv=r9   úo=ús=rõ   út=rö   r  )r  r×   zice-liteTzice-optionszice-pwdz	ice-ufragr£   zmsid-semanticÚsetupz#^m=([^ ]+) ([0-9]+) ([A-Z/]+) (.+)$r   r   r<   )ÚaudioÚvideoé   r;   )rã   rƒ   rË   rä   )r  r  )ÚiceLiter  r  r‘   zend-of-candidatesÚextmapú/)rù   rú   zmax-message-size)r  ÚmidrÞ   Úrtcpr•   zrtcp-muxÚrtpmapr'  )ÚmimeTypeÚchannelsÚ	clockRaterÿ   rí   z	sctp-portz
ssrc-group)r†   rÜ   r¼   c              3   óB   •K  — | ]  }|j                   ‰k(  sŒ|–— Œ y ­wr2   ©rÜ   )Ú.0r'   rÜ   s     €r.   ú	<genexpr>z+SessionDescription.parse.<locals>.<genexpr>  s   øè ø€ Ò Q qÀ!Ç&Á&ÈDÃ.¤Ñ Qùs   ƒ˜r4  Úfmtpzrtcp-fbÚ*)r†   r  )BrB   r   rŸ   rš   Ústriprª   r  r  r¥   ræ   r  r½   rŠ   r›   r	   rÙ   r£   r  ÚDTLS_SETUP_ROLEr¡   r¢   r   ÚFORBIDDEN_PAYLOAD_TYPESrâ   r
   rï   r   rð   ró   r�   rñ   r“   rò   r   rø   r  r  r  r   rì   rû   rÞ   rè   r‹   ré   rê   r  Ú
DIRECTIONSrç   rã   rþ   rý   rî   rë   r  rÜ   ÚStopIterationrÛ   rü   Úsetattrr³   r°   rA   rÿ   r   r   )(Úclsr}   Údtls_fingerprintsÚ	dtls_roleÚice_literó   Úice_passwordÚice_usernameFragmentr!  Úsession_linesÚmedia_groupsrœ   rž   Úattrr×   r  r  Úmedia_linesr¤   rã   rä   Úfmt_intr'   r  Úext_idÚext_uriÚext_directionÚ	extensionr�   Ú	format_idÚformat_descr1  r  Ússrc_strÚ	ssrc_descr  r  r  r   rÜ   s(                                         @@r.   ÚparsezSessionDescription.parsey  sß  ù€ à48ˆØÐØˆ	ØˆØˆØˆØ#Ðð	Yœ3ð 	YÔ#8õ 	Yô '1°£oÑ#ˆ�|ñ “%ˆØ!ó 	7ˆDØ�‰˜tÔ$Ü"% d§j¡j£l°1°2Ð&6Ó"7�•Ø—‘ Ô&Ø!%§¡£¨a¨bÐ!1�•Ø—‘ Ô&Ø#Ÿz™z›|¨A¨BÐ/�•Ø—‘ Ô&Ü1°$°q°r°(Ó;�•Ø—‘ Ô&Ø#Ÿz™z›|¨A¨BÐ/�•Ø—‘ Õ&Ü(¨Ó.‘��eØ˜=Ò(Ø-2¯[©[«]Ñ*�I˜{Ø%×,Ñ,Ü*°YÀkÔRöð ˜ZÒ'Ø#’HØ˜]Ò*Ø"'’KØ˜YÒ&Ø#(’LØ˜[Ò(Ø+0Ò(Ø˜W’_Ü §¡¨uÖ5Ø˜_Ò,Ü × 5Ñ 5°uÖ=Ø˜W”_Ü /°Ñ 6’Ið?	7ðD (ó F	"ˆKÜ—‘Ð>ÀÈAÁÓOˆAÙˆH�1ð —7‘7˜1“:ˆDØ—'‘'˜!“*×"Ñ"Ó$ˆCØ+/ˆGØÐ)Ñ)Ø+.Ö/ aœ3˜q�6Ð/�Ð/Ø!ò A�BØ š7 r¨C¢xÐ/Ð/Ø¤S×%@Ñ%@Ò@Ð@Ð@ðAô -Ø¤ A§G¡G¨A£J£¸¿¹À»ÈÊÐTWôˆMô "3Ø.©qÐ1¸	ô"ˆMÔô !1Ø Ø!5Ø%ô!ˆMÔð
 )4ˆMÔ%Ø�M‰M× Ñ  Ô/à# A B˜ó TF�Ø—?‘? 4Ô(Ü);¸DÀÀ¸HÓ)E�MÕ&Ø—_‘_ TÕ*Ü",¨TÓ"2‘K�D˜%Ø˜{Ò*Ø%×4Ñ4×;Ñ;Ô<NÈuÓ<UÕVØÐ!4Ò4Ø@D˜Õ=Ø Ò)Ø*/¯+©+«-™˜ Ø &™=Ø4:·L±LÀÓ4EÑ1˜F MÜ$CÜ" 6›{°ô%˜	ð &×)Ñ)×:Ñ:×AÑAÀ)ÕLØ Ò.Ø16·±³Ñ.˜	 ;Ø%×*Ñ*×7Ñ7×>Ñ>Ü.¸È+ÔVöð  Ò.Ø49˜Ö1Ø Ò*Ø5:˜×)Ñ)Ö2Ø Ò,Ø=B˜×)Ñ)Ö:ØÐ!3Ò3Ü9LÜ+.¨u«:ô:˜Ö6ð  šØ27˜×)Ñ)Ö/Ø šØ-2˜Ö*Ø šØ$Ÿ{™{¨3°Ó2˜Ü25°d¸1±g³,˜Ô/Ü˜t›9 qœ=Ü6HÈÈaÉÓ6Q˜MÖ3Ø Ò+Ø15˜Ö.Ø šÜ2AÀ%Ñ2H˜×*Ñ*Ö/Ø¤Ñ+Ø26˜Ö/Ø Ò)Ø16·±¸SÀ!Ó1DÑ.˜	 ;Ø*×0Ñ0°Ó5˜Ø(×-Ñ-°Ò8Ü" 4›y¨1š}Ü+.¨t°A©w«<¡à+,¡à'+˜HÜ 5Ø%2×%7Ñ%7¸#Ñ%=ÀÀQÁÑ%GØ%-Ü&)¨$¨q©'£lÜ(+¨I«ô	!˜ð &×)Ñ)×0Ñ0×7Ñ7¸Ö>Ø Ò*Ø16·±¸SÀ!Ó1DÑ.˜	 ;ØGRœ ¨tÓ4´S¸³^ÓDØ Ò,Ü25°e³*˜Ö/Ø Ò-Ü# M×$<Ñ$<¸eÌ#×NØ œØ.3¯k©k¸#¸qÓ.AÑ+˜ )Ü" 8›}˜Ø09·±ÀÀQÓ0GÑ-˜	 :ðAÜ(,Û Q¨M×,>Ñ,>Ô Qó)˜Ið %¬Ó7Ü# I¨y¸*ÖEðiTFðl ×!Ñ!×&Ñ&Ð.Ø%)�Ô"ð $ A B˜ò "�Ø—?‘? 4Õ(Ü",¨TÓ"2‘K�D˜%Ø˜v’~Ø16·±¸SÀ!Ó1DÑ.˜	 ;Ù *¬3¨y«>Ó :˜Ü+>¸{Ó+K˜Õ(Ø Ó*Ø$Ÿ{™{¨3°Ó2˜Ø%2×%6Ñ%6×%=Ñ%=ò "˜EØ# A™w¨3´°E×4EÑ4EÓ0FÐ*GÒGØ %× 2Ñ 2× 9Ñ 9Ü$3Ø-1°!©WÜ=@À»YÈº]°$°q²'ÐPTô%&õ!"ñ"ò"ðmF	"ðP ˆùò 0øôF  -ò AÜ(7¸TÔ(B˜IØ)×.Ñ.×5Ñ5°i×@ðAús   È8_5Ú)_:ß:0`.à-`.r�   c                 ó  — || j                   v sJ ‚|j                  �od|j                  v ra|j                  j                  «       }| j                  D ]8  }|j                  dk(  sŒ|d   |j
                  v sd|j
                  v sŒ3|d   c S  y )Nr•   ÚWMSr   r8  r   )r�   rÞ   rŠ   r  rÏ   rµ   )r-   r�   r�   r£   s       r.   Úwebrtc_track_idz"SessionDescription.webrtc_track_id6  s…   € Ø˜Ÿ
™
Ñ"Ð"Ð"Ø�:‰:Ð! c¨U¯Z©ZÑ&7Ø—:‘:×#Ñ#Ó%ˆDØ×+Ñ+ò #�Ø—>‘> UÓ*Ø˜‘G˜uŸ{™{Ñ*¨c°U·[±[Ò.@à ™7’Nð	#ð
 r0   c           	      ó  — d| j                   › �d| j                  › �d| j                  › �g}| j                  �|dt	        | j                  «      › �gz  }|d| j
                  › �gz  }t        d„ | j                  D «       «      r|dgz  }| j                  D ]  }|d|› �gz  }Œ | j                  D ]  }|d	|› �gz  }Œ d
j                  |«      d
z   dj                  | j                  D �cg c]  }t        |«      ‘Œ c}«      z   S c c}w )Nr"  r#  r$  rõ   r%  c              3   óH   K  — | ]  }|j                   j                  –— Œ y ­wr2   )rð   r*  )r5  r¤   s     r.   r6  z-SessionDescription.__str__.<locals>.<genexpr>F  s   è ø€ Ò1 ˆq�u‰u�}�}Ñ1ùs   ‚ "z
a=ice-liteza=group:za=msid-semantic:r÷   Ú )rª   r  r  ræ   r«   r  Úanyr�   r£   r  r¶   rA   )r-   r	  r£   r¤   s       r.   rÓ   zSessionDescription.__str__A  s  € Ø�d—l‘l�^Ð$¨¨4¯;©;¨-Ð&8¸B¸t¿y¹y¸kÐ:JÐKˆØ�9‰9Ð Ø˜Ô+¨D¯I©IÓ6Ð7Ð8Ð9Ñ9ˆEØ�B�t—y‘y�kÐ"Ð#Ñ#ˆÜÑ1 d§j¡jÔ1Ô1Ø�l�^Ñ#ˆEØ—Z‘Zò 	*ˆEØ˜  Ð(Ð)Ñ)‰Eð	*à×'Ñ'ò 	2ˆEØÐ(¨¨Ð0Ð1Ñ1‰Eð	2à�{‰{˜5Ó! FÑ*¨R¯W©WÀdÇjÁjÖ5QÀ´c¸!µfÒ5QÓ-RÑRÐRùÒ5Qs   Ã*D
)r%   N)r>   r?   r@   r/   ÚclassmethodrA   rR  râ   r   rU  rÓ   r=   r0   r.   r  r  m  sU   „ ó	(ð ðz˜ð zÐ 4ò zó ðzðx	Ð%5ð 	¸(À3¹-ó 	ðS˜ô Sr0   r  )?Úenumr¨   r¡   Údataclassesr   Útypingr   r   r   rX  r   Úrtcdtlstransportr	   r
   Úrtcicetransportr   r   Úrtcrtpparametersr   r   r   r   r   Úrtcsctptransportr   r<  r  Údictrµ   r:  r¯   r#   ÚEnumrE   ÚIntEnumrM   rF   rG   rH   rJ   rI   rK   rÄ   rA   r“   r–   ÚtuplerÕ   rŸ   r¥   r«   r³   rº   r½   rÌ   rÎ   r†   rB   rÙ   rÛ   rü   râ   r  )r²   r$   s   00r.   ú<module>rf     sß  ðÛ Û Û 	Ý !ß 'Ñ 'å ß Cß >÷õ õ 2â=€
à$°ÀIÑN€Ù¨_×-BÑ-BÓ-D×E¡6 A q˜˜AšÓEÓF€òÐ ÷
ñ 
ô*$�$—)‘)ô $ô�—‘ô ð* 
‰:�jÓ! ;×#KÑ#KÐLØ	‰:�jÓ! ;×#KÑ#KÐLØ	‰:�jÓ! ;×#KÑ#KÐLØ	‰:�jÓ! ;×#?Ñ#?Ð@Ø	‰:�jÓ! ;×#?Ñ#?Ð@Ø	‰:�jÓ! ;×#;Ñ#;Ð<Ø	‰:�jÓ! ;×#;Ñ#;Ð<Ø	‰:�jÓ! ;×#GÑ#GÐHØ	‰:�jÓ! ;×#JÑ#JÐKð
Ð ð˜Cð  Oó ð2 ð °Có ð
�Cð 
˜E $ s¡)¨T°$°s±)©_Ð"<Ñ=ó 
ð˜Cð  Có ð$˜3ð $ 3ó $ð
˜Sð  ^ó ð .ð °Só ð�Sð ˜U 3¨°©Ð#5Ñ6ó ð¨Sð °U¸;È	Ð;QÑ5Ró ð2 ÷Cð Có ðCð SVñYØ
ÐÑ
 ðYØ),ðYØ49¸$¸s¹)ÀTÈ#ÁYÐ:NÑ4OðYà	óYð ÷ ð  ó ð ò 8€÷r+ñ r+÷j_Sò _Sùóo
 Fs   Á&H 
