403Webshell
Server IP : 127.0.0.1  /  Your IP : 216.73.216.109
Web Server : Apache/2.4.54 (Win64) OpenSSL/1.1.1q PHP/8.1.10
System : Windows NT DESKTOP-E5T4RUN 10.0 build 19045 (Windows 10) AMD64
User : SERVERWEB ( 0)
PHP Version : 8.1.10
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : OFF |  Perl : OFF |  Python : OFF |  Sudo : OFF |  Pkexec : OFF
Directory :  C:/cygwin64/lib/python3.9/site-packages/__pycache__/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : C:/cygwin64/lib/python3.9/site-packages/__pycache__/railroad.cpython-39.pyc
a

��4dſ�@sddlmZddlZddlZddlmZer�ddlmZmZm	Z	m
Z
mZmZ
mZmZmZmZmZed�ZeeefZeegefZeegefZe	eefZdZdZdZd	Zd
ZdZ dZ!d
Z"ddd�dd�Z#ddd�dd�Z$dddd�dd�Z%ddd�dd�Z&dd d!�d"d#�Z'Gd$d�d�ZGd%d&�d&e�Z(Gd'd(�d(�Z)d)dd*�d+d,�Z*d-Z+Gd.d/�d/�Z,Gd0d1�d1e(�Z-Gd2d3�d3e(�ZGd4d5�d5e(�Z.Gd6d7�d7e(�Z/Gd8d9�d9e(�Z0Gd:d;�d;e(�Z1Gd<d=�d=e(�Z2Gd>d?�d?e(�Z3dcd)d@d;dA�dBdC�ZGdDdE�dEe�Z4ddd)dFd@d;dG�dHdI�Z5GdJdK�dKe�Z6GdLdM�dMe�Z7GdNdO�dOe�Z8GdPdQ�dQe�Z9GdRdS�dSe�Z:GdTdU�dUe�Z;GdVdW�dWe�Z<e=dXk�rddd dY�dZd[�Z>ej?�@d\�eAd]d^d_d`��ZBeCeB�D��Wd�n1�s�0Yej?�@da�ej?�@db�dS)e�)�annotationsN)�
TYPE_CHECKING)�Any�Callable�Dict�	Generator�List�Optional�Sequence�Tuple�Type�TypeVar�Union�TF��
zrailroad-diagramT�centerg!@�zUnion[str, float]�str��val�returncCs.t|t�r&|�dd��dd��dd�S|d�S)N�&z&amp;�'z&apos;�"z&quot;�g)�
isinstancer�replace�r�r�,/usr/lib/python3.9/site-packages/railroad.py�
escapeAttr-s
r!cCst|��dd�S)N�<z&lt;)r!rrrrr �
escapeHtml3sr#�floatzTuple[float, float])�outer�innerrcCs<||}tdkrd|fStdkr(|dfS|d|dfSdS)N�leftr�right�)�INTERNAL_ALIGNMENT)r%r&�diffrrr �
determineGaps7sr,zSeq[T]z)Generator[Tuple[int, int, T], None, None])�seqrccs2tt|��}t|�D]\}}||||fVqdS�N)�len�list�	enumerate)r-�length�i�itemrrr �doubleenumerateAsr5�DiagramItem�None)�elrcCs2tsdSd�t|�j|j|j|j|j�|jd<dS)Nz{0} w:{1} h:{2}/{3}/{4}zdata-x)	�DEBUG�format�type�__name__�width�up�height�down�attrs)r8rrr �addDebugGs
�rBc@sdeZdZddddd�dd�Zddddd	�d
d�Zddd�d
d�Zddd�dd�Zddd�dd�ZdS)r6NrzOpt[AttrsT]�	Opt[Node])�namerA�textcCsB||_d|_d|_d|_d|_d|_|p*i|_|r8|gng|_dS)NrF)rDr>r?r@r=�
needsSpacerA�children)�selfrDrArErrr �__init__Ps
zDiagramItem.__init__r$��x�yr=rcCst�dSr.��NotImplementedError�rHrKrLr=rrr r:cszDiagramItem.format��parentrcCs|j�|�|Sr.�rG�append�rHrQrrr �addTofszDiagramItem.addTo�WriterFr7��writercCs�|d�|j��t|j���D]\}}|d�|t|���q|d�|jdvrV|d�|jD],}t|tt	t
f�r||�|�q\|t|��q\|d�|j��dS)Nz<{0}z
 {0}="{1}"�>)r�svg�
z</{0}>)
r:rD�sortedrA�itemsr!rGrr6�Path�Style�writeSvgr#)rHrXrD�value�childrrr r`js

