<mxfile host="app.diagrams.net" agent="architecture-diagram" version="24.0.0">
  <diagram name="Discord Bot Platform — System Context" id="01-system-context">
    <mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1700" pageHeight="820" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="_t1" value="People" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#9aa7b4;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="550" y="80" width="610" height="20" as="geometry" />
        </mxCell>
        <mxCell id="n.dev" value="&lt;b&gt;Bot Developer&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#08427b;strokeColor=#073b6f;fontColor=#ffffff;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="550" y="100" width="170" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_plate2" value="" style="rounded=1;arcSize=22;html=1;fillColor=#ffffff;strokeColor=none;movable=0;resizable=0;connectable=0;" vertex="1" parent="n.dev">
          <mxGeometry x="5" y="11" width="32" height="32" as="geometry" />
        </mxCell>
        <mxCell id="_ico3" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACWklEQVRoge3Zz4tNYRzH8dfIrwmJGcZMIgpJEjZsiA1pLGhK2VDEcpLFWCkrG3tr/8GQHRNWipRhocxmombIaESNjDFj8XTrNHPunXueOfec2zTv+m7Ovd9z3p/uvec8z/eyRLm05Hy+lTiBbuzEFvzGKF6hH0M5XzMXVuAaRjAzTz3BwXI002nHc/OLJ2sKfSW4zqELw7LJJ+te4cYJWoXvdax8pa4WLV7hdp2C89UEthbsrh0/FyierPvF6nM9J/FK/cKqGJFlkQHORvZVYy2OxzTGBtgX2Zf7OWMDdET21aIzpik2wHRkXy3+xTTFBhiN7KvFSExTbIB3kX21eN+Ac1blknxvo9+xvMgA6zGWY4BS1kQ3ImVn1zjaCnZH+MifZpSdXdO4ULR4ko3Cjy9W/lbxynNZh0eyyU/gYhmytTiPD2qLT+EBtuV10bw39XAIZ7BLWHL8wWe8xmPhlrnEoiH2K7RfGI10YgMm8RBv6uhtRY+wfJ7CV3zCC/zIKpIlwBr04oowtErjozD3GRSmFePCTqsNe3EUJ4U712z+4hnuCmOaXOlW39Aqr+oXnjG5cFNYqxclX6kh7Fmo/OUSxJM1jM2x8oeFe3iZAWYwEBtgoAnkK3Uuq/yxJpBO1ttqotW2lD1ZEzeYA9id9kK1AKcb5xLNqbSDaQFasL2xLlHsSDuYFqBN+Kuo2ehKO5gWYHWDRWJJ9YqdCzUNizLAZOEW9ZHqlRZgTGNmnwtlMMube5X/9E3WN2zKEqAFdzTHYm5IWFhWFa1FB44o77nwBS+FrecSTcl/+F0YjmstwYwAAAAASUVORK5CYII=;" vertex="1" parent="n.dev">
          <mxGeometry x="9" y="15" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.admin" value="&lt;b&gt;Server Administrator&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#08427b;strokeColor=#073b6f;fontColor=#ffffff;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="750" y="100" width="200" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_plate4" value="" style="rounded=1;arcSize=22;html=1;fillColor=#ffffff;strokeColor=none;movable=0;resizable=0;connectable=0;" vertex="1" parent="n.admin">
          <mxGeometry x="5" y="11" width="32" height="32" as="geometry" />
        </mxCell>
        <mxCell id="_ico5" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACWklEQVRoge3Zz4tNYRzH8dfIrwmJGcZMIgpJEjZsiA1pLGhK2VDEcpLFWCkrG3tr/8GQHRNWipRhocxmombIaESNjDFj8XTrNHPunXueOfec2zTv+m7Ovd9z3p/uvec8z/eyRLm05Hy+lTiBbuzEFvzGKF6hH0M5XzMXVuAaRjAzTz3BwXI002nHc/OLJ2sKfSW4zqELw7LJJ+te4cYJWoXvdax8pa4WLV7hdp2C89UEthbsrh0/FyierPvF6nM9J/FK/cKqGJFlkQHORvZVYy2OxzTGBtgX2Zf7OWMDdET21aIzpik2wHRkXy3+xTTFBhiN7KvFSExTbIB3kX21eN+Ac1blknxvo9+xvMgA6zGWY4BS1kQ3ImVn1zjaCnZH+MifZpSdXdO4ULR4ko3Cjy9W/lbxynNZh0eyyU/gYhmytTiPD2qLT+EBtuV10bw39XAIZ7BLWHL8wWe8xmPhlrnEoiH2K7RfGI10YgMm8RBv6uhtRY+wfJ7CV3zCC/zIKpIlwBr04oowtErjozD3GRSmFePCTqsNe3EUJ4U712z+4hnuCmOaXOlW39Aqr+oXnjG5cFNYqxclX6kh7Fmo/OUSxJM1jM2x8oeFe3iZAWYwEBtgoAnkK3Uuq/yxJpBO1ttqotW2lD1ZEzeYA9id9kK1AKcb5xLNqbSDaQFasL2xLlHsSDuYFqBN+Kuo2ehKO5gWYHWDRWJJ9YqdCzUNizLAZOEW9ZHqlRZgTGNmnwtlMMube5X/9E3WN2zKEqAFdzTHYm5IWFhWFa1FB44o77nwBS+FrecSTcl/+F0YjmstwYwAAAAASUVORK5CYII=;" vertex="1" parent="n.admin">
          <mxGeometry x="9" y="15" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.user" value="&lt;b&gt;Server Member&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#08427b;strokeColor=#073b6f;fontColor=#ffffff;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="980" y="100" width="170" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_plate6" value="" style="rounded=1;arcSize=22;html=1;fillColor=#ffffff;strokeColor=none;movable=0;resizable=0;connectable=0;" vertex="1" parent="n.user">
          <mxGeometry x="5" y="11" width="32" height="32" as="geometry" />
        </mxCell>
        <mxCell id="_ico7" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACWklEQVRoge3Zz4tNYRzH8dfIrwmJGcZMIgpJEjZsiA1pLGhK2VDEcpLFWCkrG3tr/8GQHRNWipRhocxmombIaESNjDFj8XTrNHPunXueOfec2zTv+m7Ovd9z3p/uvec8z/eyRLm05Hy+lTiBbuzEFvzGKF6hH0M5XzMXVuAaRjAzTz3BwXI002nHc/OLJ2sKfSW4zqELw7LJJ+te4cYJWoXvdax8pa4WLV7hdp2C89UEthbsrh0/FyierPvF6nM9J/FK/cKqGJFlkQHORvZVYy2OxzTGBtgX2Zf7OWMDdET21aIzpik2wHRkXy3+xTTFBhiN7KvFSExTbIB3kX21eN+Ac1blknxvo9+xvMgA6zGWY4BS1kQ3ImVn1zjaCnZH+MifZpSdXdO4ULR4ko3Cjy9W/lbxynNZh0eyyU/gYhmytTiPD2qLT+EBtuV10bw39XAIZ7BLWHL8wWe8xmPhlrnEoiH2K7RfGI10YgMm8RBv6uhtRY+wfJ7CV3zCC/zIKpIlwBr04oowtErjozD3GRSmFePCTqsNe3EUJ4U712z+4hnuCmOaXOlW39Aqr+oXnjG5cFNYqxclX6kh7Fmo/OUSxJM1jM2x8oeFe3iZAWYwEBtgoAnkK3Uuq/yxJpBO1ttqotW2lD1ZEzeYA9id9kK1AKcb5xLNqbSDaQFasL2xLlHsSDuYFqBN+Kuo2ehKO5gWYHWDRWJJ9YqdCzUNizLAZOEW9ZHqlRZgTGNmnwtlMMube5X/9E3WN2zKEqAFdzTHYm5IWFhWFa1FB44o77nwBS+FrecSTcl/+F0YjmstwYwAAAAASUVORK5CYII=;" vertex="1" parent="n.user">
          <mxGeometry x="9" y="15" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_t8" value="Chat service (trusted)" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#9aa7b4;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="270" width="250" height="20" as="geometry" />
        </mxCell>
        <mxCell id="n.chat" value="&lt;b&gt;Chat Service&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;messages, members, voice&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="60" y="290" width="210" height="70" as="geometry" />
        </mxCell>
        <mxCell id="_ico9" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACpUlEQVRoge3YTYhNYRzH8Y+3iLzkbZoSdhJZkI1YUWzYWbCxJCU1ZShlpVhQKIoFG28pKxaKDUnyUtTQZJCExZSJEYMMFs+cXMe5955z7jn3jppf/evWfc7/+f6e5/+8nMOIWqsxJeWdhA3YhMUYQG9JfRWqZTiJfvyKxRPsxuyW0VXRHAGsx7/QSfED17ER41rACyYMAVwZAkoDnhTvhRlb2izwWiXSaJRWYvOxDy9yQOWZnW+4jPUaKLFGS+QBdmIGFuGgsAuVXmLTcUS+EnmDA1hQJff4oUG5mnNQ7mNdLfjJeJQx6QDOY61sZ0o7dqErY38/saVa0r0ZEt3BVkzLAF1Ny3EcfSn77sOUpEQ36zz4FkexpADoJI0XFu4lfK/DsjopwdOEhgO4INReWdeOJEUl9iSB6Rc2Rw1H10n0CS/RjcEySKuoF8/wOstDSTMQxaA/x//YIkljahcOs1c1WP6agbQG4mvhIOYWBD0aa6Sr/UIMRFF5KcuzPqYJh93zjP0WZqAyeoSpn5UCPLpPfWmgv8INRPEV57Aqljsa7ax9DDbbQGV0oQOn8Tnjs++wHwtbaSBP3Pb3i87EegbK3BLT6oOwAx0TDq5MaqWBhziFs8KCzqVmG+jHRZzA4yISNtPAGewQFnRhqncXKlLdCoanuQZK0YiBVuu/NzAcDrJqasOeeo0qDXwsjyWT2tCJbcJVIkkfoh+VJXSrRKg0asNh4RW2Q3X4r7iX9Mds4R20rItaZx3wtDfWvbVGYR6uNclAVvA+bMeoWgYirRC+i5ZhYKbwTp0WvH+ofa6PaCtxoyADh2Qf8X2Ymgc8rjJmpJQRb6WRUsHLNNJU8LgaMdJS8LiyGBlW4HHVMjKsweNaKXyW78Zd4atdIdvhiEZUsH4D+zfN9JHFLwAAAAAASUVORK5CYII=;" vertex="1" parent="n.chat">
          <mxGeometry x="9" y="23" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.perm" value="&lt;b&gt;Permission Model&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;roles, overrides&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="60" y="370" width="210" height="70" as="geometry" />
        </mxCell>
        <mxCell id="_ico10" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACpUlEQVRoge3YTYhNYRzH8Y+3iLzkbZoSdhJZkI1YUWzYWbCxJCU1ZShlpVhQKIoFG28pKxaKDUnyUtTQZJCExZSJEYMMFs+cXMe5955z7jn3jppf/evWfc7/+f6e5/+8nMOIWqsxJeWdhA3YhMUYQG9JfRWqZTiJfvyKxRPsxuyW0VXRHAGsx7/QSfED17ER41rACyYMAVwZAkoDnhTvhRlb2izwWiXSaJRWYvOxDy9yQOWZnW+4jPUaKLFGS+QBdmIGFuGgsAuVXmLTcUS+EnmDA1hQJff4oUG5mnNQ7mNdLfjJeJQx6QDOY61sZ0o7dqErY38/saVa0r0ZEt3BVkzLAF1Ny3EcfSn77sOUpEQ36zz4FkexpADoJI0XFu4lfK/DsjopwdOEhgO4INReWdeOJEUl9iSB6Rc2Rw1H10n0CS/RjcEySKuoF8/wOstDSTMQxaA/x//YIkljahcOs1c1WP6agbQG4mvhIOYWBD0aa6Sr/UIMRFF5KcuzPqYJh93zjP0WZqAyeoSpn5UCPLpPfWmgv8INRPEV57Aqljsa7ax9DDbbQGV0oQOn8Tnjs++wHwtbaSBP3Pb3i87EegbK3BLT6oOwAx0TDq5MaqWBhziFs8KCzqVmG+jHRZzA4yISNtPAGewQFnRhqncXKlLdCoanuQZK0YiBVuu/NzAcDrJqasOeeo0qDXwsjyWT2tCJbcJVIkkfoh+VJXSrRKg0asNh4RW2Q3X4r7iX9Mds4R20rItaZx3wtDfWvbVGYR6uNclAVvA+bMeoWgYirRC+i5ZhYKbwTp0WvH+ofa6PaCtxoyADh2Qf8X2Ymgc8rjJmpJQRb6WRUsHLNNJU8LgaMdJS8LiyGBlW4HHVMjKsweNaKXyW78Zd4atdIdvhiEZUsH4D+zfN9JHFLwAAAAAASUVORK5CYII=;" vertex="1" parent="n.perm">
          <mxGeometry x="9" y="23" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_t11" value="Bot side (untrusted)" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#9aa7b4;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="1410" y="190" width="250" height="20" as="geometry" />
        </mxCell>
        <mxCell id="n.botws" value="&lt;b&gt;Bot Process&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;WebSocket client&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#8c8c8c;fontColor=#333333;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="1430" y="210" width="210" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico12" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAB40lEQVRoge3Yz6sOURzH8dfjXlfuQkoW6ooiIUk2imRna+kvYCMLUlIsWNhYKFtZKUp3y80/YGOHKD+6RCGJErnyazF3MsbM85z73HnmTDnv+tQ0c2bm8znnzJyZL4lEIpH4n+k1dJ21mMJKfMFjvG7o2iNjChfwFL8q9ARnsTqWwTrGcE7W01XGy/qEo5ob7UWxAjPCjJd1DRPtW/7DOG4bznyuqyKOxPkAgyE6jD24IXtOPmMWV7B9VObX4WtDAb73OfYDZ4xglC41ZD5UJ5s038PLlgPMYUOIuSUBbTbJ3vltMoFDIQ1DArRtPmdvSKOQALFW0kXfdxlO4IV253+uOyEmx2v2b8U0tgTHbZ57w564Ex/E6fWynuE4loeaX4VXHTBe1kNsCwlwuQNm6/RuUIg1+NYBo/30SGk6FV+jB7G0X8IOsBlH6g5Oi9/DIZotmi6OQKwVd6Gsl33e4O8AUf+WFsjGfKMYoPNVhAKT+UYxwIMIRoblTdXO3eI/oCGakxUX/qGHux0wOEg3q8zn7JP9l8Y2Waef2NUvAJzqgNE6XRxknmwqnZ5PG9twUdfVf/5Xsh/3O2D8I46pKbUMqr+MzQc5gB2y1Xqy7xnN8BbPcUtWknzfwj0TiUQikWif37lJeEKjXHZHAAAAAElFTkSuQmCC;" vertex="1" parent="n.botws">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.bothttp" value="&lt;b&gt;Bot HTTPS Endpoint&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;serverless or hosted&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#8c8c8c;fontColor=#333333;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="1430" y="320" width="210" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico13" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAB40lEQVRoge3Yz6sOURzH8dfjXlfuQkoW6ooiIUk2imRna+kvYCMLUlIsWNhYKFtZKUp3y80/YGOHKD+6RCGJErnyazF3MsbM85z73HnmTDnv+tQ0c2bm8znnzJyZL4lEIpH4n+k1dJ21mMJKfMFjvG7o2iNjChfwFL8q9ARnsTqWwTrGcE7W01XGy/qEo5ob7UWxAjPCjJd1DRPtW/7DOG4bznyuqyKOxPkAgyE6jD24IXtOPmMWV7B9VObX4WtDAb73OfYDZ4xglC41ZD5UJ5s038PLlgPMYUOIuSUBbTbJ3vltMoFDIQ1DArRtPmdvSKOQALFW0kXfdxlO4IV253+uOyEmx2v2b8U0tgTHbZ57w564Ex/E6fWynuE4loeaX4VXHTBe1kNsCwlwuQNm6/RuUIg1+NYBo/30SGk6FV+jB7G0X8IOsBlH6g5Oi9/DIZotmi6OQKwVd6Gsl33e4O8AUf+WFsjGfKMYoPNVhAKT+UYxwIMIRoblTdXO3eI/oCGakxUX/qGHux0wOEg3q8zn7JP9l8Y2Waef2NUvAJzqgNE6XRxknmwqnZ5PG9twUdfVf/5Xsh/3O2D8I46pKbUMqr+MzQc5gB2y1Xqy7xnN8BbPcUtWknzfwj0TiUQikWif37lJeEKjXHZHAAAAAElFTkSuQmCC;" vertex="1" parent="n.bothttp">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.botrest" value="&lt;b&gt;Bot REST Client&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#8c8c8c;fontColor=#333333;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="1430" y="420" width="210" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico14" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAB40lEQVRoge3Yz6sOURzH8dfjXlfuQkoW6ooiIUk2imRna+kvYCMLUlIsWNhYKFtZKUp3y80/YGOHKD+6RCGJErnyazF3MsbM85z73HnmTDnv+tQ0c2bm8znnzJyZL4lEIpH4n+k1dJ21mMJKfMFjvG7o2iNjChfwFL8q9ARnsTqWwTrGcE7W01XGy/qEo5ob7UWxAjPCjJd1DRPtW/7DOG4bznyuqyKOxPkAgyE6jD24IXtOPmMWV7B9VObX4WtDAb73OfYDZ4xglC41ZD5UJ5s038PLlgPMYUOIuSUBbTbJ3vltMoFDIQ1DArRtPmdvSKOQALFW0kXfdxlO4IV253+uOyEmx2v2b8U0tgTHbZ57w564Ex/E6fWynuE4loeaX4VXHTBe1kNsCwlwuQNm6/RuUIg1+NYBo/30SGk6FV+jB7G0X8IOsBlH6g5Oi9/DIZotmi6OQKwVd6Gsl33e4O8AUf+WFsjGfKMYoPNVhAKT+UYxwIMIRoblTdXO3eI/oCGakxUX/qGHux0wOEg3q8zn7JP9l8Y2Waef2NUvAJzqgNE6XRxknmwqnZ5PG9twUdfVf/5Xsh/3O2D8I46pKbUMqr+MzQc5gB2y1Xqy7xnN8BbPcUtWknzfwj0TiUQikWif37lJeEKjXHZHAAAAAElFTkSuQmCC;" vertex="1" parent="n.botrest">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.system" value="&lt;b&gt;Bot Platform&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:11px&quot;&gt;Events out, actions in&lt;/font&gt;" style="rounded=1;arcSize=6;whiteSpace=wrap;html=1;fillColor=#1f4e79;strokeColor=#163a5a;fontColor=#ffffff;fontSize=15;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=56;" vertex="1" parent="1">
          <mxGeometry x="680" y="310" width="340" height="110" as="geometry" />
        </mxCell>
        <mxCell id="_plate15" value="" style="rounded=1;arcSize=22;html=1;fillColor=#ffffff;strokeColor=none;movable=0;resizable=0;connectable=0;" vertex="1" parent="n.system">
          <mxGeometry x="12" y="33" width="42" height="42" as="geometry" />
        </mxCell>
        <mxCell id="_ico16" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACpUlEQVRoge3YTYhNYRzH8Y+3iLzkbZoSdhJZkI1YUWzYWbCxJCU1ZShlpVhQKIoFG28pKxaKDUnyUtTQZJCExZSJEYMMFs+cXMe5955z7jn3jppf/evWfc7/+f6e5/+8nMOIWqsxJeWdhA3YhMUYQG9JfRWqZTiJfvyKxRPsxuyW0VXRHAGsx7/QSfED17ER41rACyYMAVwZAkoDnhTvhRlb2izwWiXSaJRWYvOxDy9yQOWZnW+4jPUaKLFGS+QBdmIGFuGgsAuVXmLTcUS+EnmDA1hQJff4oUG5mnNQ7mNdLfjJeJQx6QDOY61sZ0o7dqErY38/saVa0r0ZEt3BVkzLAF1Ny3EcfSn77sOUpEQ36zz4FkexpADoJI0XFu4lfK/DsjopwdOEhgO4INReWdeOJEUl9iSB6Rc2Rw1H10n0CS/RjcEySKuoF8/wOstDSTMQxaA/x//YIkljahcOs1c1WP6agbQG4mvhIOYWBD0aa6Sr/UIMRFF5KcuzPqYJh93zjP0WZqAyeoSpn5UCPLpPfWmgv8INRPEV57Aqljsa7ax9DDbbQGV0oQOn8Tnjs++wHwtbaSBP3Pb3i87EegbK3BLT6oOwAx0TDq5MaqWBhziFs8KCzqVmG+jHRZzA4yISNtPAGewQFnRhqncXKlLdCoanuQZK0YiBVuu/NzAcDrJqasOeeo0qDXwsjyWT2tCJbcJVIkkfoh+VJXSrRKg0asNh4RW2Q3X4r7iX9Mds4R20rItaZx3wtDfWvbVGYR6uNclAVvA+bMeoWgYirRC+i5ZhYKbwTp0WvH+ofa6PaCtxoyADh2Qf8X2Ymgc8rjJmpJQRb6WRUsHLNNJU8LgaMdJS8LiyGBlW4HHVMjKsweNaKXyW78Zd4atdIdvhiEZUsH4D+zfN9JHFLwAAAAAASUVORK5CYII=;" vertex="1" parent="n.system">
          <mxGeometry x="16" y="37" width="34" height="34" as="geometry" />
        </mxCell>
        <mxCell id="_t17" value="Platform dependencies" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#9aa7b4;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="540" y="560" width="620" height="20" as="geometry" />
        </mxCell>
        <mxCell id="n.idp" value="&lt;b&gt;Account Identity&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;OAuth2 login&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#8c8c8c;fontColor=#333333;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="540" y="580" width="180" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico18" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAABmJLR0QA/wD/AP+gvaeTAAAKsklEQVR4nO2da4xdVRXHfzNTaSltByxTsAgFFFogoGJ5qSAUNIBKKcoHA5nUmPhFI9GYED8YNeonNJFoopVotMpLHu3UYmmqbRUFqq0gr4KITB+IFh+10Md0pnP9sOZ0Zm7vPXfvs9d+nHvPL/knfdy791r7nLv3OXuvvTb4YyrwP6CWsAaBzQnYkafNlu1uRbfHsq8EZnksX4MVY0qZdwOn+Src5w2w2GPZWqwAHoxthAEfiW2ALd3A34nffebpNWDKmL1bE7AnTxss2t4KXz3AxcBbPJWtxUpgZOzPqQ8DlwJ9Pgr2dQOUpftv9OcU6aFkw8DzxO8287QHmDbB3i5gWwJ25ekXhm1vhY8e4GxgvodyNVkNHJjw9xoyJKTMB4CZ2oX6uAGu91CmNo26/NSHganA1bGNMGET8bvLPB2g8S+pB9iVgH15uqtF20dnLjBK/IbK06oc+3+YgH152oP0BGpoDwHXIw9UKZPX1ac+DMwErohtRB5rif8rydMIcHyO/WVYv1iWY39UeoEh4jdQnn5t4Mc9CdiZp38gzysqaA4BHwKOUizPByZdfOrDwAnAJVqFad4Aqc/+1YABg889xOQ5ghRZEtuAesowdm6y8Gd1Avbm6WULX3LR6gHKsvbv47MxOBV4h0ZBWjdA6t0/2F3UAcZXClMlmWGgDGv/zxTwa2MCdufpzwV8OgKNHqAMa/9FuvTUh4HzgDNcC9G4Adqt+894APmlpcx1sQ2A9Nf+Byk+Pf3HBOzP0+8K+nUY1x6gDGv/D1L8l5z6MHAJjsOv6w3Qrt1/xv1qVvihm8jDwOPE7wbz9E/c581Tjxh+2MU5lx5gLnChS+UBGAAOOZaR+r6BRcBxRb/scgMsptxr/yHL8MmbgGtiVPww8bu/PGlFz5QhYvg+BT+tKMPa/52K/t6egD952gtML+JY0SHgWtpj7T9GWT6YjizIBSP1qJn96MbQlyFi+EeK/uZShrV/k8APW1KPGP4X45tdjSkyBCyivdb+Y5apyWxkE6kVRW6A1Gf/DiERPdqsQ94sUsZ7jEAZ1v5/5c379J99dmI5N2PbA1xEe679p1C2BichKWWMsb0BUu/+a+Rv/XKl4yOGU1/7f9yf64dJPWL4ORtnbF4bTgfeALbU/fsQsM+wjBqw26LOvcBBw8+OIL9Q33wdeASZCDvG4nuzMF+ZnILdPMYMZE2AMbsWID9WVT6HrI8fq11whRrzgEeBL/go/JfIL3gQxa1JFWosAf6DXKO12oUfhXT/2TgzDHwFv3kGK8yYypGLVfuBozUruZLGDxzrgBM1K6qw4kzgCRpfmw9qVvTlJpXUgFeAyzUrqzDiJmRmstl1+apmZQM5FdWQtDC3M/4kWuGPaZjFJ6jOh2w3qDB7D/eW2LiCBciWMJNrsVOr0tmGFWbaDdyoVXnFYfqZ/CBuohM0Kr7cstJsSPg2yhmtOpQZwE8pNiuoEiW0tGDlNWTW0HkDYwdzNrKzuWj7f6JVBSbv8acUMDzjfOQmuNmhjE6lH9mbeI5DGSdrGHIHxe/AiVqOdGcV+cwC7kanze/QMGiNkjE1ZJuVSmqTNmUh8BJ67b1Gwyjt3L8HgFtIf1dRaD6FtI1mWz+mYdhTykZlWgm8WcPAktML/Bw/baySRuavnoyrIRNM79MwsqRcgG6XX68XNYz0HQSarSyqpT8tAV3IMOh7e90rGsa+5tnITJ2ystjHeGyFb+3SMHhnIGMzg6/VMDpRLiNsew5qGP1iQINrjK8spr751Iasyz9I2La0ChBthq+3gFb6A/A2DQci00e8XAoq5w7HzAP0X+BjGk5E4iokv3+s9vuthhOtgkFCaDkFEyBEogd5sxkhbrvdq+HMdyM7kek54FwNhzxzEvAb4rdXDfhWK2NNVgPVIkscOQvZm5A6n0Se9lOg5bUzuQF2KBiiReqbM8FPcoqibNco5GLid2U1JBxKNdbdIz6nd23UcuXVpAd4CvdkixqsQTY8lIEUziEewmAewOQG2IfSooIjZej+M1K4AZ5B1llyMd3a9aSbLc4MoxTcEIjfI+//MXnC5EOmN8CfHAzRYD0yKVQWRgmzVT0Po2tmegNscDBEg9QTNjci9jBgckqqMd2EWxau1yHSz0vUiKnk793zqW2mRpr2AKPE6wUeBV6NVLcLQzjm8ndgnekHbfb3GxeqTOyu1IVYtnu5Vn3I03jo7ux0H84EIkZW9b3o5kmexNrAzsR+/dQgdCzA3TbG2aZ4sSpcgTJN/jQj9DBwl8/Ce5Hp2FB3czvsIpqLvMmEaK9/EyCU7seBnHnJtyPARwmzcfUxwrTZbQF84dw2cCbLrDU6Vtdy7JI+2nIr/ttrGLed3FZs9OxMDXiPJ9tPpXGc41b8RRyd0aA+bd3jyfaGLPHkRKZX8ZOD8OPkz869gSTE8MGzOfVqKGjyzm6a56fT0PeU7TXNrJXJRy6Db1jUbyv1zKAmfLigsSbSTHI4H5lPsLXheeA8RTsuKGCDiUaxPCNAkw0GBtpqN3qvMv3A6w627Ed29GjQhXm6PRt5fe9vxXubGOWinynYdQzwE2WbNIaE7yjaVEOmmd+uYJcTRVOYNdMNjvacBTytbFMNeAF4p6NtzXIuF9XXHO1RYTZyTLuGQ/twex/vRxZDtC9+JtchYQpyvp/WDTnNwRZVbkbHqaLz5jORs4J9Xfh6PUDxgzOWK9Q/ipzfmBQP4e7Y0gL1nk/4Lew14C/AuwrYe4NC3d8vUK935uCW/GAYON6yzn5k2Ah98TNlGc9smI7bMPU0CW+UvYziQSM2Bz7OIq1DHFcAx1nYv7JgPa8jD7lJ80WKOfdpw/IX4jdzWVENItvoTFhasI5SpNztRk4Xs3FsFHhri3K7gM8TPs2KjQ4An6V1EszZ2PeU32xRZlJMQ7JTmDrX6sDHXuA+i/JiyyQJ5gaL8u6lhAd09WJ+usWtOeVcCPzNsJyUtI38Je1bDMvZSInPXTgFs/nv+Q2+2408T8SIRNbSEJLUotGQMI/xgJRmepI2OKhzHvnv6c82+E7IZIohtIrGQ8KWnO9sRp4V2oITaT4/Xz+f/X4kxWnsi6at7cji2US+1OSzjyCvum3FHBoHkSwc+/8e5HzC2Jm1fOogcq5vNiQ0iq9cS8ITPa7MYPIr4iDSGHMIv+kkptYxfqLXCxP+fRkdcPZiF/LUfwg5WWwR/jOSp6gdSKr825AH3c+4NGoZuQ55Xw61aSJFDSO/+o49M2Eekk4l9oWIpfWUM/eBKlOQtKqd1BNkh2SUbnbPJ1ch+wFiXxzf6vRjcnKZQ7zU6iE0QBtN7vgi1uEKPnUQefOpjsqz4CLKuQhUr5cxjxOoqMPnmXohdD9tsJiTArFj/2yluaOoYoxzcDtKPZS2orunsGICM9CJq/cl34kmKsZw3fSprT3ATV49rjiCM5GEyLEv/hYkA0hFBOpz/YTWMkocr9dOLEZv06WJdgM3BvGswpiTsQtFL6pNwGmBfKqwxOeBjdmZxm0fsdMOXIFuYOku4JqgHlQ40wesxv3ir0fSvVaUkGxlsUjK9hFkOOkJbXSFPguxSyKxA7g0iqUV3piFpFRrdfFXUQVttDX9SErY+gtfxel1EAuYvHN5kCpoo+M4GvgBkmqm7fbhmfJ/jHt+1fREz/wAAAAASUVORK5CYII=;" vertex="1" parent="n.idp">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.scan" value="&lt;b&gt;Public Code Scanner&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;leaked tokens&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#8c8c8c;fontColor=#333333;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="760" y="580" width="200" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico19" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAB40lEQVRoge3Yz6sOURzH8dfjXlfuQkoW6ooiIUk2imRna+kvYCMLUlIsWNhYKFtZKUp3y80/YGOHKD+6RCGJErnyazF3MsbM85z73HnmTDnv+tQ0c2bm8znnzJyZL4lEIpH4n+k1dJ21mMJKfMFjvG7o2iNjChfwFL8q9ARnsTqWwTrGcE7W01XGy/qEo5ob7UWxAjPCjJd1DRPtW/7DOG4bznyuqyKOxPkAgyE6jD24IXtOPmMWV7B9VObX4WtDAb73OfYDZ4xglC41ZD5UJ5s038PLlgPMYUOIuSUBbTbJ3vltMoFDIQ1DArRtPmdvSKOQALFW0kXfdxlO4IV253+uOyEmx2v2b8U0tgTHbZ57w564Ex/E6fWynuE4loeaX4VXHTBe1kNsCwlwuQNm6/RuUIg1+NYBo/30SGk6FV+jB7G0X8IOsBlH6g5Oi9/DIZotmi6OQKwVd6Gsl33e4O8AUf+WFsjGfKMYoPNVhAKT+UYxwIMIRoblTdXO3eI/oCGakxUX/qGHux0wOEg3q8zn7JP9l8Y2Waef2NUvAJzqgNE6XRxknmwqnZ5PG9twUdfVf/5Xsh/3O2D8I46pKbUMqr+MzQc5gB2y1Xqy7xnN8BbPcUtWknzfwj0TiUQikWif37lJeEKjXHZHAAAAAElFTkSuQmCC;" vertex="1" parent="n.scan">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.obs" value="&lt;b&gt;Observability&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontColor=#3a2b44;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="990" y="580" width="170" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico20" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACEklEQVRoge3Yv2vUYBzH8dcVcSh0FEWxnaT4BxRcxEUXdbHaA3VTQXASBEUdnJwKgiA4KDj5YxOKCg4u/guCOihFUIuTIFLUtupwuSNek1yeSy6pkDc8kMvzPN983pc8yeVoaGhoaChAK7a9FW2MR5+X8ACrVYcaluf409fO15ooB2Ox7Z0J/ZNVBRmWTTUddzOuYca/l3Ea33EZb/s76hK4iCuBc77iVP/OsYSBVTA9xJzxpJ11CdzBShmF6hJ4iSP4WbRQWQLTOIgtAXOe4riCZ6KoQAvzeBMFeofZgPmPca9ghh6vrX+Q3cgY38KthDmrOJHzmGewllAjqT0qUyAtfIhESPhSBQaFj0ucLCl8aQIt3A446Arm+mqcxe+U8cu4jl+jEAgNH5do5wx/IBo3myBxv6jA1YyQH3EhCpsmcTdn+C79EqeLCjzMCL8rGtPOkEhrSeG77MFNOe9qgwSmsJgRvstcgERW+GDyLOJJvI/6lrA7pdYxyQsx3n7gUFnh8wrANpzDjgH1ss5Eqd98l9AncR6OWn8mlrG/YN1ERiEAh/ElqvcB+0qo2aOKN7In2K5z6X3WESmNql4p1/BpFIXreqEpjUagbgatgRlcqiJIAK/wLKkj6Ta6Udvebuj/9RKa6m7EBb7VEKQwcYGF2lKE0/vLP76I5zGh89t7oupEASziRd0hGhoaGho2Bn8B+OBdhYXDMsEAAAAASUVORK5CYII=;" vertex="1" parent="n.obs">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_e21" value="commit events" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;endArrow=block;endFill=1;strokeColor=#5a6570;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.22;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.chat" target="n.system">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_e22" value="effective permissions" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;endArrow=block;endFill=1;strokeColor=#5a6570;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.78;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.perm" target="n.system">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_e23" value="registers, monitors" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;endArrow=block;endFill=1;strokeColor=#5a6570;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.22;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.dev" target="n.system">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_e24" value="installs, revokes" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;endArrow=block;endFill=1;strokeColor=#5a6570;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.admin" target="n.system">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_e25" value="invokes commands" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;endArrow=block;endFill=1;strokeColor=#5a6570;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.78;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.user" target="n.system">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_e26" value="events, heartbeats" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;endArrow=block;endFill=1;strokeColor=#5a6570;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=1;exitY=0.22;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.system" target="n.botws">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_e27" value="signed interactions" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;endArrow=block;endFill=1;strokeColor=#5a6570;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.system" target="n.bothttp">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_e28" value="actions" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;endArrow=block;endFill=1;strokeColor=#5a6570;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.78;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.botrest" target="n.system">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_e29" value="consent sign-in" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;endArrow=block;endFill=1;strokeColor=#5a6570;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.22;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.idp" target="n.system">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_e30" value="token matches" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;dashed=1;endArrow=open;endFill=0;strokeColor=#d79b00;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.scan" target="n.system">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_e31" value="metrics, traces" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;dashed=1;endArrow=open;endFill=0;strokeColor=#d79b00;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=0.78;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.system" target="n.obs">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="title" value="Discord Bot Platform — System Context" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=20;fontStyle=1;fontColor=#16202c;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="20" width="1610" height="30" as="geometry" />
        </mxCell>
        <mxCell id="rule" value="" style="line;strokeWidth=1;html=1;strokeColor=#c9d3de;" vertex="1" parent="1">
          <mxGeometry x="40" y="50" width="1610" height="10" as="geometry" />
        </mxCell>
        <mxCell id="_lg32" value="" style="rounded=1;arcSize=30;html=1;fillColor=#08427b;strokeColor=#073b6f;" vertex="1" parent="1">
          <mxGeometry x="40" y="730" width="20" height="10" as="geometry" />
        </mxCell>
        <mxCell id="_lg33" value="Person or role" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="70" y="720" width="90" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_lg34" value="" style="rounded=1;arcSize=30;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
          <mxGeometry x="180" y="730" width="20" height="10" as="geometry" />
        </mxCell>
        <mxCell id="_lg35" value="Application we own" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="210" y="720" width="110" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_lg36" value="" style="rounded=1;arcSize=30;html=1;fillColor=#f5f5f5;strokeColor=#8c8c8c;" vertex="1" parent="1">
          <mxGeometry x="340" y="730" width="20" height="10" as="geometry" />
        </mxCell>
        <mxCell id="_lg37" value="External / third party" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="370" y="720" width="130" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_lg38" value="" style="rounded=1;arcSize=30;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
          <mxGeometry x="520" y="730" width="20" height="10" as="geometry" />
        </mxCell>
        <mxCell id="_lg39" value="Security / platform" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="550" y="720" width="110" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_lg40" value="" style="html=1;endArrow=none;strokeColor=#5a6570;strokeWidth=1.4;" edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="690" y="730" as="sourcePoint" />
            <mxPoint x="710" y="730" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="_lg41" value="synchronous" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="710" y="720" width="70" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_lg42" value="" style="html=1;endArrow=none;dashed=1;strokeColor=#d79b00;strokeWidth=1.4;" edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="810" y="730" as="sourcePoint" />
            <mxPoint x="830" y="730" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="_lg43" value="event / async" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="830" y="720" width="80" height="20" as="geometry" />
        </mxCell>
        <mxCell id="note" value="Out of scope: message storage, voice media, user clients, and any bot runtime or hosting." style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="750" width="1610" height="20" as="geometry" />
        </mxCell>
        <mxCell id="foot-rule" value="" style="line;strokeWidth=1;html=1;strokeColor=#e3e9ef;" vertex="1" parent="1">
          <mxGeometry x="40" y="780" width="1610" height="10" as="geometry" />
        </mxCell>
        <mxCell id="foot" value="v 1.0   ·   owner Integration Platform Architecture   ·   date 2026-10" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=9;fontColor=#9aa7b4;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="790" width="1610" height="10" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
