1
0
mirror of https://github.com/coturn/coturn.git synced 2025-08-12 09:17:04 +02:00
coturn/docs/drawio/FlowChart.html
Kang Lin 05900adb2e
Doc: add flowchart (#1328)
The flowchart will be kept updated:

- Use [drawio](https://app.diagrams.net/) to edit.

1. Open [drawio](https://app.diagrams.net/) in brower
2. Menu → File → Open from ... → Device:

Select [FlowChart.html](FlowChart.html)

3. Edit flow chart
4. Export to svg:

Menu → File → Export as... → SVG...
2024-01-15 19:14:21 -08:00

13 lines
48 KiB
HTML

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>draw.io</title>
<meta http-equiv="refresh" content="0;URL='https://app.diagrams.net/#HKangLin%2Fcoturn%2FFlowChart%2Fdocs%2Fdrawio%2FFlowChart.html'"/>
<meta charset="utf-8"/>
</head>
<body>
<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="{&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;resize&quot;:true,&quot;xml&quot;:&quot;&lt;mxfile host=\&quot;app.diagrams.net\&quot; modified=\&quot;2023-12-08T02:18:42.680Z\&quot; agent=\&quot;Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0\&quot; etag=\&quot;yaQpJu1YMDJU5HiIBxcW\&quot; version=\&quot;22.1.3\&quot; type=\&quot;github\&quot;&gt;&lt;diagram name=\&quot;第 1 页\&quot; id=\&quot;770i9bGLY1KPm9eyXDIp\&quot;&gt;&lt;mxGraphModel dx=\&quot;1669\&quot; dy=\&quot;483\&quot; grid=\&quot;1\&quot; gridSize=\&quot;10\&quot; guides=\&quot;1\&quot; tooltips=\&quot;1\&quot; connect=\&quot;1\&quot; arrows=\&quot;1\&quot; fold=\&quot;1\&quot; page=\&quot;1\&quot; pageScale=\&quot;1\&quot; pageWidth=\&quot;827\&quot; pageHeight=\&quot;1169\&quot; math=\&quot;0\&quot; shadow=\&quot;0\&quot;&gt;&lt;root&gt;&lt;mxCell id=\&quot;0\&quot;/&gt;&lt;mxCell id=\&quot;1\&quot; parent=\&quot;0\&quot;/&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-9\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-2\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-3\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-17\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-2\&quot; target=\&quot;LLYs0ycAy4ud-bftnCw8-16\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-2\&quot; value=\&quot;create_dtls_listener_server\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;110\&quot; y=\&quot;90\&quot; width=\&quot;180\&quot; height=\&quot;20\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-10\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-3\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-11\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;&lt;mxPoint x=\&quot;240\&quot; y=\&quot;250\&quot; as=\&quot;targetPoint\&quot;/&gt;&lt;/mxGeometry&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-3\&quot; value=\&quot;create_server_socket\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;140\&quot; y=\&quot;160\&quot; width=\&quot;120\&quot; height=\&quot;20\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-13\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-11\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-12\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-11\&quot; value=\&quot;udp_server_input_handler\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;110\&quot; y=\&quot;216\&quot; width=\&quot;180\&quot; height=\&quot;24\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-18\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-12\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-15\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;&lt;Array as=\&quot;points\&quot;&gt;&lt;mxPoint x=\&quot;200\&quot; y=\&quot;299\&quot;/&gt;&lt;mxPoint x=\&quot;360\&quot; y=\&quot;299\&quot;/&gt;&lt;mxPoint x=\&quot;360\&quot; y=\&quot;359\&quot;/&gt;&lt;/Array&gt;&lt;/mxGeometry&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-12\&quot; value=\&quot;udp_recvfrom\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;140\&quot; y=\&quot;273\&quot; width=\&quot;120\&quot; height=\&quot;20\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-28\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-14\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-27\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-14\&quot; value=\&quot;handle_udp_packet\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;150\&quot; y=\&quot;450\&quot; width=\&quot;120\&quot; height=\&quot;21\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;nF21LRaPK5qXbV-Z2aID-1\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;\&quot; edge=\&quot;1\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-15\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-16\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;nF21LRaPK5qXbV-Z2aID-2\&quot; value=\&quot;YES\&quot; style=\&quot;edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];\&quot; vertex=\&quot;1\&quot; connectable=\&quot;0\&quot; parent=\&quot;nF21LRaPK5qXbV-Z2aID-1\&quot;&gt;&lt;mxGeometry x=\&quot;0.0049\&quot; y=\&quot;3\&quot; relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;&lt;mxPoint x=\&quot;-2\&quot; y=\&quot;-8\&quot; as=\&quot;offset\&quot;/&gt;&lt;/mxGeometry&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-15\&quot; value=\&quot;&amp;lt;font color=&amp;quot;#2d7600&amp;quot;&amp;gt;connect_cb&amp;lt;/font&amp;gt;\&quot; style=\&quot;rhombus;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;490\&quot; y=\&quot;319.25\&quot; width=\&quot;80\&quot; height=\&quot;80\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-16\&quot; value=\&quot;send_socket_to_general_relay\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;625\&quot; y=\&quot;450\&quot; width=\&quot;176\&quot; height=\&quot;20\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-24\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-15\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-14\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-25\&quot; value=\&quot;NO\&quot; style=\&quot;edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];\&quot; parent=\&quot;G6Pp0vN6bFu9NTuqtbdY-24\&quot; vertex=\&quot;1\&quot; connectable=\&quot;0\&quot;&gt;&lt;mxGeometry x=\&quot;0.0058\&quot; relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;&lt;mxPoint y=\&quot;-11\&quot; as=\&quot;offset\&quot;/&gt;&lt;/mxGeometry&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-32\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-27\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-33\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;&lt;mxPoint x=\&quot;530\&quot; y=\&quot;645\&quot; as=\&quot;targetPoint\&quot;/&gt;&lt;/mxGeometry&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-27\&quot; value=\&quot;open_client_connection_session\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;400\&quot; y=\&quot;560\&quot; width=\&quot;260\&quot; height=\&quot;40\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-30\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;\&quot; parent=\&quot;1\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;&lt;mxPoint x=\&quot;530\&quot; y=\&quot;615\&quot; as=\&quot;sourcePoint\&quot;/&gt;&lt;mxPoint x=\&quot;530\&quot; y=\&quot;615\&quot; as=\&quot;targetPoint\&quot;/&gt;&lt;/mxGeometry&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-31\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;\&quot; parent=\&quot;1\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;&lt;mxPoint x=\&quot;530\&quot; y=\&quot;615\&quot; as=\&quot;sourcePoint\&quot;/&gt;&lt;mxPoint x=\&quot;530\&quot; y=\&quot;615\&quot; as=\&quot;targetPoint\&quot;/&gt;&lt;/mxGeometry&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-36\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-33\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-35\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-33\&quot; value=\&quot;client_input_handler\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;fillColor=#e1d5e7;strokeColor=#9673a6;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;470\&quot; y=\&quot;635\&quot; width=\&quot;120\&quot; height=\&quot;25\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-38\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-35\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-37\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-55\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-35\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-54\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-35\&quot; value=\&quot;read_client_connection\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;460\&quot; y=\&quot;683\&quot; width=\&quot;140\&quot; height=\&quot;31\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-57\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-37\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-56\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-37\&quot; value=\&quot;handle_turn_command\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;340\&quot; y=\&quot;755\&quot; width=\&quot;140\&quot; height=\&quot;25\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-45\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;startArrow=classic;startFill=1;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-41\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-44\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-49\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-41\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-48\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-41\&quot; value=\&quot;relay_receive_message\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;910\&quot; y=\&quot;449\&quot; width=\&quot;154\&quot; height=\&quot;23\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-43\&quot; value=\&quot;\&quot; style=\&quot;shape=flexArrow;endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-16\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-41\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry width=\&quot;50\&quot; height=\&quot;50\&quot; relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;&lt;mxPoint x=\&quot;400\&quot; y=\&quot;490\&quot; as=\&quot;sourcePoint\&quot;/&gt;&lt;mxPoint x=\&quot;450\&quot; y=\&quot;440\&quot; as=\&quot;targetPoint\&quot;/&gt;&lt;/mxGeometry&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-47\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;startArrow=classic;startFill=1;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-44\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-46\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-22\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-44\&quot; target=\&quot;LLYs0ycAy4ud-bftnCw8-21\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;&lt;Array as=\&quot;points\&quot;&gt;&lt;mxPoint x=\&quot;987\&quot; y=\&quot;390\&quot;/&gt;&lt;mxPoint x=\&quot;1201\&quot; y=\&quot;390\&quot;/&gt;&lt;/Array&gt;&lt;/mxGeometry&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-44\&quot; value=\&quot;setup_relay_server\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;927\&quot; y=\&quot;347.5\&quot; width=\&quot;120\&quot; height=\&quot;23.5\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-46\&quot; value=\&quot;run_general_relay_thread\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;1094\&quot; y=\&quot;190\&quot; width=\&quot;147\&quot; height=\&quot;38.25\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-50\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-48\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-27\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-48\&quot; value=\&quot;handle_relay_message\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;919\&quot; y=\&quot;517\&quot; width=\&quot;137\&quot; height=\&quot;20.5\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-54\&quot; value=\&quot;handle_old_stun_command\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;560\&quot; y=\&quot;755\&quot; width=\&quot;160\&quot; height=\&quot;26.5\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-59\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-56\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-58\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-56\&quot; value=\&quot;handle_turn_allocate\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;350\&quot; y=\&quot;815\&quot; width=\&quot;120\&quot; height=\&quot;22.5\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-61\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-58\&quot; target=\&quot;hP5A85kGjmnAjHvHM-Ni-1\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;hP5A85kGjmnAjHvHM-Ni-7\&quot; value=\&quot;register_callback_on_ioa_socket\&quot; style=\&quot;edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];\&quot; parent=\&quot;G6Pp0vN6bFu9NTuqtbdY-61\&quot; vertex=\&quot;1\&quot; connectable=\&quot;0\&quot;&gt;&lt;mxGeometry x=\&quot;-0.2974\&quot; y=\&quot;1\&quot; relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;&lt;mxPoint as=\&quot;offset\&quot;/&gt;&lt;/mxGeometry&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;L2Mt6WvLMQUCUICwPJAt-10\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-58\&quot; target=\&quot;L2Mt6WvLMQUCUICwPJAt-9\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;hP5A85kGjmnAjHvHM-Ni-16\&quot; value=\&quot;create_relay_ioa_sockets\&quot; style=\&quot;edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];\&quot; parent=\&quot;L2Mt6WvLMQUCUICwPJAt-10\&quot; vertex=\&quot;1\&quot; connectable=\&quot;0\&quot;&gt;&lt;mxGeometry x=\&quot;-0.0148\&quot; y=\&quot;-2\&quot; relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;&lt;mxPoint y=\&quot;-16\&quot; as=\&quot;offset\&quot;/&gt;&lt;/mxGeometry&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;L2Mt6WvLMQUCUICwPJAt-16\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=1;exitDx=0;exitDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-58\&quot; target=\&quot;L2Mt6WvLMQUCUICwPJAt-15\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;&lt;Array as=\&quot;points\&quot;&gt;&lt;mxPoint x=\&quot;530\&quot; y=\&quot;911.25\&quot;/&gt;&lt;mxPoint x=\&quot;530\&quot; y=\&quot;961.25\&quot;/&gt;&lt;/Array&gt;&lt;/mxGeometry&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;hP5A85kGjmnAjHvHM-Ni-5\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=none;endFill=0;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-58\&quot; target=\&quot;hP5A85kGjmnAjHvHM-Ni-4\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-58\&quot; value=\&quot;create_relay_connection\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;335\&quot; y=\&quot;880\&quot; width=\&quot;150\&quot; height=\&quot;31.25\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;L2Mt6WvLMQUCUICwPJAt-2\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;\&quot; parent=\&quot;1\&quot; source=\&quot;G6Pp0vN6bFu9NTuqtbdY-60\&quot; target=\&quot;L2Mt6WvLMQUCUICwPJAt-1\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;G6Pp0vN6bFu9NTuqtbdY-60\&quot; value=\&quot;peer_input_handler\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;360\&quot; y=\&quot;1219.24\&quot; width=\&quot;120\&quot; height=\&quot;16.88\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;L2Mt6WvLMQUCUICwPJAt-4\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;L2Mt6WvLMQUCUICwPJAt-1\&quot; target=\&quot;L2Mt6WvLMQUCUICwPJAt-3\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;L2Mt6WvLMQUCUICwPJAt-1\&quot; value=\&quot;write_client_connection\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;350\&quot; y=\&quot;1281.25\&quot; width=\&quot;140\&quot; height=\&quot;30\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;L2Mt6WvLMQUCUICwPJAt-24\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;L2Mt6WvLMQUCUICwPJAt-3\&quot; target=\&quot;L2Mt6WvLMQUCUICwPJAt-5\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;L2Mt6WvLMQUCUICwPJAt-28\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;L2Mt6WvLMQUCUICwPJAt-3\&quot; target=\&quot;L2Mt6WvLMQUCUICwPJAt-25\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;L2Mt6WvLMQUCUICwPJAt-29\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;L2Mt6WvLMQUCUICwPJAt-3\&quot; target=\&quot;L2Mt6WvLMQUCUICwPJAt-27\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;&lt;Array as=\&quot;points\&quot;&gt;&lt;mxPoint x=\&quot;640\&quot; y=\&quot;1431.25\&quot;/&gt;&lt;mxPoint x=\&quot;776\&quot; y=\&quot;1431.25\&quot;/&gt;&lt;/Array&gt;&lt;/mxGeometry&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;L2Mt6WvLMQUCUICwPJAt-3\&quot; value=\&quot;send_data_from_ioa_socket_nbh\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;545\&quot; y=\&quot;1371.25\&quot; width=\&quot;190\&quot; height=\&quot;35\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;L2Mt6WvLMQUCUICwPJAt-5\&quot; value=\&quot;udp_send\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;410\&quot; y=\&quot;1457.75\&quot; width=\&quot;120\&quot; height=\&quot;27.5\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;hP5A85kGjmnAjHvHM-Ni-29\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;dashed=1;\&quot; parent=\&quot;1\&quot; source=\&quot;L2Mt6WvLMQUCUICwPJAt-7\&quot; target=\&quot;hP5A85kGjmnAjHvHM-Ni-23\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;hP5A85kGjmnAjHvHM-Ni-30\&quot; value=\&quot;register_callback_on_ioa_socket\&quot; style=\&quot;edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];\&quot; parent=\&quot;hP5A85kGjmnAjHvHM-Ni-29\&quot; vertex=\&quot;1\&quot; connectable=\&quot;0\&quot;&gt;&lt;mxGeometry x=\&quot;-0.2\&quot; relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;&lt;mxPoint as=\&quot;offset\&quot;/&gt;&lt;/mxGeometry&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;L2Mt6WvLMQUCUICwPJAt-7\&quot; value=\&quot;tcp_peer_accept_connection\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;791\&quot; y=\&quot;951.25\&quot; width=\&quot;170\&quot; height=\&quot;20\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;L2Mt6WvLMQUCUICwPJAt-11\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;\&quot; parent=\&quot;1\&quot; source=\&quot;L2Mt6WvLMQUCUICwPJAt-9\&quot; target=\&quot;L2Mt6WvLMQUCUICwPJAt-7\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;L2Mt6WvLMQUCUICwPJAt-9\&quot; value=\&quot;tcp_listener_input_handler\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;801\&quot; y=\&quot;884.25\&quot; width=\&quot;150\&quot; height=\&quot;24.38\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;L2Mt6WvLMQUCUICwPJAt-18\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;\&quot; parent=\&quot;1\&quot; source=\&quot;L2Mt6WvLMQUCUICwPJAt-15\&quot; target=\&quot;L2Mt6WvLMQUCUICwPJAt-7\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;L2Mt6WvLMQUCUICwPJAt-15\&quot; value=\&quot;&amp;lt;div&amp;gt;create_relay_ioa_sockets&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;_ioa_socket::acb&amp;lt;/div&amp;gt;\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;568\&quot; y=\&quot;936.25\&quot; width=\&quot;140\&quot; height=\&quot;50.01\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;L2Mt6WvLMQUCUICwPJAt-21\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;L2Mt6WvLMQUCUICwPJAt-19\&quot; target=\&quot;L2Mt6WvLMQUCUICwPJAt-3\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;L2Mt6WvLMQUCUICwPJAt-19\&quot; value=\&quot;tcp_peer_input_handler\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;808\&quot; y=\&quot;1219.2399999999998\&quot; width=\&quot;136\&quot; height=\&quot;20\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;L2Mt6WvLMQUCUICwPJAt-25\&quot; value=\&quot;bufferevent_write\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;580\&quot; y=\&quot;1457.75\&quot; width=\&quot;120\&quot; height=\&quot;31\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;L2Mt6WvLMQUCUICwPJAt-26\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;L2Mt6WvLMQUCUICwPJAt-25\&quot; target=\&quot;L2Mt6WvLMQUCUICwPJAt-25\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;L2Mt6WvLMQUCUICwPJAt-27\&quot; value=\&quot;ssl_send\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;716\&quot; y=\&quot;1457.75\&quot; width=\&quot;120\&quot; height=\&quot;31\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;hP5A85kGjmnAjHvHM-Ni-3\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;hP5A85kGjmnAjHvHM-Ni-1\&quot; target=\&quot;hP5A85kGjmnAjHvHM-Ni-8\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;hP5A85kGjmnAjHvHM-Ni-1\&quot; value=\&quot;socket_input_handler\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;350\&quot; y=\&quot;1015.75\&quot; width=\&quot;120\&quot; height=\&quot;25\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;hP5A85kGjmnAjHvHM-Ni-6\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;\&quot; parent=\&quot;1\&quot; source=\&quot;hP5A85kGjmnAjHvHM-Ni-4\&quot; target=\&quot;aIsPIwyctZogymb4Lqhh-1\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;hP5A85kGjmnAjHvHM-Ni-4\&quot; value=\&quot;&amp;lt;div&amp;gt;register_callback_on_ioa_socket&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;_ioa_socket::read_cb=peer_input_handler&amp;lt;/div&amp;gt;\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;90\&quot; y=\&quot;936.25\&quot; width=\&quot;180\&quot; height=\&quot;60\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;aIsPIwyctZogymb4Lqhh-2\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;\&quot; parent=\&quot;1\&quot; source=\&quot;hP5A85kGjmnAjHvHM-Ni-8\&quot; target=\&quot;aIsPIwyctZogymb4Lqhh-1\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;hP5A85kGjmnAjHvHM-Ni-8\&quot; value=\&quot;socket_input_worker\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;560\&quot; y=\&quot;1086.25\&quot; width=\&quot;120\&quot; height=\&quot;30\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;hP5A85kGjmnAjHvHM-Ni-10\&quot; value=\&quot;udp_recvfrom\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;370\&quot; y=\&quot;1111.25\&quot; width=\&quot;120\&quot; height=\&quot;30\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;hP5A85kGjmnAjHvHM-Ni-11\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;hP5A85kGjmnAjHvHM-Ni-10\&quot; target=\&quot;hP5A85kGjmnAjHvHM-Ni-10\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;hP5A85kGjmnAjHvHM-Ni-21\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=none;endFill=0;\&quot; parent=\&quot;1\&quot; source=\&quot;L2Mt6WvLMQUCUICwPJAt-7\&quot; target=\&quot;hP5A85kGjmnAjHvHM-Ni-20\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;hP5A85kGjmnAjHvHM-Ni-22\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;hP5A85kGjmnAjHvHM-Ni-20\&quot; target=\&quot;aIsPIwyctZogymb4Lqhh-1\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;hP5A85kGjmnAjHvHM-Ni-20\&quot; value=\&quot;&amp;lt;div&amp;gt;register_callback_on_ioa_socket&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;read_cb=tcp_peer_input_handler&amp;lt;/div&amp;gt;\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;1030\&quot; y=\&quot;1071.25\&quot; width=\&quot;180\&quot; height=\&quot;60\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;hP5A85kGjmnAjHvHM-Ni-25\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;hP5A85kGjmnAjHvHM-Ni-23\&quot; target=\&quot;hP5A85kGjmnAjHvHM-Ni-8\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;&lt;Array as=\&quot;points\&quot;&gt;&lt;mxPoint x=\&quot;876\&quot; y=\&quot;1061.25\&quot;/&gt;&lt;mxPoint x=\&quot;620\&quot; y=\&quot;1061.25\&quot;/&gt;&lt;/Array&gt;&lt;/mxGeometry&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;hP5A85kGjmnAjHvHM-Ni-23\&quot; value=\&quot;socket_input_handler_bev\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;785.5\&quot; y=\&quot;1011.25\&quot; width=\&quot;181\&quot; height=\&quot;34\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-3\&quot; value=\&quot;\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;\&quot; parent=\&quot;1\&quot; source=\&quot;LLYs0ycAy4ud-bftnCw8-1\&quot; target=\&quot;LLYs0ycAy4ud-bftnCw8-2\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-32\&quot; value=\&quot;&amp;lt;font color=&amp;quot;#2d7600&amp;quot;&amp;gt;connect_cb=send_socket_to_general_relay&amp;lt;/font&amp;gt;\&quot; style=\&quot;edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];\&quot; parent=\&quot;LLYs0ycAy4ud-bftnCw8-3\&quot; vertex=\&quot;1\&quot; connectable=\&quot;0\&quot;&gt;&lt;mxGeometry x=\&quot;-0.1652\&quot; y=\&quot;1\&quot; relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;&lt;mxPoint as=\&quot;offset\&quot;/&gt;&lt;/mxGeometry&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-1\&quot; value=\&quot;setup_tcp_listener_servers\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;710\&quot; width=\&quot;170\&quot; height=\&quot;30\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-11\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;\&quot; parent=\&quot;1\&quot; source=\&quot;LLYs0ycAy4ud-bftnCw8-2\&quot; target=\&quot;LLYs0ycAy4ud-bftnCw8-10\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-35\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;LLYs0ycAy4ud-bftnCw8-2\&quot; target=\&quot;LLYs0ycAy4ud-bftnCw8-34\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-2\&quot; value=\&quot;create_tls_listener_server\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;722.5\&quot; y=\&quot;87.5\&quot; width=\&quot;145\&quot; height=\&quot;25\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-7\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;LLYs0ycAy4ud-bftnCw8-5\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-15\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;&lt;mxPoint x=\&quot;720\&quot; y=\&quot;433\&quot; as=\&quot;targetPoint\&quot;/&gt;&lt;Array as=\&quot;points\&quot;&gt;&lt;mxPoint x=\&quot;795\&quot; y=\&quot;310\&quot;/&gt;&lt;mxPoint x=\&quot;720\&quot; y=\&quot;310\&quot;/&gt;&lt;mxPoint x=\&quot;720\&quot; y=\&quot;359\&quot;/&gt;&lt;/Array&gt;&lt;/mxGeometry&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-5\&quot; value=\&quot;server_input_handler\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;735\&quot; y=\&quot;216\&quot; width=\&quot;120\&quot; height=\&quot;32.5\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-12\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=none;endFill=0;\&quot; parent=\&quot;1\&quot; source=\&quot;LLYs0ycAy4ud-bftnCw8-10\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-15\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-10\&quot; value=\&quot;tls_listener_relay_server_type\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;516\&quot; y=\&quot;90\&quot; width=\&quot;170\&quot; height=\&quot;30\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-18\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=none;endFill=0;\&quot; parent=\&quot;1\&quot; source=\&quot;LLYs0ycAy4ud-bftnCw8-16\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-15\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-16\&quot; value=\&quot;dtls_listener_relay_server_type\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;320\&quot; y=\&quot;85\&quot; width=\&quot;170\&quot; height=\&quot;30\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-20\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;LLYs0ycAy4ud-bftnCw8-19\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-44\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-23\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;LLYs0ycAy4ud-bftnCw8-19\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-46\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-19\&quot; value=\&quot;setup_general_relay_servers\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;970\&quot; width=\&quot;160\&quot; height=\&quot;30\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-21\&quot; value=\&quot;relay_receive_auth_message\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;1121\&quot; y=\&quot;431\&quot; width=\&quot;159\&quot; height=\&quot;29\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-29\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;LLYs0ycAy4ud-bftnCw8-24\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-2\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;&lt;mxPoint x=\&quot;203\&quot; y=\&quot;90\&quot; as=\&quot;targetPoint\&quot;/&gt;&lt;/mxGeometry&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-24\&quot; value=\&quot;setup_socket_per_endpoint_udp_listener_servers\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;-530\&quot; width=\&quot;275\&quot; height=\&quot;30\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-28\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;LLYs0ycAy4ud-bftnCw8-25\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-2\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;&lt;mxPoint x=\&quot;200\&quot; y=\&quot;100\&quot; as=\&quot;targetPoint\&quot;/&gt;&lt;/mxGeometry&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-25\&quot; value=\&quot;setup_socket_per_thread_udp_listener_servers\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;-225\&quot; width=\&quot;260\&quot; height=\&quot;30\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-27\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;LLYs0ycAy4ud-bftnCw8-26\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-2\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-31\&quot; value=\&quot;&amp;lt;font color=&amp;quot;#2d7600&amp;quot;&amp;gt;connect_cb=send_socket_to_general_relay&amp;lt;/font&amp;gt;\&quot; style=\&quot;edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];\&quot; parent=\&quot;LLYs0ycAy4ud-bftnCw8-27\&quot; vertex=\&quot;1\&quot; connectable=\&quot;0\&quot;&gt;&lt;mxGeometry x=\&quot;-0.3058\&quot; y=\&quot;1\&quot; relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;&lt;mxPoint as=\&quot;offset\&quot;/&gt;&lt;/mxGeometry&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-26\&quot; value=\&quot;setup_socket_per_session_udp_listener_servers\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;66\&quot; width=\&quot;269\&quot; height=\&quot;30\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-36\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;dashed=1;\&quot; parent=\&quot;1\&quot; source=\&quot;LLYs0ycAy4ud-bftnCw8-34\&quot; target=\&quot;LLYs0ycAy4ud-bftnCw8-5\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;LLYs0ycAy4ud-bftnCw8-34\&quot; value=\&quot;create_server_listener\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;735\&quot; y=\&quot;150\&quot; width=\&quot;120\&quot; height=\&quot;30\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;aIsPIwyctZogymb4Lqhh-3\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;aIsPIwyctZogymb4Lqhh-1\&quot; target=\&quot;G6Pp0vN6bFu9NTuqtbdY-60\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;aIsPIwyctZogymb4Lqhh-4\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;\&quot; parent=\&quot;1\&quot; source=\&quot;aIsPIwyctZogymb4Lqhh-1\&quot; target=\&quot;L2Mt6WvLMQUCUICwPJAt-19\&quot; edge=\&quot;1\&quot;&gt;&lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;mxCell id=\&quot;aIsPIwyctZogymb4Lqhh-1\&quot; value=\&quot;read_cb\&quot; style=\&quot;whiteSpace=wrap;html=1;rounded=0;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;&lt;mxGeometry x=\&quot;560\&quot; y=\&quot;1140.25\&quot; width=\&quot;120\&quot; height=\&quot;28.75\&quot; as=\&quot;geometry\&quot;/&gt;&lt;/mxCell&gt;&lt;/root&gt;&lt;/mxGraphModel&gt;&lt;/diagram&gt;&lt;/mxfile&gt;&quot;,&quot;toolbar&quot;:&quot;pages zoom layers lightbox&quot;,&quot;page&quot;:0}"></div>
<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="https://app.diagrams.net/#HKangLin%2Fcoturn%2FFlowChart%2Fdocs%2Fdrawio%2FFlowChart.html" target="_blank"><img border="0" src="https://app.diagrams.net/images/drawlogo128.png"/></a>
</body>
</html>