zDiagramItem.writeSvg�WalkerF��cbrcCs||�dSr.r�rHrerrr �walkxszDiagramItem.walk)NN)r<�
__module__�__qualname__rIr:rUr`rgrrrr r6Os
c@sFeZdZdddddd�dd�Zd	d	d	d
d�dd
�Zddd�dd�ZdS)�DiagramMultiContainerNrz	Seq[Node]zOpt[Dict[str, str]]�Opt[str])rDr]rArEcCs$t�||||�dd�|D�|_dS)NcSsg|]}t|��qSr)�
wrapString��.0r4rrr �
<listcomp>��z2DiagramMultiContainer.__init__.<locals>.<listcomp>)r6rIr])rHrDr]rArErrr rI}szDiagramMultiContainer.__init__r$r6rJcCst�dSr.rMrOrrr r:�szDiagramMultiContainer.formatrcr7rdcCs"||�|jD]}|�|�qdSr.)r]rg)rHrer4rrr rg�s
zDiagramMultiContainer.walk)NN�r<rhrirIr:rgrrrr rj|s
�
rjc@s�eZdZddd�dd�Zdddd�dd�Zdddd�dd	�Zddd
�dd�Zddd
�d
d�Zddd
�dd�Zddd
�dd�Z	ddd
�dd�Z
ddd
�dd�Zdddd�dd�Zddd�dd�Z
ddd�d d!�Zd"d#d$�d%d&�Zdd'�d(d)�Zdd'�d*d+�Zd,S)-r^r$�rKrLcCs&||_||_dd|�d|��i|_dS)N�d�M� )rKrLrA�rHrKrLrrr rI�sz
Path.__init__)rKrLrcCs"|jdd|�d|��7<|S)Nrs�mru�rArvrrr rw�szPath.mcCs"|jdd|�d|��7<|S)Nrs�lrurxrvrrr ry�szPath.lrcCs|jdd|��7<|S)Nrs�hrx�rHrrrr rz�szPath.hcCs|�td|��S�Nr�rz�maxr{rrr r(�sz
Path.rightcCs|�td|��Sr|r}r{rrr r'�sz	Path.leftcCs|jdd|��7<|S)Nrs�vrxr{rrr r�szPath.vcCs|�td|��Sr|�rr~r{rrr r@�sz	Path.downcCs|�td|��Sr|r�r{rrr r>�szPath.upr)�start�dirrc
Cs�t}dt�d�|}||}|dkr*dnd}d|�d|�d|�d�}||}|d	krb||g}	�nB|d
krv||g}	�n.|dkr�||g}	�n|dkr�||g}	�n|d
kr�||g}	n�|dkr�||g}	n�|dkr�||g}	n�|dkr�||g}	n�|dk�r||g}	n�|dk�r"||g}	n�|dk�r6||g}	nn|dk�rJ||g}	nZ|dk�r`||g}	nD|dk�rv||g}	n.|dk�r�||g}	n|dk�r�||g}	|d�dd�|	D��7}|jd|7<|S)N�r)�cw�1�0za ru� 0 0 ZncwZnecwZecwZsecwZscwZswcwZwcwZnwcwZnccwZnwccwZwccwZswccwZsccwZseccwZeccwZneccwcss|]}t|�VqdSr.)r�rnrKrrr �	<genexpr>�rpzPath.arc_8.<locals>.<genexpr>rs)�AR�Math�sqrt�joinrA)
rHr�r��arc�s2Zs2inv�sweep�path�sd�offsetrrr �arc_8�sR









z
Path.arc_8)r�rc
Cs�t}t}|ddks |ddkr(|d9}|ddks@|ddkrH|d9}|dvrTdnd}|jd	d
t�dt�d|�d|�d|��
7<|S)
Nr�er��w����s�n)�ne�es�sw�wnrs�arur�)r�rA)rHr�rKrLr�rrr r��s0zPath.arcr6rPcCs|j�|�|Sr.rRrTrrr rU�sz
Path.addTorVr7rWcCsF|d�t|j���D]"\}}|d|�dt|��d��q|d�dS)Nz<pathruz="rz />)r\rAr]r!)rHrXrDrarrr r`�sz
Path.writeSvg�rcCs|jdd7<|S)Nrszh.5rx�rHrrr r:�szPath.formatcCsdt|j��dt|j��d�S)NzPath(�, �))�reprrKrLr�rrr �__repr__�sz
Path.__repr__N)r<rhrirIrwryrzr(r'rr@r>r�r�rUr`r:r�rrrr r^�s.r^�Node)rarcCst|t�r|St|�Sr.)rr6�Terminal)rarrr rl�srla%	svg.railroad-diagram {
		background-color:hsl(30,20%,95%);
	}
	svg.railroad-diagram path {
		stroke-width:3;
		stroke:black;
		fill:rgba(0,0,0,0);
	}
	svg.railroad-diagram text {
		font:bold 14px monospace;
		text-anchor:middle;
	}
	svg.railroad-diagram text.label{
		text-anchor:start;
	}
	svg.railroad-diagram text.comment{
		font:italic 12px monospace;
	}
	svg.railroad-diagram rect{
		stroke-width:3;
		stroke:black;
		fill:hsl(120,100%,90%);
	}
	svg.railroad-diagram rect.group-box {
		stroke: gray;
		stroke-dasharray: 10 5;
		fill: none;
	}
