§
    ê‚ñj„i  ã            .      ód  — U d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZmZmZ  e	e¦  «                             ¦   «         j        Zed	z  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&dZ'dZ( ed¬¦  «         G d „ d!¦  «        ¦   «         Z) ed¬¦  «         G d"„ d#¦  «        ¦   «         Z* ed¬¦  «         G d$„ d%¦  «        ¦   «         Z+ G d&„ d'¦  «        Z, e*d(d)d*d+d,d-d.d/ e)d0d1d2d3¦  «         e)d4d5d2d6¦  «         e)d7d8d2d9¦  «         e)d:d;d2d<¦  «         e)d=d>d2d?¦  «         e)d@dAd2dB¦  «         e)dCdDd2dE¦  «        fe%¦
  «
         e*dFdGdHdIdJdKdLdM e)dNdOdPdQ¦  «         e)dRdSd2dQ¦  «        fe&¦
  «
         e*dTdUdVdWdXdYdZd[ e)dNd\d]dQ¦  «         e)dRd^d_dQ¦  «        fe'¦
  «
         e*d`dadbdcddded[df e)dNdgd]dQ¦  «         e)dRdhd_dQ¦  «        fe&¦
  «
         e*didjdkdldmded[df e)dNdNd]dQ¦  «         e)dRdRd_dQ¦  «        fe&¦
  «
         e*dndodpdqdrdsdtdu e)dNdOdPdv¦  «         e)dwdxdPdB¦  «         e)dydSd2dv¦  «         e)dzd{d2dB¦  «         e)dRdDd_dQ¦  «        fe$¦
  «
         e*d|dadbd}d~dd[df e)dNdgd]dQ¦  «         e)dRdhd_dQ¦  «        fe&¦
  «
         e*d€djdkd�d‚dd[df e)dNdNd]dQ¦  «         e)dRdRd_dQ¦  «        fe&¦
  «
         e*dƒd„dkd…d†dKd‡dˆ e)dNdNdPdQ¦  «         e)dRdRd2dQ¦  «        fe&¦
  «
         e*d‰dŠdkd‹d†dŒd�dŽ e)dNd^dPdQ¦  «         e)dRd\d2dQ¦  «        fe'¦
  «
         e*d�d�dkd‘d’d“d‡dˆ e)dNdNdPdQ¦  «         e)dRdRd2dQ¦  «        fe&¦
  «
         e*d”d•d–d—d˜dJd™df e)dNdNd]dQ¦  «         e)dRdRd_dQ¦  «        fe&¦
  «
         e*dšd›dkdœd�džd‡dˆ e)dNdNdPdQ¦  «         e)dRdRd2dQ¦  «        fe&¦
  «
         e*dŸd›dkd d¡džd‡dˆ e)dNdNdPdQ¦  «         e)dRdRd2dQ¦  «        fe&¦
  «
         e*d¢d£d¤d¥d,d¦d§d. e)dNdDd2d¨¦  «         e)dRd©d2dª¦  «         e)dwd«d2dQ¦  «         e)dzd¬d2d­¦  «         e)dyd®d2d¯¦  «        fe%¦
  «
         e*d°d±d²d³d¡d´dµdu e)dNd^dPd¶¦  «         e)dzd·d2d¶¦  «         e)dwd{d2dB¦  «         e)dyd¸d]dQ¦  «         e)dRdDd_dQ¦  «        fe$¦
  «
         e*d¹djdkdºd´d»d[df e)dNdNd]dQ¦  «         e)dRdRd_dQ¦  «        fe&¦
  «
         e*d¼d½dkd¾d¡d¿d‡dˆ e)dNdNdPdQ¦  «         e)dRdRd2dQ¦  «        fe&¦
  «
         e*dÀdÁdÂdÃdÄdÅdÆdÇ e)dNdÈdPdÉ¦  «         e)dRdÊdPd9¦  «         e)dwdËdPdÌ¦  «         e)dzdÍdPdÎ¦  «         e)dÏd¸d]dQ¦  «         e)dydDd_dQ¦  «         e)dÐd^d2dÑ¦  «         e)dÒdÓd2dÔ¦  «        fe$¦
  «
         e*dÕdjdkdÖd†dJd[df e)dNdNd]dQ¦  «         e)dRdRd_dQ¦  «        fe&¦
  «
         e*d×dØdÙdÚdÛdÜdÝdˆ e)dNdNdPdQ¦  «         e)dRdRd2dQ¦  «        fe&¦
  «
         e*dÞdØdÙdßdÛdàdÝdˆ e)dNdNdPdQ¦  «         e)dRdRd2dQ¦  «        fe&¦
  «
         e*dádâdãdädådddædÝ e)dNd^d]dç¦  «         e)dRdÓd]dB¦  «         e)dwdDd_dQ¦  «        fe'¦
  «
         e*dèdédêdëdìdídîdï e)dNdðdPdñ¦  «         e)dRdòdPdó¦  «         e)dwdDdPdô¦  «        fe%¦
  «
         e*dõdödkd÷dødùdÝdˆ e)dNdNdPdQ¦  «         e)dRdRd2dQ¦  «        fe&¦
  «
         e*dúdûdüdýdþdùdÿdˆ e)dNdNdPdQ¦  «         e)dRdRd2dQ¦  «        fe%¦
  «
         e*�d �ddk�d�dd~dÝdˆ e)dNdNdPdQ¦  «         e)dRdRd2dQ¦  «        fe&¦
  «
         e*�d�ddü�d�dd~dÿdˆ e)dNdNdPdQ¦  «         e)dRdRd2dQ¦  «        fe%¦
  «
         e*�d�ddk�d	�d�d
dÝdˆ e)dNdNdPdQ¦  «         e)dRdRd2dQ¦  «        fe&¦
  «
         e*�d�ddü�d�d�d
dÿdˆ e)dNdNdPdQ¦  «         e)dRdRd2dQ¦  «        fe%¦
  «
        fZ-�de.�d<   i �d�d“�d�d“�d�d“dD�d“d5�d“d8�d“�d�d“�d�d“�d�d“�d�d “�d!�d"“�d#�d$“�d%�d&“�d'�d(“�d)�d*“�d+�d,“�d-�d.“�d/�d0�d1œ¥Z/�d2e.�d3<   �d4Z0�d5e.�d6<   �dX�d;„Z1�dY�d?„Z2�dZ�dA„Z3�d[�dD„Z4�d\�dN„Z5�d]�dP„Z6�d^�dQ„Z7�d_�dR„Z8�d`�dS„Z9�da�dT„Z:�db�dU„Z;�db�dV„Z<e=�dWk    r e<¦   «          dS dS (c  a  Generate a USB-C powered, 3.3 V LVTTL to RS-485 schematic.

The file intentionally uses only Python's standard library and Pillow.  The
Component/net definitions are kept separate from the rendering code so that
changing the design also regenerates the netlist and BOM.
é    )ÚannotationsN)Ú	dataclass)Úescape)ÚPath)ÚIterable)ÚImageÚ	ImageDrawÚ	ImageFontÚoutputé   il  iØ  z//usr/share/fonts/truetype/lato/Lato-Regular.ttfz,/usr/share/fonts/truetype/lato/Lato-Bold.ttfz3/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttfz,/usr/share/fonts/truetype/wqy/wqy-zenhei.ttcz#17223bz#64748bz#e8eef4z#2563ebz#16845bz#d06a15z#c53b3bz#7c3aedz#edf5ffz#eefaf4z#fff7e8z#fff0f0z#ffffffT)Úfrozenc                  ó8   — e Zd ZU ded<   ded<   ded<   ded<   dS )ÚPinÚstrÚnumberÚnameÚsideÚfloatÚpositionN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úhardware/rs485_sn65bc184.pyr   r   .   s4   € € € € € € à€K€K�KØ€I€I�IØ€I€I�IØ€O€O�O€O€Or   r   c                  ó€   — e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   eZded<   dd„ZdS )ÚPartr   ÚrefÚvalueÚpackageÚdescriptionr   ÚxÚyÚwidthÚheightztuple[Pin, ...]ÚpinsÚcolorr   Úreturnr   c                óf   — | j         D ]}|j        |k    r|c S Œt          | j        › d|› �¦  «        ‚)Nz has no pin )r'   r   ÚKeyErrorr   )Úselfr   Úpins      r   r-   zPart.pinC   sL   € Ø”9ð 	ð 	ˆCØŒz˜VÒ#Ð#Ø�
�
�
ð $å˜$œ(Ð8Ð8°Ð8Ð8Ñ9Ô9Ð9r   N)r   r   r)   r   )r   r   r   r   Ú	PALE_BLUEr(   r-   r   r   r   r   r   6   s’   € € € € € € à€H€H�HØ€J€J�JØ€L€L�LØÐÐÑØ€H€H�HØ€H€H�HØ€L€L�LØ€M€M�MØÐÐÑØ€EÐÐÐÑð:ð :ð :ð :ð :ð :r   r   c                  óf   — e Zd ZU ded<   ded<   ded<   eZded<   dZded	<   d
Zded<   dZded<   dS )ÚLabelr   Útextr   r#   r$   r(   é   ÚintÚsizeÚlaÚanchorFÚboolÚboldN)	r   r   r   r   ÚMUTEDr(   r4   r6   r8   r   r   r   r0   r0   J   sm   € € € € € € à€I€I�IØ€H€H�HØ€H€H�HØ€EÐÐÐÑØ€D€N€N€N�NØ€FÐÐÐÑØ€DÐÐÐÑÐÐr   r0   c                  ó”   — e Zd Zd1d„Zd2d„Zed3d„¦   «         Zedfd4d„Zdeddfd5d„Z	dedfd6d„Z
d ed!d"d"d"fd7d)„Zed*d+fd8d.„Zd9d0„ZdS ):ÚCanvasr%   r3   r&   r)   ÚNonec                ó´   — t          j        d|t          z  |t          z  ft          ¦  «        | _        t          j        | j        ¦  «        | _        i | _        d S )NÚRGB)	r   ÚnewÚSCALEÚWHITEÚimager	   ÚDrawÚdrawÚfonts)r,   r%   r&   s      r   Ú__init__zCanvas.__init__V   sB   € Ý”Y˜u u­u¡}°f½u±nÐ&EÅuÑMÔMˆŒ
Ý”N 4¤:Ñ.Ô.ˆŒ	ØDFˆŒ
ˆ
ˆ
r   Úpathr   r4   úImageFont.FreeTypeFontc                ó€   — ||f}|| j         vr%t          j        ||t          z  ¦  «        | j         |<   | j         |         S ©N)rE   r
   Útruetyper@   )r,   rG   r4   Úkeys       r   ÚfontzCanvas.font[   s@   € Ø�TˆlˆØ�d”jÐ Ð Ý'Ô0°°t½e±|ÑDÔDˆDŒJ�s‰OØŒz˜#ŒÐr   ÚpointsúIterable[tuple[float, float]]úlist[tuple[int, int]]c                ó   — d„ | D ¦   «         S )Nc                óp   — g | ]3\  }}t          |t          z  ¦  «        t          |t          z  ¦  «        f‘Œ4S r   ©Úroundr@   )Ú.0r#   r$   s      r   ú
<listcomp>z"Canvas._scaled.<locals>.<listcomp>c   s9   € ÐHÐHÐH¹¸¸A•�q�5‘yÑ!Ô!¥5¨­U©Ñ#3Ô#3Ð4ÐHÐHÐHr   r   )rN   s    r   Ú_scaledzCanvas._scaleda   s   € àHÐHÀÐHÑHÔHÐHr   r   r(   r   c                ó®   — | j                              |                      |¦  «        |t          dt	          |t
          z  ¦  «        ¦  «        d¬¦  «         d S )Né   Úcurve)Úfillr%   Újoint)rD   ÚlinerW   ÚmaxrT   r@   )r,   rN   r(   r%   s       r   r]   zCanvas.linee   sY   € ð 	Œ	�ŠØ�LŠL˜Ñ Ô ØÝ�a�˜u¥u™}Ñ-Ô-Ñ.Ô.Øð	 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   Ng      ø?r   r#   r$   r[   ú
