// Generated by orrery. Edit the diagram spec and re-render instead of editing this file.
import { type SVGProps, useId } from "react";

export default function ChatSystemDesign(props: SVGProps<SVGSVGElement>) {
  const uid = useId().replace(/[^A-Za-z0-9_-]/g, "");
  return (
    <svg xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" width="841" height="1511" viewBox="0 0 841 1511" role="img" aria-labelledby={`${uid}-sdw-title ${uid}-sdw-desc`} fontFamily="'Geist Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace" {...props}>
      <title id={`${uid}-sdw-title`}>
        Chat system design
      </title>
      <desc id={`${uid}-sdw-desc`}>
        Chat system design. 13 components. Connections: Clients to Load balancer (WebSocket); Load balancer to WebSocket gateway; WebSocket gateway to Chat service; WebSocket gateway to Presence service; Presence service to Presence store; Chat service to Presence store (who is online); Push service to Presence store (offline?); Chat service to Message store (load history); Chat service to messages; messages to Message store (persist); messages to Push service (notify); Push service to APNs; Push service to FCM; Clients to Media storage (upload); Media storage to CDN; Clients to CDN (download).
      </desc>
      <defs>
        <linearGradient id={`${uid}-bg`} x1="0" y1="0" x2="0.34" y2="0.94">
          <stop offset="0" stopColor="#0e1a24" />
          <stop offset="0.6" stopColor="#0b1012" />
        </linearGradient>
        <pattern id={`${uid}-grid`} width="20" height="20" patternUnits="userSpaceOnUse">
          <path d="M0 0.5H20M0.5 0V20" fill="none" stroke="#ffffff" strokeOpacity="0.045" strokeWidth="1" />
        </pattern>
        <radialGradient id={`${uid}-wash`} gradientUnits="userSpaceOnUse" cx="274" cy="756.25" r="567.12">
          <stop offset="0" stopColor="#60a5fa" stopOpacity="0.12" />
          <stop offset="1" stopColor="#60a5fa" stopOpacity="0" />
        </radialGradient>
        <symbol id={`${uid}-s1`} viewBox="0 0 24 24" overflow="visible">
          <path fill="none" stroke="#919394" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.25" d="M6 5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2zm5-1h2m-1 13v.01" />
        </symbol>
        <symbol id={`${uid}-s2`} viewBox="0 0 24 24" overflow="visible">
          <g fill="none" stroke="#919394" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.25">
            <path d="M9 13a3 3 0 1 0 6 0a3 3 0 1 0-6 0m2 7a1 1 0 1 0 2 0a1 1 0 1 0-2 0m1-4v3m0-9V3M9 6l3-3l3 3m-3 4V3" />
            <path d="m9 6l3-3l3 3m-.106 6.227l6.11-2.224M17.159 8.21l3.845 1.793l-1.793 3.845m-10.11-1.634l-6.075-2.211M6.871 8.21l-3.845 1.793l1.793 3.845" />
          </g>
        </symbol>
        <symbol id={`${uid}-s3`} viewBox="0 0 256 193" overflow="visible">
          <g fill="#919394">
            <path fill="#919394" d="M192.44 144.645h31.78V68.339l-35.805-35.804l-22.472 22.472l26.497 26.497zm31.864 15.931H113.452L86.954 134.08l11.237-11.236l21.885 21.885h45.028l-44.357-44.441l11.32-11.32l44.357 44.358v-45.03l-21.801-21.801l11.152-11.153L110.685 0H0l31.696 31.696v.084h65.74l23.227 23.227l-33.96 33.96L63.476 65.74V47.712h-31.78v31.193l55.007 55.007L64.314 156.3l35.805 35.805H256z" />
          </g>
        </symbol>
        <symbol id={`${uid}-s4`} viewBox="0 0 24 24" overflow="visible">
          <path fill="none" stroke="#919394" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.25" d="M3 7a3 3 0 0 1 3-3h12a3 3 0 0 1 3 3v2a3 3 0 0 1-3 3H6a3 3 0 0 1-3-3zm0 8a3 3 0 0 1 3-3h12a3 3 0 0 1 3 3v2a3 3 0 0 1-3 3H6a3 3 0 0 1-3-3zm4-7v.01M7 16v.01M11 8h6m-6 8h6" />
        </symbol>
        <symbol id={`${uid}-s5`} viewBox="0 0 24 24" overflow="visible">
          <path fill="none" stroke="#919394" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.25" d="M3 7a3 3 0 0 1 3-3h12a3 3 0 0 1 3 3v2a3 3 0 0 1-3 3H6a3 3 0 0 1-3-3zm0 8a3 3 0 0 1 3-3h12a3 3 0 0 1 3 3v2a3 3 0 0 1-3 3H6a3 3 0 0 1-3-3zm4-7v.01M7 16v.01" />
        </symbol>
        <symbol id={`${uid}-s6`} viewBox="0 0 256 413" overflow="visible">
          <g fill="#919394">
            <path fill="#919394" d="M87.932 36.714c-4.55-4.571-10.896-7.394-17.951-7.394c-7.029 0-13.326 2.823-17.822 7.394h-.13c-4.535 4.55-7.358 10.9-7.358 17.93c0 7.055 2.823 13.352 7.359 17.875l.129.102c4.496 4.55 10.793 7.346 17.822 7.346c7.055 0 13.402-2.797 17.951-7.346L88 72.52c4.558-4.523 7.354-10.82 7.354-17.876c0-7.029-2.796-13.38-7.354-17.929zm-17.951 346.64a25.5 25.5 0 0 0 17.951-7.368l.067-.134c4.558-4.487 7.354-10.838 7.354-17.817c0-7.056-2.796-13.38-7.354-17.952h-.067c-4.55-4.625-10.896-7.42-17.951-7.42c-7.029 0-13.326 2.795-17.822 7.42h-.13c-4.535 4.572-7.358 10.896-7.358 17.952c0 6.98 2.823 13.33 7.359 17.817l.129.134a25.15 25.15 0 0 0 17.822 7.368m137.972-76.72c6.275-1.646 11.957-5.673 15.423-11.761l.468-.887c3.082-5.776 3.644-12.44 1.998-18.344c-1.659-6.324-5.735-11.917-11.81-15.418l-.352-.237c-5.918-3.242-12.662-3.947-18.857-2.274c-6.297 1.57-11.952 5.775-15.4 11.814c-3.492 5.981-4.223 12.88-2.55 19.231c1.725 6.244 5.761 11.89 11.796 15.418h.04c6.047 3.475 12.898 4.104 19.244 2.458M95.97 180.387c-6.654-6.637-15.824-10.794-25.988-10.794c-10.124 0-19.272 4.157-25.912 10.794c-6.61 6.614-10.686 15.76-10.686 25.898c0 10.165 4.076 19.339 10.686 26.029c6.64 6.582 15.788 10.712 25.912 10.712c10.164 0 19.334-4.13 25.988-10.712c6.623-6.69 10.7-15.864 10.7-26.029c0-10.137-4.077-19.284-10.7-25.898m-14.61-43.164c14.726 2.426 27.976 9.482 38.087 19.673h.08a72 72 0 0 1 4.625 5.147l25.284-14.629c-3.399-10.271-3.555-21.01-.826-31.072c3.609-13.487 12.35-25.56 25.453-33.137l.433-.26c12.96-7.345 27.696-8.861 41-5.253a54.52 54.52 0 0 1 33.186 25.48v.026c7.529 13.015 9.059 27.96 5.464 41.393c-3.581 13.478-12.363 25.631-25.453 33.155l-3.452 2.043h-.352c-12.109 5.771-25.426 6.663-37.655 3.447c-10.044-2.667-19.258-8.26-26.47-16.23l-25.243 14.585a69.7 69.7 0 0 1 4.509 24.694a70.7 70.7 0 0 1-4.51 24.824l25.244 14.53c7.212-8.072 16.426-13.562 26.47-16.229c13.469-3.684 28.405-2.114 41.46 5.49l.833.393v.053c12.613 7.627 21.078 19.441 24.619 32.767a54.43 54.43 0 0 1-5.464 41.344l-.454.914l-.054-.08c-7.564 12.573-19.48 21.091-32.638 24.695c-13.5 3.554-28.432 2.038-41.473-5.46v-.106c-13.103-7.578-21.844-19.678-25.453-33.133c-2.729-10.035-2.573-20.779.826-31.046l-25.284-14.584c-1.45 1.78-3.02 3.452-4.625 5.071l-.08.076c-10.11 10.142-23.361 17.198-38.088 19.548v29.217c10.494 2.194 19.9 7.448 27.273 14.816l.035.08c9.88 9.825 15.994 23.517 15.994 38.57c0 15.003-6.115 28.61-15.994 38.489l-.035.156c-9.946 9.879-23.598 15.993-38.65 15.993c-14.972 0-28.642-6.114-38.56-15.993h-.036v-.156c-9.893-9.879-16.02-23.486-16.02-38.49a54.26 54.26 0 0 1 16.02-38.569v-.08h.035c7.36-7.368 16.779-12.622 27.246-14.816v-29.217c-14.74-2.35-27.95-9.406-38.048-19.548l-.107-.076C7.89 243.053 0 225.624 0 206.285c0-19.284 7.89-36.714 20.511-49.389h.107c10.098-10.19 23.308-17.247 38.048-19.673v-29.087A55.34 55.34 0 0 1 31.42 93.293h-.035v-.08c-9.893-9.928-16.02-23.518-16.02-38.57c0-14.976 6.127-28.695 16.02-38.574l.035-.049C41.34 6.115 55.01 0 69.98 0c15.053 0 28.705 6.115 38.65 16.02v.05h.036c9.88 9.878 15.994 23.597 15.994 38.573c0 15.052-6.115 28.642-15.994 38.57l-.035.08c-7.373 7.319-16.779 12.568-27.273 14.843zm142.017-19.392l-.21-.312c-3.492-5.882-9.058-9.803-15.213-11.502c-6.346-1.672-13.197-.963-19.284 2.511h.04c-6.075 3.448-10.138 9.094-11.837 15.418a25.3 25.3 0 0 0 2.551 19.231l.116.16a25 25 0 0 0 15.284 11.57a24.83 24.83 0 0 0 19.21-2.48l.325-.156c5.905-3.528 9.838-9.094 11.484-15.208c1.673-6.298 1.008-13.197-2.466-19.232" />
          </g>
        </symbol>
        <symbol id={`${uid}-s7`} viewBox="0 0 256 220" overflow="visible">
          <path fill="#912626" d="M245.97 168.943c-13.662 7.121-84.434 36.22-99.501 44.075s-23.437 7.78-35.34 2.09c-11.902-5.69-87.216-36.112-100.783-42.597C3.566 169.271 0 166.535 0 163.951v-25.876s98.05-21.345 113.879-27.024c15.828-5.679 21.32-5.884 34.79-.95c13.472 4.936 94.018 19.468 107.331 24.344l-.006 25.51c.002 2.558-3.07 5.364-10.024 8.988" />
          <path fill="#c6302b" d="M245.965 143.22c-13.661 7.118-84.431 36.218-99.498 44.072c-15.066 7.857-23.436 7.78-35.338 2.09c-11.903-5.686-87.214-36.113-100.78-42.594c-13.566-6.485-13.85-10.948-.524-16.166c13.326-5.22 88.224-34.605 104.055-40.284c15.828-5.677 21.319-5.884 34.789-.948c13.471 4.934 83.819 32.935 97.13 37.81c13.316 4.881 13.827 8.9.166 16.02" />
          <path fill="#912626" d="M245.97 127.074c-13.662 7.122-84.434 36.22-99.501 44.078c-15.067 7.853-23.437 7.777-35.34 2.087c-11.903-5.687-87.216-36.112-100.783-42.597C3.566 127.402 0 124.67 0 122.085V96.206s98.05-21.344 113.879-27.023c15.828-5.679 21.32-5.885 34.79-.95C162.142 73.168 242.688 87.697 256 92.574l-.006 25.513c.002 2.557-3.07 5.363-10.024 8.987" />
          <path fill="#c6302b" d="M245.965 101.351c-13.661 7.12-84.431 36.218-99.498 44.075c-15.066 7.854-23.436 7.777-35.338 2.087c-11.903-5.686-87.214-36.112-100.78-42.594c-13.566-6.483-13.85-10.947-.524-16.167C23.151 83.535 98.05 54.148 113.88 48.47c15.828-5.678 21.319-5.884 34.789-.949c13.471 4.934 83.819 32.933 97.13 37.81c13.316 4.88 13.827 8.9.166 16.02" />
          <path fill="#912626" d="M245.97 83.653c-13.662 7.12-84.434 36.22-99.501 44.078c-15.067 7.854-23.437 7.777-35.34 2.087c-11.903-5.687-87.216-36.113-100.783-42.595C3.566 83.98 0 81.247 0 78.665v-25.88s98.05-21.343 113.879-27.021c15.828-5.68 21.32-5.884 34.79-.95C162.142 29.749 242.688 44.278 256 49.155l-.006 25.512c.002 2.555-3.07 5.361-10.024 8.986" />
          <path fill="#c6302b" d="M245.965 57.93c-13.661 7.12-84.431 36.22-99.498 44.074c-15.066 7.854-23.436 7.777-35.338 2.09C99.227 98.404 23.915 67.98 10.35 61.497S-3.5 50.55 9.825 45.331C23.151 40.113 98.05 10.73 113.88 5.05c15.828-5.679 21.319-5.883 34.789-.948s83.819 32.934 97.13 37.811c13.316 4.876 13.827 8.897.166 16.017" />
          <path fill="#fff" d="m159.283 32.757l-22.01 2.285l-4.927 11.856l-7.958-13.23l-25.415-2.284l18.964-6.839l-5.69-10.498l17.755 6.944l16.738-5.48l-4.524 10.855zm-28.251 57.518L89.955 73.238l58.86-9.035zm-56.95-50.928c17.375 0 31.46 5.46 31.46 12.194c0 6.736-14.085 12.195-31.46 12.195s-31.46-5.46-31.46-12.195c0-6.734 14.085-12.194 31.46-12.194" />
          <path fill="#621b1c" d="m185.295 35.998l34.836 13.766l-34.806 13.753z" />
          <path fill="#9a2928" d="m146.755 51.243l38.54-15.245l.03 27.519l-3.779 1.478z" />
        </symbol>
        <filter id={`${uid}-f1`} x="-0.1" y="-0.1" width="1.2" height="1.2" colorInterpolationFilters="sRGB">
          <feColorMatrix type="matrix" values="0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0.8929 3.0038 0.3032 0 -2.604" result="a" />
          <feFlood floodColor="#919394" floodOpacity="0.4" />
          <feComposite in2="SourceAlpha" operator="in" result="base" />
          <feFlood floodColor="#919394" />
          <feComposite in2="a" operator="in" result="hi" />
          <feMerge>
            <feMergeNode in="base" />
            <feMergeNode in="hi" />
          </feMerge>
        </filter>
        <symbol id={`${uid}-s8`} viewBox="0 0 24 24" overflow="visible">
          <path fill="#919394" d="M10.374 10.53a3 3 0 0 1-.428-.222l.555.143c0 .02-.01.036-.01.055l-.117.025zm-.283 1.506l-.315.253l.852-1.079l-1.078.391c.002.017.009.033.009.05a.57.57 0 0 1-.184.42q.154.327.375.616a3.2 3.2 0 0 1 .34-.651zm.717-2.347l-.652-.82a.43.43 0 0 1-.506.162c-.054.073-.083.162-.13.24l1.258.463zm-1.666.444c-.07.314-.087.637-.05.956a.57.57 0 0 1 .451.475l.946-.606c-.067-.022-.126-.06-.191-.088l-1.119-.08l.64-.14a3.2 3.2 0 0 1-.668-.554zM20.1 11.648c-.164.202.833 1.022.833 1.022s-1.654-1.022-2.234-.72c-.278.144.574.811 1.175 1.242c-.428-.274-.982-.571-1.175-.408c-.328.277 1.565 2.549 1.565 2.549s-2.145-2.322-2.36-2.209c-.214.114.593 1.224.593 1.224s-1.06-1.16-1.35-.959c-.29.202 1.514 3.218 1.514 3.218s-1.956-3.091-2.763-2.574c1.268 2.782.795 3.18.795 3.18s-.162-2.839-1.742-2.764c-.795.038.379 2.12.379 2.12s-1.08-1.902-1.8-1.864c1.326 2.51.854 3.53.854 3.53s.219-2.143-1.58-3.336c.682.606-.427 3.336-.427 3.336s.976-4.023-.719-3.256c-.268.121-.019 2.007-.019 2.007s-.34-2.158-.851-2.045c-.298.066-1.893 2.99-1.893 2.99s1.306-3.16.908-3.027c-.29.096-.833 1.4-.833 1.4s.265-1.287 0-1.363c-.264-.075-1.74 1.363-1.74 1.363s1.097-1.287.908-1.552c-.287-.402-.623-.42-1.022-.265c-.581.226-1.363 1.287-1.363 1.287s.78-1.074.643-1.476c-.219-.647-2.46 1.249-2.46 1.249s1.325-1.25 1.022-1.514c-.303-.265-1.947-.183-2.46-.185c-1.515-.004-2.039-.36-2.498-.724c1.987.997 3.803-.151 6.094.494l.21.06c-1.3-.558-2.144-1.378-2.226-2.354c-.036-.416.074-.827.297-1.222c.619-.4 1.29-.773 2.06-1.095a4 4 0 0 0-.064.698c0 2.44 2.203 4.417 4.92 4.417s4.92-1.977 4.92-4.417c0-.45-.083-.881-.223-1.29c1.431.404 2.45.968 3.132 1.335c.022.092.045.184.053.279c.024.274-.018.547-.11.814c.095-.147.198-.288.28-.445c.367-.997 1.855.227 1.855.227s-1.085-.454-1.06-.24c.026.215 1.628.96 1.628.96s-1.45-.455-1.362-.114c.088.34 1.817 1.703 1.817 1.703s-1.956-1.489-2.12-1.287zm-7.268 2.65l.042-.008l-.06.01zM9.256 9.753c.12.13.26.234.396.343l.927-.029l-1.064-.788c-.093.154-.195.303-.26.474Zm10.62 3.44c.3.215.54.373.54.373s-.24-.181-.54-.374zM7.507 8.617c-.14.229-.214.492-.215.76a3.99 3.99 0 0 0 2.358 3.64q0-.008.003-.014a3.2 3.2 0 0 1-.58-.788c-.648.099-.926-.794-.336-1.08a3.2 3.2 0 0 1 .138-1.388a3.16 3.16 0 0 1-.52-1.36q-.444.105-.848.23m1.488.82q.163-.36.402-.661a.435.435 0 0 1 .568-.557c.077-.059.166-.099.248-.15a16 16 0 0 0-1.727.284c.114.388.272.76.509 1.084m2.285 3.928c1.4 0 2.633-.723 3.344-1.816a3.4 3.4 0 0 0-1.265-.539l-.297-.023l.916.9l-1.197-.467l.704 1.078l-1.074-.832l-.012.006l.347 1.278l-.596-1.134l-.098 1.33l-.401-1.326l-.472 1.261l.114-1.359l-.015-.008l-.814 1.154l.286-1.067c-.34.322-.605.713-.781 1.146q.143.153.303.29q.484.126 1.008.128m10.145-4.434c.971-.567 1.716-1.955 1.716-1.955s-1.893 1.955-3.205 1.665c1.186-.934 1.766-2.549 1.766-2.549s-1.506 2.325-2.448 2.423c1.086-.959 1.54-2.322 1.54-2.322s-1.237 1.817-2.196 1.944c1.287-1.161 1.338-1.893 1.338-1.893s-1.781 2.302-2.499 1.943c.858-.934 1.439-2.12 1.439-2.12s-1.489 2.019-1.893 1.69c-.277-.05.454-.958.454-.958s-.908.807-1.16.606c.454-.278 1.236-1.64 1.236-1.64S16 7.505 15.621 7.304l.731-1.483s-.73 1.483-1.715 1.23c.454-.58.63-1.112.63-1.112s-.756 1.213-1.69.885c-.22-.077.273-.635.273-.635s-.626.61-1.055.534c-.43-.076.025-.858.025-.858s-.757 1.186-.908 1.136s.075-.833.075-.833s-.555.908-.858.858s0-.934 0-.934s-.328.984-.58.909c-.252-.076-.303-.656-.303-.656s-.068.788-.429.858c-2.725.53-5.728 1.69-9.489 5.45C3.887 10.738 5.3 7.91 11.962 7.659c5.044-.191 7.399 2.137 8.177 2.17C22.51 9.93 24 7.633 24 7.633s-1.489 1.716-2.574 1.3zm-7.74.872l-.608.464v.001l.054.003a3.4 3.4 0 0 0 .554-.468m1.583-.426c0-.536-.237-.929-.594-1.217a3.2 3.2 0 0 1-.165.825a.393.393 0 0 1-.328.681c-.154.233-.34.445-.549.63l.661.034l-.995.237c-.025.018-.045.041-.07.058a3.2 3.2 0 0 1 1.536.691c.32-.574.504-1.235.504-1.94zM10.99 7.996a3.5 3.5 0 0 0-.785.46a.43.43 0 0 1-.013.357l.885.643l.023-.016l-.36-1.262l.627 1.12c.018-.006.04-.006.058-.011l-.02-1.251l.398 1.163l.477-1.15l.016 1.268l.012.007l.713-1.005l-.363 1.218l.009.01l1.04-.69l-.759 1.05l.002.005l.95-.34l.041-.045a.395.395 0 0 1 .394-.632a3.4 3.4 0 0 0 .27-.784a14 14 0 0 0-2.798-.168c-.286.011-.55.033-.817.053" />
        </symbol>
        <symbol id={`${uid}-s9`} viewBox="0 0 24 24" overflow="visible">
          <path fill="none" stroke="#919394" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.25" d="M10 5a2 2 0 1 1 4 0a7 7 0 0 1 4 6v3a4 4 0 0 0 2 3H4a4 4 0 0 0 2-3v-3a7 7 0 0 1 4-6M9 17v1a3 3 0 0 0 6 0v-1" />
        </symbol>
        <symbol id={`${uid}-s10`} viewBox="0 0 24 24" overflow="visible">
          <g fill="none" stroke="#919394" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.25">
            <path d="M11 3h10v8h-3l-4 2v-2h-3z" />
            <path d="M15 16v4a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h2m2 13v.01" />
          </g>
        </symbol>
        <symbol id={`${uid}-s11`} viewBox="0 0 256 322" overflow="visible">
          <path fill="#ff9100" d="M80.18 312.295c13.455 5.414 28.05 8.628 43.376 9.163a127.5 127.5 0 0 0 58.098-11.71c-21.145-8.307-40.294-20.455-56.638-35.56c-10.594 16.963-26.263 30.36-44.835 38.107" />
          <path fill="#ffc400" d="M125.013 274.193c-37.307-34.504-59.939-84.444-58.026-139.218c.062-1.78.156-3.557.266-5.334a96.63 96.63 0 0 0-50.456.528C6.838 147.614.828 167.63.079 189.069C-1.853 244.403 31.632 292.75 80.178 312.3c18.572-7.747 34.24-21.13 44.835-38.107" />
          <path fill="#ff9100" d="M125.015 274.191c8.674-13.88 13.933-30.154 14.545-47.687c1.61-46.12-29.394-85.794-72.306-96.865c-.11 1.777-.203 3.555-.265 5.334c-1.913 54.775 20.719 104.714 58.026 139.218" />
          <path fill="#dd2c00" d="M134.761 0c-24.44 19.58-43.738 45.396-55.414 75.136a180.5 180.5 0 0 0-12.113 54.515c42.912 11.07 73.917 50.745 72.306 96.865c-.612 17.532-5.887 33.79-14.545 47.687a180.7 180.7 0 0 0 56.637 35.56c42.441-19.618 72.553-61.833 74.297-111.764c1.129-32.351-11.3-61.184-28.864-85.521C208.517 86.738 134.76 0 134.76 0" />
        </symbol>
        <filter id={`${uid}-f2`} x="-0.1" y="-0.1" width="1.2" height="1.2" colorInterpolationFilters="sRGB">
          <feFlood floodColor="#919394" />
          <feComposite in2="SourceAlpha" operator="in" />
        </filter>
        <symbol id={`${uid}-s12`} viewBox="0 0 24 24" overflow="visible">
          <g fill="none" stroke="#919394" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.25">
            <path d="M4 7a8 4 0 1 0 16 0A8 4 0 1 0 4 7" />
            <path d="M4 7c0 .664.088 1.324.263 1.965L7 19c.5 1.5 2.239 2 5 2s4.5-.5 5-2q.5-1.5 2.737-10.035A7.5 7.5 0 0 0 20 7" />
          </g>
        </symbol>
        <symbol id={`${uid}-s13`} viewBox="0 0 24 24" overflow="visible">
          <g fill="none" stroke="#919394" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.25">
            <path d="M20.985 12.52a9 9 0 1 0-7.52 8.36M3.6 9h16.8M3.6 15h10.9" />
            <path d="M11.5 3a17 17 0 0 0 0 18m1-18c2.313 3.706 3.07 7.856 2.27 12M19 16l-2 3h4l-2 3" />
          </g>
        </symbol>
      </defs>
      <rect width="841" height="1511" fill={`url(#${uid}-bg)`} />
      <rect width="841" height="1511" fill={`url(#${uid}-grid)`} />
      <rect width="841" height="1511" fill={`url(#${uid}-wash)`} />
      <text fontSize="18" fontWeight="700" letterSpacing="1.08" fill="#dadbdb">
        <tspan x="28" y="42.89">
          CHAT SYSTEM DESIGN
        </tspan>
      </text>
      <text fontSize="10.75" fontWeight="400" fill="#9d9fa0">
        <tspan x="28" y="65">
          WebSocket gateways keep clients connected; messages go through Kafka to Cassandra and to push providers for offline users
        </tspan>
      </text>
      <g id={`${uid}-e-e1`}>
        <path d="M395 184.5 L395 196 Q395 204 387 204 L335 204 Q327 204 327 212 L327 332.5" fill="none" stroke="#ffffff" strokeOpacity="0.25" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M323 327 L327 333 L331 327" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M399 190 L395 184 L391 190" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M395 184.5 L395 196 Q395 204 387 204 L335 204 Q327 204 327 212 L327 332.5" fill="none" stroke="#60a5fa" strokeOpacity="0.5" strokeWidth="1.2" strokeLinecap="round" strokeLinejoin="round" pathLength="1" strokeDasharray="1 1" strokeDashoffset="1" opacity="0">
          <animate attributeName="stroke-dashoffset" values="1;1;0;0" keyTimes="0;0.1603;0.2472;1" calcMode="spline" keySplines="0 0 1 1;0.65 0 0.35 1;0 0 1 1" dur="7.799s" repeatCount="indefinite" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.1603;0.1834;0.9;0.9231;1" dur="7.799s" repeatCount="indefinite" />
        </path>
        <g opacity="0">
          <path d="M323 327 L327 333 L331 327" fill="none" stroke="#60a5fa" strokeOpacity="0.7" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.2472;0.2703;0.9;0.9231;1" dur="7.799s" repeatCount="indefinite" />
        </g>
      </g>
      <g id={`${uid}-e-e2`}>
        <path d="M327 421.5 L327 484.5" fill="none" stroke="#ffffff" strokeOpacity="0.25" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M323 479 L327 485 L331 479" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M331 427 L327 421 L323 427" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M327 421.5 L327 484.5" fill="none" stroke="#60a5fa" strokeOpacity="0.5" strokeWidth="1.2" strokeLinecap="round" strokeLinejoin="round" pathLength="1" strokeDasharray="1 1" strokeDashoffset="1" opacity="0">
          <animate attributeName="stroke-dashoffset" values="1;1;0;0" keyTimes="0;0.278;0.3293;1" calcMode="spline" keySplines="0 0 1 1;0.65 0 0.35 1;0 0 1 1" dur="7.799s" repeatCount="indefinite" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.278;0.3011;0.9;0.9231;1" dur="7.799s" repeatCount="indefinite" />
        </path>
        <g opacity="0">
          <path d="M323 479 L327 485 L331 479" fill="none" stroke="#60a5fa" strokeOpacity="0.7" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.3293;0.3524;0.9;0.9231;1" dur="7.799s" repeatCount="indefinite" />
        </g>
      </g>
      <g id={`${uid}-e-e3`}>
        <path d="M305 573.5 L305 636.5" fill="none" stroke="#ffffff" strokeOpacity="0.25" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M301 631 L305 637 L309 631" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M309 579 L305 573 L301 579" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M305 573.5 L305 636.5" fill="none" stroke="#60a5fa" strokeOpacity="0.5" strokeWidth="1.2" strokeLinecap="round" strokeLinejoin="round" pathLength="1" strokeDasharray="1 1" strokeDashoffset="1" opacity="0">
          <animate attributeName="stroke-dashoffset" values="1;1;0;0" keyTimes="0;0.3601;0.4114;1" calcMode="spline" keySplines="0 0 1 1;0.65 0 0.35 1;0 0 1 1" dur="7.799s" repeatCount="indefinite" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.3601;0.3832;0.9;0.9231;1" dur="7.799s" repeatCount="indefinite" />
        </path>
        <g opacity="0">
          <path d="M301 631 L305 637 L309 631" fill="none" stroke="#60a5fa" strokeOpacity="0.7" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.4114;0.4345;0.9;0.9231;1" dur="7.799s" repeatCount="indefinite" />
        </g>
      </g>
      <g id={`${uid}-e-e4`}>
        <path d="M348 573 L348 585 Q348 593 356 593 L503 593 Q511 593 511 601 L511 644" fill="none" stroke="#ffffff" strokeOpacity="0.25" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M507 638.5 L511 644.5 L515 638.5" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
      </g>
      <g id={`${uid}-e-e5`}>
        <path d="M511 732.5 L511 1263 Q511 1271 503 1271 L455 1271 Q447 1271 447 1279 L447 1328" fill="none" stroke="#ffffff" strokeOpacity="0.25" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M443 1322.5 L447 1328.5 L451 1322.5" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
      </g>
      <g id={`${uid}-e-e6`}>
        <path d="M330 740 L330 752 Q330 760 338 760 L396 760 Q404 760 404 768 L404 1328" fill="none" stroke="#ffffff" strokeOpacity="0.25" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M400 1322.5 L404 1328.5 L408 1322.5" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
      </g>
      <g id={`${uid}-e-e7`}>
        <path d="M172 1166 L172 1263 Q172 1271 180 1271 L354 1271 Q362 1271 362 1279 L362 1328" fill="none" stroke="#ffffff" strokeOpacity="0.25" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M358 1322.5 L362 1328.5 L366 1322.5" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M172 1166 L172 1263 Q172 1271 180 1271 L354 1271 Q362 1271 362 1279 L362 1328" fill="none" stroke="#60a5fa" strokeOpacity="0.5" strokeWidth="1.2" strokeLinecap="round" strokeLinejoin="round" pathLength="1" strokeDasharray="1 1" strokeDashoffset="1" opacity="0">
          <animate attributeName="stroke-dashoffset" values="1;1;0;0" keyTimes="0;0.6564;0.7846;1" calcMode="spline" keySplines="0 0 1 1;0.65 0 0.35 1;0 0 1 1" dur="7.799s" repeatCount="indefinite" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.6564;0.6794;0.9;0.9231;1" dur="7.799s" repeatCount="indefinite" />
        </path>
        <g opacity="0">
          <path d="M358 1322.5 L362 1328.5 L366 1322.5" fill="none" stroke="#60a5fa" strokeOpacity="0.7" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.7846;0.8077;0.9;0.9231;1" dur="7.799s" repeatCount="indefinite" />
        </g>
      </g>
      <g id={`${uid}-e-e8`}>
        <path d="M305 740 L305 1026 Q305 1034 313 1034 L327 1034 Q335 1034 335 1042 L335 1083.5" fill="none" stroke="#ffffff" strokeOpacity="0.25" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M331 1078 L335 1084 L339 1078" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
      </g>
      <g id={`${uid}-e-e9`}>
        <path d="M281 740 L281 752 Q281 760 273 760 L199 760 Q191 760 191 768 L191 868.5" fill="none" stroke="#ffffff" strokeOpacity="0.25" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M187 863 L191 869 L195 863" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M281 740 L281 752 Q281 760 273 760 L199 760 Q191 760 191 768 L191 868.5" fill="none" stroke="#60a5fa" strokeOpacity="0.5" strokeWidth="1.2" strokeLinecap="round" strokeLinejoin="round" pathLength="1" strokeDasharray="1 1" strokeDashoffset="1" opacity="0">
          <animate attributeName="stroke-dashoffset" values="1;1;0;0" keyTimes="0;0.4421;0.5299;1" calcMode="spline" keySplines="0 0 1 1;0.65 0 0.35 1;0 0 1 1" dur="7.799s" repeatCount="indefinite" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.4421;0.4652;0.9;0.9231;1" dur="7.799s" repeatCount="indefinite" />
        </path>
        <g opacity="0">
          <path d="M187 863 L191 869 L195 863" fill="none" stroke="#60a5fa" strokeOpacity="0.7" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.5299;0.553;0.9;0.9231;1" dur="7.799s" repeatCount="indefinite" />
        </g>
      </g>
      <g id={`${uid}-e-e10`}>
        <path d="M215 929 L215 1026 Q215 1034 223 1034 L275 1034 Q283 1034 283 1042 L283 1083.5" fill="none" stroke="#ffffff" strokeOpacity="0.25" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M279 1078 L283 1084 L287 1078" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
      </g>
      <g id={`${uid}-e-e11`}>
        <path d="M166 929 L166 942.5 Q166 949 159.5 949 L159.5 949 Q153 949 153 955.5 L153 1077.5" fill="none" stroke="#ffffff" strokeOpacity="0.25" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M149 1072 L153 1078 L157 1072" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M166 929 L166 942.5 Q166 949 159.5 949 L159.5 949 Q153 949 153 955.5 L153 1077.5" fill="none" stroke="#60a5fa" strokeOpacity="0.5" strokeWidth="1.2" strokeLinecap="round" strokeLinejoin="round" pathLength="1" strokeDasharray="1 1" strokeDashoffset="1" opacity="0">
          <animate attributeName="stroke-dashoffset" values="1;1;0;0" keyTimes="0;0.5607;0.6256;1" calcMode="spline" keySplines="0 0 1 1;0.65 0 0.35 1;0 0 1 1" dur="7.799s" repeatCount="indefinite" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.5607;0.5838;0.9;0.9231;1" dur="7.799s" repeatCount="indefinite" />
        </path>
        <g opacity="0">
          <path d="M149 1072 L153 1078 L157 1072" fill="none" stroke="#60a5fa" strokeOpacity="0.7" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.6256;0.6487;0.9;0.9231;1" dur="7.799s" repeatCount="indefinite" />
        </g>
      </g>
      <g id={`${uid}-e-e12`}>
        <path d="M153 1166 L153 1273 Q153 1281 161 1281 L207 1281 Q215 1281 215 1289 L215 1314.5" fill="none" stroke="#ffffff" strokeOpacity="0.25" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M211 1309 L215 1315 L219 1309" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
      </g>
      <g id={`${uid}-e-e13`}>
        <path d="M133 1166 L133 1178 Q133 1186 125 1186 L78 1186 Q70 1186 70 1194 L70 1314.5" fill="none" stroke="#ffffff" strokeOpacity="0.25" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
        <path d="M66 1309 L70 1315 L74 1309" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
      </g>
      <g id={`${uid}-e-e14`}>
        <path d="M438 184 L438 196 Q438 204 446 204 L490 204 Q498 204 498 212 L498 332.5" fill="none" stroke="#ffffff" strokeOpacity="0.25" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" strokeDasharray="4 3" />
        <path d="M494 327 L498 333 L502 327" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
      </g>
      <g id={`${uid}-e-e15`}>
        <path d="M498 421 L498 484.5" fill="none" stroke="#ffffff" strokeOpacity="0.25" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" strokeDasharray="4 3" />
        <path d="M494 479 L498 485 L502 479" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
      </g>
      <g id={`${uid}-e-e16`}>
        <path d="M417 184.5 L417 433 Q417 441 425 441 L457 441 Q465 441 465 449 L465 485" fill="none" stroke="#ffffff" strokeOpacity="0.25" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" strokeDasharray="4 3" />
        <path d="M421 190 L417 184 L413 190" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" strokeLinejoin="round" />
      </g>
      <g id={`${uid}-el-e1`}>
        <rect x="332" y="248" width="75" height="21" rx="3" fill="#0b1012" stroke="#ffffff" strokeOpacity="0.1" strokeWidth="1" />
        <text fontSize="8.5" fontWeight="700" letterSpacing="0.51" fill="#979899" textAnchor="middle">
          <tspan x="369.76" y="261.52">
            WEBSOCKET
          </tspan>
        </text>
        <g opacity="0">
          <rect x="332" y="248" width="75" height="21" rx="3" fill="#0b1012" stroke="#60a5fa" strokeOpacity="0.5" strokeWidth="1" />
          <text fontSize="8.5" fontWeight="700" letterSpacing="0.51" fill="#60a5fa" textAnchor="middle">
            <tspan x="369.76" y="261.52">
              WEBSOCKET
            </tspan>
          </text>
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.1603;0.1834;0.9;0.9231;1" dur="7.799s" repeatCount="indefinite" />
        </g>
      </g>
      <g id={`${uid}-el-e6`}>
        <rect x="409" y="993" width="84" height="21" rx="3" fill="#0b1012" stroke="#ffffff" strokeOpacity="0.1" strokeWidth="1" />
        <text fontSize="8.5" fontWeight="700" letterSpacing="0.51" fill="#979899" textAnchor="middle">
          <tspan x="451.26" y="1006.52">
            WHO IS ONLINE
          </tspan>
        </text>
      </g>
      <g id={`${uid}-el-e7`}>
        <rect x="177" y="1230" width="53" height="21" rx="3" fill="#0b1012" stroke="#ffffff" strokeOpacity="0.1" strokeWidth="1" />
        <text fontSize="8.5" fontWeight="700" letterSpacing="0.51" fill="#979899" textAnchor="middle">
          <tspan x="203.76" y="1243.52">
            OFFLINE?
          </tspan>
        </text>
        <g opacity="0">
          <rect x="177" y="1230" width="53" height="21" rx="3" fill="#0b1012" stroke="#60a5fa" strokeOpacity="0.5" strokeWidth="1" />
          <text fontSize="8.5" fontWeight="700" letterSpacing="0.51" fill="#60a5fa" textAnchor="middle">
            <tspan x="203.76" y="1243.52">
              OFFLINE?
            </tspan>
          </text>
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.6564;0.6794;0.9;0.9231;1" dur="7.799s" repeatCount="indefinite" />
        </g>
      </g>
      <g id={`${uid}-el-e8`}>
        <rect x="310" y="888.5" width="76" height="21" rx="3" fill="#0b1012" stroke="#ffffff" strokeOpacity="0.1" strokeWidth="1" />
        <text fontSize="8.5" fontWeight="700" letterSpacing="0.51" fill="#979899" textAnchor="middle">
          <tspan x="348.26" y="902.02">
            LOAD HISTORY
          </tspan>
        </text>
      </g>
      <g id={`${uid}-el-e10`}>
        <rect x="220" y="993" width="49" height="21" rx="3" fill="#0b1012" stroke="#ffffff" strokeOpacity="0.1" strokeWidth="1" />
        <text fontSize="8.5" fontWeight="700" letterSpacing="0.51" fill="#979899" textAnchor="middle">
          <tspan x="244.76" y="1006.52">
            PERSIST
          </tspan>
        </text>
      </g>
      <g id={`${uid}-el-e11`}>
        <rect x="158" y="993" width="43" height="21" rx="3" fill="#0b1012" stroke="#ffffff" strokeOpacity="0.1" strokeWidth="1" />
        <text fontSize="8.5" fontWeight="700" letterSpacing="0.51" fill="#979899" textAnchor="middle">
          <tspan x="179.76" y="1006.52">
            NOTIFY
          </tspan>
        </text>
        <g opacity="0">
          <rect x="158" y="993" width="43" height="21" rx="3" fill="#0b1012" stroke="#60a5fa" strokeOpacity="0.5" strokeWidth="1" />
          <text fontSize="8.5" fontWeight="700" letterSpacing="0.51" fill="#60a5fa" textAnchor="middle">
            <tspan x="179.76" y="1006.52">
              NOTIFY
            </tspan>
          </text>
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.5607;0.5838;0.9;0.9231;1" dur="7.799s" repeatCount="indefinite" />
        </g>
      </g>
      <g id={`${uid}-el-e14`}>
        <rect x="503" y="248" width="50" height="21" rx="3" fill="#0b1012" stroke="#ffffff" strokeOpacity="0.1" strokeWidth="1" />
        <text fontSize="8.5" fontWeight="700" letterSpacing="0.51" fill="#979899" textAnchor="middle">
          <tspan x="528.26" y="261.52">
            UPLOAD
          </tspan>
        </text>
      </g>
      <g id={`${uid}-el-e16`}>
        <rect x="422" y="248" width="66" height="21" rx="3" fill="#0b1012" stroke="#ffffff" strokeOpacity="0.1" strokeWidth="1" />
        <text fontSize="8.5" fontWeight="700" letterSpacing="0.51" fill="#979899" textAnchor="middle">
          <tspan x="455.26" y="261.52">
            DOWNLOAD
          </tspan>
        </text>
      </g>
      <g id={`${uid}-n-clients`}>
        <rect x="392.5" y="96" width="48" height="48" rx="8.16" fill="#0b1012" stroke="#ffffff" strokeOpacity="0.16" strokeWidth="1" />
        <g opacity="0">
          <rect x="392.5" y="96" width="48" height="48" rx="8.16" fill="#60a5fa" fillOpacity="0.15" stroke="#60a5fa" strokeOpacity="0.65" strokeWidth="1" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.0898;0.1128;0.9169;0.94;1" dur="7.799s" repeatCount="indefinite" />
        </g>
        <use href={`#${uid}-s1`} x="402.1" y="105.6" width="28.8" height="28.8" />
        <text fontSize="11.5" fontWeight="700" letterSpacing="0.92" fill="#9d9fa0" textAnchor="middle">
          <tspan x="416.97" y="162.53">
            CLIENTS
          </tspan>
        </text>
        <text fontSize="10" fontWeight="400" fill="#979a9b" textAnchor="middle">
          <tspan x="416.5" y="179.7">
            Mobile and web
          </tspan>
        </text>
      </g>
      <g id={`${uid}-n-lb`}>
        <rect x="302.5" y="333" width="48" height="48" rx="8.16" fill="#0b1012" stroke="#ffffff" strokeOpacity="0.16" strokeWidth="1" />
        <g opacity="0">
          <rect x="302.5" y="333" width="48" height="48" rx="8.16" fill="#60a5fa" fillOpacity="0.15" stroke="#60a5fa" strokeOpacity="0.65" strokeWidth="1" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.0898;0.1128;0.9169;0.94;1" dur="7.799s" repeatCount="indefinite" />
        </g>
        <use href={`#${uid}-s2`} x="312.1" y="342.6" width="28.8" height="28.8" />
        <text fontSize="11.5" fontWeight="700" letterSpacing="0.92" fill="#9d9fa0" textAnchor="middle">
          <tspan x="326.96" y="399.53">
            LOAD BALANCER
          </tspan>
        </text>
        <text fontSize="10" fontWeight="400" fill="#979a9b" textAnchor="middle">
          <tspan x="326.5" y="416.7">
            L4, Upgrade-aware
          </tspan>
        </text>
      </g>
      <g id={`${uid}-n-gateway`}>
        <rect x="302.5" y="485" width="48" height="48" rx="8.16" fill="#0b1012" stroke="#ffffff" strokeOpacity="0.16" strokeWidth="1" />
        <g opacity="0">
          <rect x="302.5" y="485" width="48" height="48" rx="8.16" fill="#60a5fa" fillOpacity="0.15" stroke="#60a5fa" strokeOpacity="0.65" strokeWidth="1" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.0898;0.1128;0.9169;0.94;1" dur="7.799s" repeatCount="indefinite" />
        </g>
        <use href={`#${uid}-s3`} x="312.1" y="494.6" width="28.8" height="28.8" />
        <text fontSize="11.5" fontWeight="700" letterSpacing="0.92" fill="#9d9fa0" textAnchor="middle">
          <tspan x="326.96" y="551.53">
            WEBSOCKET GATEWAY
          </tspan>
        </text>
        <text fontSize="10" fontWeight="400" fill="#979a9b" textAnchor="middle">
          <tspan x="326.5" y="568.7">
            Open connections
          </tspan>
        </text>
        <rect x="337.33" y="478" width="22.35" height="16" rx="8" fill="#0b1012" stroke="#ffffff" strokeOpacity="0.16" strokeWidth="1" />
        <text fontSize="8.5" fontWeight="700" letterSpacing="0.51" fill="#979899" textAnchor="middle">
          <tspan x="348.76" y="489.02">
            X4
          </tspan>
        </text>
      </g>
      <g id={`${uid}-n-chat`}>
        <rect x="281" y="637" width="48" height="48" rx="8.16" fill="#0b1012" stroke="#ffffff" strokeOpacity="0.16" strokeWidth="1" />
        <g opacity="0">
          <rect x="281" y="637" width="48" height="48" rx="8.16" fill="#60a5fa" fillOpacity="0.15" stroke="#60a5fa" strokeOpacity="0.65" strokeWidth="1" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.0898;0.1128;0.9169;0.94;1" dur="7.799s" repeatCount="indefinite" />
        </g>
        <use href={`#${uid}-s4`} x="290.6" y="646.6" width="28.8" height="28.8" />
        <text fontSize="11.5" fontWeight="700" letterSpacing="0.92" fill="#9d9fa0" textAnchor="middle">
          <tspan x="305.46" y="703.53">
            CHAT SERVICE
          </tspan>
        </text>
        <text fontSize="10" fontWeight="400" fill="#979a9b" textAnchor="middle">
          <tspan x="305.01" y="720.7">
            Ordering, fan-out,
          </tspan>
          <tspan x="305.01" y="735.7">
            presigned URLs
          </tspan>
        </text>
      </g>
      <g id={`${uid}-n-presence`}>
        <rect x="486.5" y="644.5" width="48" height="48" rx="8.16" fill="#0b1012" stroke="#ffffff" strokeOpacity="0.16" strokeWidth="1" />
        <g opacity="0">
          <rect x="486.5" y="644.5" width="48" height="48" rx="8.16" fill="#60a5fa" fillOpacity="0.15" stroke="#60a5fa" strokeOpacity="0.65" strokeWidth="1" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.0898;0.1128;0.9169;0.94;1" dur="7.799s" repeatCount="indefinite" />
        </g>
        <use href={`#${uid}-s5`} x="496.1" y="654.1" width="28.8" height="28.8" />
        <text fontSize="11" fontWeight="700" letterSpacing="0.88" fill="#9d9fa0" textAnchor="middle">
          <tspan x="510.94" y="710.86">
            PRESENCE SERVICE
          </tspan>
        </text>
        <text fontSize="10" fontWeight="400" fill="#979a9b" textAnchor="middle">
          <tspan x="510.5" y="728.2">
            Heartbeats
          </tspan>
        </text>
      </g>
      <g id={`${uid}-n-topic`}>
        <g fill="#0b1012" stroke="#ffffff" strokeOpacity="0.16" strokeWidth="1">
          <path d="M126 869 H255 A10 30 0 0 1 255 929 H126 A10 30 0 0 1 126 869 Z" />
          <path d="M255 869 A10 30 0 0 0 255 929" fill="none" />
        </g>
        <g opacity="0">
          <g fill="#60a5fa" fillOpacity="0.15" stroke="#60a5fa" strokeOpacity="0.65" strokeWidth="1">
            <path d="M126 869 H255 A10 30 0 0 1 255 929 H126 A10 30 0 0 1 126 869 Z" />
            <path d="M255 869 A10 30 0 0 0 255 929" fill="none" />
          </g>
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.0898;0.1128;0.9169;0.94;1" dur="7.799s" repeatCount="indefinite" />
        </g>
        <use href={`#${uid}-s6`} x="145.45" y="890" width="18" height="18" />
        <text fontSize="11.5" fontWeight="700" letterSpacing="0.92" fill="#9d9fa0" textAnchor="middle">
          <tspan x="204.96" y="894.58">
            MESSAGES
          </tspan>
        </text>
        <text fontSize="10" fontWeight="400" fill="#979a9b" textAnchor="middle">
          <tspan x="204.5" y="911.75">
            Kafka topic
          </tspan>
        </text>
      </g>
      <g id={`${uid}-n-status`}>
        <g fill="#0b1012" stroke="#ffffff" strokeOpacity="0.16" strokeWidth="1">
          <path d="M319 1336.5 A85 8 0 0 1 489 1336.5 V1396.5 A85 8 0 0 1 319 1396.5 Z" />
          <path d="M319 1336.5 A85 8 0 0 0 489 1336.5" fill="none" />
        </g>
        <g opacity="0">
          <g fill="#60a5fa" fillOpacity="0.15" stroke="#60a5fa" strokeOpacity="0.65" strokeWidth="1">
            <path d="M319 1336.5 A85 8 0 0 1 489 1336.5 V1396.5 A85 8 0 0 1 319 1396.5 Z" />
            <path d="M319 1336.5 A85 8 0 0 0 489 1336.5" fill="none" />
          </g>
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.0898;0.1128;0.9169;0.94;1" dur="7.799s" repeatCount="indefinite" />
        </g>
        <use href={`#${uid}-s7`} x="336.02" y="1362.2" width="18.6" height="18.6" filter={`url(#${uid}-f1)`} />
        <text fontSize="11.5" fontWeight="700" letterSpacing="0.92" fill="#9d9fa0" textAnchor="middle">
          <tspan x="418.46" y="1367.08">
            PRESENCE STORE
          </tspan>
        </text>
        <text fontSize="9.5" fontWeight="400" fill="#979a9b" textAnchor="middle">
          <tspan x="418" y="1384.09">
            Redis with TTL keys
          </tspan>
        </text>
      </g>
      <g id={`${uid}-n-history`}>
        <g fill="#0b1012" stroke="#ffffff" strokeOpacity="0.16" strokeWidth="1">
          <path d="M232 1092 A77 8 0 0 1 386 1092 V1152 A77 8 0 0 1 232 1152 Z" />
          <path d="M232 1092 A77 8 0 0 0 386 1092" fill="none" />
        </g>
        <g opacity="0">
          <g fill="#60a5fa" fillOpacity="0.15" stroke="#60a5fa" strokeOpacity="0.65" strokeWidth="1">
            <path d="M232 1092 A77 8 0 0 1 386 1092 V1152 A77 8 0 0 1 232 1152 Z" />
            <path d="M232 1092 A77 8 0 0 0 386 1092" fill="none" />
          </g>
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.0898;0.1128;0.9169;0.94;1" dur="7.799s" repeatCount="indefinite" />
        </g>
        <use href={`#${uid}-s8`} x="249.49" y="1118" width="18" height="18" />
        <text fontSize="11.5" fontWeight="700" letterSpacing="0.92" fill="#9d9fa0" textAnchor="middle">
          <tspan x="323.46" y="1122.58">
            MESSAGE STORE
          </tspan>
        </text>
        <text fontSize="10" fontWeight="400" fill="#979a9b" textAnchor="middle">
          <tspan x="323" y="1139.75">
            Cassandra
          </tspan>
        </text>
      </g>
      <g id={`${uid}-n-push`}>
        <rect x="128.5" y="1078" width="48" height="48" rx="8.16" fill="#0b1012" stroke="#ffffff" strokeOpacity="0.16" strokeWidth="1" />
        <g opacity="0">
          <rect x="128.5" y="1078" width="48" height="48" rx="8.16" fill="#60a5fa" fillOpacity="0.15" stroke="#60a5fa" strokeOpacity="0.65" strokeWidth="1" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.0898;0.1128;0.9169;0.94;1" dur="7.799s" repeatCount="indefinite" />
        </g>
        <use href={`#${uid}-s9`} x="138.1" y="1087.6" width="28.8" height="28.8" />
        <text fontSize="11.5" fontWeight="700" letterSpacing="0.92" fill="#9d9fa0" textAnchor="middle">
          <tspan x="152.96" y="1144.53">
            PUSH SERVICE
          </tspan>
        </text>
        <text fontSize="10" fontWeight="400" fill="#979a9b" textAnchor="middle">
          <tspan x="152.49" y="1161.7">
            Offline users
          </tspan>
        </text>
      </g>
      <g id={`${uid}-n-apns`}>
        <rect x="191" y="1315" width="48" height="48" rx="8.16" fill="#0b1012" stroke="#ffffff" strokeOpacity="0.16" strokeWidth="1" />
        <g opacity="0">
          <rect x="191" y="1315" width="48" height="48" rx="8.16" fill="#60a5fa" fillOpacity="0.15" stroke="#60a5fa" strokeOpacity="0.65" strokeWidth="1" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.0898;0.1128;0.9169;0.94;1" dur="7.799s" repeatCount="indefinite" />
        </g>
        <use href={`#${uid}-s10`} x="200.6" y="1324.6" width="28.8" height="28.8" />
        <text fontSize="11.5" fontWeight="700" letterSpacing="0.92" fill="#9d9fa0" textAnchor="middle">
          <tspan x="215.47" y="1381.53">
            APNS
          </tspan>
        </text>
        <text fontSize="10" fontWeight="400" fill="#979a9b" textAnchor="middle">
          <tspan x="215" y="1398.7">
            Apple Push Notification
          </tspan>
          <tspan x="215" y="1413.7">
            service
          </tspan>
        </text>
      </g>
      <g id={`${uid}-n-fcm`}>
        <rect x="45.5" y="1315" width="48" height="48" rx="8.16" fill="#0b1012" stroke="#ffffff" strokeOpacity="0.16" strokeWidth="1" />
        <g opacity="0">
          <rect x="45.5" y="1315" width="48" height="48" rx="8.16" fill="#60a5fa" fillOpacity="0.15" stroke="#60a5fa" strokeOpacity="0.65" strokeWidth="1" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.0898;0.1128;0.9169;0.94;1" dur="7.799s" repeatCount="indefinite" />
        </g>
        <use href={`#${uid}-s11`} x="55.58" y="1325.08" width="27.84" height="27.84" filter={`url(#${uid}-f2)`} />
        <text fontSize="11.5" fontWeight="700" letterSpacing="0.92" fill="#9d9fa0" textAnchor="middle">
          <tspan x="69.96" y="1381.53">
            FCM
          </tspan>
        </text>
        <text fontSize="10" fontWeight="400" fill="#979a9b" textAnchor="middle">
          <tspan x="69.5" y="1398.7">
            Firebase Cloud
          </tspan>
          <tspan x="69.5" y="1413.7">
            Messaging
          </tspan>
        </text>
      </g>
      <g id={`${uid}-n-media`}>
        <rect x="474" y="333" width="48" height="48" rx="8.16" fill="#0b1012" stroke="#ffffff" strokeOpacity="0.16" strokeWidth="1" />
        <g opacity="0">
          <rect x="474" y="333" width="48" height="48" rx="8.16" fill="#60a5fa" fillOpacity="0.15" stroke="#60a5fa" strokeOpacity="0.65" strokeWidth="1" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.0898;0.1128;0.9169;0.94;1" dur="7.799s" repeatCount="indefinite" />
        </g>
        <use href={`#${uid}-s12`} x="483.6" y="342.6" width="28.8" height="28.8" />
        <text fontSize="11.5" fontWeight="700" letterSpacing="0.92" fill="#9d9fa0" textAnchor="middle">
          <tspan x="498.46" y="399.53">
            MEDIA STORAGE
          </tspan>
        </text>
        <text fontSize="10" fontWeight="400" fill="#979a9b" textAnchor="middle">
          <tspan x="498" y="416.7">
            Presigned uploads
          </tspan>
        </text>
      </g>
      <g id={`${uid}-n-cdn`}>
        <rect x="457.5" y="485" width="48" height="48" rx="8.16" fill="#0b1012" stroke="#ffffff" strokeOpacity="0.16" strokeWidth="1" />
        <g opacity="0">
          <rect x="457.5" y="485" width="48" height="48" rx="8.16" fill="#60a5fa" fillOpacity="0.15" stroke="#60a5fa" strokeOpacity="0.65" strokeWidth="1" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.0898;0.1128;0.9169;0.94;1" dur="7.799s" repeatCount="indefinite" />
        </g>
        <use href={`#${uid}-s13`} x="467.1" y="494.6" width="28.8" height="28.8" />
        <text fontSize="11.5" fontWeight="700" letterSpacing="0.92" fill="#9d9fa0" textAnchor="middle">
          <tspan x="481.96" y="551.53">
            CDN
          </tspan>
        </text>
        <text fontSize="10" fontWeight="400" fill="#979a9b" textAnchor="middle">
          <tspan x="481.49" y="568.7">
            Media downloads
          </tspan>
        </text>
      </g>
      <g id={`${uid}-story`}>
        <path d="M395 184.5 L395 196 Q395 204 387 204 L335 204 Q327 204 327 212 L327 332.5" fill="none" stroke="#60a5fa" strokeOpacity="0.6" strokeWidth="2.4" pathLength="1" strokeDasharray="0.12 2" strokeDashoffset="0.12" opacity="0">
          <animate attributeName="stroke-dashoffset" values="0.12;0.12;-0.88;-1;-1" keyTimes="0;0.1603;0.2472;0.2577;1" calcMode="spline" keySplines="0 0 1 1;0.65 0 0.35 1;0 0 1 1;0 0 1 1" dur="7.799s" repeatCount="indefinite" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.1603;0.1616;0.2577;0.259;1" dur="7.799s" repeatCount="indefinite" />
        </path>
        <circle r="2.5" fill="#60a5fa" opacity="0">
          <animateMotion path="M395 184.5 L395 196 Q395 204 387 204 L335 204 Q327 204 327 212 L327 332.5" dur="7.799s" repeatCount="indefinite" calcMode="spline" keyPoints="0;0;1;1" keyTimes="0;0.1603;0.2472;1" keySplines="0 0 1 1;0.65 0 0.35 1;0 0 1 1" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.1411;0.1603;0.278;0.2972;1" dur="7.799s" repeatCount="indefinite" />
        </circle>
        <path d="M327 421.5 L327 484.5" fill="none" stroke="#60a5fa" strokeOpacity="0.6" strokeWidth="2.4" pathLength="1" strokeDasharray="0.41 2" strokeDashoffset="0.41" opacity="0">
          <animate attributeName="stroke-dashoffset" values="0.41;0.41;-0.59;-1;-1" keyTimes="0;0.278;0.3293;0.3505;1" calcMode="spline" keySplines="0 0 1 1;0.65 0 0.35 1;0 0 1 1;0 0 1 1" dur="7.799s" repeatCount="indefinite" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.278;0.2793;0.3505;0.3518;1" dur="7.799s" repeatCount="indefinite" />
        </path>
        <circle r="2.5" fill="#60a5fa" opacity="0">
          <animateMotion path="M327 421.5 L327 484.5" dur="7.799s" repeatCount="indefinite" calcMode="spline" keyPoints="0;0;1;1" keyTimes="0;0.278;0.3293;1" keySplines="0 0 1 1;0.65 0 0.35 1;0 0 1 1" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.2588;0.278;0.3601;0.3793;1" dur="7.799s" repeatCount="indefinite" />
        </circle>
        <path d="M305 573.5 L305 636.5" fill="none" stroke="#60a5fa" strokeOpacity="0.6" strokeWidth="2.4" pathLength="1" strokeDasharray="0.41 2" strokeDashoffset="0.41" opacity="0">
          <animate attributeName="stroke-dashoffset" values="0.41;0.41;-0.59;-1;-1" keyTimes="0;0.3601;0.4114;0.4325;1" calcMode="spline" keySplines="0 0 1 1;0.65 0 0.35 1;0 0 1 1;0 0 1 1" dur="7.799s" repeatCount="indefinite" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.3601;0.3614;0.4325;0.4338;1" dur="7.799s" repeatCount="indefinite" />
        </path>
        <circle r="2.5" fill="#60a5fa" opacity="0">
          <animateMotion path="M305 573.5 L305 636.5" dur="7.799s" repeatCount="indefinite" calcMode="spline" keyPoints="0;0;1;1" keyTimes="0;0.3601;0.4114;1" keySplines="0 0 1 1;0.65 0 0.35 1;0 0 1 1" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.3408;0.3601;0.4421;0.4614;1" dur="7.799s" repeatCount="indefinite" />
        </circle>
        <circle r="2" fill="#60a5fa" opacity="0">
          <animateMotion path="M348 573 L348 585 Q348 593 356 593 L503 593 Q511 593 511 601 L511 644" dur="7.799s" repeatCount="indefinite" calcMode="spline" keyPoints="0;0;1;1" keyTimes="0;0.4412;0.5352;1" keySplines="0 0 1 1;0.65 0 0.35 1;0 0 1 1" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.422;0.4412;0.5352;0.5544;1" dur="7.799s" repeatCount="indefinite" />
        </circle>
        <circle r="2" fill="#60a5fa" opacity="0">
          <animateMotion path="M511 732.5 L511 1263 Q511 1271 503 1271 L455 1271 Q447 1271 447 1279 L447 1328" dur="7.799s" repeatCount="indefinite" calcMode="spline" keyPoints="0;0;1;1" keyTimes="0;0.6285;0.7567;1" keySplines="0 0 1 1;0.65 0 0.35 1;0 0 1 1" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.6093;0.6285;0.7567;0.776;1" dur="7.799s" repeatCount="indefinite" />
        </circle>
        <path d="M172 1166 L172 1263 Q172 1271 180 1271 L354 1271 Q362 1271 362 1279 L362 1328" fill="none" stroke="#60a5fa" strokeOpacity="0.6" strokeWidth="2.4" pathLength="1" strokeDasharray="0.07 2" strokeDashoffset="0.07" opacity="0">
          <animate attributeName="stroke-dashoffset" values="0.07;0.07;-0.93;-1;-1" keyTimes="0;0.6564;0.7846;0.7941;1" calcMode="spline" keySplines="0 0 1 1;0.65 0 0.35 1;0 0 1 1;0 0 1 1" dur="7.799s" repeatCount="indefinite" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.6564;0.6576;0.7941;0.7953;1" dur="7.799s" repeatCount="indefinite" />
        </path>
        <circle r="2.5" fill="#60a5fa" opacity="0">
          <animateMotion path="M172 1166 L172 1263 Q172 1271 180 1271 L354 1271 Q362 1271 362 1279 L362 1328" dur="7.799s" repeatCount="indefinite" calcMode="spline" keyPoints="0;0;1;1" keyTimes="0;0.6564;0.7846;1" keySplines="0 0 1 1;0.65 0 0.35 1;0 0 1 1" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.6371;0.6564;0.7846;0.8038;1" dur="7.799s" repeatCount="indefinite" />
        </circle>
        <path d="M281 740 L281 752 Q281 760 273 760 L199 760 Q191 760 191 768 L191 868.5" fill="none" stroke="#60a5fa" strokeOpacity="0.6" strokeWidth="2.4" pathLength="1" strokeDasharray="0.12 2" strokeDashoffset="0.12" opacity="0">
          <animate attributeName="stroke-dashoffset" values="0.12;0.12;-0.88;-1;-1" keyTimes="0;0.4421;0.5299;0.5403;1" calcMode="spline" keySplines="0 0 1 1;0.65 0 0.35 1;0 0 1 1;0 0 1 1" dur="7.799s" repeatCount="indefinite" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.4421;0.4434;0.5403;0.5416;1" dur="7.799s" repeatCount="indefinite" />
        </path>
        <circle r="2.5" fill="#60a5fa" opacity="0">
          <animateMotion path="M281 740 L281 752 Q281 760 273 760 L199 760 Q191 760 191 768 L191 868.5" dur="7.799s" repeatCount="indefinite" calcMode="spline" keyPoints="0;0;1;1" keyTimes="0;0.4421;0.5299;1" keySplines="0 0 1 1;0.65 0 0.35 1;0 0 1 1" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.4229;0.4421;0.5607;0.5799;1" dur="7.799s" repeatCount="indefinite" />
        </circle>
        <path d="M166 929 L166 942.5 Q166 949 159.5 949 L159.5 949 Q153 949 153 955.5 L153 1077.5" fill="none" stroke="#60a5fa" strokeOpacity="0.6" strokeWidth="2.4" pathLength="1" strokeDasharray="0.16 2" strokeDashoffset="0.16" opacity="0">
          <animate attributeName="stroke-dashoffset" values="0.16;0.16;-0.84;-1;-1" keyTimes="0;0.5607;0.6256;0.636;1" calcMode="spline" keySplines="0 0 1 1;0.65 0 0.35 1;0 0 1 1;0 0 1 1" dur="7.799s" repeatCount="indefinite" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.5607;0.562;0.636;0.6373;1" dur="7.799s" repeatCount="indefinite" />
        </path>
        <circle r="2.5" fill="#60a5fa" opacity="0">
          <animateMotion path="M166 929 L166 942.5 Q166 949 159.5 949 L159.5 949 Q153 949 153 955.5 L153 1077.5" dur="7.799s" repeatCount="indefinite" calcMode="spline" keyPoints="0;0;1;1" keyTimes="0;0.5607;0.6256;1" keySplines="0 0 1 1;0.65 0 0.35 1;0 0 1 1" />
          <animate attributeName="opacity" values="0;0;1;1;0;0" keyTimes="0;0.5414;0.5607;0.6564;0.6756;1" dur="7.799s" repeatCount="indefinite" />
        </circle>
      </g>
      <g id={`${uid}-legend`}>
        <rect x="677" y="1430" width="136" height="53" rx="6" fill="#0b1012" stroke="#ffffff" strokeOpacity="0.1" strokeWidth="1" />
        <path d="M687 1447.5 H715" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" />
        <text fontSize="9.5" fontWeight="700" letterSpacing="0.57" fill="#9d9fa0">
          <tspan x="723" y="1450.87">
            CHAT TRAFFIC
          </tspan>
        </text>
        <path d="M687 1465.5 H715" fill="none" stroke="#ffffff" strokeOpacity="0.4" strokeWidth="1" strokeLinecap="round" strokeDasharray="4 3" />
        <text fontSize="8.5" fontWeight="700" letterSpacing="0.51" fill="#9d9fa0">
          <tspan x="723" y="1468.52">
            MEDIA TRANSFER
          </tspan>
        </text>
      </g>
    </svg>
  );
}