c@sVeZdZdd�dd�Zdd�dd�Zddd	�d
d�Zdd�dd
�Zddd�dd�ZdS)r_r��csscCs
||_dSr.r�)rHr�rrr rI"szStyle.__init__r�cCsdt|j��d�S)NzStyle(r�)r�r�r�rrr r�%szStyle.__repr__r6rPcCs|j�|�|Sr.rRrTrrr rU(szStyle.addTocCs|Sr.rr�rrr r:,szStyle.formatrVr7rWcCs"dj|jd�}|dj|d��dS)Nz /* <![CDATA[ */
{css}
/* ]]> */
r�z<style>{cdata}</style>)�cdata)r:r�)rHrXr�rrr r`/szStyle.writeSvgN)r<rhrirIr�rUr:r`rrrr r_!s
r_c@sfeZdZddd�dd�Zdd�dd�Zddddddd
�dd�Zddd�dd�Zddddd�dd�Zd
S)�Diagramr�r)r]�kwargscOs<t�|dt|�dti�|�dd�|_|rLt|dt�sL|j�	dt|j��|rpt|dt
�sp|j�t
|j��d|_d|_
d|_d|_|jD]j}t|t�r�q�|j|j|jr�dnd7_t|j|j|j�|_|j|j7_t|j
|j|j
�|_
q�|jdj�r|jd8_|jdj�r2|jd8_d	|_dS)
NrZ�classr;�simplerr��rF)rjrIr0�
DIAGRAM_CLASS�getr;r�Startr]�insert�EndrSr>r@r?r=r_rFr~�	formatted)rHr]r�r4rrr rI6s8��

zDiagram.__init__r�cCsZd�tt|jdd���}|s"gn|g}|jdkrH|�dt|j����dd�|��d�S)Nr�r�r�r�ztype=zDiagram(r�)r��mapr�r]r;rS)rHr]�piecesrrr r�Vs

zDiagram.__repr__r�Nr$z
Opt[float])�
paddingTop�paddingRight�
paddingBottom�paddingLeftrc	Cs\|dur|}|dur|}|dur$|}|dus0J�|dus<J�|dusHJ�|}||j}td�}trld|jd<|jD]v}|jr�t||��d��|�|d7}|�	|||j
��|�||j
7}||j7}|jrrt||��d��|�|d7}qrt|j
||�|jd<t|j|j|j
||�|jd<d|jd�d|jd��|jd	<|�|�d
|_|S)Nrztranslate(.5 .5)Z	transformrr=r?z0 0 ruZviewBoxT)r>r6�STROKE_ODD_PIXEL_LENGTHrAr]rFr^rzrUr:r=r?rr@r�)	rHr�r�r�r�rKrLrr4rrr r:]s@





�
"
zDiagram.formatrVr7rWcCs|js|��t�||�Sr.)r�r:r6r`)rHrXrrr r`�szDiagram.writeSvgz
str | None)rXr�rcCsf|js|��|durt}t|��|�d|jd<d|jd<t�||�|j�	�|jd=|jd=dS)Nzhttp://www.w3.org/2000/svgZxmlnszhttp://www.w3.org/1999/xlinkzxmlns:xlink)
r�r:�
DEFAULT_STYLEr_rUrAr6r`rG�pop)rHrXr�rrr �writeStandalone�s


zDiagram.writeStandalone)r�NNN)N)r<rhrirIr�r:r`r�rrrr r�5s 	�(r�c@s<eZdZdd�dd�Zdd�dd�Zd	d	d	dd
�dd�Zd
S)r
r��r]cGs�t�|d|�d|_d|_d|_d|_d|_|jD]^}|j|j|jrJdnd7_t|j|j|j�|_|j|j7_t|j|j|j�|_q2|jdjr�|jd8_|jdjr�|jd8_t	|�dS)NrTrr�rr�)
rjrIrFr>r@r?r=r]r~rB)rHr]r4rrr rI�s 
zSequence.__init__rr�cCs"d�dd�|jD��}d|�d�S)Nr�css|]}t|�VqdSr.�r�rmrrr r��rpz$Sequence.__repr__.<locals>.<genexpr>z	Sequence(r��r�r]�rHr]rrr r��szSequence.__repr__r$rJcCs�t||j�\}}t||��|��|�t|||j||j��|��|�||7}t|j�D]�\}}|jr�|dkr�t||��d��|�|d7}|�	|||j��|�||j7}||j7}|jr^|t
|j�dkr^t||��d��|�|d7}q^|S)Nrrr�)r,r=r^rzrUr?r1r]rFr:r/)rHrKrLr=�leftGap�rightGapr3r4rrr r:�s&