str | NoneÚoutlineÚ
line_widthÚradiusc	           	     ó   — t          d„ ||||z   ||z   fD ¦   «         ¦  «        }	||t          dt          |t          z  ¦  «        ¦  «        dœ}
|r, | j        j        |	fdt          |t          z  ¦  «        i|
¤Ž d S  | j        j        |	fi |
¤Ž d S )Nc              3  óD   K  — | ]}t          |t          z  ¦  «        V — Œd S rJ   rS   ©rU   Úvs     r   ú	<genexpr>zCanvas.rect.<locals>.<genexpr>}   s.   è è € ÐLÐL¨•E˜!�e™)Ñ$Ô$ÐLÐLÐLÐLÐLÐLr   rY   ©r[   r`   r%   rb   )Útupler^   rT   r@   rD   Úrounded_rectangleÚ	rectangle)r,   r#   r$   r%   r&   r[   r`   ra   rb   ÚboxÚkwargss              r   ÚrectzCanvas.rectr   sÓ   € õ ÐLÐL¨q°!°Q¸±YÀÀFÁ
Ð.KÐLÑLÔLÑLÔLˆàØÝ˜�E *­uÑ"4Ñ5Ô5Ñ6Ô6ð
ð 
ˆð
 ð 	/Ø'ˆDŒIÔ'Øðð Ý! &­5¡.Ñ1Ô1ðØ5;ðð ð ð ð ð  ˆDŒIÔ Ð.Ð. vÐ.Ð.Ð.Ð.Ð.r   c                óÖ   — | j                              t          d„ ||z
  ||z
  ||z   ||z   fD ¦   «         ¦  «        ||t          dt	          |t
          z  ¦  «        ¦  «        ¬¦  «         d S )Nc              3  óD   K  — | ]}t          |t          z  ¦  «        V — Œd S rJ   rS   re   s     r   rg   z Canvas.circle.<locals>.<genexpr>”   sB   è è € ð ð àõ �a�%‘iÑ Ô ðð ð ð ð ð r   rY   rh   )rD   Úellipseri   r^   rT   r@   )r,   r#   r$   rb   r[   r`   ra   s          r   ÚcirclezCanvas.circleŠ   s‘   € ð 	Œ	×ÒÝð ð à˜f™* a¨&¡j°!°f±*¸aÀ&¹jÐIðñ ô ñ ô ð ØÝ�a�˜z­EÑ1Ñ2Ô2Ñ3Ô3ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   r2   r5   Fr1   r6   r8   r7   ÚmonoÚcjkc
           	     ó  — |	rt           }
n|rt          }
n|rt          nt          }
| j                             t          |t          z  ¦  «        t          |t          z  ¦  «        f|||                      |
|¦  «        |¬¦  «         d S )N)r[   rM   r6   )	ÚFONT_CJKÚ	FONT_MONOÚ	FONT_BOLDÚFONT_REGULARrD   r1   rT   r@   rM   )r,   r#   r$   r1   r4   r(   r6   r8   rs   rt   Ú	font_paths              r   r1   zCanvas.text�   s‘   € ð ð 	<Ý ˆIˆIØð 	<Ý!ˆIˆIà%)Ð;�	˜	­|ˆIØŒ	�ŠÝ�1•u‘9ÑÔ�u Q­¡YÑ/Ô/Ð0ØØØ—’˜9 dÑ+Ô+Øð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   é
   é   ÚdashÚgapc           	     óà  — ||f||z   |ff||z   |f||z   ||z   ff||z   ||z   f|||z   ff|||z   f||fff}|D ]´\  \  }	}
\  }}||	z
  dz  ||
z
  dz  z   dz  }|sŒ"||z   }t          dt          |¦  «        t          |¦  «        ¦  «        D ]a}t          ||z   |¦  «        }||z  ||z  }}|                      |	||	z
  |z  z   |
||
z
  |z  z   f|	||	z
  |z  z   |
||
z
  |z  z   ff|d¬¦  «         ŒbŒµd S )Nr   ç      à?r   g333333ó?©r(   r%   )ÚrangerT   Úminr]   )r,   r#   r$   r%   r&   r(   r}   r~   ÚsegmentsÚx1Úy1Úx2Úy2ÚdistanceÚstepÚstartÚendÚt0Út1s                      r   Údashed_rectzCanvas.dashed_rect·   sŠ  € ð �ˆV�a˜%‘i �^Ð$Ø�%‰i˜ˆ^˜a %™i¨¨V©Ð4Ð5Ø�%‰i˜˜V™Ð$ q¨!¨f©* oÐ6Ø��V‘ˆ_˜q !˜fÐ%ð	
