1
0
Fork 0
trinitrix/docs/architecture.svg

4 lines
51 KiB
XML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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="803px" height="1063px" viewBox="-0.5 -0.5 803 1063" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2023-08-04T10:36:09.347Z&quot; agent=&quot;Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0&quot; etag=&quot;ZuaeGUmW4DjbyWuaWOZy&quot; version=&quot;21.6.6&quot; type=&quot;device&quot;&gt;&lt;diagram name=&quot;Page-1&quot; id=&quot;hWGGHW_Bsmf1wcgqsJl5&quot;&gt;7V1bc6M4Fv41qZp5SIo7+NFxkk5mk9p0kpnu3ZctGWSbHQxejDtx//qVQLJBkrmYm92hq7vLCCHjc75z0dHR0YU6WX58CcFq8RQ40LtQJOfjQr25UBTDUtD/uGGbNKiGkTTMQ9dJmuR9w6v7E5JGibRuXAeuMx2jIPAid5VttAPfh3aUaQNhGLxnu80CL/utKzCHXMOrDTy+9ZvrRIuk1dKlffs9dOcL+s2yRO4sAe1MGtYL4ATvqSb19kKdhEEQJZ+WHxPoYdpRuiTP3R24u3uxEPpRmQfW83///Lr8OtZDbf68tMd/3Sj2JRnlB/A25Ac/AddHLc9hYMP1mrx6tKX0WL+7Sw/46Op6ES091CijjzPX815Jp3Xg4a+8DoON70D85RLpMQm8IIyHUacSVKGB2tdRGPwNU3ckaEmWtbtDia6hFv4X09eHYQQ/Uk2EAl9gsIRRuEVdyF2NMIOg0SKX73vWmiZpW6TYalKuAgKn+W7kPcXRB0J0MQNg+Icv/bH88c+Hr+4l+N+T831yf6lzDBjbNqJchEgv/QY/wHLlwd/z2DAL/IjSHlPaXrie8wi2wQa//DoC9t/06noRhO5P1B9QxqHbYUSkTpUyPV7xk2TMEK5Rn2dKeZlpegIfmY6PYB3Rtwk8D6zW7jR+P/zgEoRz178OoihYkk7vCzeCrytg4z7vSI/w6EohxAHQmtki7Bi2BaczIVJy0V8aPqMsfDQBfmRNgB9Zbws/xiH8oEYZQ+gJRKH7wSMI/eKIo6EfJJBKEZw0Ac+d++jSgzP8GCaZi7TkmDQvXcfBI1+vERddf/4Yd4ullrS8EGrgpgA9PvNiZbhAD0I0wvUqcDHo0bvp1+gvotdEutIvdPSuE3Qt76/RX9w9jCaBj14f6Ss8LkSYe4cYd0jzRCAC051EFMCLB0uupBaDhZq6kuBQ28KGmYMNZcBGn9gw+saGlYMNFWPjFTEPeAM2usfGqG9sUN9bCA4Ng+MNenAeguUAj+7hISsd4mN6+7D8+eXv2X+0e/Pr2/pu8+fj3aWmc2yHDpo1kUtEwkUwD5D2uN23MtOBfZ/HIFgRiv0XRtGWOKNgEwVZeiIyhtvv+HnEL3L5r/S9G+qEJlfbC+HMY2bZ0BZ6j1NL13Spsve4DjahDXM4rBJyIVd7DqMcuspkREzMXCSE0AOR+yM7RRWxOX50HIZgm+pARGI/8jNu2Du5qqZkvFzVZCaWbH9Lz+uPPiRvsAfc7qccr6NUfuJ0+wPGr/UahRAsOYhmAVhtymEahmQBEWg0VbnRTTINS8Ms/tPiVEQxGKqLzIau82rBaEstqFofaqF/8R61IrWcmGlM7EI3GUYm+oU8xfCymsSJ2ctL3GQThonM7fwDAQAewRR6WaZRs2+jp2GYZ/jjgELK6Gbt+Y2Qnbno5CRsFzsk33KRDs+JJO9SupIly8gw45KozGN5vBU+EMxma1iXmbmgTTNzAdBXGWCJVaE/Xa9i2iLORm7gfxq1ykqZJpqpSaIQj9xaiNDo191KO1sp36ucu+Xo0HI0EYstZYoXAxrXx7rA3cp1IZpT3PXYzOvXf0D89Q/+ahP7NVvfvsC6yfDwdGQaok9z/OltgSTTaVQyZzNoiM2oY46mklQyPt+QTGZFUujpKAKRbM3T4ZUnWTWJpassf1Ix/A6Yk470a9XdoKO5pUg8t4yRSIG2xi5ZPWMFCmWkQk0Rs0eGqQKxAs1DbVqBiskl8Qq0o/lqPTbzYaubELyjlj8fGlWOjbOkvHDJSnbWJ1qA6lQVyr1M+s5XtmgOQ6FsKaclW3yiwPgduNgtIWGXX0O+FOvU5KvnWOu5yZdSVr6kpuXrqFirIWW9JTqLPBRrZfsb+d1HdXoz71I7jivkg04522fQ8KhJaiM4bTtoqEtZfXapMYqq5aAh/Z0pu3EPfBza+8UMh6admuEw+zUcV9LIyCzTXUlS0VJdfPUMQxeRAIeFTyOgZPAmpaN40lEmZQc9uk6gdKDGZatntCWcT7kqo5F6lmgzzwttqqJk0aZ3gbZenIYU2gxk17K6TTbPEm3WmaHNYHSb1QHadgn8faHNMlUGbep56jZRZPGU4aaxs60uZkRKLzP+6mkU8YLCGG+xQTdsD6zXrk2b71xvj2OHdiI5f6iF3K++DNF1koWhlJsv8V6YWjBQIizcQIch2vTUTDmTdJ1PgTN91BDOuIH6x1kvq2+94Qx+uNH3xEpLKrlOZiSGTq/3RhtfbFMXrMluZ3LRObrZKMfR6Na1K1OrCfADX8XkU+pGF7Ze+VSyceI6mE2YPxql7EC962Ct3xSy3cXppZCVXkU65XkKDfHtkha7CPlp/BaySbBcAt/hd42fThowlYT6acAIx4ZKRqupiWTmiUbyfsU//0yW26gXhbwmRU95UXKHHlRN1dDOtoDKqoGJmKkFa8A6s45VtT81qof6a+wWeq1ZVbXdvq0eF+P7jfbteTlfvGwevowFVS44Kaidxj4W4ZlZdhQonXLAPKiE2HwAXZSu3ta6o5DWpzDbq6RgzAr6ZR+TVTJ7EPc+jNijEaqClrWSkDtaLzrIZHSEWpDkwvjTTP+sjuCf1hmNx9beOOCNF76GTiOzzedOCHlF+dCx074TjCqGN7U0JllpybiUrqT98kWV1YoGZeawKJQQmWRpu4bM1FKndNda2sl2cPYM/IA2Yl7IYYTswE+xtOpm/GJ3XGQfs8j7PAaPLkY35l10RbqdokyRThdQrok6AmLKqcWUS4WU9nGnFLGylE1NG8yU8sJKyLAqTx0E3sN1Ks+ERnkzqQDS1XGZAD1ou5yIBo+hAozQtrrpirJ4tlLZdmusC8EWcDtguyvn71ri72l3OsPvFKSbzhz3B911tg/GJLfQV6XuCl2LTkI0pSMvWfTnaJCcEI2kWmYWUfVw2miERuz19bIkcMDrk/J1ZjrZM+P14RSVoihvL2pQFiQ8tTJRqmcY+dDq4wY04emloxXn6O717rP0lAxGF5XTsnmll5POiqsvrYvgqKQIdjbxEueqcSL4Frq+iwsmouZL9G8c2lgu7GgTQtL0Q7ni8VGxJFo6rIVLuyaYUDR6TQaW8wSWE22eh5X3datMFEdUhkxUGIPdcdIYh/jZw3MYRIEd4CdfYYh+Wm794mpB3hIVixsgMlufWOOJbIiIvONG41QW1TogQpDQmK93UKJ2dMsFD/SLUgUPcmF1LM9KF4xpTTAEm67OgGcli1Q0wzPZOjmm8ZG+pATrwLT9XpOTYxo/E6elUQe27fSjcXJs67mi1lWlxcOSyXcMJiTJAinOZ+7opiRmeNNbIk8kB4LFn55GUFF3q2C1UlZz+9cOAYoR3Pfu3nNHcNltli1t1K8KYZOBsJoPYaa7VVBVoqB/SxDuZcvwCUKx7B5M6iH2DEW2poiRD0WmuzkqyA+Tc/u3BMW+9xOfuzYtvbFTPo2EaZlBmTHKBzHb3ywoia7ruf3bQbEhKNAcc1mRHuEc+g4H8vUCrPBHsvLGnwZl45OgXD9enpEv2NOc4h6Z06bigXanTc3cD+i8JEewJWv1749osDV5lD24KgtMB87AJp44paKg8j4AR6cy4qMWKgfeDIPVO8Twp2cplmCWorAb7po72ok/2ymfgy9YI2TP+JIYrsbXZJp5j4uSZpuuA4dqmSjWYvhTcjZH/HGaPrUrJESQhMBwwmD1RtUBu6uDhLobPJwjCx7XX8DQFYGHh0q+LNU67UmEl9ZObTH4454OwgX9/sgF3gtedPfnseynDJMo+JBdoq8OkINns8AwrgNFdUSxsAtwVJaph/Z+5Ka7VD1ahQy2p23l0YCHqOKDCInjhu6mabj+u8GvMNMqxRL+spwDIBuEkICV1VDFHB+UPSXIOAC7plVFeVQxCwZ1DvDJR1mp4bqAWYncyMGEnYoJEwVmOzVhNAxxPiaM5U0N41S+5OCvbpxMPvfiGxIFONiiBkH06WyRqQy26HxskeiMj25tUYnNCadti1Y0t/Y1UUUp4LBntWdnWUotQ7aTs8GQmXxOx4vwJJjBjh2NoU9nx6wKTvJgx/q2Y8LTejs1ZFaJ6geDIcsTtMGQWbzvfBvvP06OhrzDDByMWnN4+pWNmriAxWDTzsimCTZhtWbTxHUTB5NWZNJyxexTWTTxcdAcgl6jcGPjHI5k/esv9PqC6hqf2arVhNSnM2qibfqDUTtVoyY6salTo1Yh3WcwagIxG4wanwH0GMzxBmHUONml8g0mrTFAfTqTplZIMhtsWt82TZFL2jS2RGJjNk3l88wGo1ZGB+0ErbZVy+NtdavGjtaFzuGTyMbPD/y22t+uXccN0U9xg2Tb9MPz5PfB2jWItIrm7njklRquA+hpQ1zynMxdlwmMYrwMgcnjzJ02RCZ3pBCGJiGuKDGYssZQ9CvP3MQpNSVmbgVVR8B6hX4juog39jGgKXuQFKszeNYesXePeIh0+7o14rgqKgndWs0ss8SspyatSxxx0A2tdatnWpfYYlIX11XL67RFa6VnWlslcmLr4lqyIVREtNYNXTZhV7Qeyd3pELEta5/UAFozIawN24LTWWek1nomdfvaukTxyG5IbXanQcSJGyVozZ8iebDef3UH5CBRCytSdFMBX2MKE5ps4frSFfDZCocyM1Bzp9eI9VeJNOWaUmXe3UrynYjdyo1pHLDLeGqRse34TzvSJku00FxvRqR9KxKXEwciJmiIDbrZPxN0pV8m6L0UumpQNRYeP0Z1X7r8jzhZSCqpbNst/8Oe9awQXXmwPlp+/9rlfHKJmokDgWjTYN3QEh5gAxLJGKJdvcR0TeuRQCBl1mKVkEh0GQZBlOYEIsLiKXDwwSa3/wc=&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><path d="M 2 83 L 2 60 L 772 60 L 772 83" fill="#b0e3e6" stroke="#0e8088" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 2 83 L 2 760 L 772 760 L 772 83" fill="none" stroke="#0e8088" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 2 83 L 772 83" fill="none" stroke="#0e8088" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><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: 72px; margin-left: 387px;"><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: none; font-weight: bold; white-space: nowrap;">Main Process</div></div></div></foreignObject><text x="387" y="75" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Main Process</text></switch></g><path d="M 92 570 L 92 540 L 232 540 L 232 570" fill="#dae8fc" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/><path d="M 92 570 L 92 690 L 232 690 L 232 570" fill="none" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/><path d="M 92 570 L 232 570" fill="none" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/><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: 555px; margin-left: 93px;"><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: none; white-space: normal; overflow-wrap: normal;">Accounts (example)</div></div></div></foreignObject><text x="162" y="559" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Accounts (example)</text></switch></g><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 flex-start; width: 130px; height: 1px; padding-top: 585px; margin-left: 98px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" 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: none; white-space: normal; overflow-wrap: normal;">Account 1 (Matrix)</div></div></div></foreignObject><text x="98" y="589" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Account 1 (Matrix)</text></switch></g><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 flex-start; width: 130px; height: 1px; padding-top: 615px; margin-left: 98px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" 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: none; white-space: normal; overflow-wrap: normal;">Account 2 (Matrix)</div></div></div></foreignObject><text x="98" y="619" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Account 2 (Matrix)</text></switch></g><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 flex-start; width: 130px; height: 1px; padding-top: 645px; margin-left: 98px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" 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: none; white-space: normal; overflow-wrap: normal;">Account 3 (Signal)</div></div></div></foreignObject><text x="98" y="649" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Account 3 (Signal)</text></switch></g><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 flex-start; width: 130px; height: 1px; padding-top: 675px; margin-left: 98px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" 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: none; white-space: normal; overflow-wrap: normal;">Account 4 (Telegram)</div></div></div></foreignObject><text x="98" y="679" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Account 4 (Telegram)</text></switch></g><path d="M 344.52 450 L 344.52 430 L 387 430 L 387 406.37" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 387 401.12 L 390.5 408.12 L 387 406.37 L 383.5 408.12 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><rect x="267" y="450" width="155" height="60" fill="#76608a" stroke="#432d57" pointer-events="none"/><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: 153px; height: 1px; padding-top: 480px; margin-left: 268px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Event Stream</div></div></div></foreignObject><text x="345" y="484" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">Event Stream</text></switch></g><path d="M 492 630 L 492 650 L 442.52 650 L 442.17 636.37" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 442.03 631.12 L 445.71 638.02 L 442.17 636.37 L 438.71 638.21 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><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: 649px; margin-left: 472px;"><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: none; background-color: rgb(255, 255, 255); white-space: nowrap;">Current Account</div></div></div></foreignObject><text x="472" y="653" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Current Account</text></switch></g><rect x="442" y="520" width="100" height="110" fill="#76608a" stroke="#432d57" pointer-events="none"/><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: 98px; height: 1px; padding-top: 575px; margin-left: 443px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Chat  Action Stream</div></div></div></foreignObject><text x="492" y="579" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">Chat  Action Str...</text></switch></g><path d="M 162 480 L 260.63 480" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 265.88 480 L 258.88 483.5 L 260.63 480 L 258.88 476.5 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><rect x="42" y="450" width="120" height="60" fill="#ffe6cc" stroke="#d79b00" stroke-width="4" pointer-events="none"/><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: 480px; margin-left: 43px;"><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: none; white-space: normal; overflow-wrap: normal;">Key Input Sync <br />Thread</div></div></div></foreignObject><text x="102" y="484" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Key Input Sync...</text></switch></g><path d="M 42 300 L 42 260 L 732 260 L 732 300" fill="#ffe6cc" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 42 300 L 42 420 L 732 420 L 732 300" fill="none" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 42 300 L 732 300" fill="none" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><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: 688px; height: 1px; padding-top: 280px; margin-left: 43px;"><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: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">Main Loop<br />Thread</div></div></div></foreignObject><text x="387" y="284" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Main Loop...</text></switch></g><path d="M 287 370 L 320.63 370" fill="none" stroke="#9673a6" stroke-miterlimit="10" pointer-events="none"/><path d="M 325.88 370 L 318.88 373.5 L 320.63 370 L 318.88 366.5 Z" fill="#9673a6" stroke="#9673a6" stroke-miterlimit="10" pointer-events="none"/><rect x="167" y="340" width="120" height="60" fill="#e1d5e7" stroke="#9673a6" pointer-events="none"/><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: 370px; margin-left: 168px;"><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: none; white-space: normal; overflow-wrap: normal;">Draw UI</div></div></div></foreignObject><text x="227" y="374" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Draw UI</text></switch></g><path d="M 447 370 L 480.63 370" fill="none" stroke="#9673a6" stroke-miterlimit="10" pointer-events="none"/><path d="M 485.88 370 L 478.88 373.5 L 480.63 370 L 478.88 366.5 Z" fill="#9673a6" stroke="#9673a6" stroke-miterlimit="10" pointer-events="none"/><rect x="327" y="340" width="120" height="60" fill="#e1d5e7" stroke="#9673a6" pointer-events="none"/><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: 370px; margin-left: 328px;"><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: none; white-space: normal; overflow-wrap: normal;">Await Event</div></div></div></foreignObject><text x="387" y="374" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Await Event</text></switch></g><path d="M 607 370 L 642 370 L 642 320 L 132 320 L 132 370 L 160.63 370" fill="none" stroke="#9673a6" stroke-miterlimit="10" pointer-events="none"/><path d="M 165.88 370 L 158.88 373.5 L 160.63 370 L 158.88 366.5 Z" fill="#9673a6" stroke="#9673a6" stroke-miterlimit="10" pointer-events="none"/><path d="M 547 340 L 547 280.52 L 547 226.37" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 547 221.12 L 550.5 228.12 L 547 226.37 L 543.5 228.12 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><rect x="487" y="340" width="120" height="60" fill="#e1d5e7" stroke="#9673a6" pointer-events="none"/><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: 370px; margin-left: 488px;"><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: none; white-space: normal; overflow-wrap: normal;">Handle Event</div></div></div></foreignObject><text x="547" y="374" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Handle Event</text></switch></g><path d="M 232 580 L 281.9 580 L 281.88 516.43" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 281.88 511.18 L 285.38 518.18 L 281.88 516.43 L 278.38 518.18 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 232 610 L 323.71 610 L 323.73 515.95" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 323.73 510.7 L 327.23 517.7 L 323.73 515.95 L 320.23 517.7 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 232 640 L 361.9 640 L 361.86 517.39" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 361.86 512.14 L 365.36 519.14 L 361.86 517.39 L 358.36 519.14 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 232 670 L 402.29 670 L 402.31 518.35" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 402.31 513.1 L 405.81 520.1 L 402.31 518.35 L 398.81 520.1 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 238.37 680 L 442 680" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 233.12 680 L 240.12 676.5 L 238.37 680 L 240.12 683.5 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 238.37 650 L 442 650" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 233.12 650 L 240.12 646.5 L 238.37 650 L 240.12 653.5 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 238.79 619.6 L 267 619.62 L 442 620" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 233.54 619.59 L 240.54 616.1 L 238.79 619.6 L 240.54 623.1 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 238.37 590 L 442 590" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 233.12 590 L 240.12 586.5 L 238.37 590 L 240.12 593.5 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 522 400 L 522 480 L 428.37 480" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 423.12 480 L 430.12 476.5 L 428.37 480 L 430.12 483.5 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><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: 480px; margin-left: 472px;"><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: none; background-color: rgb(255, 255, 255); white-space: nowrap;">Commands</div></div></div></foreignObject><text x="472" y="484" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Commands</text></switch></g><path d="M 562 400 L 562 420 L 547 420 L 547 500 L 492 500 L 492 513.63" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 492 518.88 L 488.5 511.88 L 492 513.63 L 495.5 511.88 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><rect x="602" y="620" width="120" height="60" fill="#76608a" stroke="#9673a6" pointer-events="none"/><path d="M 577 400 L 577 490 L 632 490 L 632 613.63" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 632 618.88 L 628.5 611.88 L 632 613.63 L 635.5 611.88 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 632 680 L 632.31 701.44" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 632.38 706.69 L 628.78 699.74 L 632.31 701.44 L 635.78 699.64 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><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: 650px; margin-left: 603px;"><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: none; white-space: normal; overflow-wrap: normal;">Code executor</div></div></div></foreignObject><text x="662" y="654" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Code executor</text></switch></g><rect x="602" y="710" width="50" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="none"/><path d="M 682.4 615.92 L 682 460 L 428.68 460.2" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 423.43 460.2 L 430.43 456.69 L 428.68 460.2 L 430.43 463.69 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><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: 463px; margin-left: 622px;"><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: none; background-color: rgb(255, 255, 255); white-space: nowrap;"><div>Commands</div></div></div></div></foreignObject><text x="622" y="467" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Commands</text></switch></g><path d="M 614.5 710 L 613.93 688.47" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 613.79 683.22 L 617.47 690.12 L 613.93 688.47 L 610.48 690.31 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="602" y="710" width="50" height="30" fill="#76608a" stroke="none" pointer-events="none"/><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: 48px; height: 1px; padding-top: 725px; margin-left: 603px;"><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: none; white-space: normal; overflow-wrap: normal;">Lua</div></div></div></foreignObject><text x="627" y="729" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Lua</text></switch></g><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: 20px; margin-left: 387px;"><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: 24px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: nowrap;">Trinitrix - Architecture - v2.0</div></div></div></foreignObject><text x="387" y="27" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="24px" text-anchor="middle" font-weight="bold">Trinitri...</text></switch></g><path d="M 2 843 L 2 820 L 602 820 L 602 843" fill="#b0e3e6" stroke="#0e8088" stroke-miterlimit="10" pointer-events="none"/><path d="M 2 843 L 2 1040 L 602 1040 L 602 843" fill="none" stroke="#0e8088" stroke-miterlimit="10" pointer-events="none"/><path d="M 2 843 L 602 843" fill="none" stroke="#0e8088" stroke-miterlimit="10" pointer-events="none"/><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: 598px; height: 1px; padding-top: 832px; margin-left: 3px;"><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: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">Protocol Servers</div></div></div></foreignObject><text x="302" y="835" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Protocol Servers</text></switch></g><path d="M 42 920 L 42 880 L 142 880 L 142 920" fill="#ffe6cc" stroke="#d79b00" stroke-width="5" stroke-miterlimit="10" pointer-events="none"/><path d="M 42 920 L 42 1020 L 142 1020 L 142 920" fill="none" stroke="#d79b00" stroke-width="5" stroke-miterlimit="10" pointer-events="none"/><path d="M 42 920 L 142 920" fill="none" stroke="#d79b00" stroke-width="5" stroke-miterlimit="10" pointer-events="none"/><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: 98px; height: 1px; padding-top: 900px; margin-left: 43px;"><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: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">Matrix Server<br />Process</div></div></div></foreignObject><text x="92" y="904" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Matrix Server...</text></switch></g><path d="M 182 920 L 182 880 L 282 880 L 282 920" fill="#ffe6cc" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 182 920 L 182 1020 L 282 1020 L 282 920" fill="none" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 182 920 L 282 920" fill="none" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><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: 98px; height: 1px; padding-top: 900px; margin-left: 183px;"><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: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">Matrix Server<br />Process</div></div></div></foreignObject><text x="232" y="904" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Matrix Server...</text></switch></g><path d="M 322 920 L 322 880 L 422 880 L 422 920" fill="#ffe6cc" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 322 920 L 322 1020 L 422 1020 L 422 920" fill="none" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 322 920 L 422 920" fill="none" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><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: 98px; height: 1px; padding-top: 900px; margin-left: 323px;"><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: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">Signal Server<br />Process</div></div></div></foreignObject><text x="372" y="904" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Signal Server...</text></switch></g><path d="M 462 920 L 462 880 L 562 880 L 562 920" fill="#ffe6cc" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 462 920 L 462 1020 L 562 1020 L 562 920" fill="none" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 462 920 L 562 920" fill="none" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><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: 98px; height: 1px; padding-top: 900px; margin-left: 463px;"><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: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">Telegram Server<br />Process</div></div></div></foreignObject><text x="512" y="904" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Telegram Server...</text></switch></g><path d="M 85.63 585 L 12 585 L 12 810 L 92 810 L 92 873.63" fill="none" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 90.88 585 L 83.88 588.5 L 85.63 585 L 83.88 581.5 Z" fill="#005700" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 92 878.88 L 88.5 871.88 L 92 873.63 L 95.5 871.88 Z" fill="#005700" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 85.63 615 L 32 615 L 32 790 L 232 790 L 232 873.63" fill="none" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 90.88 615 L 83.88 618.5 L 85.63 615 L 83.88 611.5 Z" fill="#005700" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 232 878.88 L 228.5 871.88 L 232 873.63 L 235.5 871.88 Z" fill="#005700" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 85.63 645 L 52 645 L 52 770 L 372 770 L 372 873.63" fill="none" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 90.88 645 L 83.88 648.5 L 85.63 645 L 83.88 641.5 Z" fill="#005700" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 372 878.88 L 368.5 871.88 L 372 873.63 L 375.5 871.88 Z" fill="#005700" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 85.63 675 L 72 675 L 72 750 L 512 750 L 512 873.63" fill="none" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 90.88 675 L 83.88 678.5 L 85.63 675 L 83.88 671.5 Z" fill="#005700" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 512 878.88 L 508.5 871.88 L 512 873.63 L 515.5 871.88 Z" fill="#005700" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 622 802 L 622 772 L 802 772 L 802 802" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 622 802 L 622 1062 L 802 1062 L 802 802" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 622 802 L 802 802" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 662 802 L 662 832 L 662 862 L 662 892 L 662 922 L 662 952 L 662 982 L 662 1032 L 662 1062" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" text-anchor="middle" font-size="16px"><text x="711.5" y="793.5">Color Legend</text></g><path d="M 622 802 M 662 802 M 662 832 M 622 832" fill="none" stroke="rgb(0, 0, 0)" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><path d="M 662 802 M 802 802 M 802 832 M 662 832" fill="none" stroke="rgb(0, 0, 0)" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><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 flex-start; width: 132px; height: 1px; padding-top: 817px; margin-left: 670px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Thread / Process</div></div></div></foreignObject><text x="670" y="822" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">Thread / Process</text></switch></g><path d="M 622 832 M 662 832 M 662 862 M 622 862" fill="none" stroke="rgb(0, 0, 0)" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><path d="M 662 832 M 802 832 M 802 862 M 662 862" fill="none" stroke="rgb(0, 0, 0)" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><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 flex-start; width: 132px; height: 1px; padding-top: 847px; margin-left: 670px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Write</div></div></div></foreignObject><text x="670" y="852" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">Write</text></switch></g><path d="M 622 862 M 662 862 M 662 892 M 622 892" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><path d="M 662 862 M 802 862 M 802 892 M 662 892" fill="none" stroke="rgb(0, 0, 0)" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><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 flex-start; width: 132px; height: 1px; padding-top: 877px; margin-left: 670px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Read</div></div></div></foreignObject><text x="670" y="882" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">Read</text></switch></g><path d="M 622 892 M 662 892 M 662 922 M 622 922" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><path d="M 662 892 M 802 892 M 802 922 M 662 922" fill="none" stroke="rgb(0, 0, 0)" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><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 flex-start; width: 132px; height: 1px; padding-top: 907px; margin-left: 670px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Execution Flow</div></div></div></foreignObject><text x="670" y="912" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">Execution Flow</text></switch></g><path d="M 622 922 M 662 922 M 662 952 M 622 952" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><path d="M 662 922 M 802 922 M 802 952 M 662 952" fill="none" stroke="rgb(0, 0, 0)" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><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 flex-start; width: 132px; height: 1px; padding-top: 937px; margin-left: 670px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Struct / Vector</div></div></div></foreignObject><text x="670" y="942" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">Struct / Vector</text></switch></g><path d="M 622 952 M 662 952 M 662 982 M 622 982" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><path d="M 662 952 M 802 952 M 802 982 M 662 982" fill="none" stroke="rgb(0, 0, 0)" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><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 flex-start; width: 132px; height: 1px; padding-top: 967px; margin-left: 670px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Logical Container</div></div></div></foreignObject><text x="670" y="972" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">Logical Container</text></switch></g><path d="M 622 982 M 662 982 M 662 1032 M 622 1032" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><path d="M 662 982 M 802 982 M 802 1032 M 662 1032" fill="none" stroke="rgb(0, 0, 0)" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><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 flex-start; width: 132px; height: 1px; padding-top: 1007px; margin-left: 670px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 46px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">API<br />(Bidirectional IPC)</div></div></div></foreignObject><text x="670" y="1012" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">API...</text></switch></g><path d="M 622 1032 M 662 1032 M 662 1062 M 622 1062" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><path d="M 662 1032 M 802 1032 M 802 1062 M 662 1062" fill="none" stroke="rgb(0, 0, 0)" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><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 flex-start; width: 132px; height: 1px; padding-top: 1047px; margin-left: 670px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Stream</div></div></div></foreignObject><text x="670" y="1052" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">Stream</text></switch></g><rect x="631" y="869" width="20" height="20" fill="#f8cecc" stroke="#b85450" stroke-width="2" pointer-events="none"/><rect x="631" y="838" width="20" height="20" fill="#d5e8d4" stroke="#82b366" stroke-width="2" pointer-events="none"/><rect x="631" y="808" width="20" height="20" fill="#ffe6cc" stroke="#d79b00" stroke-width="2" pointer-events="none"/><rect x="631" y="899" width="20" height="20" fill="#d0cee2" stroke="#56517e" stroke-width="2" pointer-events="none"/><rect x="631" y="929" width="20" height="20" fill="#dae8fc" stroke="#6c8ebf" stroke-width="2" pointer-events="none"/><rect x="631" y="958" width="20" height="20" fill="#b0e3e6" stroke="#0e8088" stroke-width="2" pointer-events="none"/><path d="M 442 680 L 442 590" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><rect x="631" y="996" width="20" height="20" fill="#7fe01f" stroke="#2d7600" stroke-width="2" pointer-events="none"/><rect x="631" y="1032" width="20" height="20" fill="#76608a" stroke="#432d57" stroke-width="2" pointer-events="none"/><path d="M 227 220 L 227 260 L 227 333.63" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 227 338.88 L 223.5 331.88 L 227 333.63 L 230.5 331.88 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 42 133 L 42 110 L 732 110 L 732 133" fill="#dae8fc" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/><path d="M 42 133 L 42 220 L 732 220 L 732 133" fill="none" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/><path d="M 42 133 L 732 133" fill="none" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/><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: 688px; height: 1px; padding-top: 122px; margin-left: 43px;"><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: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">Status</div></div></div></foreignObject><text x="387" y="125" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Status</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>