zSequence.formatN�r<rhrirIr�r:rrrr r
�sr
c@s<eZdZdd�dd�Zdd�dd�Zd	d	d	dd
�dd�Zd
S)�Stackr�r�cGs�t�|d|�d|_tdd�|jD��|_t|j�dkrJ|jtd7_|jdj|_|jdj	|_	d|_
t|j�d}t|j�D]d\}}|j
|j
7_
|dkr�|j
ttd|jt�7_
||kr�|j
ttd|j	t�7_
q�t
|�dS)	NrTcss"|]}|j|jrdndVqdS�r�rN�r=rFrmrrr r��sz!Stack.__init__.<locals>.<genexpr>r�r)rr�)rjrIrFr~r]r=r/r�r>r@r?r1�VSrB)rHr]�lastr3r4rrr rI�s$�
 zStack.__init__rr�cCs"d�dd�|jD��}d|�d�S)Nr�css|]}t|�VqdSr.r�rmrrr r��rpz!Stack.__repr__.<locals>.<genexpr>zStack(r�r�r�rrr r��szStack.__repr__r$rJc
Cs�t||j�\}}t||��|��|�||7}|}t|j�dkrnt||��t��|�|t7}|jtd}n|j}t|j�D]�\}}	|	�	|||��|�||7}||	j
7}|t|j�dkr~t||��d��t
d|	jttd���d��|��d��t
d|j|djttd���d��|�|t
|	jttd�t
|j|djttd�7}|t}q~t|j�dk�r�t||��t��|�|t7}t||��|��|�|S)Nr�r)r�rr��nw�ws)r,r=r^rzrUr/r]r�r1r:r?r�r@r~r�r'r>)
rHrKrLr=r�r�ZxInitial�
innerWidthr3r4rrr r:�sR

����� �����
zStack.formatNr�rrrr r��sr�csTeZdZddd��fdd�Zdd�dd�Zd	d
�dd�Zd
d
d
dd�dd�Z�ZS)�OptionalSequencer�r�r]rcs(t|�dkrt|�Stt|��|�SdS�Nr�)r/r
�superr��__new__��clsr]��	__class__rr r�szOptionalSequence.__new__r�cGs t�|d|�d|_d|_d|_tdd�|jD��|_|jdj|_d}t	|j�D]�\}}t
|jt
td|jt�|�|_||j7}|dkr�t
|j|j|t
td|jt��|j|_|j|jr�dnd}|dkr�|jtt
|t�7_qR|jtdt
|t�t7_qRt
|�dS)NrFrcss|]}|jVqdSr.)r?rmrrr r�
rpz,OptionalSequence.__init__.<locals>.<genexpr>r)r)rjrIrFr=r>�sumr]r?r@r1r~r�r�rB)rHr]ZheightSoFarr3r4�	itemWidthrrr rIs."

���"zOptionalSequence.__init__rr�cCs"d�dd�|jD��}d|�d�S)Nr�css|]}t|�VqdSr.r�rmrrr r�#rpz,OptionalSequence.__repr__.<locals>.<genexpr>zOptionalSequence(r�r�r�rrr r�"szOptionalSequence.__repr__r$rJcCspt||j�\}}t||��|��|�t|||j||j��|��|�||7}||j}t|j�d}t	|j�D�]�\}}	|	j
r�dnd}
|	j|
}|dk�rNt||��d��||td��d��|t��d��
||	j|td��d��|�t||��|
t��|�|	�||
t||	j��|�||t7}||	j7}qv||k�r�t||��tdt|t�t��d��
|||	jtd��d��|�t||��td��|�|	�|td||	j��|�t||	jtd||	j��|
t��|�t||��d��
|	jt|	j
ttd�td��d��|t��d��|	j
ttd��d��|�|tdt|t�t7}||	j7}qvt||��td��|�|	�|td||	j��|�t|td|	j||	j��|
t��|�t||��d��
|	jt|	j
ttd�td��d��|t��d��|	j
ttd��d��|�qv|S)	Nr�rr�ser)r�r�r�)r,r=r^r(rUr?r>r/r]r1rFr�r�r@r:r~r�)rHrKrLr=r�r�Z
upperLineYr�r3r4Z	itemSpacer�rrr r:&s�&



���������

������	���
� �����������
� ��������zOptionalSequence.format�r<rhrir�rIr�r:�
__classcell__rrr�r r�sr�csTeZdZddd��fdd�Zdd�dd�Zdd	�d
d�Zddddd
�dd�Z�ZS)�AlternatingSequencer�r�cs2t|�dkrtt|��|�Std�t|����dS)Nr)zGAlternatingSequence takes exactly two arguments, but got {0} arguments.)r/r�r�r��	Exceptionr:r�r�rr r�{s��zAlternatingSequence.__new__r�cGsHt�|d|�d|_t}t}|jd}|jd}dt�d�|d}ddt�d�|d}t||�}|||}	t|||d|||d||j	�}
|
|j
|j|_t|||d|||d||j�}||j
|j	|_	d|_
|jr�dnd|j}|j�rdnd|j}
d|t||	|
�d||_t
|�dS)NrFrr�r)r�)rjrIrFr�r�r]r�r�r~r@r?r>r=rB)rHr]r�Zvert�first�second�arcX�arcY�crossY�crossX�firstOut�secondInZ
firstWidthZsecondWidthrrr rI�s*