ˆð #+ð 	ð 	Ñ‰HˆR�‘h�r˜2Ø˜b™ Q™¨"¨r©'°a©Ñ7¸CÑ?ˆHØð ØØ˜#‘:ˆDÝ˜q¥%¨¡/¤/µ5¸±;´;Ñ?Ô?ð 
ð 
�Ý˜% $™,¨Ñ1Ô1�Ø Ñ)¨3°©>�B�Ø—	’	à˜r B™w¨"™nÑ,¨b°B¸±G¸r±>Ñ.AÐBØ˜r B™w¨"™nÑ,¨b°B¸±G¸r±>Ñ.AÐBðð  Øð ñ ô ð ð ð
ð	ð 	r   r   c                óÐ   — t                                dd¬¦  «         | j                             t          t
          ft          j        j        ¦  «         	                    |¦  «         d S )NT©ÚparentsÚexist_ok)
ÚOUTÚmkdirrB   ÚresizeÚWIDTHÚHEIGHTr   Ú
ResamplingÚLANCZOSÚsave)r,   rG   s     r   r›   zCanvas.saveØ   sN   € Ý�	Š	˜$¨ˆ	Ñ.Ô.Ð.ØŒ
×Ò�5¥&˜/­5Ô+;Ô+CÑDÔD×IÒIÈ$ÑOÔOÐOÐOÐOr   )r%   r3   r&   r3   r)   r<   )rG   r   r4   r3   r)   rH   )rN   rO   r)   rP   )rN   rO   r(   r   r%   r   r)   r<   )r#   r   r$   r   r%   r   r&   r   r[   r_   r`   r_   ra   r   rb   r   r)   r<   )r#   r   r$   r   rb   r   r[   r_   r`   r_   ra   r   r)   r<   )r#   r   r$   r   r1   r   r4   r3   r(   r   r6   r   r8   r7   rs   r7   rt   r7   r)   r<   )r#   r   r$   r   r%   r   r&   r   r(   r   r}   r   r~   r   r)   r<   )rG   r   r)   r<   )r   r   r   rF   rM   ÚstaticmethodrW   ÚINKr]   rn   rr   r1   r9   r�   r›   r   r   r   r;   r;   U   s=  € € € € € ðGð Gð Gð Gð
ð ð ð ð ðIð Ið Iñ „\ðIð Øð	
ð 
ð 
ð 
ð 
ð&  Ø!ØØð/ð /ð /ð /ð /ð:  Ø!Øð
ð 
ð 
ð 
ð 
ð0 ØØØØØð
ð 
ð 
ð 
ð 
ð@ ØØðð ð ð ð ðBPð Pð Pð Pð Pð Pr   r;   ÚJ1zUSB-C 5Vz16-pin receptaclezUSB Type-C sink, power onlyé<   é‘   éú   i;  zA4,B4,A9,B9ÚVBUSÚrightg
×£p=
·?ÚA5ÚCC1g¸…ëQ¸Î?ÚB5ÚCC2g
×£p=
×?zA6,B6zD+g¸…ëQ¸Þ?zA7,B7zD-g333333ã?ÚShellÚSHIELDg
×£p=
ç?zA1,B1,A12,B12ÚGNDg…ëQ¸í?ÚF1z0.5 AzPTC 6 VzResettable VBUS fusei†  é¯   é‚   é6   Ú1ÚINÚleftr€   Ú2r”   ÚD1zSMBJ5.0AÚSMBzVBUS transient clampi0  i1  éb   éJ   ÚKÚtopÚAÚbottomÚC1z10 uFÚ0805zVBUS bulk capacitori¼  i,  éL   ú+ú-ÚC2z100 nFÚ0603zVBUS high-frequency bypassi  ÚU1ÚTLV70233zSOT-23-5z300 mA, fixed 3.3 V LDOi¢  é›   é²   é–   g{®GázÔ?Ú3ÚENÚ5Ú4ÚNCÚC3z3.3 V bulk capacitorik  im  ÚC4zLDO output bypassiÊ  ÚR5z1 kzPower LED current limiti`  éV   é.   ÚD3z	Green LEDz3.3 V power indicatoréÿ   é_   é>   ÚR1z1 MzUSB shield to GNDi�  i•  ÚC7z4.7 nFz	0603 1 kVzUSB shield AC returniþ  é^   ÚR2z5.1 kzCC1 sink resistori@  iÖ  ÚR3zCC2 sink resistori®  ÚJ2z3.3 V LVT TL headerz1x5, 2.54 mmzLogic-side interfaceiX  éæ   g¸…ëQ¸¾?Ú3V3g×£p=
×Ó?zTXD / DIzRXD / ROg®Gázæ?ÚDIRg)\�Âõ(ì?ÚU3Ú	74LVC1G04zSC-70-5z/RE inverteréŠ  éª   gffffffÖ?ÚYÚVCCÚC6z	U3 bypassi¨  ÚR4z10 kzDIR power-up pulldownia  ÚU2Ú	SN65BC184zSOIC-8z$3.3 V half-duplex RS-485 transceiveri4  ià  éð   i6  ÚROgìQ¸…ëÁ?ú/REÚDEg�Âõ(\�â?ÚDIgš™™™™™é?Ú8Ú6gR¸…ëQØ?Ú7ÚBg…ëQ¸å?ÚC5zU2 bypass at VCC/GNDÚR6z10 ohmz0603 pulse-proofzA-line series resistorit  i  éd   ÚR7zB-line series resistorél  ÚD2ÚPESD2CANzSOT-23zRS-485 connector ESD clampiF  éx   g…ëQ¸Õ?ÚJ3zRS-485z3-pin 5.08 mmzA(+), B(-), signal groundiT  iê  éÍ   éÒ   zA  (+)gq=
×£pÍ?zB  (-)g¤p=
×£à?gìQ¸…ëé?ÚR8z120 ohmzOptional bus terminationiÄ  iw  ÚJP1ÚTERMz1x2, 2.54 mmzFit only at a physical bus endiZ  éP   ÚR9z560 ohmzFail-safe bias pull-upiV  ÚJP2zBIAS AzFit with JP3 at one masteriì  ÚR10zFail-safe bias pull-downi»  ÚJP3zBIAS BzFit with JP2 at one masterútuple[Part, ...]ÚPARTSÚVBUS_RAW)zJ1.VBUSzF1.1ú+5V)zF1.2zD1.1zC1.1zC2.1zU1.INzU1.ENú+3V3)
zU1.OUTzC3.1zC4.1zR5.1zC5.1zC6.1zU2.VCCzU3.VCCzJ2.2zR9.1)zJ1.GNDzD1.2zC1.2zC2.2zU1.GNDzC3.2zC4.2zD3.KzR1.2zC7.2zR2.2zR3.2zJ2.1zU3.GNDzC6.2zR4.2zU2.GNDzC5.2zD2.GNDzJ3.3zJP3.2)zJ1.CC1zR2.1)zJ1.CC2zR3.1Ú
USB_SHIELD)z	J1.SHIELDzR1.1zC7.1ÚPWR_LED)zR5.2zD3.AÚRO_3V3)zU2.ROzJ2.4ÚDI_3V3)zU2.DIzJ2.3ÚDIR_3V3)zJ2.5zU2.DEzU3.AzR4.1ÚRX_EN_N)zU2./REzU3.YÚ	U2_A_NODE)zU2.AzR6.1Ú	U2_B_NODE)zU2.BzR7.1ÚBUS_A)zR6.2zR8.1zJP2.2zD2.AzJ3.1ÚBUS_B)zR7.2zJP1.2zR10.1zD2.BzJ3.2ÚTERM_SW)zR8.2zJP1.1)zR9.2zJP2.1)zR10.2zJP3.1)Ú	BIAS_A_SWÚ	BIAS_B_SWúdict[str, tuple[str, ...]]ÚNETS)zJ1.D+zJ1.D-zU1.NCzU3.NCztuple[str, ...]ÚNO_CONNECTSÚpartsÚnetsr)   ú	list[str]c           	     ó  — g }d„ | D ¦   «         }t          |¦  «        t          t          |¦  «        ¦  «        k    r|                     d¦  «         i }t          ¦   «         }| D ]K}|j        D ]A}|j        › d|j        › �}|                     |¦  «         |||<   |||j        › d|j        › �<   ŒBŒLi }	|                     ¦   «         D ]–\  }
}t          |¦  «        dk     r|                     d|
› d�¦  «         |D ]b}||vr|                     d|› d|
› �¦  «         Œ"||         }||	v r/|	|         |
k    r#|                     |› d	|	|         › d
|
› �¦  «         |
|	|<   ŒcŒ—t          D ]Q}||vr|                     d|› �¦  «         Œ||         }||	v r!|                     d|› d|	|         › �¦  «         d|	|<   ŒRt          |t          |	¦  «        z
  ¦  «        }|r+|                     dd                     |¦  «        z   ¦  «         |S )Nc                ó   — g | ]	}|j         ‘Œ
S r   ©r   )rU   Úparts     r   rV   zvalidate.<locals>.<listcomp>½  s   € Ð'Ð'Ð'˜ˆDŒHÐ'Ð'Ð'r   zDuplicate reference designatorsú.r   zNet z has fewer than two memberszUnknown pin z on net z is on both z and zUnknown no-connect pin zNo-connect pin z is assigned to z<NC>zUnassigned pins: ú, )ÚlenÚsetÚappendr'   r   r   Úaddr   Úitemsr  ÚsortedÚjoin)r  r  ÚerrorsÚrefsÚpin_aliasesÚlogical_pinsr  r-   Ú
logical_idÚassignedÚnetÚmembersÚmemberÚncÚmissings                  r   Úvalidater4  »  s“  € Ø€FØ'Ð' Ð'Ñ'Ô'€DÝ
ˆ4�y„y•C�˜D™	œ	‘N”NÒ"Ð"Ø�ŠÐ7Ñ8Ô8Ð8à"$€KÝ ™UœU€LØð ?ð ?ˆØ”9ð 	?ð 	?ˆCØ œHÐ3Ð3 s¤zÐ3Ð3ˆJØ×Ò˜ZÑ(Ô(Ð(Ø&0ˆK˜
Ñ#Ø4>ˆK˜4œ8Ð0Ð0 c¤hÐ0Ð0Ñ1Ð1ð		?ð  "€HØŸ
š
™œð 
'ð 
'‰ˆˆWÝˆw‰<Œ<˜!ÒÐØ�MŠMÐA ÐAÐAÐAÑBÔBÐBØð 	'ð 	'ˆFØ˜[Ð(Ð(Ø—’ÐB¨VÐBÐB¸SÐBÐBÑCÔCÐCØØ$ VÔ,ˆJØ˜XÐ%Ð%¨(°:Ô*>À#Ò*EÐ*EØ—’ ÐUÐU°X¸jÔ5IÐUÐUÐPSÐUÐUÑVÔVÐVØ#&ˆH�ZÑ Ð ð	'õ ð &ð &ˆØ�[Ð Ð Ø�MŠMÐ8°BÐ8Ð8Ñ9Ô9Ð9ØØ  ”_ˆ
Ø˜Ð!Ð!Ø�MŠMÐV¨BÐVÐVÀÈÔ@TÐVÐVÑWÔWÐWØ%ˆ�ÑÐå�\¥C¨¡M¤MÑ1Ñ2Ô2€GØð @Ø�ŠÐ)¨D¯IªI°gÑ,>Ô,>Ñ>Ñ?Ô?Ð?Ø€Mr   r  r-   útuple[float, float, str]c                ó   — |j         dk    r| j        | j        | j        |j        z  z   dfS |j         dk    r'| j        | j        z   | j        | j        |j        z  z   dfS |j         dk    r| j        | j        |j        z  z   | j        dfS |j         dk    r'| j        | j        |j        z  z   | j        | j        z   dfS t          d|j         › �¦  «        ‚)Nr±   r£   r¸   rº   zUnknown side )r   r#   r$   r&   r   r%   Ú
ValueError)r  r-   s     r   Úpin_locationr8  æ  sÙ   € Ø
„x�6ÒÐØŒv�t”v ¤¨c¬lÑ :Ñ:¸FÐBÐBØ
„x�7ÒÐØŒv˜œ
Ñ" D¤F¨T¬[¸3¼<Ñ-GÑ$GÈÐPÐPØ
„x�5ÒÐØŒv˜œ
 S¤\Ñ1Ñ1°4´6¸5Ð@Ð@Ø
„x�8ÒÐØŒv˜œ
 S¤\Ñ1Ñ1°4´6¸D¼KÑ3GÈÐQÐQÝ
Ð/ S¤XÐ/Ð/Ñ
0Ô
0Ð0r   údict[str, str]c                ó    — i }|                       ¦   «         D ]6\  }}|D ].}|||<   d|v r#|                     dd¦  «        \  }}|||› d|› �<   Œ/Œ7|S )Nr   rY   )r&  Úsplit)r  Úresultr/  r0  r1  r   Úpin_names          r   Únet_for_pinr>  ò  s   € Ø€FØŸ
š
™œð 2ð 2‰ˆˆWØð 	2ð 	2ˆFØ ˆF�6‰Nà�fˆ}ˆ}Ø &§¢¨S°!Ñ 4Ô 4‘��XØ.1�˜#Ð*Ð* Ð*Ð*Ñ+øð	2ð €Mr   r/  r   c                óô   — | dv rt           S | dk    rt          S | dk    rt          S |                      d¦  «        s|                      d¦  «        s| dk    rt          S | dv rt
          S | dv rt          S t          S )	N>   r  r  r  rª   ÚBUS_ÚU2_r  >   r  r  >   r  r  )ÚREDÚORANGEr�   Ú
startswithÚBLUEÚPURPLEÚGREENr9   )r/  s    r   Ú	net_colorrH  þ  sŒ   € Ø
Ð!Ð!Ð!Ýˆ
Ø
ˆf‚}€}ÝˆØ
ˆe‚|€|Ýˆ
Ø
‡~‚~�fÑÔð  §¢°Ñ!6Ô!6ð ¸#ÀÒ:JÐ:JÝˆØ
Ð$Ð$Ð$ÝˆØ
Ð"Ð"Ð"ÝˆÝ€Lr   Úcanvasr#   r   r$   r%   r&   Útitler[   r<   c           	     ó¾   — |                       |||||d d¬¦  «         |                      ||||d¬¦  «         |                      |dz   |dz   |dt          d¬	¦  «         d S )
Né   ©r[   r`   rb   z#c8d3df)r(   r2   é   é   T©r4   r(   r8   )rn   r�   r1   r9   )rI  r#   r$   r%   r&   rJ  r[   s          r   Údraw_sectionrQ    so   € ð ‡K‚K��1�e˜V¨$¸ÀR€KÑHÔHÐHØ
×Ò�q˜!˜U F°)ÐÑ<Ô<Ð<Ø
‡K‚K��B‘˜˜B™ ¨BµeÀ$€KÑGÔGÐGÐGÐGr   Ú
net_by_pinc           
     óø  — d}|                       |j        |z   |j        |z   |j        |j        dd d¬¦  «         |                       |j        |j        |j        |j        |j        t          dd¬¦  «         |j        dk    rdnd	}|                       |j        |j        |j        ||j        t          k    rd
