1234 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Do not edit this file with editors other than draw.io -->
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
- <svg xmlns="http://www.w3.org/2000/svg" style="background-color: rgb(255, 255, 255);" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1811px" height="1498px" viewBox="-0.5 -0.5 1811 1498" content="<mxfile host="app.diagrams.net" modified="2024-01-16T04:04:30.869Z" agent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0" etag="T9LQCqzLcqMerxipwPqg" version="22.1.18" type="device"><diagram name="第 1 页" id="770i9bGLY1KPm9eyXDIp">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</diagram></mxfile>"><defs/><g><path d="M 730 110 L 730 153.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 730 158.88 L 726.5 151.88 L 730 153.63 L 733.5 151.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 820 100 L 840 100 L 830 100 L 850 100" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><rect x="640" y="90" width="180" height="20" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 100px; margin-left: 641px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">create_dtls_listener_server</div></div></div></foreignObject><text x="730" y="104" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">create_dtls_listener_server</text></switch></g><path d="M 730 180 L 730 200 L 730 196 L 730 209.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 730 214.88 L 726.5 207.88 L 730 209.63 L 733.5 207.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="670" y="160" width="120" height="20" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 170px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">create_server_socket</div></div></div></foreignObject><text x="730" y="174" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">create_server_socket</text></switch></g><path d="M 730 240 L 730 260 L 730 253 L 730 266.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 730 271.88 L 726.5 264.88 L 730 266.63 L 733.5 264.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="640" y="216" width="180" height="24" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 228px; margin-left: 641px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">udp_server_input_handler</div></div></div></foreignObject><text x="730" y="232" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">udp_server_input_handler</text></switch></g><path d="M 730 293 L 730 299 L 890 299 L 890 359.3 L 1013.63 359.25" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1018.88 359.25 L 1011.88 362.75 L 1013.63 359.25 L 1011.88 355.75 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="670" y="273" width="120" height="20" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 283px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">udp_recvfrom</div></div></div></foreignObject><text x="730" y="287" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">udp_recvfrom</text></switch></g><path d="M 740 471 L 740 515.5 L 1060 515.5 L 1060 553.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1060 558.88 L 1056.5 551.88 L 1060 553.63 L 1063.5 551.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="680" y="450" width="120" height="21" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 461px; margin-left: 681px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">handle_udp_packet</div></div></div></foreignObject><text x="740" y="464" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">handle_udp_packet</text></switch></g><path d="M 1060 399.25 L 1060 424.7 L 1243 424.7 L 1243 443.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1243 448.88 L 1239.5 441.88 L 1243 443.63 L 1246.5 441.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 414px; margin-left: 1150px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">YES</div></div></div></foreignObject><text x="1150" y="418" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">YES</text></switch></g><path d="M 1060 319.25 L 1100 359.25 L 1060 399.25 L 1020 359.25 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 359px; margin-left: 1021px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font color="#2d7600">connect_cb</font></div></div></div></foreignObject><text x="1060" y="363" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">connect_cb</text></switch></g><rect x="1155" y="450" width="176" height="20" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 174px; height: 1px; padding-top: 460px; margin-left: 1156px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">send_socket_to_general_relay</div></div></div></foreignObject><text x="1243" y="464" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">send_socket_to_general_relay</text></switch></g><path d="M 1060 399.25 L 1060 424.7 L 740 424.7 L 740 443.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 740 448.88 L 736.5 441.88 L 740 443.63 L 743.5 441.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 414px; margin-left: 900px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">NO</div></div></div></foreignObject><text x="900" y="418" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">NO</text></switch></g><path d="M 1060 600 L 1060 620 L 1060 615 L 1060 628.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 1060 633.88 L 1056.5 626.88 L 1060 628.63 L 1063.5 626.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="930" y="560" width="260" height="40" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 258px; height: 1px; padding-top: 580px; margin-left: 931px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">open_client_connection_session</div></div></div></foreignObject><text x="1060" y="584" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">open_client_connection_session</text></switch></g><path d="M 1060 660 L 1060 680 L 1060 663 L 1060 676.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1060 681.88 L 1056.5 674.88 L 1060 676.63 L 1063.5 674.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1000" y="635" width="120" height="25" fill="#e1d5e7" stroke="#9673a6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 648px; margin-left: 1001px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">client_input_handler</div></div></div></foreignObject><text x="1060" y="651" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">client_input_handler</text></switch></g><path d="M 1060 714 L 1060 734.5 L 940 734.5 L 940 748.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 940 753.88 L 936.5 746.88 L 940 748.63 L 943.5 746.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1060 714 L 1060 734.5 L 1170 734.5 L 1170 748.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1170 753.88 L 1166.5 746.88 L 1170 748.63 L 1173.5 746.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="990" y="683" width="140" height="31" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 699px; margin-left: 991px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">read_client_connection</div></div></div></foreignObject><text x="1060" y="702" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">read_client_connection</text></switch></g><path d="M 940 780 L 940 800 L 940 795 L 940 808.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 940 813.88 L 936.5 806.88 L 940 808.63 L 943.5 806.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="870" y="755" width="140" height="25" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 768px; margin-left: 871px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">handle_turn_command</div></div></div></foreignObject><text x="940" y="771" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">handle_turn_command</text></switch></g><path d="M 1517 442.63 L 1517 371" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1517 447.88 L 1513.5 440.88 L 1517 442.63 L 1520.5 440.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1517 472 L 1517 494.5 L 1517.36 510.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1517.48 515.88 L 1513.82 508.96 L 1517.36 510.63 L 1520.82 508.81 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1440" y="449" width="154" height="23" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 152px; height: 1px; padding-top: 461px; margin-left: 1441px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">relay_receive_message</div></div></div></foreignObject><text x="1517" y="464" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">relay_receive_message</text></switch></g><path d="M 1331.48 465 L 1331.52 455 L 1420.52 455.41 L 1420.57 444.91 L 1439.5 460.5 L 1420.43 475.91 L 1420.48 465.41 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1583.37 359.3 L 1697.5 359.3 L 1697.5 228.25" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1578.12 359.3 L 1585.12 355.8 L 1583.37 359.3 L 1585.12 362.8 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1517 371 L 1517 390 L 1730.5 390 L 1730.5 424.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1730.5 429.88 L 1727 422.88 L 1730.5 424.63 L 1734 422.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1457" y="347.5" width="120" height="23.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 359px; margin-left: 1458px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">setup_relay_server</div></div></div></foreignObject><text x="1517" y="363" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">setup_relay_server</text></switch></g><rect x="1624" y="190" width="147" height="38.25" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 145px; height: 1px; padding-top: 209px; margin-left: 1625px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">run_general_relay_thread</div></div></div></foreignObject><text x="1698" y="213" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">run_general_relay_thread</text></switch></g><path d="M 1517.5 537.5 L 1517.5 580 L 1196.37 580" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1191.12 580 L 1198.12 576.5 L 1196.37 580 L 1198.12 583.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1449" y="517" width="137" height="20.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 135px; height: 1px; padding-top: 527px; margin-left: 1450px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">handle_relay_message</div></div></div></foreignObject><text x="1518" y="531" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">handle_relay_message</text></switch></g><rect x="1090" y="755" width="160" height="26.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 768px; margin-left: 1091px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">handle_old_stun_command</div></div></div></foreignObject><text x="1170" y="772" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">handle_old_stun_command</text></switch></g><path d="M 940 837.5 L 940 873.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 940 878.88 L 936.5 871.88 L 940 873.63 L 943.5 871.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="880" y="815" width="120" height="22.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 826px; margin-left: 881px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">handle_turn_allocate</div></div></div></foreignObject><text x="940" y="830" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">handle_turn_allocate</text></switch></g><path d="M 940 911.25 L 940 1009.38" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 940 1014.63 L 936.5 1007.63 L 940 1009.38 L 943.5 1007.63 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 949px; margin-left: 942px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">register_callback_on_ioa_socket</div></div></div></foreignObject><text x="942" y="952" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">register_callback_on_ioa_socket</text></switch></g><path d="M 1015 895.7 L 1173 895.7 L 1324.63 896.47" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 1329.88 896.49 L 1322.86 899.96 L 1324.63 896.47 L 1322.9 892.96 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 882px; margin-left: 1172px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">create_relay_ioa_sockets</div></div></div></foreignObject><text x="1172" y="886" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">create_relay_ioa_sockets</text></switch></g><path d="M 1015 911.25 L 1060 911.3 L 1060 961.3 L 1098 961.26" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 865 895.63 L 710 895.6 L 710 936.25" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><rect x="865" y="880" width="150" height="31.25" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 896px; margin-left: 866px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">create_relay_connection</div></div></div></foreignObject><text x="940" y="899" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">create_relay_connection</text></switch></g><path d="M 950 1236.12 L 950 1274.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 950 1280.13 L 946.5 1273.13 L 950 1274.88 L 953.5 1273.13 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="890" y="1219.24" width="120" height="16.88" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1228px; margin-left: 891px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">peer_input_handler</div></div></div></foreignObject><text x="950" y="1231" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">peer_input_handler</text></switch></g><path d="M 950 1311.25 L 950 1341.3 L 1170 1341.3 L 1170 1364.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1170 1370.13 L 1166.5 1363.13 L 1170 1364.88 L 1173.5 1363.13 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="880" y="1281.25" width="140" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 1296px; margin-left: 881px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">write_client_connection</div></div></div></foreignObject><text x="950" y="1300" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">write_client_connection</text></switch></g><path d="M 1170 1406.25 L 1170 1432.1 L 1000 1432.1 L 1000 1451.38" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1000 1456.63 L 996.5 1449.63 L 1000 1451.38 L 1003.5 1449.63 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1170 1406.25 L 1170 1451.38" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1170 1456.63 L 1166.5 1449.63 L 1170 1451.38 L 1173.5 1449.63 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1170 1406.25 L 1170 1431.3 L 1306 1431.3 L 1306 1451.38" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1306 1456.63 L 1302.5 1449.63 L 1306 1451.38 L 1309.5 1449.63 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1075" y="1371.25" width="190" height="35" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 188px; height: 1px; padding-top: 1389px; margin-left: 1076px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">send_data_from_ioa_socket_nbh</div></div></div></foreignObject><text x="1170" y="1392" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">send_data_from_ioa_socket_nbh</text></switch></g><rect x="940" y="1457.75" width="120" height="27.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1472px; margin-left: 941px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">udp_send</div></div></div></foreignObject><text x="1000" y="1475" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">udp_send</text></switch></g><path d="M 1406 971.25 L 1406 1004.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 1406 1010.13 L 1402.5 1003.13 L 1406 1004.88 L 1409.5 1003.13 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 988px; margin-left: 1407px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">register_callback_on_ioa_socket</div></div></div></foreignObject><text x="1407" y="991" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">register_callback_on_ioa_socket</text></switch></g><rect x="1321" y="951.25" width="170" height="20" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 961px; margin-left: 1322px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">tcp_peer_accept_connection</div></div></div></foreignObject><text x="1406" y="965" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">tcp_peer_accept_connection</text></switch></g><path d="M 1406 908.63 L 1406 944.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1406 950.13 L 1402.5 943.13 L 1406 944.88 L 1409.5 943.13 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1331" y="884.25" width="150" height="24.38" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 896px; margin-left: 1332px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">tcp_listener_input_handler</div></div></div></foreignObject><text x="1406" y="900" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">tcp_listener_input_handler</text></switch></g><path d="M 1238 961.26 L 1321 961.25" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><rect x="1098" y="936.25" width="140" height="50.01" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 961px; margin-left: 1099px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div>create_relay_ioa_sockets</div><div>_ioa_socket::acb</div></div></div></div></foreignObject><text x="1168" y="965" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">create_relay_ioa_socket...</text></switch></g><path d="M 1406 1239.24 L 1406 1305.3 L 1170 1305.3 L 1170 1364.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1170 1370.13 L 1166.5 1363.13 L 1170 1364.88 L 1173.5 1363.13 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1338" y="1219.24" width="136" height="20" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 134px; height: 1px; padding-top: 1229px; margin-left: 1339px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">tcp_peer_input_handler</div></div></div></foreignObject><text x="1406" y="1233" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">tcp_peer_input_handler</text></switch></g><rect x="1110" y="1457.75" width="120" height="31" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1473px; margin-left: 1111px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">bufferevent_write</div></div></div></foreignObject><text x="1170" y="1477" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">bufferevent_write</text></switch></g><rect x="1246" y="1457.75" width="120" height="31" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1473px; margin-left: 1247px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ssl_send</div></div></div></foreignObject><text x="1306" y="1477" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">ssl_send</text></switch></g><path d="M 940 1040.75 L 940 1063.6 L 1150 1063.6 L 1150 1079.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1150 1085.13 L 1146.5 1078.13 L 1150 1079.88 L 1153.5 1078.13 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="880" y="1015.75" width="120" height="25" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1028px; margin-left: 881px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">socket_input_handler</div></div></div></foreignObject><text x="940" y="1032" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">socket_input_handler</text></switch></g><path d="M 710 996.25 L 710 1154.6 L 1090 1154.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><rect x="620" y="936.25" width="180" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 966px; margin-left: 621px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div>register_callback_on_ioa_socket</div><div>_ioa_socket::read_cb=peer_input_handler</div></div></div></div></foreignObject><text x="710" y="970" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">register_callback_on_ioa_socke...</text></switch></g><path d="M 1150 1116.25 L 1150 1136.3 L 1150 1120.3 L 1150 1133.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1150 1139.13 L 1146.5 1132.13 L 1150 1133.88 L 1153.5 1132.13 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1090" y="1086.25" width="120" height="30" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1101px; margin-left: 1091px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">socket_input_worker</div></div></div></foreignObject><text x="1150" y="1105" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">socket_input_worker</text></switch></g><rect x="900" y="1111.25" width="120" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1126px; margin-left: 901px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">udp_recvfrom</div></div></div></foreignObject><text x="960" y="1130" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">udp_recvfrom</text></switch></g><path d="M 1491 961.25 L 1650 961.3 L 1650 1071.25" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1650 1131.25 L 1650 1154.6 L 1210 1154.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><rect x="1560" y="1071.25" width="180" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 1101px; margin-left: 1561px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div>register_callback_on_ioa_socket</div><div>read_cb=tcp_peer_input_handler</div></div></div></div></foreignObject><text x="1650" y="1105" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">register_callback_on_ioa_socke...</text></switch></g><path d="M 1406 1045.25 L 1406 1061.3 L 1150 1061.3 L 1150 1079.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1150 1085.13 L 1146.5 1078.13 L 1150 1079.88 L 1153.5 1078.13 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1315.5" y="1011.25" width="181" height="34" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 179px; height: 1px; padding-top: 1028px; margin-left: 1317px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">socket_input_handler_bev</div></div></div></foreignObject><text x="1406" y="1032" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">socket_input_handler_bev</text></switch></g><path d="M 1325 30 L 1325 81.13" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1325 86.38 L 1321.5 79.38 L 1325 81.13 L 1328.5 79.38 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 55px; margin-left: 1327px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><font color="#2d7600">connect_cb=send_socket_to_general_relay</font></div></div></div></foreignObject><text x="1327" y="58" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">connect_cb=send_socket_to_general_relay</text></switch></g><rect x="1240" y="0" width="170" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 15px; margin-left: 1241px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">setup_tcp_listener_servers</div></div></div></foreignObject><text x="1325" y="19" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">setup_tcp_listener_servers</text></switch></g><path d="M 1252.5 100 L 1216 100 L 1216 105" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1325 112.5 L 1325 143.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1325 148.88 L 1321.5 141.88 L 1325 143.63 L 1328.5 141.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1252.5" y="87.5" width="145" height="25" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 143px; height: 1px; padding-top: 100px; margin-left: 1254px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">create_tls_listener_server</div></div></div></foreignObject><text x="1325" y="104" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">create_tls_listener_serv...</text></switch></g><path d="M 1325 248.5 L 1325 310 L 1250 310 L 1250 359.3 L 1106.37 359.25" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1101.12 359.25 L 1108.12 355.75 L 1106.37 359.25 L 1108.12 362.75 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1265" y="216" width="120" height="32.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 232px; margin-left: 1266px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">server_input_handler</div></div></div></foreignObject><text x="1325" y="236" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">server_input_handler</text></switch></g><path d="M 1131 120 L 1131 219.7 L 1060 219.7 L 1060 319.25" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><rect x="1046" y="90" width="170" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 105px; margin-left: 1047px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">tls_listener_relay_server_type</div></div></div></foreignObject><text x="1131" y="109" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">tls_listener_relay_server_ty...</text></switch></g><path d="M 935 115 L 935 217.2 L 1060 217.2 L 1060 319.25" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><rect x="850" y="85" width="170" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 100px; margin-left: 851px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">dtls_listener_relay_server_type</div></div></div></foreignObject><text x="935" y="104" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">dtls_listener_relay_server_t...</text></switch></g><path d="M 1580 30 L 1580 188.8 L 1517 188.8 L 1517 341.13" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1517 346.38 L 1513.5 339.38 L 1517 341.13 L 1520.5 339.38 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1580 30 L 1580 110 L 1697.5 110 L 1697.5 183.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1697.5 188.88 L 1694 181.88 L 1697.5 183.63 L 1701 181.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1500" y="0" width="160" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 15px; margin-left: 1501px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">setup_general_relay_servers</div></div></div></foreignObject><text x="1580" y="19" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">setup_general_relay_servers</text></switch></g><rect x="1651" y="431" width="159" height="29" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 157px; height: 1px; padding-top: 446px; margin-left: 1652px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">relay_receive_auth_message</div></div></div></foreignObject><text x="1731" y="449" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">relay_receive_auth_message</text></switch></g><path d="M 137.5 30 L 137.5 100 L 633.63 100" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 638.88 100 L 631.88 103.5 L 633.63 100 L 631.88 96.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="0" width="275" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 273px; height: 1px; padding-top: 15px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">setup_socket_per_endpoint_udp_listener_servers</div></div></div></foreignObject><text x="138" y="19" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">setup_socket_per_endpoint_udp_listener_servers</text></switch></g><path d="M 435 30 L 435 100 L 633.63 100" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 638.88 100 L 631.88 103.5 L 633.63 100 L 631.88 96.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="305" y="0" width="260" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 258px; height: 1px; padding-top: 15px; margin-left: 306px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">setup_socket_per_thread_udp_listener_servers</div></div></div></foreignObject><text x="435" y="19" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">setup_socket_per_thread_udp_listener_servers</text></switch></g><path d="M 730.5 30 L 730.5 60 L 730.11 83.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 730.02 88.88 L 726.64 81.82 L 730.11 83.63 L 733.63 81.94 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 52px; margin-left: 732px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><font color="#2d7600">connect_cb=send_socket_to_general_relay</font></div></div></div></foreignObject><text x="732" y="55" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">connect_cb=send_socket_to_general_relay</text></switch></g><rect x="596" y="0" width="269" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 267px; height: 1px; padding-top: 15px; margin-left: 597px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">setup_socket_per_session_udp_listener_servers</div></div></div></foreignObject><text x="731" y="19" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">setup_socket_per_session_udp_listener_servers</text></switch></g><path d="M 1325 180 L 1325 200 L 1325 196 L 1325 209.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 1325 214.88 L 1321.5 207.88 L 1325 209.63 L 1328.5 207.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1265" y="150" width="120" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 165px; margin-left: 1266px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">create_server_listener</div></div></div></foreignObject><text x="1325" y="169" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">create_server_listen...</text></switch></g><path d="M 1150 1169 L 1150 1194.2 L 950 1194.2 L 950 1212.87" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 950 1218.12 L 946.5 1211.12 L 950 1212.87 L 953.5 1211.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1150 1169 L 1150 1194.2 L 1406 1194.2 L 1406 1212.87" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1406 1218.12 L 1402.5 1211.12 L 1406 1212.87 L 1409.5 1211.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1090" y="1140.25" width="120" height="28.75" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1155px; margin-left: 1091px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">read_cb</div></div></div></foreignObject><text x="1150" y="1158" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">read_cb</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
|