$�*zAlternatingSequence.__init__rr�cCs"d�dd�|jD��}d|�d�S)Nr�css|]}t|�VqdSr.r�rmrrr r��rpz/AlternatingSequence.__repr__.<locals>.<genexpr>zAlternatingSequence(r�r�r�rrr r��szAlternatingSequence.__repr__r$rJcCs�t}t||j�}t||��|d��|�||d7}t||j|��|d��|�|jd}|jd}|j|j}|j|j|j}	t||��	d��|d|��	d��|�|�
|d||||jd|��|�t||jd|||	��	d��|	d|��	d��|�|j|j|j}
|j|j}t||��	d��|
d|��	d��|�|�
|d|||
|jd|��|�t||jd|||��	d��|d|��	d��|�dt�
d�|d}ddt�
d�|d}
t|t�}||
|}|jd||d}t||||d|��	d��|��d	d
��||||
��dd��|��	d��|�t||||d|��	d��|��d
d��||||
��dd
��|��	d��|�|S)Nrr�r�r)r��r�r�r�r�r�Zccwr�r�)r�r,r=r^r(rUr]r>r?r�r:r@r�r�r~r�r�ry)rHrKrLr=r�Zgapsr�r�ZfirstInr�r�Z	secondOutr�r�r�r�ZcrossBarrrr r:�s� 

**"
���**"
���
������������������zAlternatingSequence.formatr�rrr�r r�zs
r�c@s>eZdZddd�dd�Zdd�dd	�Zd
d
d
dd�dd
�ZdS)�Choice�intr�)�defaultr]c	GsDt�|d|�|t|�ksJ�||_tdtdd�|jD��|_|jdj|_|jdj	|_	|j|j
|_
t|j�D]�\}}||d|dfvr�td}nt}||kr�|jt||j
|j	t|j|dj�7_qv||kr�qvqv|j	t||jt|j|dj	|j|dj
�7_	qv|j	|j|j
8_	t
|�dS)	Nrr�css|]}|jVqdSr.�r=rmrrr r��rpz"Choice.__init__.<locals>.<genexpr>rr�r�r))rjrIr/r�r�r~r]r=r>r@r?r1r�rB)rHr�r]r3r4Zarcsrrr rI�s.
 �
(�
zChoice.__init__rr�cCs$d�dd�|jD��}d|j|fS)Nr�css|]}t|�VqdSr.r�rmrrr r�rpz"Choice.__repr__.<locals>.<genexpr>zChoice(%r, %s))r�r]r�r�rrr r��szChoice.__repr__r$rJcCs*t||j�\}}t||��|��|�t|||j||j��|��|�||7}|jtd}|j|j}|jd|j�ddd�}|r�t	td|j
t|dj|dj�}	t
|�D]�\}
}}t||��d��
|	td��d��|�|�|td||	|��|�t|td|||	|j��d��|	|j|jtd��d��|�|dkr�|	t	t|j
t||
d	j||
d	j�7}	q�t||��td��|�|j|j�|td||��|�t|td|||j��td��|�|j|jd	d�}
|
�r>t	td|j|jt|
dj
�}	t|
�D]�\}
}t||��d��|	td��d��|�|�|td||	|��|�t|td|||	|j��d��
|	td|j|j��d��|�|	t	t|j|jt|
d	t|
�k�r|
|
d	j
nd�7}	�qF|S)
Nr�r�r)rr�r�r�r�r�)r,r=r^rzrUr?r�r]r�r~r>r�r@r5r�r:r(r1r/)rHrKrLr=r�r�r�r��above�
distanceFromYr3�nir4�belowrrr r:sp&"�*  ����&�$,�* &�����"��
z
Choice.formatNr�rrrr r��sr�c@s@eZdZdddd�dd�Zdd�dd	�Zd
d
d
dd�dd
�ZdS)�MultipleChoicer�rr�)r�r;r]c	Gs~t�|d|�d|kr&t|�ks,nJ�|dvs8J�||_||_d|_tdd�|jD��|_dt	|jt	d|_
|jdj|_|jd	j|_|j|j
|_
t|j�D]�\}}||d
|d
fvr�dt	}nt	}||k�r|jt||j
|jt|j|d
j�7_q�||k�r q�q�|jt||jt|j|d
j|j|d
j
�7_q�|j|j|j
8_t|�dS)Nrr)�any�allTcss|]}|jVqdSr.r�rmrrr r�Frpz*MultipleChoice.__init__.<locals>.<genexpr>�r�r�r�r)rjrIr/r�r;rFr~r]r�r�r=r>r@r?r1r�rB)rHr�r;r]r3r4Zminimumrrr rI?s6

 �

(�
zMultipleChoice.__init__r�cCs:d�dd�|jD��}dt|j��dt|j��d|�d�S)Nr�css|]}t|�VqdSr.r�rmrrr r�_rpz*MultipleChoice.__repr__.<locals>.<genexpr>zMultipleChoice(r�)r�r]r�r�r;r�rrr r�^szMultipleChoice.__repr__r$rJcCs�t||j�\}}t||��|��|�t|||j||j��|��|�||7}|j|j}|jd|j�ddd�}|r�tdt	|j
t|dj|dj�}t
|�D]�\}	}
}t|d|��
|t	��d��|�|�|dt	|||j��|�t|dt	|j|||j��d��||j|jt	d��|�|
dkr�|tt	|j
t||	dj||	dj�7}q�t|d|��t	��|�|j|j�|dt	||j��|�t|dt	|j||j��t	��|�|j|jdd�}|�r(tdt	|j|jt|dj
�}t|�D]�\}	}t|d|��|t	��d��|�|�|dt	|||j��|�t|dt	|j|||j��d	��
|t	|j|jd��|�|tt	|j|jt|	dt|�k�r�||	dj
nd�7}�q0td
ddid
��|�}
td|jdk�r2dndd��|
�tddj|d|dd�dd�d
��|
�td|jdk�r~dnd|d|ddd�d��|
�tddj||jd|dd�dd�d
��|
�tdd ||jd|dd!d�d��|
�|S)"Nr�rrr�r�r�r�r�r�rr�zdiagram-textrx�titler�z2take one or more branches, once each, in any orderz*take all branches, once each, in any order)rEr�z<M {x} {y} h -26 a 4 4 0 0 0 -4 4 v 12 a 4 4 0 0 0 4 4 h 26 zrr)rsr�rEz1+r��r��rKrLr�)rErAz<M {x} {y} h 16 a 4 4 0 0 1 4 4 v 12 a 4 4 0 0 1 -4 4 h -16 zr�u↺z
diagram-arrow)r,r=r^rzrUr?r]r�r~r�r>r�r@r5r�r:r�r(r1r/r6r;)rHrKrLr=r�r�r�r�r�r3r�r4r�rErrr r:bs�&"�$""����&�&*�$""������"��
�������	������	��zMultipleChoice.formatNr�rrrr r�>sr�csFeZdZddd��fdd�Zdd�dd�Zd	d	d	dd
�dd�Z�ZS)
�HorizontalChoicer�rr�cs(t|�dkrt|�Stt|��|�SdSr�)r/r
r�r�r�r�r�rr r��szHorizontalChoice.__new__r�cGs<t�|d|�|jdd�}|jdd�}|jd}|jd}d|_ttdt|j�dtdd�|jD��|jdkr~tndt|_d|_t	tdt
t	d	d�|D��t
�|_t	|j|j�|_t	t
|r�t	d
d�|D��nd|j|j
t
�|_|j|jk�rt	|j|jtd�|_t	|j|j|j
�|_
t|�dS)Nrr�r�rFr)css"|]}|j|jrdndVqdSr�r�r�rrr r��rpz,HorizontalChoice.__init__.<locals>.<genexpr>css|]}|jVqdSr.)r>r�rrr r��rpcss(|] }|jt|jttd�VqdS)r)N)r?r~r@r�r�r�rrr r��rp)rjrIr]rFr�r/r�r?r=r~r��_upperTrackr>r@�_lowerTrackrB)rHr]Z
allButLastZmiddlesr�r�rrr rI�s8

�����	$�zHorizontalChoice.__init__r$rJcCsPt||j�\}}t||��|��|�t|||j||j��|��|�||7}|jd}|jd}tdd�|jdd�D��t|j�dt	dt	}t||��
d��|jt	d��
d��|��|�tdd�|jd	d�D��t|j�dt	d|jdk�rt	ndt	}	|t	|j|j
�r2d
ndt	d}
t|
||j��|	��
d��|jt	d��
d��|�t|j�D�]�\}}|dk�r�t||��t	��|�|t	7}n>t|||j��
d��|jt	d��
d��|�|t	d7}|j|j
�rd
nd}
|�|||
��|�||
7}|t|j�d	k�r||jdk�r^t||��t	��|�nt|||j��
d��|�n�|dk�r|j|jk�r|j|jt	dk�r�t|||j��
d��|j|jt	d��
d��|�n*t|||j��t	d|j|j��|�n8t|||j��
d��|j|jt	d��
d��|��q�|S)
Nrr�css"|]}|j|jrdndVqdSr�r�r�rrr r��rpz*HorizontalChoice.format.<locals>.<genexpr>r)r�r�css"|]}|j|jrdndVqdSr�r�r�rrr r�rpr�r�r�r�)r,r=r^rzrUr?r]r�r/r�r�r>r�rFr�r1rr:ry)rHrKrLr=r�r�r�r�Z	upperSpanZ	lowerSpanZ
lowerStartr3r4r�rrr r:�s�&

