§
    bíhh‡  ã                   ó¼   — d dl Z d dlZd dlZd dlZd dlZ	 d dlmZ n# e$ r	 d dlmZ Y nw xY wdZ	 G d„ d¦  «        Z
 G d„ de¦  «        Zd„ Z G d	„ d
e
¦  «        ZdS )é    N)ÚStringIOFc                   óN   — 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S )Ú	InterfacezThe core Ingen interfacec                 ó   — d S ©N© ©ÚselfÚsubjectÚbodys      ú/home/debian/UI/ingen.pyÚputzInterface.put!   ó   € Øˆó    c                 ó   — d S r   r   r	   s      r   Úput_internalzInterface.put_internal$   r   r   c                 ó   — d S r   r   ©r
   r   ÚremoveÚadds       r   ÚpatchzInterface.patch'   r   r   c                 ó   — d S r   r   ©r
   r   s     r   ÚgetzInterface.get*   r   r   c                 ó   — d S r   r   ©r
   r   ÚkeyÚvalues       r   ÚsetzInterface.set-   r   r   c                 ó   — d S r   r   ©r
   ÚtailÚheads      r   ÚconnectzInterface.connect0   r   r   c                 ó   — d S r   r   r!   s      r   Ú
disconnectzInterface.disconnect3   r   r   c                 ó   — d S r   r   r   s     r   Údisconnect_allzInterface.disconnect_all6   r   r   c                 ó   — d S r   r   r   s     r   ÚdeletezInterface.delete9   r   r   c                 ó   — d S r   r   ©r
   r   Údestinations      r   ÚcopyzInterface.copy<   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r$   r&   r(   r*   r.   r   r   r   r   r      s°   € € € € € ØÐðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð ð r   r   c                   ó   — e Zd Zd„ ZdS )ÚErrorc                 óF   — t                                | |›d|›�¦  «         d S )Nz	; cause: )Ú	ExceptionÚ__init__)r
   ÚmsgÚcauses      r   r7   zError.__init__@   s)   € Ý×Ò˜4°C°C°C¸¸Ð!?Ñ@Ô@Ð@Ð@Ð@r   N)r/   r0   r1   r7   r   r   r   r4   r4   ?   s(   € € € € € ðAð Að Að Að Ar   r4   c                  óZ  — t          j        d¦  «        } | r| S t          j        dk    r!t           j                             g d¢¦  «        S t          j        dk    r!t           j                             ddg¦  «        S t          j        dk    r�t           j                             t           j                             t          j        d¦  «        d	¦  «        t           j                             t          j        d
¦  «        d	¦  «        g¦  «        S t           j                             g d¢¦  «        S )NÚLV2_PATHÚdarwin)z~/Library/Audio/Plug-Ins/LV2ú~/.lv2ú/usr/local/lib/lv2ú/usr/lib/lv2z/Library/Audio/Plug-Ins/LV2Úhaikur=   z/boot/common/add-ons/lv2Úwin32ÚAPPDATAÚLV2ÚCOMMONPROGRAMFILES)r=   r?   r>   )ÚosÚgetenvÚsysÚplatformÚpathsepÚjoinÚpath)rK   s    r   Úlv2_pathrL   C   s  € ÝŒ9�ZÑ Ô €DØð 7ØˆÝ	Œ˜Ò	!Ð	!ÝŒz�Šð  ?ð  ?ð  ?ñ @ô @ð 	@õ
 
Œ˜Ò	 Ð	 ÝŒz�Š Ø :ð <ñ =ô =ð 	=å	Œ˜Ò	 Ð	 ÝŒz�ŠÝ”—’�RœY yÑ1Ô1°5Ñ9Ô9Ý”—’�RœYÐ';Ñ<Ô<¸eÑDÔDð Fñ Gô Gð 	Gõ Œz�Šð  6ð  6ð  6ñ 7ô 7ð 	7r   c                   óv   — e Zd Zd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S )ÚRemoteúunix:///tmp/ingen.sockc                 ó6   — d| _         |dz   | _        || _        d S )Né   ú/)Úmsg_idÚserver_baseÚ
server_uri)r
   Úuris     r   r7   zRemote.__init__[   s    € ØˆŒØ ™9ˆÔØˆŒˆˆr   c                 ó8   — | j                              ¦   «          d S r   )ÚsockÚclose)r
   s    r   Ú__del__zRemote.__del__d   s   € ØŒ	�ŠÑÔÐÐÐr   c                 ó  — d}|�s€	 | j                              d¦  «        ret          j        t          j        t          j        ¦  «        | _        | j                             | j         t          d¦  «        d …         ¦  «         d}nÈ| j                              d¦  «        r—t          j        t          j        t          j        ¦  «        | _        t          j
        d| j         t          d¦  «        d …         ¦  «        }|d         t          |d         ¦  «        f}| j                             |¦  «         d}nt          d| j         z  ¦  «        ‚n2# t          t          f$ r}t          j        d	¦  «         Y d }~nd }~ww xY w|�¯~d S d S )