n%|j        t          k    rdn|j        t          k    rdndd d¬¦  «         |                       |j        |j        |z   dz
  |j        d|j        t          k    rd
n%|j        t          k    rdn|j        t          k    rdndd ¬¦  «         |j        dk    r|  
                    |j        dz   |j        dz   |j        › d|j        › �dd¬¦  «         |  
                    |j        |j        dz  z   |j        |j        z   d	z
  |j        dt          d¬¦  «         nB|  
                    |j        |j        dz  z   |j        dz
  |j        › d|j        › �ddd¬¦  «         |j        D �]Û}t!          ||¦  «        \  }}}|                     |j        › d|j        › �¦  «        }	|	€$|                     |j        › d|j        › �¦  «        }	|	rt)          |	¦  «        nt*          }
|dk    rdn	|dk    rd nd!}|d"k    rdn	|d#k    rd nd!}||d$z  z   }||d$z  z   }|                      ||f||ff|
d¬%¦  «         |                      ||d&|
|
¬¦  «         |j        dk     r|j        › d'|j        › d(�n|j        }|j        dk    �re|dk    rQ|  
                    |dz   |d)z
  |j        d*d¬¦  «         |  
                    |dz   |d+z   |j        dt          ¬,¦  «         �n8|dk    rX|  
                    |dz
  |d)z
  |j        d*t          d-d¬.¦  «         |  
                    |dz
  |d+z   |j        dt          d-¬¦  «         nÚ|d"k    rR|  
                    |dz
  |dz   |j        ddd-¬¦  «         |  
                    |dz
  |d/z   |j        dt          d-¬¦  «         n‚|d#k    rQ|  
                    |dz
  |d0z
  |j        ddd-¬¦  «         |  
                    |dz
  |dz
  |j        dt          d-¬¦  «         n*|d1v r&|  
                    |d2z   |dz
  |d)t          d3¬¦  «         |	€¡|                      |d4z
  |d4z
  f|d4z   |d4z   fft*          d¬%¦  «         |                      |d4z
  |d4z   f|d4z   |d4z
  fft*          d¬%¦  «         ||dk    rdnd5z   }|dk    r|dz
  }|  
                    ||d6dt*          |dk    rd7nd3d¬.¦  «         �ŒG|dk    r!|  
                    |dz
  ||	d|