���
����������&������


������������������zHorizontalChoice.format)r<rhrir�rIr:r�rrr�r r��s%r��bool)r4�skiprcCst|r
dndt�|�S)Nrr�)r��Skip)r4r�rrr r	Osr	c@sPeZdZdddd�dd�Zddddd�d	d
�Zddd
�dd�Zdd�dd�ZdS)�	OneOrMoreNr�rC)r4�repeatcCs�t�|d�t|�|_|pt�}t|�|_t|jj|jj�td|_|jj	|_	|jj
|_
ttd|jjt|jj
|jj	|jj�|_d|_
t|�dS)Nrr)T)r6rIrlr4r��repr~r=r�r?r>r@r�rFrB)rHr4r�rrr rITs




(�zOneOrMore.__init__r$rJcCs�t||j�\}}t||��|��|�t|||j||j��|��|�||7}t||��t��|�|j�	|t||jtd��|�t||jt||j��t��|�t
td|jj|jjt|j
j�}t|t|��d��|td��d��|�|j
�	|t|||jtd��|�t||jt|||j
j��d��|td|j
j|jj��d��|�|S)Nr)r�r�r��en)r,r=r^rzrUr?r(r�r4r:r~r@r�r�r>r�)rHrKrLr=r�r�r�rrr r:bs(&$& �.(&���zOneOrMore.formatrcr7rdcCs$||�|j�|�|j�|�dSr.)r4rgr�rfrrr rg{szOneOrMore.walkrr�cCsdt|j��dt|j��d�S)Nz
OneOrMore(z	, repeat=r�)r�r4r�r�rrr r��szOneOrMore.__repr__)N)r<rhrirIr:rgr�rrrr r�Ssr�rC)r4r�r�rcCstt||�|�}|Sr.)r	r�)r4r�r��resultrrr �
ZeroOrMore�src@sBeZdZdddd�dd�Zddddd�d	d
�Zddd
�dd�ZdS)�GroupNr�rC)r4�labelcCs�t�|d�t|�|_|t|t�r,||_n|r<t|�|_nd|_t|jj|jj	rVdnd|jrh|jjndt
d�|_|jj|_t|jjt
t
�|_|j|_|jr�|j|jj|jj|jj7_t|jjt
t
�|_d|_	t|�dS)Nrr�rr)T)r6rIrlr4rr�Commentr~r=rFr�r?r>r��boxUpr@rB)rHr4rrrr rI�s*

�
"zGroup.__init__r$rJc
Cs�t||j�\}}t||��|��|�t|||j||j��|��|�||7}td|||j|j|j|j|jt	t	dd���|�|j
�|||j��|�|jr�|j�|||j|jj|jj|jj��|�|S)N�rectz	group-box)rKrLr=r?�rx�ryr�)
r,r=r^rzrUr?r6rr@r�r4r:r)rHrKrLr=r�r�rrr r:�s6&���
��zGroup.formatrcr7rdcCs*||�|j�|�|jr&|j�|�dSr.)r4rgrrfrrr rg�sz
Group.walk)Nrqrrrr r�src@s@eZdZdddd�dd�Zddddd	�d
d�Zdd�d
d�ZdS)r�r�Nrrk)r;rcCsTt�|d�|r*tdt|�td�|_nd|_d|_d|_||_||_	t
|�dS)Nrr�r)r6rIr~r/�
CHAR_WIDTHr=r>r@r;rrB)rHr;rrrr rI�szStart.__init__r$rJcCs�t||d�}|jdkr:|�d��dd��|j��|�n.|�d��dd��d��dd��|j��|�|jr�td||dd	d
�|jd��|�|S)Nr�complexr�ri����i��rEr�ztext-anchor:start)rKrLZstyle)rArE)	r^r;r@rwr(r=rUrr6)rHrKrLr=r�rrr r:�s
".��zStart.formatr�cCsdt|j��dt|j��d�S)NzStart(type=z, label=r�)r�r;rr�rrr r��szStart.__repr__)r�N�r<rhrirIr:r�rrrr r��sr�c@s>eZdZddd�dd�Zddddd�dd	�Zdd
�dd�Zd
S)r�r�r)r;cCs0t�|d�d|_d|_d|_||_t|�dS)Nr�r�r)r6rIr=r>r@r;rB)rHr;rrr rI�szEnd.__init__r$rJcCs>|jdkrd�||�|jd<n|jdkr:d�||�|jd<|S)Nr�z+M {0} {1} h 20 m -10 -10 v 20 m 10 -20 v 20rsr
zM {0} {1} h 20 m 0 -10 v 20)r;r:rArOrrr r:�s


