tek/architecture.svg
2024-12-30 21:56:52 +01:00

4 lines
No EOL
25 KiB
XML

<?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(18, 18, 18);" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="812px" height="797px" viewBox="-0.5 -0.5 812 797" class="ge-export-svg-dark" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2024-11-25T18:10:18.008Z&quot; agent=&quot;Mozilla/5.0 (X11; Linux x86_64; rv:131.0) Gecko/20100101 Firefox/131.0&quot; etag=&quot;rFRgIoPrx0KFu42zG9NG&quot; version=&quot;22.1.16&quot;&gt;&lt;diagram name=&quot;Page-1&quot; id=&quot;4flIxHZZyySUOVDAtFLp&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;"><defs><style type="text/css">svg.ge-export-svg-dark &gt; * { filter: invert(100%) hue-rotate(180deg); }&#xa;svg.ge-export-svg-dark image { filter: invert(100%) hue-rotate(180deg) }</style></defs><g><rect x="45" y="615" width="510" height="180" rx="27" ry="27" fill="rgb(255, 255, 255)" stroke="#ff8800" stroke-width="1.5" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(1.4999999999999998)"><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 flex-end; justify-content: unsafe center; width: 338px; height: 1px; padding-top: 527px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #FF8800; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 136, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ratatui</div></div></div></foreignObject><text x="200" y="527" fill="#FF8800" font-family="Helvetica" font-size="12px" text-anchor="middle">ratatui</text></switch></g><path d="M 405 90 L 405 140.45" fill="none" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 405 148.32 L 399.75 137.82 L 405 140.45 L 410.25 137.82 Z" fill="#ff8800" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><rect x="315" y="0" width="180" height="90" fill="rgb(255, 255, 255)" stroke="#ff8800" stroke-width="1.5" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(1.4999999999999998)"><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: 30px; margin-left: 211px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ff8800; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 136, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><b>main()</b></div></div></div></foreignObject><text x="270" y="34" fill="#ff8800" font-family="Helvetica" font-size="12px" text-anchor="middle">main()</text></switch></g><rect x="0" y="150" width="810" height="450" fill="rgb(255, 255, 255)" stroke="#ff8800" stroke-width="1.5" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(1.4999999999999998)"><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 flex-start; justify-content: unsafe center; width: 538px; height: 1px; padding-top: 107px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ff8800; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 136, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><b>Engine</b></div></div></div></foreignObject><text x="270" y="119" fill="#ff8800" font-family="Helvetica" font-size="12px" text-anchor="middle">Engine</text></switch></g><rect x="15" y="195" width="780" height="90" fill="rgb(255, 255, 255)" stroke="#ff8800" stroke-width="1.5" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(1.4999999999999998)"><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: 518px; height: 1px; padding-top: 160px; margin-left: 11px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ff8800; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 136, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><b>AppTui</b><br />(model)</div></div></div></foreignObject><text x="270" y="164" fill="#ff8800" font-family="Helvetica" font-size="12px" text-anchor="middle">AppTui...</text></switch></g><rect x="15" y="300" width="285" height="285" fill="rgb(255, 255, 255)" stroke="#ff8800" stroke-width="1.5" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(1.4999999999999998)"><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 flex-start; justify-content: unsafe center; width: 188px; height: 1px; padding-top: 207px; margin-left: 11px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ff8800; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 136, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><b>render thread</b><br />(view)</div></div></div></foreignObject><text x="105" y="219" fill="#ff8800" font-family="Helvetica" font-size="12px" text-anchor="middle">render thread...</text></switch></g><rect x="322.5" y="300" width="217.5" height="285" fill="rgb(255, 255, 255)" stroke="#ff8800" stroke-width="1.5" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(1.4999999999999998)"><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 flex-start; justify-content: unsafe center; width: 143px; height: 1px; padding-top: 207px; margin-left: 216px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ff8800; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 136, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><b>input thread</b><br />(controller)</div></div></div></foreignObject><text x="288" y="219" fill="#ff8800" font-family="Helvetica" font-size="12px" text-anchor="middle">input thread...</text></switch></g><rect x="555" y="300" width="240" height="285" fill="rgb(255, 255, 255)" stroke="#ff8800" stroke-width="1.5" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(1.4999999999999998)"><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 flex-start; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 207px; margin-left: 371px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ff8800; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 136, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><b>audio thread</b><br />(view/controller)</div></div></div></foreignObject><text x="450" y="219" fill="#ff8800" font-family="Helvetica" font-size="12px" text-anchor="middle">audio thread...</text></switch></g><rect x="30" y="360" width="255" height="210" fill="rgb(255, 255, 255)" stroke="#ff8800" stroke-width="1.5" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(1.4999999999999998)"><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 flex-start; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 247px; margin-left: 21px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ff8800; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 136, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">trait<br /><b>Widget</b></div></div></div></foreignObject><text x="105" y="259" fill="#ff8800" font-family="Helvetica" font-size="12px" text-anchor="middle">trait...</text></switch></g><rect x="45" y="427.5" width="135" height="127.5" fill="rgb(255, 255, 255)" stroke="#ff8800" stroke-width="1.5" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(1.4999999999999998)"><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 flex-start; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 292px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ff8800; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 136, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;">Widget</div></div></div></foreignObject><text x="75" y="304" fill="#ff8800" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Widget</text></switch></g><rect x="195" y="427.5" width="75" height="127.5" fill="rgb(255, 255, 255)" stroke="#ff8800" stroke-width="1.5" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(1.4999999999999998)"><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 flex-start; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 292px; margin-left: 131px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ff8800; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 136, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;">Widget</div></div></div></foreignObject><text x="155" y="304" fill="#ff8800" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Widget</text></switch></g><rect x="60" y="472.5" width="105" height="67.5" fill="rgb(255, 255, 255)" stroke="#ff8800" stroke-width="1.5" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(1.4999999999999998)"><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 flex-start; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 322px; margin-left: 41px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ff8800; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 136, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;">Widget</div></div></div></foreignObject><text x="75" y="334" fill="#ff8800" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Widget</text></switch></g><rect x="67.5" y="645" width="180" height="90" rx="13.5" ry="13.5" fill="rgb(255, 255, 255)" stroke="#ff8800" stroke-width="1.5" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(1.4999999999999998)"><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: 460px; margin-left: 46px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ff8800; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 136, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Buffer<br />(display)</div></div></div></foreignObject><text x="105" y="464" fill="#ff8800" font-family="Helvetica" font-size="12px" text-anchor="middle">Buffer...</text></switch></g><path d="M 176.12 568.11 L 175.26 636.98" fill="none" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 175.16 644.85 L 170.04 634.29 L 175.26 636.98 L 180.54 634.42 Z" fill="#ff8800" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 208.5 555 L 199.32 635.96" fill="none" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 198.43 643.78 L 194.4 632.76 L 199.32 635.96 L 204.83 633.94 Z" fill="#ff8800" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 134.64 553.34 L 147.87 634.94" fill="none" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 149.13 642.71 L 142.27 633.19 L 147.87 634.94 L 152.63 631.51 Z" fill="#ff8800" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 100.53 542.56 L 123.04 637.21" fill="none" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 124.86 644.87 L 117.32 635.87 L 123.04 637.21 L 127.54 633.44 Z" fill="#ff8800" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><rect x="346.5" y="645" width="180" height="90" rx="13.5" ry="13.5" fill="rgb(255, 255, 255)" stroke="#ff8800" stroke-width="1.5" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(1.4999999999999998)"><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: 460px; margin-left: 232px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ff8800; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 136, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">keyboard events</div></div></div></foreignObject><text x="291" y="464" fill="#ff8800" font-family="Helvetica" font-size="12px" text-anchor="middle">keyboard events</text></switch></g><rect x="343.5" y="475.5" width="180" height="90" fill="rgb(255, 255, 255)" stroke="#ff8800" stroke-width="1.5" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(1.4999999999999998)"><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: 347px; margin-left: 230px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ff8800; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 136, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">trait<br /><b>InputToCommand</b></div></div></div></foreignObject><text x="289" y="351" fill="#ff8800" font-family="Helvetica" font-size="12px" text-anchor="middle">trait...</text></switch></g><rect x="342" y="367.5" width="180" height="90" fill="rgb(255, 255, 255)" stroke="#ff8800" stroke-width="1.5" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(1.4999999999999998)"><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: 275px; margin-left: 229px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ff8800; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 136, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">trait<br /><b>Command</b></div></div></div></foreignObject><text x="288" y="279" fill="#ff8800" font-family="Helvetica" font-size="12px" text-anchor="middle">trait...</text></switch></g><path d="M 502.5 651 L 502.45 555.58" fill="none" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 502.44 547.71 L 507.7 558.2 L 502.45 555.58 L 497.2 558.21 Z" fill="#ff8800" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 500.94 495.03 L 501.1 420.58" fill="none" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 501.12 412.71 L 506.34 423.22 L 501.1 420.58 L 495.84 423.2 Z" fill="#ff8800" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 503.28 390 L 503.28 266.08" fill="none" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 503.28 258.21 L 508.53 268.71 L 503.28 266.08 L 498.03 268.71 Z" fill="#ff8800" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 61.8 255.03 L 61.45 399.95" fill="none" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 61.43 407.82 L 56.2 397.31 L 61.45 399.95 L 66.7 397.34 Z" fill="#ff8800" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 630.12 539.97 L 636.15 635.47" fill="none" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 636.64 643.33 L 630.74 633.18 L 636.15 635.47 L 641.22 632.52 Z" fill="#ff8800" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 708.75 639.03 L 708.83 549.52" fill="none" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 708.84 541.65 L 714.08 552.15 L 708.83 549.52 L 703.58 552.14 Z" fill="#ff8800" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><rect x="585" y="645" width="180" height="90" rx="13.5" ry="13.5" fill="rgb(255, 255, 255)" stroke="#ff8800" stroke-width="1.5" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(1.4999999999999998)"><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: 460px; margin-left: 391px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ff8800; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 136, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">JACK</div></div></div></foreignObject><text x="450" y="464" fill="#ff8800" font-family="Helvetica" font-size="12px" text-anchor="middle">JACK</text></switch></g><rect x="570" y="367.5" width="210" height="172.5" fill="rgb(255, 255, 255)" stroke="#ff8800" stroke-width="1.5" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(1.4999999999999998)"><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: 303px; margin-left: 381px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #FF8800; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 136, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">trait<br /><b>Audio<br /></b></div></div></div></foreignObject><text x="450" y="306" fill="#FF8800" font-family="Helvetica" font-size="12px" text-anchor="middle">trait...</text></switch></g><path d="M 600 262.47 L 600.03 402.89" fill="none" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 600.03 410.76 L 594.78 400.26 L 600.03 402.89 L 605.28 400.26 Z" fill="#ff8800" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 754.59 410.94 L 754.51 264.55" fill="none" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 754.5 256.68 L 759.76 267.17 L 754.51 264.55 L 749.26 267.18 Z" fill="#ff8800" stroke="#ff8800" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/></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>