d7d¬.¦  «         �Œn|dk    r!|  
                    |dz   ||	d|
d3d¬.¦  «         �Œ•|d"k    r!|  
                    ||dz
  |	d|
dd¬.¦  «         �Œ¼|  
                    ||dz   |	d|
d8d¬.¦  «         �ŒÝd S )9Né   z#dce5eeé   rM  gÍÌÌÌÌÌü?)r[   r`   ra   rb   ró   é    é   z#dbe9f7z#d9f1e6z#ffe2e2z#ffe9c7)r[   r`   r{   r|   z  é   T)r4   r8   r   é   Úmm©r4   r(   r6   é   Úmd)r4   r8   r6   r   r±   éÿÿÿÿr£   rY   r   r¸   rº   é   r�   gÍÌÌÌÌÌ@z [ú]é	   rL  é   ©r4   r(   Úra©r4   r(   r6   r8   é   é   >   r¸   rº   é   Úlmé   iøÿÿÿrË   ÚrmÚma)rn   r#   r$   r%   r&   r(   r�   r.   Ú
PALE_GREENÚPALE_REDr1   r   r    r!   r9   r'   r8  Úgetr   r   rH  rB  r]   rr   )rI  r  rR  Úshadow_offsetÚheader_heightr-   r#   r$   r   r/  r(   Úhorizontal_signÚvertical_signr‡   rˆ   r   Úlabel_xs                    r   Ú	draw_partru    sm  € Ø€MØ
‡K‚KØŒ�ÑØŒ�ÑØŒ
ØŒØØØð ñ ô ð ð ‡K‚KØŒØŒØŒ
ØŒØŒZÝØØð ñ 	ô 	ð 	ð œ*¨Ò+Ð+�B�B°€MØ
‡K‚KØŒØŒØŒ
ØØœ*­	Ò1Ð1ˆYˆYÀDÄJÕR\ÒD\ÐD\°y°yÐosÔoyõ  ~Fò  pFð  pFÐbkÐbkð  LUØØð ñ ô ð ð ‡K‚KØŒØŒ�Ñ Ñ"ØŒ
Ø	Øœ*­	Ò1Ð1ˆYˆYÀDÄJÕR\ÒD\ÐD\°y°yÐosÔoyõ  ~Fò  pFð  pFÐbkÐbkð  LUØð ñ ô ð ð „z�SÒÐØ�ŠØŒF�R‰KØŒF�Q‰JØŒxÐ'Ð'˜4œ:Ð'Ð'ØØð 	ñ 	
ô 	
ð 	
ð 	�ŠØŒF�T”Z !‘^Ñ#ØŒF�T”[Ñ  2Ñ%ØŒLØÝØð 	ñ 	
ô 	
ð 	
ð 	
ð 	�ŠØŒF�T”Z !‘^Ñ#ØŒF�Q‰JØŒxÐ'Ð'˜4œ:Ð'Ð'ØØØð 	ñ 	
ô 	
ð 	
ð Œyð FWñ FWˆÝ! $¨Ñ,Ô,‰
ˆˆ1ˆdØ�nŠn ¤Ð7Ð7¨3¬:Ð7Ð7Ñ8Ô8ˆØˆ;Ø—.’. D¤HÐ!9Ð!9¨s¬xÐ!9Ð!9Ñ:Ô:ˆCØ"%Ð.•	˜#‘”�­3ˆà $¨¢ ˜"˜"¸Àº¸°A°AÈaˆØ" ešm˜m˜˜°d¸hÒ6FÐ6F°°ÈAˆØ� 2Ñ%Ñ%ˆØ� Ñ#Ñ#ˆØ�Š�a˜�V˜b "˜XÐ&¨e¸1ˆÑ=Ô=Ð=Ø�Š�b˜"˜c¨°uˆÑ=Ô=Ð=à/3¬z¸CÒ/?Ð/?�#”(Ð+Ð+˜cœjÐ+Ð+Ð+Ð+ÀSÄXˆØŒ:˜ÒÑØ�vŠ~ˆ~Ø—’˜A ™F A¨¡E¨3¬8¸"À4�ÑHÔHÐHØ—’˜A ™F A¨¡E¨3¬:¸BÅe�ÑLÔLÐLÑLØ˜’�Ø—’Ø˜‘FØ˜‘EØ”HØÝØØð ñ ô ð ð —’Ø˜‘FØ˜‘EØ”JØÝØð ñ ô ð ð ð ˜’�Ø—’˜A ™E 1 r¡6¨3¬8¸"À4ÐPT�ÑUÔUÐUØ—’˜A ™E 1 r¡6¨3¬:¸BÅeÐTX�ÑYÔYÐYÐYØ˜Ò!Ð!Ø—’˜A ™E 1 r¡6¨3¬8¸"À4ÐPT�ÑUÔUÐUØ—’˜A ™E 1 r¡6¨3¬:¸BÅeÐTX�ÑYÔYÐYøØÐ&Ð&Ð&Ø�KŠK˜˜A™˜q 1™u d°½%ÈˆKÑMÔMÐMàˆ;Ø�KŠK˜"˜q™& " q¡&Ð)¨B°©F°B¸±FÐ+;Ð<ÅCÈqˆKÑQÔQÐQØ�KŠK˜"˜q™& " q¡&Ð)¨B°©F°B¸±FÐ+;Ð<ÅCÈqˆKÑQÔQÐQØ ¨¢ ˜A˜A°RÑ8ˆGØ�vŠ~ˆ~Ø˜q™&�Ø�KŠKØØØØÝØ# vš~˜~�t�t°4Øð ñ ô ð ñ à�6Š>ˆ>Ø�KŠK˜˜Q™  C¨b¸ÀdÐQUˆKÑVÔVÐVÑVØ�WŠ_ˆ_Ø�KŠK˜˜Q™  C¨b¸ÀdÐQUˆKÑVÔVÐVÑVØ�UŠ]ˆ]Ø�KŠK˜˜B ™F C¨b¸ÀdÐQUˆKÑVÔVÐVÑVà�KŠK˜˜B ™F C¨b¸ÀdÐQUˆKÑVÔVÐVÑVðMFWð FWr   c           	     ó.  — d\  }}}}|                       ||||ddd¬¦  «         |                      |dz   |dz   ddd	d	¬
¦  «         d}t          |¦  «        D ]>\  }}|                      |dz   |dz   |dz  z   |d|dk     rt          nt          d	¬¦  «         Œ?d S )N)i”  i  é¦  é    z#f8fafcz#cbd5e1rN  rM  é   rL  u   è®¾è®¡è¦�ç‚¹ / Design notesT©r4   rt   r8   )uk   1. DIR=0ï¼šDE=0ã€�/RE=0ï¼ŒæŽ¥æ”¶ï¼›DIR=1ï¼šDE=1ã€�/RE=1ï¼Œå�‘é€�ã€‚10 kÎ© ä¸‹æ‹‰ä¿�è¯�ä¸Šç”µé»˜è®¤æŽ¥æ”¶ã€‚uj   2. 120 Î© ç«¯æŽ¥å�ªåœ¨ç‰©ç�†æ€»çº¿ä¸¤ç«¯å®‰è£…ï¼›å¤±æ•ˆä¿�æŠ¤å��ç½® JP2+JP3 å�ªèƒ½åœ¨ä¸€å�°ä¸»ç«™å®‰è£…ã€‚ue   3. USB-C ä»…å�– 5 Vï¼Œä¸�è¿›è¡Œ PD å��å•†ï¼›D+/D- æ‚¬ç©ºã€‚é�žéš”ç¦»è®¾è®¡ï¼Œå¿…é¡»è¿žæŽ¥ä¿¡å�·åœ°ã€‚uw   4. è¿™æ˜¯åŽŸç�†çº§è®¾è®¡ï¼ŒæŠ•æ�¿å‰�åº”æŒ‰æ‰€é€‰ SN65BC184 å…·ä½“å�Žç¼€å¤�æ ¸å¼•è„šã€�é€ŸçŽ‡ä¸Žç»�å¯¹æœ€å¤§é¢�å®šå€¼ã€‚rW  é4   é   é   rb  )r4   r(   rt   )rn   r1   Ú	enumerater�   rB  )rI  r#   r$   r%   r&   ÚnotesÚindexÚnotes           r   Údraw_note_boxr‚  §  sÕ   € Ø.Ñ€A€qˆ%�Ø
‡K‚K��1�e˜V¨)¸YÈr€KÑRÔRÐRØ
‡K‚K��B‘˜˜B™Ð =ÀBÈDÐW[€KÑ\Ô\Ð\ð€Eõ ! Ñ'Ô'ð 
ð 
‰ˆˆtØ�ŠØ�‰FØ�‰F�U˜R‘ZÑØØØ š˜•#�#­Øð 	ñ 	
ô 	
ð 	
ð 	
ð
ð 
r   c           	     óê  — t          t          t          ¦  «        }|                     ddt          dz
  t          dz
  d t          d¬¦  «         |                     ddddd	d	¬