z
End.formatr�cCsdt|j��d�S)Nz	End(type=r�)r�r;r�rrr r��szEnd.__repr__N)r�rrrrr r��sr�c@sDeZdZdddddd�dd�Zdd�d	d
�Zddddd�d
d�ZdS)r�N�rrk�rE�hrefr�r�c	Csdt�|ddd�d|g�i�||_||_||_||_t|�td|_	d|_
d|_d|_t
|�dS)Nrr�ruZterminalr��T�r6rIr�rErr�r�r/r	r=r>r@rFrB�rHrErr�r�rrr rI�szTerminal.__init__r�c	Cs6dt|j��dt|j��dt|j��dt|j��d�	S)Nz	Terminal(�, href=�, title=�, cls=r��r�rErr�r�r�rrr r�	szTerminal.__repr__r$rJc	Cs�t||j�\}}t||��|��|�t|||j|��|��|�td|||d|j|j|jddd���|�td|||jd|dd�|j�}|j	dur�td	d
|j	i|��|�}|�|�n
|�|�|j
dur�tdi|j
��|�|S)Nrrr)rKrLr=r?rrrEr)r�rrr��
xlink:hrefr��r,r=r^rzrUr6r>r@rErr��rHrKrLr=r�r�rEr�rrr r:s2 
��
� �


zTerminal.format)NNrr�rrrr r��s�r�c@sDeZdZdddddd�dd�Zdd�d	d
�Zddddd�d
d�ZdS)�NonTerminalNrrrkr
c	Csdt�|ddd�d|g�i�||_||_||_||_t|�td|_	d|_
d|_d|_t
|�dS)Nrr�ru�non-terminalr�rTrrrrr rI,szNonTerminal.__init__r�c	Cs6dt|j��dt|j��dt|j��dt|j��d�	S)NzNonTerminal(rrrr�rr�rrr r�:szNonTerminal.__repr__r$rJcCs�t||j�\}}t||��|��|�t|||j|��|��|�td|||d|j|j|jd���|�td|||jd|dd�|j�}|j	dur�tdd	|j	i|��|�}|�|�n
|�|�|j
dur�td
i|j
��|�|S)Nrr)rKrLr=r?rEr)r�rrr�rr�rrrrr r:=s. 
���	 �


zNonTerminal.format)NNrr�rrrr r+s�rc@sDeZdZdddddd�dd�Zdd�d	d
�Zddddd�d
d�ZdS)rNrrrkr
c	Csdt�|ddd�d|g�i�||_||_||_||_t|�td|_	d|_
d|_d|_t
|�dS)Nrr�rurrrT)r6rIr�rErr�r�r/�COMMENT_CHAR_WIDTHr=r>r@rFrBrrrr rI[szComment.__init__r�c	Cs6dt|j��dt|j��dt|j��dt|j��d�	S)NzComment(rrrr�rr�rrr r�iszComment.__repr__r$rJcCs�t||j�\}}t||��|��|�t|||j|��|��|�td|||jd|ddd�|j�}|jdur�tdd|ji|��|�}|�|�n
|�|�|jdur�tdi|j��|�|S)	NrEr)�Zcommentr�r�rr�)	r,r=r^rzrUr6rErr�rrrr r:ls �


zComment.format)NNrr�rrrr rZs�rc@s<eZdZdd�dd�Zddddd�dd�Zd	d�d
d�ZdS)
r�r7r�cCs*t�|d�d|_d|_d|_t|�dS)Nrr)r6rIr=r>r@rBr�rrr rI�s
z
Skip.__init__r$rJcCst||��|��|�|Sr.)r^r(rUrOrrr r:�szSkip.formatrcCsdS)NzSkip()rr�rrr r��sz
Skip.__repr__Nrrrrr r��sr��__main__)rD�diagramrcCs6tj�dt|��d��|�tjj�tj�d�dS)Nz<h1>z</h1>
r[)�sys�stdoutrXr#r`)rDrrrr �add�sr!z(<!doctype html><title>Test</title><body>ztest.py�rzutf-8)�encodingz5
		<style>
		.blue text { fill: blue; }
		</style>
		z</body></html>)F)NF)EZ
__future__rZmathr�r�typingrrrrrrr	ZOptr
ZSeqrrr
rrrr6r�rVrcZAttrsTr9r�r�r�r�r*r	rr!r#r,r5rBrjr^rlr�r_r�r�r�r�r�r�r�r�rrr�r�r�rrr�r<r!r rX�openZfh�exec�readrrrr �<module>sx4��
-m c)@yi[1>1/(
,�

Youez - 2016 - github.com/yon3zu
LinuXploit