NFzunix://Tztcp://z[:/]r   rQ   zUnsupported server URI `%sgš™™™™™É?)rU   Ú
startswithÚsocketÚAF_UNIXÚSOCK_STREAMrX   r$   ÚlenÚAF_INETÚreÚsplitÚintr6   ÚConnectionErrorÚFileNotFoundErrorÚtimeÚsleep)r
   Ú	connectedÚparsedÚaddrÚes        r   Úsocket_connectzRemote.socket_connectg   sn  € Øˆ	ð ñ 	 ð Ø”?×-Ò-¨iÑ8Ô8ð TÝ &¤­f¬n½fÔ>PÑ QÔ Q�D”IØ”I×%Ò% d¤oµc¸)±n´n°o°oÔ&FÑGÔGÐGØ $�I�IØ”_×/Ò/°Ñ9Ô9ð TÝ &¤­f¬n½fÔ>PÑ QÔ Q�D”IÝœX f¨d¬o½cÀ(¹m¼m¸n¸nÔ.MÑNÔN�FØ" 1œI¥s¨6°!¬9¡~¤~Ð6�DØ”I×%Ò% dÑ+Ô+Ð+Ø $�I�Iå#Ð$@À4Ä?Ñ$RÑSÔSÐSøøÝ#Õ%6Ð7ð  ð  ð  Ý”
˜3‘”������øøøøð øøøð ñ 	 ð 	 ð 	 ð 	 ð 	 s   ‡EE ÅE>Å E9Å9E>c                 óR   — t           j        d         dk    rt          |d¦  «        S |S )Nr   é   úutf-8)rG   Úversion_infoÚbytes©r
   r8   s     r   Ú	msgencodezRemote.msgencode~   s*   € ÝÔ˜AÔ !Ò#Ð#Ý˜˜gÑ&Ô&Ð&àˆJr   c                 ó|   — |}|                      | j        ¦  «        r|t          | j        ¦  «        dz
  d …         S |S )NrQ   )r\   rT   r`   )r
   rV   rK   s      r   Úuri_to_pathzRemote.uri_to_path„   sD   € ØˆØ�>Š>˜$Ô*Ñ+Ô+ð 	1Ø•s˜4Ô+Ñ,Ô,¨QÑ.Ð/Ð/Ô0Ð0Øˆ
r   c                 ó(  — d}t           sˆ	 | j                             d¦  «         | j                             d¦  «        }n# t          j        $ r Y ŒNw xY w|r|d         dk    rn.||                     d¦  «        z  }|dd…         dk    rnt           ¯ˆ|S )	zTRead from socket until a null terminator is received
        or split on 


        Ú é   rQ   r   rp   éþÿÿÿNz

)Ú_FINISHrX   Ú
settimeoutÚrecvr]   ÚtimeoutÚdecode)r
   r8   Úchunks      r   r}   zRemote.recvŠ   s»   € ð ˆÝð 	ðØ”	×$Ò$ QÑ'Ô'Ð'Øœ	Ÿš qÑ)Ô)��øÝ”>ð ð ð Ø�ðøøøð ð ˜E !œH¨šM˜MØð �5—<’< Ñ(Ô(Ñ(ˆCØ�2�3�3Œx˜6Ò!Ð!Øõ ð 	ð  ˆ
s   ‹4A  Á AÁAc                 óº   — t          |¦  «        t          k    rd                     |¦  «        }| j                             |                      |¦  «        ¦  «         d S )Nú
)ÚtypeÚlistrJ   rX   Úsendallrt   rs   s     r   ÚsendzRemote.send¡   sL   € Ý�‰9Œ9�ÒÐØ—)’)˜C‘.”.ˆCð 	Œ	×Ò˜$Ÿ.š.¨Ñ-Ô-Ñ.Ô.Ð.Ð.Ð.r   c                 ó2   — |                       d|z  ¦  «        S )Nz)
[]
	a patch:Get ;
	patch:subject <%s> .
©r†   r   s     r   r   z
Remote.get«   ó'   € Ø�yŠyð ð ñ	ñ ô ð 	r   c                 ó:   — |                       d|›d|›d�¦  «        S )Nú#
[]
	a patch:Put ;
	patch:subject <z> ;
	patch:body [
ú
	] .
rˆ   r	   s      r   r   z
Remote.put²   s.   € Ø�yŠyˆyð €w€w���ðñ ô ð 	r   c                 ó:   — |                       d|›d|›d�¦  «        S )Nr‹   z<> ;
    patch:context ingen:internalContext ;
	patch:body [
rŒ   rˆ   r	   s      r   r   zRemote.put_internal¼   s.   € Ø�yŠyˆyð €w€w���ðñ ô ð 	r   c           	      ó@   — |                       d|›d|›d|›d�¦  «        S )Nz%
[]
	a patch:Patch ;
	patch:subject <z> ;
	patch:remove [
z
	] ;
	patch:add [
rŒ   rˆ   r   s       r   r   zRemote.patchÇ   s4   € Ø�yŠyˆyð €w€w���˜˜˜ð
ñ 
ô 
ð 
	r   c           	      ó@   — |                       d|›d|›d|›d�¦  «        S )Nz#
[]
	a patch:Set ;
	patch:subject <z> ;
	patch:property <z> ;
    patch:value z .
rˆ   r   s       r   r   z
Remote.setÔ   s4   € Ø�yŠyˆyð €w€w����U�U�Uðñ ô ð 	r   c           	      ó~   — |                       dt          j                             ||g¦  «        ›d|›d|›d�¦  «        S )Nr‹   z0> ;
	patch:body [
		a ingen:Arc ;
		ingen:tail <ú> ;
		ingen:head <ú	> ;
	] .
)r†   rE   rK   Úcommonprefixr!   s      r   r$   zRemote.connectÝ   sJ   € Ø�yŠyˆyõ 
„w×Ò˜T 4˜LÑ)Ô)Ð)Ð)¨4¨4¨4°°°ð	7ñ 	8ô 	8ð 		8r   c                 ó:   — |                       d|›d|›d�¦  «        S )NzB
[]
	a patch:Delete ;
	patch:body [
		a ingen:Arc ;
		ingen:tail <r‘   r’   rˆ   r!   s      r   r&   zRemote.disconnecté   s.   € Ø�yŠyˆyð €t€tˆTˆTˆTðñ ô ð 	r   c                 ó2   — |                       d|z  ¦  «        S )Nzj
[]
	a patch:Delete ;
	patch:subject </main> ;
	patch:body [
		a ingen:Arc ;
		ingen:incidentTo <%s>
	] .
rˆ   r   s     r   r(   zRemote.disconnect_allô   s'   € Ø�yŠyð ð ññ ô ð 	r   c                 ó2   — |                       d|z  ¦  «        S )Nz,
[]
	a patch:Delete ;
	patch:subject <%s> .
rˆ   r   s     r   r*   zRemote.deleteÿ   r‰   r   c                 ó:   — |                       d|›d|›d�¦  «        S )Nz$
[]
	a patch:Copy ;
	patch:subject <z> ;
	patch:destination <z> .
rˆ   r,   s      r   r.   zRemote.copy  s.   € Ø�yŠyˆyð
 €w€w���ðñ ô ð 	r   N)rO   )r/   r0   r1   r7   rZ   rm   rt   rv   r}   r†   r   r   r   r   r   r$   r&   r(   r*   r.   r   r   r   rN   rN   Z   s  € € € € € ðð ð ð ðð ð ð ð  ð  ð.ð ð ðð ð ðð ð ð./ð /ð /ðð ð ðð ð ð	ð 	ð 	ðð ð ðð ð ð
8ð 
8ð 
8ð	ð 	ð 	ð	ð 	ð 	ðð ð ðð ð ð ð r   rN   )rE   rb   r]   rG   rg   ÚStringIO.StringIOr   ÚImportErrorÚior{   r   r6   r4   rL   rN   r   r   r   ú<module>r›      s0  ðð" 
€	€	€	Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€ð(Ø(Ð(Ð(Ð(Ð(Ð(Ð(øØð (ð (ð (Ø'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ð(øøøð €ðð ð ð ð ñ ô ð ð@Að Að Að Að AˆIñ Aô Að Að7ð 7ð 7ð.rð rð rð rð rˆYñ rô rð rð rð rs   – �+ª+