¦  «         |                     ddddt          ¬¦  «         |                     t          dz
  dddt          dd	¬¦  «         |                     t          dz
  dddt          d¬¦  «         t          dt          dz
  d¦  «        D ]-}|                     |df|t          dz
  fft          d¬¦  «         Œ.t          dt          dz
  d¦  «        D ]-}|                     d|ft          dz
  |fft          d¬¦  «         Œ.t          |ddddd t          ¦  «         t          |dd!d"dd#t          ¦  «         t          |d$d%d&d'd(t          ¦  «         t          |d)d*d+d,d-t          ¦  «         t          |d.d/d0d1d2t          ¦  «         t          |¦  «        }| D ]}t!          |||¦  «         Œ|                     d3t"          d4¬¦  «         |                     d$d5d6d7t"          d8d	¬¦  «         |                     d9t"          d¬¦  «         |                     d:d"d;d7t"          d8d	¬¦  «         |                     dd<d=dt          ¬¦  «         |                     dd>d?dt$          d	¬@¦  «         t'          |¦  «         |                     t*          dAz  ¦  «         d S )BNr2   é$   r   )r[   r`   ra   é-   é#   z#USB-C 5 V  /  3.3 V LVTTL to RS-485r_  Trz  é0   r¶   zNSN65BC184  |  half-duplex  |  non-isolated  |  schematic generated from Pythonr}  rc  é*   zSHEET 1 / 1rL  rd  re  éB   u   REV A  â€¢  2026-11-09r[  é(   ró   r€   r�   é&   él   rw  i¤  zPOWER INPUT / 3.3 V REGULATORi!  i{  z3.3 V LOGIC / DIRECTION CONTROLi²  iš  i  iÂ  ÚTRANSCEIVERiÓ  iJ  rõ   iô  zRS-485 BUS / PROTECTIONi÷  i%  iH  éë   zEND NODE SETTINGS))iž  é¾  )iÆ  r�  rb  i®  rÝ   rN  r]  ))i\  rà   )i˜  rà   iz  rê   iè  uB   ç›¸å�Œç½‘ç»œå��ç›¸è¿ž  /  nets with identical labels are connectedi  zPA(+) is non-inverting; B(-) is inverting. Verify far-end labeling before wiring.rP  úrs485_sn65bc184.png)r;   r—   r˜   rn   r�   r1   r9   r‚   r]   ÚGRIDrQ  ÚPALE_ORANGEr.   rm  rn  r>  ru  rF  rE  r‚  r›   r”   )r  r  rI  r#   r$   rR  r  s          r   Údraw_schematicr“  ¼  s  € Ý•E�6Ñ"Ô"€FØ
‡K‚K��B� ™
¥F¨R¡K°dÅCÐTU€KÑVÔVÐVà
‡K‚K��BÐ=ÀBÈDÐW[€KÑ\Ô\Ð\Ø
‡K‚K��BÐhÐoqÕy~€KÑÔÐØ
‡K‚K•˜‘
˜B °B½eÈDÐW[€KÑ\Ô\Ð\Ø
‡K‚K•˜‘
˜BÐ 8¸rÍÐW[€KÑ\Ô\Ð\õ �2•u˜r‘z 2Ñ&Ô&ð Ið IˆØ�Š�a˜�X ¥6¨B¡;Ð/Ð0½ÀCˆÑHÔHÐHÐHÝ�3� ™ RÑ(Ô(ð Gð GˆØ�Š�b˜!�W�u r™z¨1˜oÐ.µdÀ#ˆÑFÔFÐFÐFå�˜˜S $¨Ð-LÍkÑZÔZÐZÝ�˜˜S # sÐ,MÍyÑYÔYÐYÝ�˜˜c 3¨¨]½IÑFÔFÐFÝ�˜˜s C¨Ð.GÍÑTÔTÐTÝ�˜˜s C¨Ð.AÅ8ÑLÔLÐLå˜TÑ"Ô"€JØð ,ð ,ˆÝ�&˜$ 
Ñ+Ô+Ð+Ð+ð ‡K‚KÐ(µ¸a€KÑ@Ô@Ð@Ø
‡K‚K��S˜% bµ¸tÈ$€KÑOÔOÐOØ
‡K‚KÐ(µ¸a€KÑ@Ô@Ð@Ø
‡K‚K��S˜% bµ¸tÈ$€KÑOÔOÐOà
‡K‚K��DÐ^ÐegÕot€KÑuÔuÐuØ
‡K‚K��DÐlÐsuõ  ~Bð  IM€Kñ  Nô  Nð  NÝ�&ÑÔÐà
‡K‚K•Ð+Ñ+Ñ,Ô,Ð,Ð,Ð,r   c           	     ób  — t                                dd¬¦  «         t           dz                       ddd¬¦  «        5 }t          j        |¦  «        }|                     d¦  «         t          | ¦  «        D ]2}|                     |d	                     | |         ¦  «        f¦  «         Œ3	 d d d ¦  «         n# 1 swxY w Y   t           d
z                       dd¬¦  «        5 }|                     d¦  «         |                     d¦  «         t          | ¦  «        D ]C}d                     d„ | |         D ¦   «         ¦  «        }|                     d|› d|› d�¦  «         ŒD|                     d¦  «         t          D ]}|                     d|› d�¦  «         Œ	 d d d ¦  «         d S # 1 swxY w Y   d S )NTr‘   únetlist.csvÚwÚ úutf-8©ÚnewlineÚencoding)ÚNetÚConnectionsú z
netlist.md©r›  z# Netlist

z | Net | Connections |
|---|---|
r!  c              3  ó"   K  — | ]
}d |› d �V — ŒdS )ú`Nr   )rU   r1  s     r   rg   z write_netlist.<locals>.<genexpr>î  s*   è è € ÐFÐF°&  F   ÐFÐFÐFÐFÐFÐFr   z| `z` | z |
z
## No-connect pins

z- `z`
)
r”   r•   ÚopenÚcsvÚwriterÚwriterowr'  r(  Úwriter  )r  Ústreamr¤  r/  r0  r-   s         r   Úwrite_netlistr¨  â  s<  € Ý‡I‚I�d T€IÑ*Ô*Ð*Ý
�Ñ
×	#Ò	# C°¸gÐ	#Ñ	FÔ	Fð 8È&Ý”˜FÑ#Ô#ˆØ�ŠÐ.Ñ/Ô/Ð/Ý˜$‘<”<ð 	8ð 	8ˆCØ�OŠO˜S #§(¢(¨4°¬9Ñ"5Ô"5Ð6Ñ7Ô7Ð7Ð7ð	8ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8õ �Ñ
×	"Ò	" 3°Ð	"Ñ	9Ô	9ð )¸VØ�Š�_Ñ%Ô%Ð%Ø�ŠÐ9Ñ:Ô:Ð:Ý˜$‘<”<ð 	7ð 	7ˆCØ—i’iÐFÐF¸DÀ¼IÐFÑFÔFÑFÔFˆGØ�LŠLÐ5˜sÐ5Ð5¨Ð5Ð5Ð5Ñ6Ô6Ð6Ð6Ø�ŠÐ/Ñ0Ô0Ð0Ýð 	)ð 	)ˆCØ�LŠL˜˜s˜˜˜Ñ(Ô(Ð(Ð(ð	)ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð )ð )s%   ½A,B6Â6B:Â=B:Ã B6F$Æ$F(Æ+F(c                óˆ  — t                                dd¬¦  «         t           dz                       ddd¬¦  «        5 }t          j        |¦  «        }|                     d¦  «         t          | d	„ ¬
¦  «        D ]/}|                     |j        |j        |j	        |j
        f¦  «         Œ0	 d d d ¦  «         d S # 1 swxY w Y   d S )NTr‘   úbom.csvr–  r—  r˜  r™  )Ú	ReferenceÚValueÚPackageÚDescriptionc                ó   — | j         S rJ   r  )Úitems    r   ú<lambda>zwrite_bom.<locals>.<lambda>ú  s   € °4´8€ r   )rL   )r”   r•   r¢  r£  r¤  r¥  r'  r   r    r!   r"   )r  r§  r¤  r  s       r   Ú	write_bomr²  õ  s  € Ý‡I‚I�d T€IÑ*Ô*Ð*Ý
�	‰/×	Ò	 ¨R¸'Ð	Ñ	BÔ	Bð TÀfÝ”˜FÑ#Ô#ˆØ�ŠÐHÑIÔIÐIÝ˜5Ð&;Ð&;Ð<Ñ<Ô<ð 	Tð 	TˆDØ�OŠO˜TœX t¤z°4´<ÀÔAQÐRÑSÔSÐSÐSð	TðTð Tð Tñ Tô Tð Tð Tð Tð Tð Tð Tð Tøøøð Tð Tð Tð Tð Tð Ts   ½A,B7Â7B;Â>B;c                 ó  — dt           › dt          › dt           › dt          › dt           › dt          › dt          d¦  «        › d�} t                               d	d	¬
¦  «         t          dz                       | d¬¦  «         d S )Nz/<svg xmlns="http://www.w3.org/2000/svg" width="z
" height="z" viewBox="0 0 rž  zb">
  <rect width="100%" height="100%" fill="#ffffff"/>
  <image href="rs485_sn65bc184.png" width="z"/>
  <title>z1SN65BC184 USB-C 5V to 3.3V LVTTL RS-485 schematicz</title>
</svg>
Tr‘   zrs485_sn65bc184.svgr˜  rŸ  )r—   r˜   r   r”   r•   Ú
write_text)Úsvgs    r   Úwrite_svg_indexr¶  þ  s¯   € ð½eð ð Ívð ð Õfkð ð Õntð ð å,1ðð å=Cðð õ ÐDÑ
EÔ
Eðð ð €Cõ ‡I‚I�d T€IÑ*Ô*Ð*ÝÐ Ñ ×,Ò,¨S¸7Ð,ÑCÔCÐCÐCÐCr   c                 ó¾  — t          t          t          ¦  «        } | r"t          d                     | ¦  «        ¦  «        ‚t          t          t          ¦  «         t          t          ¦  «         t          t          ¦  «         t          ¦   «          t          dt          dz  › �¦  «         t          dt          dz  › �¦  «         t          dt          dz  › �¦  «         d S )Nú
z
Generated r�  r•  rª  )r4  r  r  Ú
SystemExitr(  r“  r¨  r²  r¶  Úprintr”   )r)  s    r   Úmainr»  	  sÅ   € Ý•e�TÑ"Ô"€FØð ,Ý˜Ÿš 6Ñ*Ô*Ñ+Ô+Ð+Ý•5�$ÑÔÐÝ•$ÑÔÐÝ�eÑÔÐÝÑÔÐÝ	Ð
4•sÐ2Ñ2Ð
4Ð
4Ñ5Ô5Ð5Ý	Ð
,•s˜]Ñ*Ð
,Ð
,Ñ-Ô-Ð-Ý	Ð
(•s˜Y‘Ð
(Ð
(Ñ)Ô)Ð)Ð)Ð)r   Ú__main__)r  r  r  r  r)   r  )r  r   r-   r   r)   r5  )r  r  r)   r9  )r/  r   r)   r   )rI  r;   r#   r   r$   r   r%   r   r&   r   rJ  r   r[   r   r)   r<   )rI  r;   r  r   rR  r9  r)   r<   )rI  r;   r)   r<   )r  r  r  r  r)   r<   )r  r  r)   r<   )r  r  r)   r<   )r)   r<   )>Ú__doc__Ú
__future__r   r£  Údataclassesr   Úhtmlr   Úpathlibr   Útypingr   ÚPILr   r	   r
   Ú__file__ÚresolveÚparentÚROOTr”   r@   r—   r˜   ry   rx   rw   rv   r�   r9   r‘  rE  rG  rC  rB  rF  r.   rm  r’  rn  rA   r   r   r0   r;   r  r   r  r  r4  r8  r>  rH  rQ  ru  r‚  r“  r¨  r²  r¶  r»  r   r   r   r   ú<module>rÈ     sÑ  ððð ð ð #Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +ð €tˆH�~„~×ÒÑÔÔ&€Ø
ˆX�o€Ø	€Ø€Ø	€à@€Ø:€	ØA€	Ø9€à€Ø€Ø€Ø€Ø€Ø	€Ø€Ø	€Ø€	Ø€
Ø€Ø€Ø€ð €�$ÐÑÔðð ð ð ð ñ ô ñ Ôðð €�$ÐÑÔð:ð :ð :ð :ð :ñ :ô :ñ Ôð:ð& €�$ÐÑÔðð ð ð ð ñ ô ñ ÔððEPð EPð EPð EPð EPñ EPô EPð EPðR 	€DØØØØ%Ø
ØØØàˆC�˜v w°Ñ5Ô5ØˆC��e˜W dÑ+Ô+ØˆC��e˜W dÑ+Ô+ØˆC�˜˜w¨Ñ-Ô-ØˆC�˜˜w¨Ñ-Ô-ØˆC�˜ 7¨DÑ1Ô1ØˆC� ¨°Ñ6Ô6ð	
ð 	ñ%ô ð( 	€Dˆˆw˜	Ð#9¸3ÀÀSÈ"ÈsÈsÐSVÐX\Ð^dÐfiÑOjÔOjÐloÐloÐpsÐuzð  }Dð  FIñ  mJô  mJð  OKð  MXñ  Yô  YØ€Dˆˆz˜5Ð"8¸#¸sÀBÈÈSÈSÐQTÐVYÐ[`ÐbeÑMfÔMfÐhkÐhkÐloÐqtÐv~ð  ADñ  iEô  iEð  MFð  HPñ  Qô  QØ€Dˆˆw˜Ð 5°s¸CÀÀRÈ#È#ÈcÐSVÐX]Ð_bÑJcÔJcÐehÐehÐilÐnqÐs{ð  ~Añ  fBô  fBð  JCð  EPñ  Qô  QØ€Dˆˆx˜Ð!=¸sÀCÈÈRÐRUÐRUÐVYÐ[^Ð`eÐgjÑRkÔRkÐmpÐmpÐqtÐvyð  |Dð  FIñ  nJô  nJð  RKð  MXñ  Yô  YØ€DØØØØ!ØØØØàˆC��T˜6 4Ñ(Ô(ØˆC��T˜6 4Ñ(Ô(ØˆC��U˜G TÑ*Ô*ØˆC��T˜7 DÑ)Ô)ØˆC��U˜H cÑ*Ô*ð	
ð 	ñ!ô ð$ 	€Dˆˆw˜Ð 6¸¸SÀ"ÀbÈ3È3ÈsÐTWÐY^Ð`cÑKdÔKdÐfiÐfiÐjmÐorÐt|ð  Bñ  gCô  gCð  KDð  FQñ  Rô  RØ€Dˆˆx˜Ð!4°c¸3ÀÀBÈÈÈSÐRUÐW\Ð^aÑIbÔIbÐdgÐdgÐhkÐmpÐrzÐ|ñ  eAô  eAð  IBð  DOñ  Pô  PØ€Dˆˆu�fÐ7¸¸sÀBÈÈSÈSÐQTÐVYÐ[aÐcfÑMgÔMgÐilÐilÐmpÐruÐw~ð  ADñ  jEô  jEð  MFð  HSñ  Tô  TØ€Dˆˆ{˜FÐ$;¸TÀ3ÈÈBÐQTÐQTÐUXÐZ]Ð_eÐgjÑQkÔQkÐmpÐmpÐqtÐvyð  |Cð  EHñ  nIô  nIð  QJð  LTñ  Uô  UØ€Dˆˆu�fÐ1°3¸¸RÀÀcÀcÈ#ÈsÐTZÐ\_ÑF`ÔF`ÐbeÐbeÐfiÐknÐpwÐy|Ñb}Ôb}ÐE~ð  ALñ  Mô  MØ€Dˆˆx˜Ð&<¸cÀ3ÈÈBÐQTÐQTÐUXÐZ]Ð_dÐfiÑQjÔQjÐloÐloÐpsÐuxð  {Cð  EHñ  mIô  mIð  QJð  LWñ  Xô  XØ€Dˆˆw˜Ð 3°S¸#¸rÀ2ÈÈÈCÐQTÐV\Ð^aÑHbÔHbÐdgÐdgÐhkÐmpÐryÐ{~ÑdÔdð  HAð  CNñ  Oô  OØ€Dˆˆw˜Ð 3°S¸#¸rÀ2ÈÈÈCÐQTÐV\Ð^aÑHbÔHbÐdgÐdgÐhkÐmpÐryÐ{~ÑdÔdð  HAð  CNñ  Oô  OØ€DØØØØØ
ØØØàˆC��U˜G TÑ*Ô*ØˆC��U˜G TÑ*Ô*ØˆC��Z ¨$Ñ/Ô/ØˆC��Z ¨$Ñ/Ô/ØˆC��U˜G TÑ*Ô*ð	
ð 	ñ!ô ð$ 	€DØØØØØØØØàˆC��S˜& $Ñ'Ô'ØˆC��S˜' 4Ñ(Ô(ØˆC��T˜7 DÑ)Ô)ØˆC��U˜E 3Ñ'Ô'ØˆC��U˜H cÑ*Ô*ð	
ð 	ñ!ô ð$ 	€Dˆˆx˜ ¨c°3¸¸BÀÀÀSÈ#ÈuÐVYÑAZÔAZÐ\_Ð\_Ð`cÐehÐjrÐtwÑ\xÔ\xÐ@yð  |Gñ  Hô  HØ€Dˆˆv�vÐ6¸¸SÀ"ÀbÈ3È3ÈsÐTWÐY_ÐadÑKeÔKeÐgjÐgjÐknÐpsÐu|ð  Bñ  hCô  hCð  KDð  FQñ  Rô  RØ€DØØØØ.ØØØØàˆC��T˜6 4Ñ(Ô(ØˆC��U˜F DÑ)Ô)ØˆC��T˜6 4Ñ(Ô(ØˆC��T˜6 4Ñ(Ô(ØˆC��U˜E 3Ñ'Ô'ØˆC��U˜H cÑ*Ô*ØˆC��S˜' 4Ñ(Ô(ØˆC��S˜' 4Ñ(Ô(ð		
ð 	ñ'ô ð* 	€Dˆˆx˜Ð!7¸¸sÀBÈÈSÈSÐQTÐVYÐ[`ÐbeÑMfÔMfÐhkÐhkÐloÐqtÐv~ð  ADñ  iEô  iEð  MFð  HSñ  Tô  TØ€DˆˆxÐ+Ð-EÀtÈSÐRUÐWYÐ\_Ð\_Ð`cÐehÐjpÐruÑ\vÔ\vÐx{Ðx{Ð|ð  BEð  GNð  PSñ  yTô  yTð  \Uð  Wbñ  cô  cØ€DˆˆxÐ+Ð-EÀtÈSÐRUÐWYÐ\_Ð\_Ð`cÐehÐjpÐruÑ\vÔ\vÐx{Ðx{Ð|ð  BEð  GNð  PSñ  yTô  yTð  \Uð  Wbñ  cô  cØ€Dˆˆz˜8Ð%AÀ4ÈÈcÐSVÐY\ÐY\Ð]`ÐbeÐglÐnrÑYsÔYsÐuxÐuxÐy|ð  Bð  DIð  KOñ  vPô  vPð  RUð  RUð  VYð  [`ð  bjð  loñ  Rpô  Rpð  Yqð  s{ñ  |ô  |Ø€DØØØØ#ØØØØàˆC��X˜v tÑ,Ô,ØˆC��X˜v tÑ,Ô,ØˆC��U˜F DÑ)Ô)ð	
ð
 	ñô ð  	€Dˆˆy˜&Ð"<¸dÀCÈÈbÐSVÐSVÐWZÐ\_ÐagÐilÑSmÔSmÐorÐorÐsvÐx{ð  ~Eð  GJñ  pKô  pKð  SLð  NYñ  Zô  ZØ€Dˆ�˜Ð(HÈ$ÐPSÐUWÐY[Ð^aÐ^aÐbeÐgjÐlrÐtwÑ^xÔ^xÐz}Ðz}ð  Bð  DGð  IPð  RUñ  {Vô  {Vð  ^Wð  Ycñ  dô  dØ€D‰‰y˜&Ñ":¹DÀ#ÀsÈBÐQTÐQTÐUXÐZ]Ð_eÐgjÑQkÔQkÐmpÐmpÐqtÐvyð  |Cð  EHñ  nIô  nIð  QJð  LWñ  Xô  XØ€D‰‘˜.Ñ*FÉÈcÐSUÐWYÐ\_Ð\_Ð`cÐehÐjpÐruÑ\vÔ\vÐx{Ðx{Ð|ð  BEð  GNð  PSñ  yTô  yTð  \Uð  Wañ  bô  bØ€D‰‘	˜6Ñ#=¹tÁSÈ#ÈrÐTWÐTWÐX[Ð]`ÐbhÐjmÑTnÔTnÐpsÐpsÐtwÐy|ð  Fð  HKñ  qLô  qLð  TMð  OZñ  [ô  [Ø€D‰‘˜.Ñ*FÉÉcÐSUÐWYÐ\_Ð\_Ð`cÐehÐjpÐruÑ\vÔ\vÐx{Ðx{Ð|ð  BEð  GNð  PSñ  yTô  yTð  \Uð  Wañ  bô  bðOH€ñ Hð Hñ Hñ HðVH$ÙÑ#ðH$á	ñ ðH$ñ ñ ðH$ð, 
ñ ð-H$ðZ 
Ñð[H$ð\ 
Ñð]H$ñ^ Ñ/ð_H$ñ` ÑðaH$ñb ÑðcH$ñd ÑðeH$ñf Ñ0ðgH$ñh Ñ!ðiH$ñj Ñ!ðkH$ñl Ñ!ðmH$ñn ñ ðoH$ñ| ñ ð}H$ñJ Ñ ðKH$ñL #Ù#ñOH$ð H$ð H$€ñ Hð Hñ Hñ HñV €ñ ð ñ ñ ñ(ñ (ð (ð (ñV	1ñ 	1ð 	1ð 	1ñ	ñ 	ð 	ð 	ññ ð ð ñ Hñ Hð Hð HñHWñ HWð HWð HWñV
ñ 
ð 
ð 
ñ*#-ñ #-ð #-ð #-ñL)ñ )ð )ð )ñ&Tñ Tð Tð TñDñ Dð Dð Dñ
*ñ 
*ð 
*ð 
*ð ‰zÒÐØ€D�F„F€F€F€Fð Ðr   