!!! tip
If you are in a hurry or don't care, continue with the next sections for step by step instructions to set everything up with different techniques.
-To learn the basics of HTTPS, from a consumer perspective, check <a href="https://howhttps.works/" class="external-link" target="_blank">https://howhttps.works/</a>.
-
-Now, from a developer's perspective, here are several things to have in mind while thinking about HTTPS:
-
-* For HTTPS, the server needs to have "certificates" generated by a third party.
- * Those certificates are actually acquired from the third-party, not "generated".
-* Certificates have a lifetime.
- * They expire.
- * And then they need to be renewed, acquired again from the third party.
-* The encryption of the connection happens at the TCP level.
- * That's one layer below HTTP.
- * So, the certificate and encryption handling is done before HTTP.
-* TCP doesn't know about "domains". Only about IP addresses.
- * The information about the specific domain requested goes in the HTTP data.
-* The HTTPS certificates "certify" a certain domain, but the protocol and encryption happen at the TCP level, before knowing which domain is being dealt with.
-* By default, that would mean that you can only have one HTTPS certificate per IP address.
+To **learn the basics of HTTPS**, from a consumer perspective, check <a href="https://howhttps.works/" class="external-link" target="_blank">https://howhttps.works/</a>.
+
+Now, from a **developer's perspective**, here are several things to have in mind while thinking about HTTPS:
+
+* For HTTPS, **the server** needs to **have "certificates"** generated by a **third party**.
+ * Those certificates are actually **acquired** from the third party, not "generated".
+* Certificates have a **lifetime**.
+ * They **expire**.
+ * And then they need to be **renewed**, **acquired again** from the third party.
+* The encryption of the connection happens at the **TCP level**.
+ * That's one layer **below HTTP**.
+ * So, the **certificate and encryption** handling is done **before HTTP**.
+* **TCP doesn't know about "domains"**. Only about IP addresses.
+ * The information about the **specific domain** requested goes in the **HTTP data**.
+* The **HTTPS certificates** "certify" a **certain domain**, but the protocol and encryption happen at the TCP level, **before knowing** which domain is being dealt with.
+* **By default**, that would mean that you can only have **one HTTPS certificate per IP address**.
* No matter how big your server is or how small each application you have on it might be.
- * There is a solution to this, however.
-* There's an extension to the TLS protocol (the one handling the encryption at the TCP level, before HTTP) called <a href="https://en.wikipedia.org/wiki/Server_Name_Indication" class="external-link" target="_blank"><abbr title="Server Name Indication">SNI</abbr></a>.
- * This SNI extension allows one single server (with a single IP address) to have several HTTPS certificates and serve multiple HTTPS domains/applications.
- * For this to work, a single component (program) running on the server, listening on the public IP address, must have all the HTTPS certificates in the server.
-* After obtaining a secure connection, the communication protocol is still HTTP.
- * The contents are encrypted, even though they are being sent with the HTTP protocol.
+ * There is a **solution** to this, however.
+* There's an **extension** to the **TLS** protocol (the one handling the encryption at the TCP level, before HTTP) called **<a href="https://en.wikipedia.org/wiki/Server_Name_Indication" class="external-link" target="_blank"><abbr title="Server Name Indication">SNI</abbr></a>**.
+ * This SNI extension allows one single server (with a **single IP address**) to have **several HTTPS certificates** and serve **multiple HTTPS domains/applications**.
+ * For this to work, a **single** component (program) running on the server, listening on the **public IP address**, must have **all the HTTPS certificates** in the server.
+* **After** obtaining a secure connection, the communication protocol is **still HTTP**.
+ * The contents are **encrypted**, even though they are being sent with the **HTTP protocol**.
+
+It is a common practice to have **one program/HTTP server** running on the server (the machine, host, etc.) and **managing all the HTTPS parts**: receiving the **encrypted HTTPS requests**, sending the **decrypted HTTP requests** to the actual HTTP application running in the same server (the **FastAPI** application, in this case), take the **HTTP response** from the application, **encrypt it** using the appropriate **HTTPS certificate** and sending it back to the client using **HTTPS**. This server is often called a **<a href="https://en.wikipedia.org/wiki/TLS_termination_proxy" class="external-link" target="_blank">TLS Termination Proxy</a>**.
-It is a common practice to have one program/HTTP server running on the server (the machine, host, etc.) and managing all the HTTPS parts : sending the decrypted HTTP requests to the actual HTTP application running in the same server (the **FastAPI** application, in this case), take the HTTP response from the application, encrypt it using the appropriate certificate and sending it back to the client using HTTPS. This server is often called a <a href="https://en.wikipedia.org/wiki/TLS_termination_proxy" class="external-link" target="_blank">TLS Termination Proxy</a>.
+Some of the options you could use as a TLS Termination Proxy are:
+
+* Traefik (that can also handle certificate renewals)
+* Caddy (that can also handle certificate renewals)
+* Nginx
+* HAProxy
## Let's Encrypt
-Before Let's Encrypt, these HTTPS certificates were sold by trusted third-parties.
+Before Let's Encrypt, these **HTTPS certificates** were sold by trusted third parties.
The process to acquire one of these certificates used to be cumbersome, require quite some paperwork and the certificates were quite expensive.
-But then <a href="https://letsencrypt.org/" class="external-link" target="_blank">Let's Encrypt</a> was created.
+But then **<a href="https://letsencrypt.org/" class="external-link" target="_blank">Let's Encrypt</a>** was created.
-It is a project from the Linux Foundation. It provides HTTPS certificates for free. In an automated way. These certificates use all the standard cryptographic security, and are short lived (about 3 months), so the security is actually better because of their reduced lifespan.
+It is a project from the Linux Foundation. It provides **HTTPS certificates for free**, in an automated way. These certificates use all the standard cryptographic security, and are short-lived (about 3 months), so the **security is actually better** because of their reduced lifespan.
The domains are securely verified and the certificates are generated automatically. This also allows automating the renewal of these certificates.
-The idea is to automate the acquisition and renewal of these certificates, so that you can have secure HTTPS, for free, forever.
+The idea is to automate the acquisition and renewal of these certificates so that you can have **secure HTTPS, for free, forever**.
+
+## HTTPS for Developers
+
+Here's an example of how an HTTPS API could look like, step by step, paying attention mainly to the ideas important for developers.
+
+### Domain Name
+
+It would probably all start by you **acquiring** some **domain name**. Then, you would configure it in a DNS server (possibly your same cloud provider).
+
+You would probably get a cloud server (a virtual machine) or something similar, and it would have a <abbr title="That doesn't change">fixed</abbr> **public IP address**.
+
+In the DNS server(s) you would configure a record (an "`A record`") to point **your domain** to the public **IP address of your server**.
+
+You would probably do this just once, the first time, when setting everything up.
+
+!!! tip
+ This Domain Name part is way before HTTPS, but as everything depends on the domain and the IP address, it's worth mentioning it here.
+
+### DNS
+
+Now let's focus on all the actual HTTPS parts.
+
+First, the browser would check with the **DNS servers** what is the **IP for the domain**, in this case, `someapp.example.com`.
+
+The DNS servers would tell the browser to use some specific **IP address**. That would be the public IP address used by your server, that you configured in the DNS servers.
+
+<img src="/img/deployment/https/https01.svg">
+
+### TLS Handshake Start
+
+The browser would then communicate with that IP address on **port 443** (the HTTPS port).
+
+The first part of the communication is just to establish the connection between the client and the server and to decide the cryptographic keys they will use, etc.
+
+<img src="/img/deployment/https/https02.svg">
+
+This interaction between the client and the server to establish the TLS connection is called the **TLS handshake**.
+
+### TLS with SNI Extension
+
+**Only one process** in the server can be listening on a specific **port** in a specific **IP address**. There could be other processes listening on other ports in the same IP address, but only one for each combination of IP address and port.
+
+TLS (HTTPS) uses the specific port `443` by default. So that's the port we would need.
+
+As only one process can be listening on this port, the process that would do it would be the **TLS Termination Proxy**.
+
+The TLS Termination Proxy would have access to one or more **TLS certificates** (HTTPS certificates).
+
+Using the **SNI extension** discussed above, the TLS Termination Proxy would check which of the TLS (HTTPS) certificates available it should use for this connection, using the one that matches the domain expected by the client.
+
+In this case, it would use the certificate for `someapp.example.com`.
+
+<img src="/img/deployment/https/https03.svg">
+
+The client already **trusts** the entity that generated that TLS certificate (in this case Let's Encrypt, but we'll see about that later), so it can **verify** that the certificate is valid.
+
+Then, using the certificate, the client and the TLS Termination Proxy **decide how to encrypt** the rest of the **TCP communication**. This completes the **TLS Handshake** part.
+
+After this, the client and the server have an **encrypted TCP connection**, this is what TLS provides. And then they can use that connection to start the actual **HTTP communication**.
+
+And that's what **HTTPS** is, it's just plain **HTTP** inside a **secure TLS connection** instead of a pure (unencrypted) TCP connection.
+
+!!! tip
+ Notice that the encryption of the communication happens at the **TCP level**, not at the HTTP level.
+
+### HTTPS Request
+
+Now that the client and server (specifically the browser and the TLS Termination Proxy) have an **encrypted TCP connection**, they can start the **HTTP communication**.
+
+So, the client sends an **HTTPS request**. This is just an HTTP request through an encrypted TLS connection.
+
+<img src="/img/deployment/https/https04.svg">
+
+### Decrypt the Request
+
+The TLS Termination Proxy would use the encryption agreed to **decrypt the request**, and would transmit the **plain (decrypted) HTTP request** to the process running the application (for example a process with Uvicorn running the FastAPI application).
+
+<img src="/img/deployment/https/https05.svg">
+
+### HTTP Response
+
+The application would process the request and send a **plain (unencrypted) HTTP response** to the TLS Termination Proxy.
+
+<img src="/img/deployment/https/https06.svg">
+
+### HTTPS Response
+
+The TLS Termination Proxy would then **encrypt the response** using the cryptography agreed before (that started with the certificate for `someapp.example.com`), and send it back to the browser.
+
+Next, the browser would verify that the response is valid and encrypted with the right cryptographic key, etc. It would then **decrypt the response** and process it.
+
+<img src="/img/deployment/https/https07.svg">
+
+The client (browser) will know that the response comes from the correct server because it is using the cryptography they agreed using the **HTTPS certificate** before.
+
+### Multiple Applications
+
+In the same server (or servers), there could be **multiple applications**, for example, other API programs or a database.
+
+Only one process can be handling the specific IP and port (the TLS Termination Proxy in our example) but the other applications/processes can be running on the server(s) too, as long as they don't try to use the same **combination of public IP and port**.
+
+<img src="/img/deployment/https/https08.svg">
+
+That way, the TLS Termination Proxy could handle HTTPS and certificates for **multiple domains**, for multiple applications, and then transmit the requests to the right application in each case.
+
+### Certificate Renewal
+
+At some point in the future, each certificate would **expire** (about 3 months after acquiring it).
+
+And then, there would be another program (in some cases it's another program, in some cases it could be the same TLS Termination Proxy) that would talk to Let's Encrypt, and renew the certificate(s).
+
+<img src="/img/deployment/https/https.svg">
+
+The **TLS certificates** are **associated with a domain name**, not with an IP address.
+
+So, to renew the certificates, the renewal program needs to **prove** to the authority (Let's Encrypt) that it indeed **"owns" and controls that domain**.
+
+To do that, and to accommodate different application needs, there are several ways it can do it. Some popular ways are:
+
+* **Modify some DNS records**.
+ * For this, the renewal program needs to support the APIs of the DNS provider, so, depending on the DNS provider you are using, this might or might not be an option.
+* **Run as a server** (at least during the certificate acquisition process) on the public IP address associated with the domain.
+ * As we said above, only one process can be listening on a specific IP and port.
+ * This is one of the reasons why it's very useful when the same TLS Termination Proxy also takes care of the certificate renewal process.
+ * Otherwise, you might have to stop the TLS Termination Proxy momentarily, start the renewal program to acquire the certificates, then configure them with the TLS Termination Proxy, and then restart the TLS Termination Proxy. This is not ideal, as your app(s) will not be available during the time that the TLS Termination Proxy is off.
+
+All this renewal process, while still serving the app, is one of the main reasons why you would want to have a **separate system to handle HTTPS** with a TLS Termination Proxy instead of just using the TLS certificates with the application server directly (e.g. Uvicorn).
+
+## Recap
+
+Having **HTTPS** is very important, and quite **critical** in most cases. Most of the effort you as a developer have to put around HTTPS is just about **understanding these concepts** and how they work.
+
+But once you know the basic information of **HTTPS for developers** you can easily combine and configure different tools to help you manage everything in a simple way.
+
+In some of the next chapters I'll show you several concrete examples of how to set up **HTTPS** for **FastAPI** applications. 🔒
--- /dev/null
+<mxfile host="65bd71144e">
+ <diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">
+ <mxGraphModel dx="3321" dy="2867" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1920" pageHeight="1200" math="0" shadow="0">
+ <root>
+ <mxCell id="0"/>
+ <mxCell id="1" parent="0"/>
+ <mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" vertex="1" parent="1">
+ <mxGeometry x="450" y="-50" width="820" height="970" as="geometry"/>
+ </mxCell>
+ <mxCell id="3" value="<font face="Roboto"><span style="font-size: 24px">Server(s)</span></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" vertex="1" parent="1">
+ <mxGeometry x="710" y="-50" width="300" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;exitX=0.092;exitY=1.01;exitDx=0;exitDy=0;dashed=1;exitPerimeter=0;" edge="1" parent="1" target="14">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="800" y="521"/>
+ <mxPoint x="800" y="560"/>
+ </Array>
+ <mxPoint x="803" y="521" as="sourcePoint"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;" edge="1" parent="1" target="17">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="800" y="520" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="800" y="680"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="33" value="" style="group" vertex="1" connectable="0" parent="1">
+ <mxGeometry x="-140" y="-75" width="500" height="350" as="geometry"/>
+ </mxCell>
+ <mxCell id="29" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">https://someapp.example.com</font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" vertex="1" parent="33">
+ <mxGeometry x="60" y="27" width="380" height="250" as="geometry"/>
+ </mxCell>
+ <mxCell id="32" value="" style="pointerEvents=1;shadow=0;dashed=0;html=1;fillColor=#505050;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.devices.laptop;strokeColor=none;" vertex="1" parent="33">
+ <mxGeometry width="500" height="350" as="geometry"/>
+ </mxCell>
+ <mxCell id="90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" edge="1" parent="1" source="101" target="32">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="390" y="-190" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="390" y="-132"/>
+ <mxPoint x="280" y="-132"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="34" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">DNS Servers</font>" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" vertex="1" parent="1">
+ <mxGeometry x="-60" y="-540" width="330" height="260" as="geometry"/>
+ </mxCell>
+ <mxCell id="6" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
+ <mxGeometry x="495" y="320" width="355" height="440" as="geometry"/>
+ </mxCell>
+ <mxCell id="7" value="<font style="font-size: 24px" face="Roboto">TLS Termination Proxy<br></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" vertex="1" parent="1">
+ <mxGeometry x="525" y="330" width="280" height="40" as="geometry"/>
+ </mxCell>
+ <mxCell id="56" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;" edge="1" parent="1" source="55" target="49">
+ <mxGeometry relative="1" as="geometry"/>
+ </mxCell>
+ <mxCell id="58" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;startArrow=none;" edge="1" parent="1" source="102" target="57">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="410" y="400" as="targetPoint"/>
+ <mxPoint x="585" y="1050" as="sourcePoint"/>
+ <Array as="points"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="55" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal">Cert Renovation Program</font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
+ <mxGeometry x="515" y="780" width="300" height="100" as="geometry"/>
+ </mxCell>
+ <mxCell id="59" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;strokeWidth=3;startArrow=none;" edge="1" parent="1" source="103" target="55">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="875" y="1030" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="790" y="930"/>
+ <mxPoint x="790" y="930"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="57" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">Let's Encrypt</font>" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" vertex="1" parent="1">
+ <mxGeometry x="500" y="1150" width="330" height="260" as="geometry"/>
+ </mxCell>
+ <mxCell id="73" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" edge="1" parent="1" source="85" target="6">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="82" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" edge="1" parent="1" source="62" target="78">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="920" y="770"/>
+ <mxPoint x="920" y="770"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="62" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">FastAPI</font><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal"> app for: someapp.example.com</font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
+ <mxGeometry x="890" y="650" width="300" height="100" as="geometry"/>
+ </mxCell>
+ <mxCell id="65" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal">Another app</font><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal">: another.example.com</font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
+ <mxGeometry x="890" y="50" width="300" height="100" as="geometry"/>
+ </mxCell>
+ <mxCell id="66" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal">One more app</font><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal">: onemore.example.com</font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
+ <mxGeometry x="890" y="180" width="300" height="100" as="geometry"/>
+ </mxCell>
+ <mxCell id="78" value="<font face="Roboto"><span style="font-size: 24px ; font-weight: 400">A Database</span></font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
+ <mxGeometry x="890" y="780" width="300" height="100" as="geometry"/>
+ </mxCell>
+ <mxCell id="80" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;strokeWidth=3;endArrow=none;" edge="1" parent="1" source="57" target="103">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="480" y="1090" as="sourcePoint"/>
+ <mxPoint x="875" y="1110" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="915" y="1250"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="81" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;endArrow=none;" edge="1" parent="1" source="55" target="102">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="525" y="970" as="targetPoint"/>
+ <mxPoint x="550" y="880" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="525" y="930"/>
+ <mxPoint x="525" y="930"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="85" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Plain response from: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#9673a6;strokeWidth=3;fillColor=#e1d5e7;" vertex="1" parent="1">
+ <mxGeometry x="890" y="500" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="86" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" edge="1" parent="1" source="62" target="85">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="1030.0000000000005" y="649.9999999999995" as="sourcePoint"/>
+ <mxPoint x="850" y="540.0000000000005" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="1030" y="540"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="87" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" edge="1" parent="1" source="84" target="62">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="1240" y="390"/>
+ <mxPoint x="1240" y="700"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;dashed=1;" edge="1" parent="1" source="100" target="34">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="65.05882352941171" y="-220" as="sourcePoint"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="89" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;dashed=1;" edge="1" parent="1" source="32" target="100">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="110" y="-75" as="sourcePoint"/>
+ <mxPoint x="-4.941176470588289" y="-139.99999999999955" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="-5" y="-80"/>
+ <mxPoint x="-5" y="-80"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="91" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" edge="1" parent="1" source="34" target="101">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="105" y="-280" as="sourcePoint"/>
+ <mxPoint x="390" y="-260" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="390" y="-430"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="109" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" edge="1" parent="1" source="97" target="32">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="340" y="480"/>
+ <mxPoint x="340" y="480"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="36" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">Port 443 (HTTPS)</font>" style="ellipse;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" vertex="1" parent="1">
+ <mxGeometry x="330" y="680" width="170" height="120" as="geometry"/>
+ </mxCell>
+ <mxCell id="92" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" edge="1" parent="1" source="96" target="36">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="50" y="500" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="50" y="740"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="93" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" edge="1" parent="1" source="32" target="96">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="300" y="350" as="sourcePoint"/>
+ <mxPoint x="55" y="330" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="160" y="340"/>
+ <mxPoint x="160" y="340"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="96" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Encrypted request for: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" vertex="1" parent="1">
+ <mxGeometry x="-10" y="400" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="100" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Who is: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" vertex="1" parent="1">
+ <mxGeometry x="-110" y="-210" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="101" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">IP:</span><br style="font-family: &#34;roboto&#34;"><span style="font-family: &#34;roboto&#34; ; font-size: 24px">123.124.125.126</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" vertex="1" parent="1">
+ <mxGeometry x="270" y="-290" width="240" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="102" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Renew HTTPS cert for: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" vertex="1" parent="1">
+ <mxGeometry x="430" y="960" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="103" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">New HTTPS cert for: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" vertex="1" parent="1">
+ <mxGeometry x="750" y="1070" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="106" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;strokeWidth=3;" edge="1" parent="1" source="104" target="36">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="-40" y="770"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="104" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">TLS Handshake</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" vertex="1" parent="1">
+ <mxGeometry x="-110" y="300" width="230" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="107" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" edge="1" parent="1" source="32" target="104">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="-40" y="275" as="sourcePoint"/>
+ <mxPoint x="341.38784067832285" y="770" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="-40" y="290"/>
+ <mxPoint x="-40" y="290"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="97" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Encrypted response from: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#9673a6;strokeWidth=3;fillColor=#e1d5e7;" vertex="1" parent="1">
+ <mxGeometry x="90" y="500" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="110" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" edge="1" parent="1" source="36" target="97">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="415" y="680" as="sourcePoint"/>
+ <mxPoint x="110" y="275" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="245" y="710"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="49" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
+ <mxGeometry x="510" y="400" width="310" height="320" as="geometry"/>
+ </mxCell>
+ <mxCell id="50" value="<font style="font-size: 24px" face="Roboto">HTTPS certificates<br></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" vertex="1" parent="1">
+ <mxGeometry x="550.9" y="410" width="228.21" height="40" as="geometry"/>
+ </mxCell>
+ <mxCell id="51" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">someapp.example.com</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" vertex="1" parent="1">
+ <mxGeometry x="530" y="465" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="52" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">another.example.net</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" vertex="1" parent="1">
+ <mxGeometry x="530" y="545" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="53" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">onemore.example.org</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" vertex="1" parent="1">
+ <mxGeometry x="530" y="625" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="42" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">IP:</span><br><span style="font-size: 24px">123.124.125.126</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" vertex="1" parent="1">
+ <mxGeometry x="290" y="600" width="220" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="84" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Decrypted request for: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" vertex="1" parent="1">
+ <mxGeometry x="885" y="350" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="111" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" edge="1" parent="1" source="6" target="84">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="850" y="390" as="sourcePoint"/>
+ <mxPoint x="1190" y="700" as="targetPoint"/>
+ <Array as="points"/>
+ </mxGeometry>
+ </mxCell>
+ </root>
+ </mxGraphModel>
+ </diagram>
+</mxfile>
\ No newline at end of file
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1413px" height="1953px" viewBox="-0.5 -0.5 1413 1953" content="<mxfile><diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">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</diagram></mxfile>"><defs><style type="text/css">/* cyrillic-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu72xKOzY.woff2") format('woff2');
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu5mxKOzY.woff2") format('woff2');
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7mxKOzY.woff2") format('woff2');
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4WxKOzY.woff2") format('woff2');
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7WxKOzY.woff2") format('woff2');
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7GxKOzY.woff2") format('woff2');
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4mxK.woff2") format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+@import url("https://fonts.googleapis.com/css?family=Roboto+Mono%2C+mono");</style></defs><g><rect x="590" y="491" width="820" height="970" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="all"/><rect x="850" y="491" width="300" height="80" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 531px; margin-left: 851px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font face="Roboto"><span style="font-size: 24px">Server(s)</span></font></div></div></div></foreignObject><text x="1000" y="535" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">Server(s)</text></switch></g><rect x="60" y="493" width="380" height="250" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 378px; height: 1px; padding-top: 618px; margin-left: 61px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">https://someapp.example.com</font></div></div></div></foreignObject><text x="250" y="622" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">https://someapp.example.com</text></switch></g><path d="M 289.06 793.99 C 293.87 793.99 297.23 791.75 296.28 790.03 L 286.73 773.39 C 285.53 770.86 283.81 770.35 280.97 770.35 L 219.03 770.35 C 216.02 770.35 214.47 770.96 213.01 773.49 L 204.15 789.93 C 202.43 792.57 207.59 793.99 211.29 793.99 Z M 433.76 739.91 L 433.76 496.43 L 65.98 496.43 L 65.98 739.91 Z M 25.89 816 C 16.09 815.9 7.31 812.04 3.61 806.06 C 0 800.17 1.46 794.29 4.56 790.23 L 40.18 747.52 L 40.18 495.12 C 40.18 482.43 49.81 466 65.81 466 L 433.84 466 C 446.32 466 459.57 477.77 459.57 496.74 L 459.57 747.52 L 495.53 790.64 C 498.54 794.7 500 800.07 496.39 805.86 C 491.66 813.16 482.71 815.49 474.28 816 Z" fill="#505050" stroke="none" pointer-events="none"/><path d="M 530 331 L 530 409 L 420 409 L 420 455.9" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 420 462.65 L 415.5 453.65 L 420 455.9 L 424.5 453.65 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 162.5 66 C 96.5 66 80 131 132.8 144 C 80 172.6 139.4 235 182.3 209 C 212 261 311 261 344 209 C 410 209 410 157 368.75 131 C 410 79 344 27 286.25 53 C 245 14 179 14 162.5 66 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 328px; height: 1px; padding-top: 131px; margin-left: 81px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">DNS Servers</font></div></div></div></foreignObject><text x="245" y="135" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DNS Servers</text></switch></g><rect x="635" y="861" width="355" height="440" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 891px; margin-left: 666px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font style="font-size: 24px" face="Roboto">TLS Termination Proxy<br /></font></div></div></div></foreignObject><text x="805" y="895" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">TLS Termination Proxy
+</text></switch></g><path d="M 805 1321 L 805 1271.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 805 1264.35 L 809.5 1273.35 L 805 1271.1 L 800.5 1273.35 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 725 1581 L 725 1636 L 805 1636 L 805 1680.9" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 805 1687.65 L 800.5 1678.65 L 805 1680.9 L 809.5 1678.65 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><rect x="655" y="1321" width="300" height="100" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 1371px; margin-left: 656px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal">Cert Renovation Program</font></div></div></div></foreignObject><text x="805" y="1375" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Cert Renovation Program</text></switch></g><path d="M 930 1611 L 930 1471 L 930 1431.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 930 1424.35 L 934.5 1433.35 L 930 1431.1 L 925.5 1433.35 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 722.5 1756 C 656.5 1756 640 1821 692.8 1834 C 640 1862.6 699.4 1925 742.3 1899 C 772 1951 871 1951 904 1899 C 970 1899 970 1847 928.75 1821 C 970 1769 904 1717 846.25 1743 C 805 1704 739 1704 722.5 1756 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 328px; height: 1px; padding-top: 1821px; margin-left: 641px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">Let's Encrypt</font></div></div></div></foreignObject><text x="805" y="1825" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Let's Encrypt</text></switch></g><path d="M 1030 1081 L 1000.1 1081" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 993.35 1081 L 1002.35 1076.5 L 1000.1 1081 L 1002.35 1085.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 1060 1291 L 1060 1311 L 1060 1310.9" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 1060 1317.65 L 1055.5 1308.65 L 1060 1310.9 L 1064.5 1308.65 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><rect x="1030" y="1191" width="300" height="100" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 1241px; margin-left: 1031px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">FastAPI</font><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal"> app for: someapp.example.com</font></div></div></div></foreignObject><text x="1180" y="1245" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">FastAPI app for: someapp.example.com</text></switch></g><rect x="1030" y="591" width="300" height="100" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 641px; margin-left: 1031px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal">Another app</font><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal">: another.example.com</font></div></div></div></foreignObject><text x="1180" y="645" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Another app: another.example.com</text></switch></g><rect x="1030" y="721" width="300" height="100" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 771px; margin-left: 1031px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal">One more app</font><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal">: onemore.example.com</font></div></div></div></foreignObject><text x="1180" y="775" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">One more app: onemore.example.com</text></switch></g><rect x="1030" y="1321" width="300" height="100" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 1371px; margin-left: 1031px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto"><span style="font-size: 24px ; font-weight: 400">A Database</span></font></div></div></div></foreignObject><text x="1180" y="1375" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">A Database</text></switch></g><path d="M 965.55 1791 L 1055 1791 L 1055 1691" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 665 1421 L 665 1471 L 665 1501" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 1050 1041 L 1320 1041 L 1340 1081 L 1320 1121 L 1050 1121 L 1030 1081 Z" fill="#e1d5e7" stroke="#9673a6" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 1081px; margin-left: 1031px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Plain response from: someapp.example.com</span></div></div></div></foreignObject><text x="1185" y="1085" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Plain response from: someapp.example.com</text></switch></g><path d="M 1180 1191 L 1180 1121" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 1335 931 L 1380 931 L 1380 1241 L 1340.1 1241" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 1333.35 1241 L 1342.35 1236.5 L 1340.1 1241 L 1342.35 1245.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 185 331 L 185 296 L 245 296 L 245 271.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 245 264.35 L 249.5 273.35 L 245 271.1 L 240.5 273.35 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 135 466 L 135 461 L 135 411" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 408.04 111 L 530 111 L 530 251" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 480 1041 L 480 1021 L 480 826.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 480 819.35 L 484.5 828.35 L 480 826.1 L 475.5 828.35 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><ellipse cx="555" cy="1281" rx="85" ry="60.00000000000001" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 1281px; margin-left: 471px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">Port 443 (HTTPS)</font></div></div></div></foreignObject><text x="555" y="1285" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Port 443 (HTTPS)</text></switch></g><path d="M 190 1021 L 190 1281 L 459.9 1281" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 466.65 1281 L 457.65 1285.5 L 459.9 1281 L 457.65 1276.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 300 816 L 300 881 L 300 941" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 150 941 L 420 941 L 440 981 L 420 1021 L 150 1021 L 130 981 Z" fill="#d5e8d4" stroke="#82b366" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 981px; margin-left: 131px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Encrypted request for: someapp.example.com</span></div></div></div></foreignObject><text x="285" y="985" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Encrypted request for: someapp.example.com</text></switch></g><path d="M 50 331 L 320 331 L 340 371 L 320 411 L 50 411 L 30 371 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 371px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Who is: someapp.example.com</span></div></div></div></foreignObject><text x="185" y="375" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Who is: someapp.example.com</text></switch></g><path d="M 430 251 L 630 251 L 650 291 L 630 331 L 430 331 L 410 291 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 238px; height: 1px; padding-top: 291px; margin-left: 411px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">IP:</span><br style="font-family: "roboto"" /><span style="font-family: "roboto" ; font-size: 24px">123.124.125.126</span></div></div></div></foreignObject><text x="530" y="295" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">IP:...</text></switch></g><path d="M 590 1501 L 860 1501 L 880 1541 L 860 1581 L 590 1581 L 570 1541 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 1541px; margin-left: 571px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Renew HTTPS cert for: someapp.example.com</span></div></div></div></foreignObject><text x="725" y="1545" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Renew HTTPS cert for: someapp.example.com</text></switch></g><path d="M 910 1611 L 1180 1611 L 1200 1651 L 1180 1691 L 910 1691 L 890 1651 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 1651px; margin-left: 891px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">New HTTPS cert for: someapp.example.com</span></div></div></div></foreignObject><text x="1045" y="1655" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">New HTTPS cert for: someapp.example.com</text></switch></g><path d="M 100 921 L 100 1311 L 481.39 1311" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 50 841 L 240 841 L 260 881 L 240 921 L 50 921 L 30 881 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 881px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">TLS Handshake</span></div></div></div></foreignObject><text x="145" y="885" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">TLS Handshake</text></switch></g><path d="M 100 816 L 100 831 L 100 841" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 250 1041 L 520 1041 L 540 1081 L 520 1121 L 250 1121 L 230 1081 Z" fill="#e1d5e7" stroke="#9673a6" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 1081px; margin-left: 231px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Encrypted response from: someapp.example.com</span></div></div></div></foreignObject><text x="385" y="1085" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Encrypted response from: someapp.example.com</text></switch></g><path d="M 481.39 1251 L 385 1251 L 385 1121" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><rect x="650" y="941" width="310" height="320" fill="#fff2cc" stroke="#d6b656" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 226px; height: 1px; padding-top: 971px; margin-left: 692px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font style="font-size: 24px" face="Roboto">HTTPS certificates<br /></font></div></div></div></foreignObject><text x="805" y="975" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">HTTPS certificates
+</text></switch></g><rect x="670" y="1006" width="270" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1041px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">someapp.example.com</span><br /></font></div></div></div></foreignObject><text x="805" y="1045" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">someapp.example.com
+</text></switch></g><rect x="670" y="1086" width="270" height="70" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1121px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">another.example.net</span><br /></font></div></div></div></foreignObject><text x="805" y="1125" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">another.example.net
+</text></switch></g><rect x="670" y="1166" width="270" height="70" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1201px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">onemore.example.org</span><br /></font></div></div></div></foreignObject><text x="805" y="1205" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">onemore.example.org
+</text></switch></g><rect x="430" y="1141" width="220" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 1176px; margin-left: 431px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">IP:</span><br /><span style="font-size: 24px">123.124.125.126</span><br /></font></div></div></div></foreignObject><text x="540" y="1180" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">IP:...</text></switch></g><path d="M 1045 891 L 1315 891 L 1335 931 L 1315 971 L 1045 971 L 1025 931 Z" fill="#d5e8d4" stroke="#82b366" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 931px; margin-left: 1026px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Decrypted request for: someapp.example.com</span></div></div></div></foreignObject><text x="1180" y="935" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Decrypted request for: someapp.example.com</text></switch></g><path d="M 990 1081 L 1010 1081 L 1010 931 L 1025 931" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file
--- /dev/null
+<mxfile host="65bd71144e">
+ <diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">
+ <mxGraphModel dx="2738" dy="2173" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1920" pageHeight="1200" math="0" shadow="0">
+ <root>
+ <mxCell id="0"/>
+ <mxCell id="1" parent="0"/>
+ <mxCell id="8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;exitX=0.092;exitY=1.01;exitDx=0;exitDy=0;dashed=1;exitPerimeter=0;" parent="1" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="800" y="521"/>
+ <mxPoint x="800" y="560"/>
+ </Array>
+ <mxPoint x="803" y="521" as="sourcePoint"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;" parent="1" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="800" y="520" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="800" y="680"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="33" value="" style="group" parent="1" vertex="1" connectable="0">
+ <mxGeometry x="-140" y="-75" width="500" height="350" as="geometry"/>
+ </mxCell>
+ <mxCell id="29" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">https://someapp.example.com</font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="33" vertex="1">
+ <mxGeometry x="60" y="27" width="380" height="250" as="geometry"/>
+ </mxCell>
+ <mxCell id="32" value="" style="pointerEvents=1;shadow=0;dashed=0;html=1;fillColor=#505050;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.devices.laptop;strokeColor=none;" parent="33" vertex="1">
+ <mxGeometry width="500" height="350" as="geometry"/>
+ </mxCell>
+ <mxCell id="90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="101" target="32" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="390" y="-190" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="390" y="-132"/>
+ <mxPoint x="280" y="-132"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="34" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">DNS Servers</font>" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-60" y="-540" width="330" height="260" as="geometry"/>
+ </mxCell>
+ <mxCell id="88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="100" target="34" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="65.05882352941171" y="-220" as="sourcePoint"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="89" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="32" target="100" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="110" y="-75" as="sourcePoint"/>
+ <mxPoint x="-4.941176470588289" y="-139.99999999999955" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="-10" y="-120"/>
+ <mxPoint x="-10" y="-120"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="91" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="34" target="101" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="105" y="-280" as="sourcePoint"/>
+ <mxPoint x="390" y="-260" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="390" y="-430"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="100" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Who is: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-110" y="-210" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="101" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">IP:</span><br style="font-family: &#34;roboto&#34;"><span style="font-family: &#34;roboto&#34; ; font-size: 24px">123.124.125.126</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="270" y="-290" width="240" height="80" as="geometry"/>
+ </mxCell>
+ </root>
+ </mxGraphModel>
+ </diagram>
+</mxfile>
\ No newline at end of file
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="652px" height="817px" viewBox="-0.5 -0.5 652 817" content="<mxfile><diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">3Vlbc6M2FP41eTQDAl94jJ1425ndTqZ+2PZRARnUyogV8q2/vhKSAHFJSOx4M+uMY+vT0e2c71yE7/zV7vSFwTz9RmNE7oAbn+78hzsAwNxfiA+JnDXizX2FJAzHCvNqYIP/Qxp0NbrHMSosQU4p4Ti3wYhmGYq4hUHG6NEW21Jir5rDBHWATQRJF/2OY55qNARu3fEbwklqlgau7tlBI62BIoUxPTYg//HOXzFKufq2O60QkeozilHj1gO91c4YyviYAdoUBT+bw6FYnFU3KeMpTWgGyWONLhndZzGSE7iiVct8pTQXoCfAfxDnZ204uOdUQCnfEd1bcEb/rVTnCwSdMP9LTui4IdDtv6W043q6+XDSC5aNs27EsEjLrRixJ8TwDnHEtEBXIVpH8pwNQKvnC6JiNDsLAYYI5Phg2xxq6iSVnB56zxg8NwRyijNeNGZ+koAQ0G6wMJTQTjDVK6zHys8sw4ovagdDo/3e1artFnTPIqRHWdM2dFJDJYv6GRV+DkZZxLgVCUZY2R2l90vZNFu8wI53GNXX9DlAste66Jg5EVbMBzV9QIyjU194hs9mBrffBnrUxAvsQ07mU9U+1kF4ahSRNuKvP21pvWk4i+ovqMAQ21LBjIglllta2mILI9Ux+7GX8Xv5J32mgqlVW+Y8yOFEyk8KFlnCKecyfd3LDYG1FCmchNKEIJjjwonoTsBRIUTWW7jDRCqhZ4HaIAZUq5WeIyZ3QZCfmiNmSXf1QqgH5rmDTnCXE6QWV2fVezPjOiywXfmYYo42uVLMUZQDttvKmUxk6Lpx0Ou5FRXbhBokzsymDZh3WOMvelgDrsEaH7zuOKVzI/Z4QNLHtSZMXWAlObelPkzIihLKynkEy+WfwAl8RuSJFphjmom+CGVlQlxKnWFRx3xtCQgWcWHiWuCe4ER2cBl/l3TPCc7Qqiqn5CJQi1STiy3n8kS7UyLrPodutzhCTowO4qNwCMzVbMrIZt8ZzdCldr6J/4dux3A3SGxWGis4ZPxeFrC14kpsjeW2VXWUxUYiIrAocKRALdKfLAejtkpPpvo2tTZkCTKqBbdJpH7Yiv1e+DGZtLuQPuJQYQYWLw+4PPcGv3LiefhjI/o2iAk/L8YmGaEgcddDjaATEbqPX084duwRMdMtX29zivGZZ9JKPZOpKWGaycfvSz6zK4SsxU+63X1QlBpX0tshy+0JWcFtQtZs6rjTxUJkHxAGnjf3bCqAkVeBd0SMRV+p+umJoCWuzwKTo5okqJjx0SzwvIFLyytm70w0CZySRrNgXtLKGLlOO6ETNl7T1jrq9Bfnx0n7PF77CdMbB1ycH0MTln8u2y+p1EZSfxzbgz623+h5h+dOW1FuMS7KvV6HdTLilQjdWSjwr8vPKtT0FHBFDrPh2smUW7J6El3iLl6SwPeDkrC6BLNhKVr+H1V9fU+p3Kkq/9yXr/1qrwMVmanDUjE2kXfKZd54EKvR6tksGPFoAJ+QefT/Rm94Q33Wic7VbwzNAs3rKdDavH5PfVa55Sdkxu9PZe+A9RX8zK69w/YuPos2POA7HgjEeyres1/bK8C87RRh1ylAcB2nEM361y4VXetfDf3H/wE=</diagram></mxfile>"><defs><style type="text/css">/* cyrillic-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu72xKOzY.woff2") format('woff2');
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu5mxKOzY.woff2") format('woff2');
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7mxKOzY.woff2") format('woff2');
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4WxKOzY.woff2") format('woff2');
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7WxKOzY.woff2") format('woff2');
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7GxKOzY.woff2") format('woff2');
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4mxK.woff2") format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+</style></defs><g><rect x="60" y="493" width="380" height="250" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 378px; height: 1px; padding-top: 618px; margin-left: 61px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">https://someapp.example.com</font></div></div></div></foreignObject><text x="250" y="622" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">https://someapp.example.com</text></switch></g><path d="M 289.06 793.99 C 293.87 793.99 297.23 791.75 296.28 790.03 L 286.73 773.39 C 285.53 770.86 283.81 770.35 280.97 770.35 L 219.03 770.35 C 216.02 770.35 214.47 770.96 213.01 773.49 L 204.15 789.93 C 202.43 792.57 207.59 793.99 211.29 793.99 Z M 433.76 739.91 L 433.76 496.43 L 65.98 496.43 L 65.98 739.91 Z M 25.89 816 C 16.09 815.9 7.31 812.04 3.61 806.06 C 0 800.17 1.46 794.29 4.56 790.23 L 40.18 747.52 L 40.18 495.12 C 40.18 482.43 49.81 466 65.81 466 L 433.84 466 C 446.32 466 459.57 477.77 459.57 496.74 L 459.57 747.52 L 495.53 790.64 C 498.54 794.7 500 800.07 496.39 805.86 C 491.66 813.16 482.71 815.49 474.28 816 Z" fill="#505050" stroke="none" pointer-events="none"/><path d="M 530 331 L 530 409 L 420 409 L 420 455.9" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 420 462.65 L 415.5 453.65 L 420 455.9 L 424.5 453.65 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 162.5 66 C 96.5 66 80 131 132.8 144 C 80 172.6 139.4 235 182.3 209 C 212 261 311 261 344 209 C 410 209 410 157 368.75 131 C 410 79 344 27 286.25 53 C 245 14 179 14 162.5 66 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 328px; height: 1px; padding-top: 131px; margin-left: 81px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">DNS Servers</font></div></div></div></foreignObject><text x="245" y="135" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DNS Servers</text></switch></g><path d="M 185 331 L 185 296 L 245 296 L 245 271.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 245 264.35 L 249.5 273.35 L 245 271.1 L 240.5 273.35 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 130 466 L 130 421 L 130 411" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 408.04 111 L 530 111 L 530 251" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 50 331 L 320 331 L 340 371 L 320 411 L 50 411 L 30 371 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 371px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Who is: someapp.example.com</span></div></div></div></foreignObject><text x="185" y="375" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Who is: someapp.example.com</text></switch></g><path d="M 430 251 L 630 251 L 650 291 L 630 331 L 430 331 L 410 291 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 238px; height: 1px; padding-top: 291px; margin-left: 411px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">IP:</span><br style="font-family: "roboto"" /><span style="font-family: "roboto" ; font-size: 24px">123.124.125.126</span></div></div></div></foreignObject><text x="530" y="295" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">IP:...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file
--- /dev/null
+<mxfile host="65bd71144e">
+ <diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">
+ <mxGraphModel dx="2481" dy="1867" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1920" pageHeight="1200" math="0" shadow="0">
+ <root>
+ <mxCell id="0"/>
+ <mxCell id="1" parent="0"/>
+ <mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="1" vertex="1">
+ <mxGeometry x="450" y="-50" width="820" height="970" as="geometry"/>
+ </mxCell>
+ <mxCell id="3" value="<font face="Roboto"><span style="font-size: 24px">Server(s)</span></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
+ <mxGeometry x="710" y="-50" width="300" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;exitX=0.092;exitY=1.01;exitDx=0;exitDy=0;dashed=1;exitPerimeter=0;" parent="1" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="800" y="521"/>
+ <mxPoint x="800" y="560"/>
+ </Array>
+ <mxPoint x="803" y="521" as="sourcePoint"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;" parent="1" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="800" y="520" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="800" y="680"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="33" value="" style="group" parent="1" vertex="1" connectable="0">
+ <mxGeometry x="-140" y="-75" width="500" height="350" as="geometry"/>
+ </mxCell>
+ <mxCell id="29" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">https://someapp.example.com</font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="33" vertex="1">
+ <mxGeometry x="60" y="27" width="380" height="250" as="geometry"/>
+ </mxCell>
+ <mxCell id="32" value="" style="pointerEvents=1;shadow=0;dashed=0;html=1;fillColor=#505050;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.devices.laptop;strokeColor=none;" parent="33" vertex="1">
+ <mxGeometry width="500" height="350" as="geometry"/>
+ </mxCell>
+ <mxCell id="90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="101" target="32" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="390" y="-190" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="390" y="-132"/>
+ <mxPoint x="280" y="-132"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="34" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">DNS Servers</font>" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-60" y="-540" width="330" height="260" as="geometry"/>
+ </mxCell>
+ <mxCell id="88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="100" target="34" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="65.05882352941171" y="-220" as="sourcePoint"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="89" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="32" target="100" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="110" y="-75" as="sourcePoint"/>
+ <mxPoint x="-4.941176470588289" y="-139.99999999999955" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="-5" y="-90"/>
+ <mxPoint x="-5" y="-90"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="91" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="34" target="101" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="105" y="-280" as="sourcePoint"/>
+ <mxPoint x="390" y="-260" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="390" y="-430"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="36" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">Port 443 (HTTPS)</font>" style="ellipse;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="330" y="680" width="170" height="120" as="geometry"/>
+ </mxCell>
+ <mxCell id="42" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">IP:</span><br><span style="font-size: 24px">123.124.125.126</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="290" y="600" width="220" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="100" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Who is: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-110" y="-210" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="101" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">IP:</span><br style="font-family: &#34;roboto&#34;"><span style="font-family: &#34;roboto&#34; ; font-size: 24px">123.124.125.126</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="270" y="-290" width="240" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="106" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;strokeWidth=3;" parent="1" source="104" target="36" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="-40" y="770"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="104" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">TLS Handshake</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-110" y="300" width="230" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="107" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="104" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="-40" y="275" as="sourcePoint"/>
+ <mxPoint x="341.38784067832285" y="770" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="-40" y="290"/>
+ <mxPoint x="-40" y="290"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ </root>
+ </mxGraphModel>
+ </diagram>
+</mxfile>
\ No newline at end of file
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1413px" height="1464px" viewBox="-0.5 -0.5 1413 1464" content="<mxfile><diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">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</diagram></mxfile>"><defs><style type="text/css">/* cyrillic-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu72xKOzY.woff2") format('woff2');
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu5mxKOzY.woff2") format('woff2');
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7mxKOzY.woff2") format('woff2');
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4WxKOzY.woff2") format('woff2');
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7WxKOzY.woff2") format('woff2');
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7GxKOzY.woff2") format('woff2');
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4mxK.woff2") format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+</style></defs><g><rect x="590" y="491" width="820" height="970" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="all"/><rect x="850" y="491" width="300" height="80" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 531px; margin-left: 851px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font face="Roboto"><span style="font-size: 24px">Server(s)</span></font></div></div></div></foreignObject><text x="1000" y="535" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">Server(s)</text></switch></g><rect x="60" y="493" width="380" height="250" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 378px; height: 1px; padding-top: 618px; margin-left: 61px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">https://someapp.example.com</font></div></div></div></foreignObject><text x="250" y="622" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">https://someapp.example.com</text></switch></g><path d="M 289.06 793.99 C 293.87 793.99 297.23 791.75 296.28 790.03 L 286.73 773.39 C 285.53 770.86 283.81 770.35 280.97 770.35 L 219.03 770.35 C 216.02 770.35 214.47 770.96 213.01 773.49 L 204.15 789.93 C 202.43 792.57 207.59 793.99 211.29 793.99 Z M 433.76 739.91 L 433.76 496.43 L 65.98 496.43 L 65.98 739.91 Z M 25.89 816 C 16.09 815.9 7.31 812.04 3.61 806.06 C 0 800.17 1.46 794.29 4.56 790.23 L 40.18 747.52 L 40.18 495.12 C 40.18 482.43 49.81 466 65.81 466 L 433.84 466 C 446.32 466 459.57 477.77 459.57 496.74 L 459.57 747.52 L 495.53 790.64 C 498.54 794.7 500 800.07 496.39 805.86 C 491.66 813.16 482.71 815.49 474.28 816 Z" fill="#505050" stroke="none" pointer-events="none"/><path d="M 530.03 331 L 530.03 409.03 L 420.03 409.03 L 420.03 455.9" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 420.03 462.65 L 415.53 453.65 L 420.03 455.9 L 424.53 453.65 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 162.5 66 C 96.5 66 80 131 132.8 144 C 80 172.6 139.4 235 182.3 209 C 212 261 311 261 344 209 C 410 209 410 157 368.75 131 C 410 79 344 27 286.25 53 C 245 14 179 14 162.5 66 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 328px; height: 1px; padding-top: 131px; margin-left: 81px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">DNS Servers</font></div></div></div></foreignObject><text x="245" y="135" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DNS Servers</text></switch></g><path d="M 185 331 L 185 296 L 245 296 L 245 271.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 245 264.35 L 249.5 273.35 L 245 271.1 L 240.5 273.35 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 135 466 L 135 451.03 L 135 411" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 408.04 111.03 L 530.03 111.03 L 530.03 251" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><ellipse cx="555" cy="1281" rx="85" ry="60" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 1281px; margin-left: 471px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">Port 443 (HTTPS)</font></div></div></div></foreignObject><text x="555" y="1285" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Port 443 (HTTPS)</text></switch></g><rect x="430" y="1141" width="220" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 1176px; margin-left: 431px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">IP:</span><br /><span style="font-size: 24px">123.124.125.126</span><br /></font></div></div></div></foreignObject><text x="540" y="1180" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">IP:...</text></switch></g><path d="M 50 331 L 320 331 L 340 371 L 320 411 L 50 411 L 30 371 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 371px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Who is: someapp.example.com</span></div></div></div></foreignObject><text x="185" y="375" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Who is: someapp.example.com</text></switch></g><path d="M 430 251 L 630 251 L 650 291 L 630 331 L 430 331 L 410 291 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 238px; height: 1px; padding-top: 291px; margin-left: 411px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">IP:</span><br style="font-family: "roboto"" /><span style="font-family: "roboto" ; font-size: 24px">123.124.125.126</span></div></div></div></foreignObject><text x="530" y="295" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">IP:...</text></switch></g><path d="M 100.03 921 L 100.03 1311.03 L 481.41 1311.03" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 50 841 L 240 841 L 260 881 L 240 921 L 50 921 L 30 881 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 881px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">TLS Handshake</span></div></div></div></foreignObject><text x="145" y="885" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">TLS Handshake</text></switch></g><path d="M 100.03 816 L 100.03 831.03 L 100.03 841" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file
--- /dev/null
+<mxfile host="65bd71144e">
+ <diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">
+ <mxGraphModel dx="2481" dy="1867" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1920" pageHeight="1200" math="0" shadow="0">
+ <root>
+ <mxCell id="0"/>
+ <mxCell id="1" parent="0"/>
+ <mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="1" vertex="1">
+ <mxGeometry x="450" y="-50" width="820" height="970" as="geometry"/>
+ </mxCell>
+ <mxCell id="3" value="<font face="Roboto"><span style="font-size: 24px">Server(s)</span></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
+ <mxGeometry x="710" y="-50" width="300" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;exitX=0.092;exitY=1.01;exitDx=0;exitDy=0;dashed=1;exitPerimeter=0;" parent="1" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="800" y="521"/>
+ <mxPoint x="800" y="560"/>
+ </Array>
+ <mxPoint x="803" y="521" as="sourcePoint"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;" parent="1" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="800" y="520" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="800" y="680"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="33" value="" style="group" parent="1" vertex="1" connectable="0">
+ <mxGeometry x="-140" y="-75" width="500" height="350" as="geometry"/>
+ </mxCell>
+ <mxCell id="29" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">https://someapp.example.com</font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="33" vertex="1">
+ <mxGeometry x="60" y="27" width="380" height="250" as="geometry"/>
+ </mxCell>
+ <mxCell id="32" value="" style="pointerEvents=1;shadow=0;dashed=0;html=1;fillColor=#505050;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.devices.laptop;strokeColor=none;" parent="33" vertex="1">
+ <mxGeometry width="500" height="350" as="geometry"/>
+ </mxCell>
+ <mxCell id="90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="101" target="32" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="390" y="-190" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="390" y="-132"/>
+ <mxPoint x="280" y="-132"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="34" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">DNS Servers</font>" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-60" y="-540" width="330" height="260" as="geometry"/>
+ </mxCell>
+ <mxCell id="6" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+ <mxGeometry x="495" y="320" width="355" height="440" as="geometry"/>
+ </mxCell>
+ <mxCell id="7" value="<font style="font-size: 24px" face="Roboto">TLS Termination Proxy<br></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
+ <mxGeometry x="525" y="330" width="280" height="40" as="geometry"/>
+ </mxCell>
+ <mxCell id="88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="100" target="34" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="65.05882352941171" y="-220" as="sourcePoint"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="89" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="32" target="100" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="110" y="-75" as="sourcePoint"/>
+ <mxPoint x="-4.941176470588289" y="-139.99999999999955" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="-5" y="-90"/>
+ <mxPoint x="-5" y="-90"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="91" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="34" target="101" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="105" y="-280" as="sourcePoint"/>
+ <mxPoint x="390" y="-260" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="390" y="-430"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="36" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">Port 443 (HTTPS)</font>" style="ellipse;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="330" y="680" width="170" height="120" as="geometry"/>
+ </mxCell>
+ <mxCell id="100" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Who is: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-110" y="-210" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="101" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">IP:</span><br style="font-family: &#34;roboto&#34;"><span style="font-family: &#34;roboto&#34; ; font-size: 24px">123.124.125.126</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="270" y="-290" width="240" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="106" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;strokeWidth=3;" parent="1" source="104" target="36" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="-40" y="770"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="104" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">TLS Handshake</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-110" y="300" width="230" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="107" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="104" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="-40" y="275" as="sourcePoint"/>
+ <mxPoint x="341.38784067832285" y="770" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="-40" y="290"/>
+ <mxPoint x="-40" y="290"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="49" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+ <mxGeometry x="510" y="400" width="310" height="320" as="geometry"/>
+ </mxCell>
+ <mxCell id="50" value="<font style="font-size: 24px" face="Roboto">HTTPS certificates<br></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
+ <mxGeometry x="550.9" y="410" width="228.21" height="40" as="geometry"/>
+ </mxCell>
+ <mxCell id="51" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">someapp.example.com</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="530" y="465" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="52" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">another.example.net</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
+ <mxGeometry x="530" y="545" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="53" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">onemore.example.org</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
+ <mxGeometry x="530" y="625" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="42" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">IP:</span><br><span style="font-size: 24px">123.124.125.126</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="290" y="600" width="220" height="70" as="geometry"/>
+ </mxCell>
+ </root>
+ </mxGraphModel>
+ </diagram>
+</mxfile>
\ No newline at end of file
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1413px" height="1464px" viewBox="-0.5 -0.5 1413 1464" content="<mxfile><diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">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</diagram></mxfile>"><defs><style type="text/css">/* cyrillic-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu72xKOzY.woff2") format('woff2');
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu5mxKOzY.woff2") format('woff2');
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7mxKOzY.woff2") format('woff2');
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4WxKOzY.woff2") format('woff2');
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7WxKOzY.woff2") format('woff2');
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7GxKOzY.woff2") format('woff2');
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4mxK.woff2") format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+</style></defs><g><rect x="590" y="491" width="820" height="970" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="all"/><rect x="850" y="491" width="300" height="80" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 531px; margin-left: 851px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font face="Roboto"><span style="font-size: 24px">Server(s)</span></font></div></div></div></foreignObject><text x="1000" y="535" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">Server(s)</text></switch></g><rect x="60" y="493" width="380" height="250" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 378px; height: 1px; padding-top: 618px; margin-left: 61px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">https://someapp.example.com</font></div></div></div></foreignObject><text x="250" y="622" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">https://someapp.example.com</text></switch></g><path d="M 289.06 793.99 C 293.87 793.99 297.23 791.75 296.28 790.03 L 286.73 773.39 C 285.53 770.86 283.81 770.35 280.97 770.35 L 219.03 770.35 C 216.02 770.35 214.47 770.96 213.01 773.49 L 204.15 789.93 C 202.43 792.57 207.59 793.99 211.29 793.99 Z M 433.76 739.91 L 433.76 496.43 L 65.98 496.43 L 65.98 739.91 Z M 25.89 816 C 16.09 815.9 7.31 812.04 3.61 806.06 C 0 800.17 1.46 794.29 4.56 790.23 L 40.18 747.52 L 40.18 495.12 C 40.18 482.43 49.81 466 65.81 466 L 433.84 466 C 446.32 466 459.57 477.77 459.57 496.74 L 459.57 747.52 L 495.53 790.64 C 498.54 794.7 500 800.07 496.39 805.86 C 491.66 813.16 482.71 815.49 474.28 816 Z" fill="#505050" stroke="none" pointer-events="none"/><path d="M 530.03 331 L 530.03 409.03 L 420.03 409.03 L 420.03 455.9" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 420.03 462.65 L 415.53 453.65 L 420.03 455.9 L 424.53 453.65 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 162.5 66 C 96.5 66 80 131 132.8 144 C 80 172.6 139.4 235 182.3 209 C 212 261 311 261 344 209 C 410 209 410 157 368.75 131 C 410 79 344 27 286.25 53 C 245 14 179 14 162.5 66 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 328px; height: 1px; padding-top: 131px; margin-left: 81px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">DNS Servers</font></div></div></div></foreignObject><text x="245" y="135" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DNS Servers</text></switch></g><rect x="635" y="861" width="355" height="440" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 891px; margin-left: 666px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font style="font-size: 24px" face="Roboto">TLS Termination Proxy<br /></font></div></div></div></foreignObject><text x="805" y="895" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">TLS Termination Proxy
+</text></switch></g><path d="M 185 331 L 185 296 L 245 296 L 245 271.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 245 264.35 L 249.5 273.35 L 245 271.1 L 240.5 273.35 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 135 466 L 135 451.03 L 135 411" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 408.04 111.03 L 530.03 111.03 L 530.03 251" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><ellipse cx="555" cy="1281" rx="85" ry="60" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 1281px; margin-left: 471px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">Port 443 (HTTPS)</font></div></div></div></foreignObject><text x="555" y="1285" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Port 443 (HTTPS)</text></switch></g><path d="M 50 331 L 320 331 L 340 371 L 320 411 L 50 411 L 30 371 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 371px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Who is: someapp.example.com</span></div></div></div></foreignObject><text x="185" y="375" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Who is: someapp.example.com</text></switch></g><path d="M 430 251 L 630 251 L 650 291 L 630 331 L 430 331 L 410 291 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 238px; height: 1px; padding-top: 291px; margin-left: 411px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">IP:</span><br style="font-family: "roboto"" /><span style="font-family: "roboto" ; font-size: 24px">123.124.125.126</span></div></div></div></foreignObject><text x="530" y="295" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">IP:...</text></switch></g><path d="M 100.03 921 L 100.03 1311.03 L 481.41 1311.03" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 50 841 L 240 841 L 260 881 L 240 921 L 50 921 L 30 881 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 881px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">TLS Handshake</span></div></div></div></foreignObject><text x="145" y="885" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">TLS Handshake</text></switch></g><path d="M 100.03 816 L 100.03 831.03 L 100.03 841" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><rect x="650" y="941" width="310" height="320" fill="#fff2cc" stroke="#d6b656" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 226px; height: 1px; padding-top: 971px; margin-left: 692px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font style="font-size: 24px" face="Roboto">HTTPS certificates<br /></font></div></div></div></foreignObject><text x="805" y="975" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">HTTPS certificates
+</text></switch></g><rect x="670" y="1006" width="270" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1041px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">someapp.example.com</span><br /></font></div></div></div></foreignObject><text x="805" y="1045" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">someapp.example.com
+</text></switch></g><rect x="670" y="1086" width="270" height="70" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1121px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">another.example.net</span><br /></font></div></div></div></foreignObject><text x="805" y="1125" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">another.example.net
+</text></switch></g><rect x="670" y="1166" width="270" height="70" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1201px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">onemore.example.org</span><br /></font></div></div></div></foreignObject><text x="805" y="1205" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">onemore.example.org
+</text></switch></g><rect x="430" y="1141" width="220" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 1176px; margin-left: 431px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">IP:</span><br /><span style="font-size: 24px">123.124.125.126</span><br /></font></div></div></div></foreignObject><text x="540" y="1180" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">IP:...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file
--- /dev/null
+<mxfile host="65bd71144e">
+ <diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">
+ <mxGraphModel dx="2312" dy="1667" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1920" pageHeight="1200" math="0" shadow="0">
+ <root>
+ <mxCell id="0"/>
+ <mxCell id="1" parent="0"/>
+ <mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="1" vertex="1">
+ <mxGeometry x="450" y="-50" width="820" height="970" as="geometry"/>
+ </mxCell>
+ <mxCell id="3" value="<font face="Roboto"><span style="font-size: 24px">Server(s)</span></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
+ <mxGeometry x="710" y="-50" width="300" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;exitX=0.092;exitY=1.01;exitDx=0;exitDy=0;dashed=1;exitPerimeter=0;" parent="1" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="800" y="521"/>
+ <mxPoint x="800" y="560"/>
+ </Array>
+ <mxPoint x="803" y="521" as="sourcePoint"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;" parent="1" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="800" y="520" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="800" y="680"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="33" value="" style="group" parent="1" vertex="1" connectable="0">
+ <mxGeometry x="-140" y="-75" width="500" height="350" as="geometry"/>
+ </mxCell>
+ <mxCell id="29" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">https://someapp.example.com</font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="33" vertex="1">
+ <mxGeometry x="60" y="27" width="380" height="250" as="geometry"/>
+ </mxCell>
+ <mxCell id="32" value="" style="pointerEvents=1;shadow=0;dashed=0;html=1;fillColor=#505050;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.devices.laptop;strokeColor=none;" parent="33" vertex="1">
+ <mxGeometry width="500" height="350" as="geometry"/>
+ </mxCell>
+ <mxCell id="90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="101" target="32" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="390" y="-190" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="390" y="-132"/>
+ <mxPoint x="280" y="-132"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="34" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">DNS Servers</font>" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-60" y="-540" width="330" height="260" as="geometry"/>
+ </mxCell>
+ <mxCell id="6" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+ <mxGeometry x="495" y="320" width="355" height="440" as="geometry"/>
+ </mxCell>
+ <mxCell id="7" value="<font style="font-size: 24px" face="Roboto">TLS Termination Proxy<br></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
+ <mxGeometry x="525" y="330" width="280" height="40" as="geometry"/>
+ </mxCell>
+ <mxCell id="88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="100" target="34" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="65.05882352941171" y="-220" as="sourcePoint"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="89" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="32" target="100" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="110" y="-75" as="sourcePoint"/>
+ <mxPoint x="-4.941176470588289" y="-139.99999999999955" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="-5" y="-90"/>
+ <mxPoint x="-5" y="-90"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="91" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="34" target="101" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="105" y="-280" as="sourcePoint"/>
+ <mxPoint x="390" y="-260" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="390" y="-430"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="36" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">Port 443 (HTTPS)</font>" style="ellipse;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="330" y="680" width="170" height="120" as="geometry"/>
+ </mxCell>
+ <mxCell id="92" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="96" target="36" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="50" y="500" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="50" y="740"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="93" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="96" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="300" y="350" as="sourcePoint"/>
+ <mxPoint x="55" y="330" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="160" y="340"/>
+ <mxPoint x="160" y="340"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="96" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Encrypted request for: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" parent="1" vertex="1">
+ <mxGeometry x="-10" y="400" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="100" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Who is: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-110" y="-210" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="101" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">IP:</span><br style="font-family: &#34;roboto&#34;"><span style="font-family: &#34;roboto&#34; ; font-size: 24px">123.124.125.126</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="270" y="-290" width="240" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="106" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;strokeWidth=3;" parent="1" source="104" target="36" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="-40" y="770"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="104" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">TLS Handshake</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-110" y="300" width="230" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="107" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="104" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="-40" y="275" as="sourcePoint"/>
+ <mxPoint x="341.38784067832285" y="770" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="-40" y="290"/>
+ <mxPoint x="-40" y="290"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="49" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+ <mxGeometry x="510" y="400" width="310" height="320" as="geometry"/>
+ </mxCell>
+ <mxCell id="50" value="<font style="font-size: 24px" face="Roboto">HTTPS certificates<br></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
+ <mxGeometry x="550.9" y="410" width="228.21" height="40" as="geometry"/>
+ </mxCell>
+ <mxCell id="51" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">someapp.example.com</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="530" y="465" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="52" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">another.example.net</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
+ <mxGeometry x="530" y="545" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="53" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">onemore.example.org</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
+ <mxGeometry x="530" y="625" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="42" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">IP:</span><br><span style="font-size: 24px">123.124.125.126</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="290" y="600" width="220" height="70" as="geometry"/>
+ </mxCell>
+ </root>
+ </mxGraphModel>
+ </diagram>
+</mxfile>
\ No newline at end of file
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1413px" height="1464px" viewBox="-0.5 -0.5 1413 1464" content="<mxfile><diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">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</diagram></mxfile>"><defs><style type="text/css">/* cyrillic-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu72xKOzY.woff2") format('woff2');
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu5mxKOzY.woff2") format('woff2');
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7mxKOzY.woff2") format('woff2');
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4WxKOzY.woff2") format('woff2');
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7WxKOzY.woff2") format('woff2');
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7GxKOzY.woff2") format('woff2');
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4mxK.woff2") format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+</style></defs><g><rect x="590" y="491" width="820" height="970" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="all"/><rect x="850" y="491" width="300" height="80" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 531px; margin-left: 851px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font face="Roboto"><span style="font-size: 24px">Server(s)</span></font></div></div></div></foreignObject><text x="1000" y="535" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">Server(s)</text></switch></g><rect x="60" y="493" width="380" height="250" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 378px; height: 1px; padding-top: 618px; margin-left: 61px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">https://someapp.example.com</font></div></div></div></foreignObject><text x="250" y="622" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">https://someapp.example.com</text></switch></g><path d="M 289.06 793.99 C 293.87 793.99 297.23 791.75 296.28 790.03 L 286.73 773.39 C 285.53 770.86 283.81 770.35 280.97 770.35 L 219.03 770.35 C 216.02 770.35 214.47 770.96 213.01 773.49 L 204.15 789.93 C 202.43 792.57 207.59 793.99 211.29 793.99 Z M 433.76 739.91 L 433.76 496.43 L 65.98 496.43 L 65.98 739.91 Z M 25.89 816 C 16.09 815.9 7.31 812.04 3.61 806.06 C 0 800.17 1.46 794.29 4.56 790.23 L 40.18 747.52 L 40.18 495.12 C 40.18 482.43 49.81 466 65.81 466 L 433.84 466 C 446.32 466 459.57 477.77 459.57 496.74 L 459.57 747.52 L 495.53 790.64 C 498.54 794.7 500 800.07 496.39 805.86 C 491.66 813.16 482.71 815.49 474.28 816 Z" fill="#505050" stroke="none" pointer-events="none"/><path d="M 530 331 L 530 409 L 420 409 L 420 455.9" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 420 462.65 L 415.5 453.65 L 420 455.9 L 424.5 453.65 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 162.5 66 C 96.5 66 80 131 132.8 144 C 80 172.6 139.4 235 182.3 209 C 212 261 311 261 344 209 C 410 209 410 157 368.75 131 C 410 79 344 27 286.25 53 C 245 14 179 14 162.5 66 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 328px; height: 1px; padding-top: 131px; margin-left: 81px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">DNS Servers</font></div></div></div></foreignObject><text x="245" y="135" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DNS Servers</text></switch></g><rect x="635" y="861" width="355" height="440" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 891px; margin-left: 666px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font style="font-size: 24px" face="Roboto">TLS Termination Proxy<br /></font></div></div></div></foreignObject><text x="805" y="895" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">TLS Termination Proxy
+</text></switch></g><path d="M 185 331 L 185 296 L 245 296 L 245 271.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 245 264.35 L 249.5 273.35 L 245 271.1 L 240.5 273.35 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 135 466 L 135 451 L 135 411" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 408.04 111 L 530 111 L 530 251" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><ellipse cx="555" cy="1281" rx="85" ry="60" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 1281px; margin-left: 471px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">Port 443 (HTTPS)</font></div></div></div></foreignObject><text x="555" y="1285" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Port 443 (HTTPS)</text></switch></g><path d="M 190 1021 L 190 1281 L 459.9 1281" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 466.65 1281 L 457.65 1285.5 L 459.9 1281 L 457.65 1276.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 300 816 L 300 881 L 300 941" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 150 941 L 420 941 L 440 981 L 420 1021 L 150 1021 L 130 981 Z" fill="#d5e8d4" stroke="#82b366" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 981px; margin-left: 131px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Encrypted request for: someapp.example.com</span></div></div></div></foreignObject><text x="285" y="985" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Encrypted request for: someapp.example.com</text></switch></g><path d="M 50 331 L 320 331 L 340 371 L 320 411 L 50 411 L 30 371 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 371px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Who is: someapp.example.com</span></div></div></div></foreignObject><text x="185" y="375" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Who is: someapp.example.com</text></switch></g><path d="M 430 251 L 630 251 L 650 291 L 630 331 L 430 331 L 410 291 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 238px; height: 1px; padding-top: 291px; margin-left: 411px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">IP:</span><br style="font-family: "roboto"" /><span style="font-family: "roboto" ; font-size: 24px">123.124.125.126</span></div></div></div></foreignObject><text x="530" y="295" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">IP:...</text></switch></g><path d="M 100 921 L 100 1311 L 481.39 1311" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 50 841 L 240 841 L 260 881 L 240 921 L 50 921 L 30 881 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 881px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">TLS Handshake</span></div></div></div></foreignObject><text x="145" y="885" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">TLS Handshake</text></switch></g><path d="M 100 816 L 100 831 L 100 841" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><rect x="650" y="941" width="310" height="320" fill="#fff2cc" stroke="#d6b656" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 226px; height: 1px; padding-top: 971px; margin-left: 692px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font style="font-size: 24px" face="Roboto">HTTPS certificates<br /></font></div></div></div></foreignObject><text x="805" y="975" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">HTTPS certificates
+</text></switch></g><rect x="670" y="1006" width="270" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1041px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">someapp.example.com</span><br /></font></div></div></div></foreignObject><text x="805" y="1045" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">someapp.example.com
+</text></switch></g><rect x="670" y="1086" width="270" height="70" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1121px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">another.example.net</span><br /></font></div></div></div></foreignObject><text x="805" y="1125" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">another.example.net
+</text></switch></g><rect x="670" y="1166" width="270" height="70" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1201px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">onemore.example.org</span><br /></font></div></div></div></foreignObject><text x="805" y="1205" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">onemore.example.org
+</text></switch></g><rect x="430" y="1141" width="220" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 1176px; margin-left: 431px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">IP:</span><br /><span style="font-size: 24px">123.124.125.126</span><br /></font></div></div></div></foreignObject><text x="540" y="1180" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">IP:...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file
--- /dev/null
+<mxfile host="65bd71144e">
+ <diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">
+ <mxGraphModel dx="5190" dy="5090" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1920" pageHeight="1200" math="0" shadow="0">
+ <root>
+ <mxCell id="0"/>
+ <mxCell id="1" parent="0"/>
+ <mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="1" vertex="1">
+ <mxGeometry x="450" y="-50" width="820" height="970" as="geometry"/>
+ </mxCell>
+ <mxCell id="3" value="<font face="Roboto"><span style="font-size: 24px">Server(s)</span></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
+ <mxGeometry x="710" y="-50" width="300" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;exitX=0.092;exitY=1.01;exitDx=0;exitDy=0;dashed=1;exitPerimeter=0;" parent="1" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="800" y="521"/>
+ <mxPoint x="800" y="560"/>
+ </Array>
+ <mxPoint x="803" y="521" as="sourcePoint"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;" parent="1" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="800" y="520" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="800" y="680"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="33" value="" style="group" parent="1" vertex="1" connectable="0">
+ <mxGeometry x="-140" y="-75" width="500" height="350" as="geometry"/>
+ </mxCell>
+ <mxCell id="29" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">https://someapp.example.com</font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="33" vertex="1">
+ <mxGeometry x="60" y="27" width="380" height="250" as="geometry"/>
+ </mxCell>
+ <mxCell id="32" value="" style="pointerEvents=1;shadow=0;dashed=0;html=1;fillColor=#505050;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.devices.laptop;strokeColor=none;" parent="33" vertex="1">
+ <mxGeometry width="500" height="350" as="geometry"/>
+ </mxCell>
+ <mxCell id="90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="101" target="32" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="390" y="-190" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="390" y="-132"/>
+ <mxPoint x="280" y="-132"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="34" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">DNS Servers</font>" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-60" y="-540" width="330" height="260" as="geometry"/>
+ </mxCell>
+ <mxCell id="6" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+ <mxGeometry x="495" y="320" width="355" height="440" as="geometry"/>
+ </mxCell>
+ <mxCell id="7" value="<font style="font-size: 24px" face="Roboto">TLS Termination Proxy<br></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
+ <mxGeometry x="525" y="330" width="280" height="40" as="geometry"/>
+ </mxCell>
+ <mxCell id="62" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">FastAPI</font><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal"> app for: someapp.example.com</font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+ <mxGeometry x="895" y="640" width="300" height="100" as="geometry"/>
+ </mxCell>
+ <mxCell id="87" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="6" target="62" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="1240" y="390"/>
+ <mxPoint x="1240" y="700"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="84" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Decrypted request for: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" parent="1" vertex="1">
+ <mxGeometry x="890" y="350" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="100" target="34" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="65.05882352941171" y="-220" as="sourcePoint"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="89" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="32" target="100" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="110" y="-75" as="sourcePoint"/>
+ <mxPoint x="-4.941176470588289" y="-139.99999999999955" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="-5" y="-80"/>
+ <mxPoint x="-5" y="-80"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="91" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="34" target="101" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="105" y="-280" as="sourcePoint"/>
+ <mxPoint x="390" y="-260" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="390" y="-430"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="36" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">Port 443 (HTTPS)</font>" style="ellipse;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="330" y="680" width="170" height="120" as="geometry"/>
+ </mxCell>
+ <mxCell id="92" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="96" target="36" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="50" y="500" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="50" y="740"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="93" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="96" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="300" y="350" as="sourcePoint"/>
+ <mxPoint x="55" y="330" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="160" y="340"/>
+ <mxPoint x="160" y="340"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="96" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Encrypted request for: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" parent="1" vertex="1">
+ <mxGeometry x="-10" y="400" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="100" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Who is: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-110" y="-210" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="101" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">IP:</span><br style="font-family: &#34;roboto&#34;"><span style="font-family: &#34;roboto&#34; ; font-size: 24px">123.124.125.126</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="270" y="-290" width="240" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="106" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;strokeWidth=3;" parent="1" source="104" target="36" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="-40" y="770"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="104" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">TLS Handshake</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-110" y="300" width="230" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="107" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="104" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="-40" y="275" as="sourcePoint"/>
+ <mxPoint x="341.38784067832285" y="770" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="-40" y="290"/>
+ <mxPoint x="-40" y="290"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="49" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+ <mxGeometry x="510" y="400" width="310" height="320" as="geometry"/>
+ </mxCell>
+ <mxCell id="50" value="<font style="font-size: 24px" face="Roboto">HTTPS certificates<br></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
+ <mxGeometry x="550.9" y="410" width="228.21" height="40" as="geometry"/>
+ </mxCell>
+ <mxCell id="51" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">someapp.example.com</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="530" y="465" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="52" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">another.example.net</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
+ <mxGeometry x="530" y="545" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="53" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">onemore.example.org</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
+ <mxGeometry x="530" y="625" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="42" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">IP:</span><br><span style="font-size: 24px">123.124.125.126</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="290" y="600" width="220" height="70" as="geometry"/>
+ </mxCell>
+ </root>
+ </mxGraphModel>
+ </diagram>
+</mxfile>
\ No newline at end of file
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1413px" height="1464px" viewBox="-0.5 -0.5 1413 1464" content="<mxfile><diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">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</diagram></mxfile>"><defs><style type="text/css">/* cyrillic-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu72xKOzY.woff2") format('woff2');
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu5mxKOzY.woff2") format('woff2');
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7mxKOzY.woff2") format('woff2');
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4WxKOzY.woff2") format('woff2');
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7WxKOzY.woff2") format('woff2');
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7GxKOzY.woff2") format('woff2');
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4mxK.woff2") format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+</style></defs><g><rect x="590" y="491" width="820" height="970" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="all"/><rect x="850" y="491" width="300" height="80" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 531px; margin-left: 851px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font face="Roboto"><span style="font-size: 24px">Server(s)</span></font></div></div></div></foreignObject><text x="1000" y="535" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">Server(s)</text></switch></g><rect x="60" y="493" width="380" height="250" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 378px; height: 1px; padding-top: 618px; margin-left: 61px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">https://someapp.example.com</font></div></div></div></foreignObject><text x="250" y="622" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">https://someapp.example.com</text></switch></g><path d="M 289.06 793.99 C 293.87 793.99 297.23 791.75 296.28 790.03 L 286.73 773.39 C 285.53 770.86 283.81 770.35 280.97 770.35 L 219.03 770.35 C 216.02 770.35 214.47 770.96 213.01 773.49 L 204.15 789.93 C 202.43 792.57 207.59 793.99 211.29 793.99 Z M 433.76 739.91 L 433.76 496.43 L 65.98 496.43 L 65.98 739.91 Z M 25.89 816 C 16.09 815.9 7.31 812.04 3.61 806.06 C 0 800.17 1.46 794.29 4.56 790.23 L 40.18 747.52 L 40.18 495.12 C 40.18 482.43 49.81 466 65.81 466 L 433.84 466 C 446.32 466 459.57 477.77 459.57 496.74 L 459.57 747.52 L 495.53 790.64 C 498.54 794.7 500 800.07 496.39 805.86 C 491.66 813.16 482.71 815.49 474.28 816 Z" fill="#505050" stroke="none" pointer-events="none"/><path d="M 530 331 L 530 409 L 420 409 L 420 455.9" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 420 462.65 L 415.5 453.65 L 420 455.9 L 424.5 453.65 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 162.5 66 C 96.5 66 80 131 132.8 144 C 80 172.6 139.4 235 182.3 209 C 212 261 311 261 344 209 C 410 209 410 157 368.75 131 C 410 79 344 27 286.25 53 C 245 14 179 14 162.5 66 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 328px; height: 1px; padding-top: 131px; margin-left: 81px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">DNS Servers</font></div></div></div></foreignObject><text x="245" y="135" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DNS Servers</text></switch></g><rect x="635" y="861" width="355" height="440" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 891px; margin-left: 666px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font style="font-size: 24px" face="Roboto">TLS Termination Proxy<br /></font></div></div></div></foreignObject><text x="805" y="895" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">TLS Termination Proxy
+</text></switch></g><rect x="1035" y="1181" width="300" height="100" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 1231px; margin-left: 1036px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">FastAPI</font><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal"> app for: someapp.example.com</font></div></div></div></foreignObject><text x="1185" y="1235" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">FastAPI app for: someapp.example.com</text></switch></g><path d="M 990 931 L 1380 931 L 1380 1241 L 1345.1 1241" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 1338.35 1241 L 1347.35 1236.5 L 1345.1 1241 L 1347.35 1245.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 1050 891 L 1320 891 L 1340 931 L 1320 971 L 1050 971 L 1030 931 Z" fill="#d5e8d4" stroke="#82b366" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 931px; margin-left: 1031px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Decrypted request for: someapp.example.com</span></div></div></div></foreignObject><text x="1185" y="935" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Decrypted request for: someapp.example.com</text></switch></g><path d="M 185 331 L 185 296 L 245 296 L 245 271.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 245 264.35 L 249.5 273.35 L 245 271.1 L 240.5 273.35 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 135 466 L 135 461 L 135 411" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 408.04 111 L 530 111 L 530 251" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><ellipse cx="555" cy="1281" rx="85" ry="60" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 1281px; margin-left: 471px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">Port 443 (HTTPS)</font></div></div></div></foreignObject><text x="555" y="1285" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Port 443 (HTTPS)</text></switch></g><path d="M 190 1021 L 190 1281 L 459.9 1281" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 466.65 1281 L 457.65 1285.5 L 459.9 1281 L 457.65 1276.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 300 816 L 300 881 L 300 941" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 150 941 L 420 941 L 440 981 L 420 1021 L 150 1021 L 130 981 Z" fill="#d5e8d4" stroke="#82b366" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 981px; margin-left: 131px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Encrypted request for: someapp.example.com</span></div></div></div></foreignObject><text x="285" y="985" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Encrypted request for: someapp.example.com</text></switch></g><path d="M 50 331 L 320 331 L 340 371 L 320 411 L 50 411 L 30 371 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 371px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Who is: someapp.example.com</span></div></div></div></foreignObject><text x="185" y="375" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Who is: someapp.example.com</text></switch></g><path d="M 430 251 L 630 251 L 650 291 L 630 331 L 430 331 L 410 291 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 238px; height: 1px; padding-top: 291px; margin-left: 411px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">IP:</span><br style="font-family: "roboto"" /><span style="font-family: "roboto" ; font-size: 24px">123.124.125.126</span></div></div></div></foreignObject><text x="530" y="295" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">IP:...</text></switch></g><path d="M 100 921 L 100 1311 L 481.39 1311" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 50 841 L 240 841 L 260 881 L 240 921 L 50 921 L 30 881 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 881px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">TLS Handshake</span></div></div></div></foreignObject><text x="145" y="885" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">TLS Handshake</text></switch></g><path d="M 100 816 L 100 831 L 100 841" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><rect x="650" y="941" width="310" height="320" fill="#fff2cc" stroke="#d6b656" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 226px; height: 1px; padding-top: 971px; margin-left: 692px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font style="font-size: 24px" face="Roboto">HTTPS certificates<br /></font></div></div></div></foreignObject><text x="805" y="975" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">HTTPS certificates
+</text></switch></g><rect x="670" y="1006" width="270" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1041px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">someapp.example.com</span><br /></font></div></div></div></foreignObject><text x="805" y="1045" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">someapp.example.com
+</text></switch></g><rect x="670" y="1086" width="270" height="70" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1121px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">another.example.net</span><br /></font></div></div></div></foreignObject><text x="805" y="1125" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">another.example.net
+</text></switch></g><rect x="670" y="1166" width="270" height="70" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1201px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">onemore.example.org</span><br /></font></div></div></div></foreignObject><text x="805" y="1205" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">onemore.example.org
+</text></switch></g><rect x="430" y="1141" width="220" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 1176px; margin-left: 431px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">IP:</span><br /><span style="font-size: 24px">123.124.125.126</span><br /></font></div></div></div></foreignObject><text x="540" y="1180" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">IP:...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file
--- /dev/null
+<mxfile host="65bd71144e">
+ <diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">
+ <mxGraphModel dx="3321" dy="2867" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1920" pageHeight="1200" math="0" shadow="0">
+ <root>
+ <mxCell id="0"/>
+ <mxCell id="1" parent="0"/>
+ <mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="1" vertex="1">
+ <mxGeometry x="450" y="-50" width="820" height="970" as="geometry"/>
+ </mxCell>
+ <mxCell id="3" value="<font face="Roboto"><span style="font-size: 24px">Server(s)</span></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
+ <mxGeometry x="710" y="-50" width="300" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;exitX=0.092;exitY=1.01;exitDx=0;exitDy=0;dashed=1;exitPerimeter=0;" parent="1" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="800" y="521"/>
+ <mxPoint x="800" y="560"/>
+ </Array>
+ <mxPoint x="803" y="521" as="sourcePoint"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;" parent="1" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="800" y="520" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="800" y="680"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="33" value="" style="group" parent="1" vertex="1" connectable="0">
+ <mxGeometry x="-140" y="-75" width="500" height="350" as="geometry"/>
+ </mxCell>
+ <mxCell id="29" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">https://someapp.example.com</font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="33" vertex="1">
+ <mxGeometry x="60" y="27" width="380" height="250" as="geometry"/>
+ </mxCell>
+ <mxCell id="32" value="" style="pointerEvents=1;shadow=0;dashed=0;html=1;fillColor=#505050;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.devices.laptop;strokeColor=none;" parent="33" vertex="1">
+ <mxGeometry width="500" height="350" as="geometry"/>
+ </mxCell>
+ <mxCell id="90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="101" target="32" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="390" y="-190" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="390" y="-132"/>
+ <mxPoint x="280" y="-132"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="34" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">DNS Servers</font>" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-60" y="-540" width="330" height="260" as="geometry"/>
+ </mxCell>
+ <mxCell id="6" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+ <mxGeometry x="495" y="320" width="355" height="440" as="geometry"/>
+ </mxCell>
+ <mxCell id="7" value="<font style="font-size: 24px" face="Roboto">TLS Termination Proxy<br></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
+ <mxGeometry x="525" y="330" width="280" height="40" as="geometry"/>
+ </mxCell>
+ <mxCell id="73" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="85" target="6" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="62" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">FastAPI</font><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal"> app for: someapp.example.com</font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+ <mxGeometry x="895" y="650" width="300" height="100" as="geometry"/>
+ </mxCell>
+ <mxCell id="85" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Plain response from: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#9673a6;strokeWidth=3;fillColor=#e1d5e7;" parent="1" vertex="1">
+ <mxGeometry x="890" y="500" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="86" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="62" target="85" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="1030.0000000000005" y="649.9999999999995" as="sourcePoint"/>
+ <mxPoint x="850" y="540.0000000000005" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="1030" y="540"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="87" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="6" target="62" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="1240" y="390"/>
+ <mxPoint x="1240" y="700"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="84" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Decrypted request for: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" parent="1" vertex="1">
+ <mxGeometry x="890" y="350" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="100" target="34" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="65.05882352941171" y="-220" as="sourcePoint"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="89" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="32" target="100" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="110" y="-75" as="sourcePoint"/>
+ <mxPoint x="-4.941176470588289" y="-139.99999999999955" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="-5" y="-90"/>
+ <mxPoint x="-5" y="-90"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="91" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="34" target="101" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="105" y="-280" as="sourcePoint"/>
+ <mxPoint x="390" y="-260" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="390" y="-430"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="36" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">Port 443 (HTTPS)</font>" style="ellipse;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="330" y="680" width="170" height="120" as="geometry"/>
+ </mxCell>
+ <mxCell id="92" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="96" target="36" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="50" y="500" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="50" y="740"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="93" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="96" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="300" y="350" as="sourcePoint"/>
+ <mxPoint x="55" y="330" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="160" y="340"/>
+ <mxPoint x="160" y="340"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="96" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Encrypted request for: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" parent="1" vertex="1">
+ <mxGeometry x="-10" y="400" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="100" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Who is: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-110" y="-210" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="101" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">IP:</span><br style="font-family: &#34;roboto&#34;"><span style="font-family: &#34;roboto&#34; ; font-size: 24px">123.124.125.126</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="270" y="-290" width="240" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="106" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;strokeWidth=3;" parent="1" source="104" target="36" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="-40" y="770"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="104" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">TLS Handshake</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-110" y="300" width="230" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="107" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="104" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="-40" y="275" as="sourcePoint"/>
+ <mxPoint x="341.38784067832285" y="770" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="-40" y="290"/>
+ <mxPoint x="-40" y="290"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="49" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+ <mxGeometry x="510" y="400" width="310" height="320" as="geometry"/>
+ </mxCell>
+ <mxCell id="50" value="<font style="font-size: 24px" face="Roboto">HTTPS certificates<br></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
+ <mxGeometry x="550.9" y="410" width="228.21" height="40" as="geometry"/>
+ </mxCell>
+ <mxCell id="51" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">someapp.example.com</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="530" y="465" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="52" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">another.example.net</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
+ <mxGeometry x="530" y="545" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="53" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">onemore.example.org</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
+ <mxGeometry x="530" y="625" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="42" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">IP:</span><br><span style="font-size: 24px">123.124.125.126</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="290" y="600" width="220" height="70" as="geometry"/>
+ </mxCell>
+ </root>
+ </mxGraphModel>
+ </diagram>
+</mxfile>
\ No newline at end of file
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1413px" height="1464px" viewBox="-0.5 -0.5 1413 1464" content="<mxfile><diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">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</diagram></mxfile>"><defs><style type="text/css">/* cyrillic-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu72xKOzY.woff2") format('woff2');
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu5mxKOzY.woff2") format('woff2');
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7mxKOzY.woff2") format('woff2');
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4WxKOzY.woff2") format('woff2');
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7WxKOzY.woff2") format('woff2');
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7GxKOzY.woff2") format('woff2');
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4mxK.woff2") format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+</style></defs><g><rect x="590" y="491" width="820" height="970" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="all"/><rect x="850" y="491" width="300" height="80" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 531px; margin-left: 851px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font face="Roboto"><span style="font-size: 24px">Server(s)</span></font></div></div></div></foreignObject><text x="1000" y="535" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">Server(s)</text></switch></g><rect x="60" y="493" width="380" height="250" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 378px; height: 1px; padding-top: 618px; margin-left: 61px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">https://someapp.example.com</font></div></div></div></foreignObject><text x="250" y="622" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">https://someapp.example.com</text></switch></g><path d="M 289.06 793.99 C 293.87 793.99 297.23 791.75 296.28 790.03 L 286.73 773.39 C 285.53 770.86 283.81 770.35 280.97 770.35 L 219.03 770.35 C 216.02 770.35 214.47 770.96 213.01 773.49 L 204.15 789.93 C 202.43 792.57 207.59 793.99 211.29 793.99 Z M 433.76 739.91 L 433.76 496.43 L 65.98 496.43 L 65.98 739.91 Z M 25.89 816 C 16.09 815.9 7.31 812.04 3.61 806.06 C 0 800.17 1.46 794.29 4.56 790.23 L 40.18 747.52 L 40.18 495.12 C 40.18 482.43 49.81 466 65.81 466 L 433.84 466 C 446.32 466 459.57 477.77 459.57 496.74 L 459.57 747.52 L 495.53 790.64 C 498.54 794.7 500 800.07 496.39 805.86 C 491.66 813.16 482.71 815.49 474.28 816 Z" fill="#505050" stroke="none" pointer-events="none"/><path d="M 530 331 L 530 409 L 420 409 L 420 455.9" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 420 462.65 L 415.5 453.65 L 420 455.9 L 424.5 453.65 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 162.5 66 C 96.5 66 80 131 132.8 144 C 80 172.6 139.4 235 182.3 209 C 212 261 311 261 344 209 C 410 209 410 157 368.75 131 C 410 79 344 27 286.25 53 C 245 14 179 14 162.5 66 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 328px; height: 1px; padding-top: 131px; margin-left: 81px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">DNS Servers</font></div></div></div></foreignObject><text x="245" y="135" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DNS Servers</text></switch></g><rect x="635" y="861" width="355" height="440" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 891px; margin-left: 666px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font style="font-size: 24px" face="Roboto">TLS Termination Proxy<br /></font></div></div></div></foreignObject><text x="805" y="895" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">TLS Termination Proxy
+</text></switch></g><path d="M 1030 1081 L 1000.1 1081" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 993.35 1081 L 1002.35 1076.5 L 1000.1 1081 L 1002.35 1085.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><rect x="1035" y="1191" width="300" height="100" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 1241px; margin-left: 1036px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">FastAPI</font><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal"> app for: someapp.example.com</font></div></div></div></foreignObject><text x="1185" y="1245" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">FastAPI app for: someapp.example.com</text></switch></g><path d="M 1050 1041 L 1320 1041 L 1340 1081 L 1320 1121 L 1050 1121 L 1030 1081 Z" fill="#e1d5e7" stroke="#9673a6" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 1081px; margin-left: 1031px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Plain response from: someapp.example.com</span></div></div></div></foreignObject><text x="1185" y="1085" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Plain response from: someapp.example.com</text></switch></g><path d="M 1185 1191 L 1185 1121" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 990 931 L 1380 931 L 1380 1241 L 1345.1 1241" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 1338.35 1241 L 1347.35 1236.5 L 1345.1 1241 L 1347.35 1245.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 1050 891 L 1320 891 L 1340 931 L 1320 971 L 1050 971 L 1030 931 Z" fill="#d5e8d4" stroke="#82b366" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 931px; margin-left: 1031px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Decrypted request for: someapp.example.com</span></div></div></div></foreignObject><text x="1185" y="935" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Decrypted request for: someapp.example.com</text></switch></g><path d="M 185 331 L 185 296 L 245 296 L 245 271.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 245 264.35 L 249.5 273.35 L 245 271.1 L 240.5 273.35 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 135 466 L 135 451 L 135 411" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 408.04 111 L 530 111 L 530 251" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><ellipse cx="555" cy="1281" rx="85" ry="60.00000000000001" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 1281px; margin-left: 471px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">Port 443 (HTTPS)</font></div></div></div></foreignObject><text x="555" y="1285" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Port 443 (HTTPS)</text></switch></g><path d="M 190 1021 L 190 1281 L 459.9 1281" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 466.65 1281 L 457.65 1285.5 L 459.9 1281 L 457.65 1276.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 300 816 L 300 881 L 300 941" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 150 941 L 420 941 L 440 981 L 420 1021 L 150 1021 L 130 981 Z" fill="#d5e8d4" stroke="#82b366" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 981px; margin-left: 131px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Encrypted request for: someapp.example.com</span></div></div></div></foreignObject><text x="285" y="985" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Encrypted request for: someapp.example.com</text></switch></g><path d="M 50 331 L 320 331 L 340 371 L 320 411 L 50 411 L 30 371 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 371px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Who is: someapp.example.com</span></div></div></div></foreignObject><text x="185" y="375" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Who is: someapp.example.com</text></switch></g><path d="M 430 251 L 630 251 L 650 291 L 630 331 L 430 331 L 410 291 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 238px; height: 1px; padding-top: 291px; margin-left: 411px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">IP:</span><br style="font-family: "roboto"" /><span style="font-family: "roboto" ; font-size: 24px">123.124.125.126</span></div></div></div></foreignObject><text x="530" y="295" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">IP:...</text></switch></g><path d="M 100 921 L 100 1311 L 481.39 1311" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 50 841 L 240 841 L 260 881 L 240 921 L 50 921 L 30 881 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 881px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">TLS Handshake</span></div></div></div></foreignObject><text x="145" y="885" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">TLS Handshake</text></switch></g><path d="M 100 816 L 100 831 L 100 841" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><rect x="650" y="941" width="310" height="320" fill="#fff2cc" stroke="#d6b656" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 226px; height: 1px; padding-top: 971px; margin-left: 692px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font style="font-size: 24px" face="Roboto">HTTPS certificates<br /></font></div></div></div></foreignObject><text x="805" y="975" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">HTTPS certificates
+</text></switch></g><rect x="670" y="1006" width="270" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1041px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">someapp.example.com</span><br /></font></div></div></div></foreignObject><text x="805" y="1045" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">someapp.example.com
+</text></switch></g><rect x="670" y="1086" width="270" height="70" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1121px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">another.example.net</span><br /></font></div></div></div></foreignObject><text x="805" y="1125" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">another.example.net
+</text></switch></g><rect x="670" y="1166" width="270" height="70" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1201px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">onemore.example.org</span><br /></font></div></div></div></foreignObject><text x="805" y="1205" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">onemore.example.org
+</text></switch></g><rect x="430" y="1141" width="220" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 1176px; margin-left: 431px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">IP:</span><br /><span style="font-size: 24px">123.124.125.126</span><br /></font></div></div></div></foreignObject><text x="540" y="1180" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">IP:...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file
--- /dev/null
+<mxfile host="65bd71144e">
+ <diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">
+ <mxGraphModel dx="3321" dy="2867" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1920" pageHeight="1200" math="0" shadow="0">
+ <root>
+ <mxCell id="0"/>
+ <mxCell id="1" parent="0"/>
+ <mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="1" vertex="1">
+ <mxGeometry x="450" y="-50" width="820" height="970" as="geometry"/>
+ </mxCell>
+ <mxCell id="3" value="<font face="Roboto"><span style="font-size: 24px">Server(s)</span></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
+ <mxGeometry x="710" y="-50" width="300" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;exitX=0.092;exitY=1.01;exitDx=0;exitDy=0;dashed=1;exitPerimeter=0;" parent="1" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="800" y="521"/>
+ <mxPoint x="800" y="560"/>
+ </Array>
+ <mxPoint x="803" y="521" as="sourcePoint"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;" parent="1" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="800" y="520" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="800" y="680"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="33" value="" style="group" parent="1" vertex="1" connectable="0">
+ <mxGeometry x="-140" y="-75" width="500" height="350" as="geometry"/>
+ </mxCell>
+ <mxCell id="29" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">https://someapp.example.com</font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="33" vertex="1">
+ <mxGeometry x="60" y="27" width="380" height="250" as="geometry"/>
+ </mxCell>
+ <mxCell id="32" value="" style="pointerEvents=1;shadow=0;dashed=0;html=1;fillColor=#505050;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.devices.laptop;strokeColor=none;" parent="33" vertex="1">
+ <mxGeometry width="500" height="350" as="geometry"/>
+ </mxCell>
+ <mxCell id="90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="101" target="32" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="390" y="-190" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="390" y="-132"/>
+ <mxPoint x="280" y="-132"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="34" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">DNS Servers</font>" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-60" y="-540" width="330" height="260" as="geometry"/>
+ </mxCell>
+ <mxCell id="6" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+ <mxGeometry x="495" y="320" width="355" height="440" as="geometry"/>
+ </mxCell>
+ <mxCell id="7" value="<font style="font-size: 24px" face="Roboto">TLS Termination Proxy<br></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
+ <mxGeometry x="525" y="330" width="280" height="40" as="geometry"/>
+ </mxCell>
+ <mxCell id="73" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="85" target="6" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="62" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">FastAPI</font><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal"> app for: someapp.example.com</font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+ <mxGeometry x="895" y="650" width="300" height="100" as="geometry"/>
+ </mxCell>
+ <mxCell id="85" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Plain response from: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#9673a6;strokeWidth=3;fillColor=#e1d5e7;" parent="1" vertex="1">
+ <mxGeometry x="890" y="500" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="86" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="62" target="85" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="1030.0000000000005" y="649.9999999999995" as="sourcePoint"/>
+ <mxPoint x="850" y="540.0000000000005" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="1030" y="540"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="87" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="6" target="62" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="1240" y="390"/>
+ <mxPoint x="1240" y="700"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="84" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Decrypted request for: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" parent="1" vertex="1">
+ <mxGeometry x="890" y="350" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="100" target="34" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="65.05882352941171" y="-220" as="sourcePoint"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="89" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="32" target="100" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="110" y="-75" as="sourcePoint"/>
+ <mxPoint x="-4.941176470588289" y="-139.99999999999955" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="-5" y="-90"/>
+ <mxPoint x="-5" y="-90"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="91" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="34" target="101" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="105" y="-280" as="sourcePoint"/>
+ <mxPoint x="390" y="-260" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="390" y="-430"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="109" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="97" target="32" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="340" y="480"/>
+ <mxPoint x="340" y="480"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="36" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">Port 443 (HTTPS)</font>" style="ellipse;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="330" y="680" width="170" height="120" as="geometry"/>
+ </mxCell>
+ <mxCell id="92" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="96" target="36" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="50" y="500" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="50" y="740"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="93" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="96" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="300" y="350" as="sourcePoint"/>
+ <mxPoint x="55" y="330" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="160" y="340"/>
+ <mxPoint x="160" y="340"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="96" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Encrypted request for: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" parent="1" vertex="1">
+ <mxGeometry x="-10" y="400" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="100" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Who is: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-110" y="-210" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="101" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">IP:</span><br style="font-family: &#34;roboto&#34;"><span style="font-family: &#34;roboto&#34; ; font-size: 24px">123.124.125.126</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="270" y="-290" width="240" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="106" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;strokeWidth=3;" parent="1" source="104" target="36" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="-40" y="770"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="104" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">TLS Handshake</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-110" y="300" width="230" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="107" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="104" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="-40" y="275" as="sourcePoint"/>
+ <mxPoint x="341.38784067832285" y="770" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="-40" y="290"/>
+ <mxPoint x="-40" y="290"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="97" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Encrypted response from: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#9673a6;strokeWidth=3;fillColor=#e1d5e7;" parent="1" vertex="1">
+ <mxGeometry x="90" y="500" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="110" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="36" target="97" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="415" y="680" as="sourcePoint"/>
+ <mxPoint x="110" y="275" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="245" y="710"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="49" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+ <mxGeometry x="510" y="400" width="310" height="320" as="geometry"/>
+ </mxCell>
+ <mxCell id="50" value="<font style="font-size: 24px" face="Roboto">HTTPS certificates<br></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
+ <mxGeometry x="550.9" y="410" width="228.21" height="40" as="geometry"/>
+ </mxCell>
+ <mxCell id="51" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">someapp.example.com</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="530" y="465" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="52" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">another.example.net</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
+ <mxGeometry x="530" y="545" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="53" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">onemore.example.org</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
+ <mxGeometry x="530" y="625" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="42" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">IP:</span><br><span style="font-size: 24px">123.124.125.126</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="290" y="600" width="220" height="70" as="geometry"/>
+ </mxCell>
+ </root>
+ </mxGraphModel>
+ </diagram>
+</mxfile>
\ No newline at end of file
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1413px" height="1464px" viewBox="-0.5 -0.5 1413 1464" content="<mxfile><diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">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</diagram></mxfile>"><defs><style type="text/css">/* cyrillic-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu72xKOzY.woff2") format('woff2');
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu5mxKOzY.woff2") format('woff2');
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7mxKOzY.woff2") format('woff2');
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4WxKOzY.woff2") format('woff2');
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7WxKOzY.woff2") format('woff2');
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7GxKOzY.woff2") format('woff2');
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4mxK.woff2") format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+</style></defs><g><rect x="590" y="491" width="820" height="970" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="all"/><rect x="850" y="491" width="300" height="80" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 531px; margin-left: 851px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font face="Roboto"><span style="font-size: 24px">Server(s)</span></font></div></div></div></foreignObject><text x="1000" y="535" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">Server(s)</text></switch></g><rect x="60" y="493" width="380" height="250" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 378px; height: 1px; padding-top: 618px; margin-left: 61px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">https://someapp.example.com</font></div></div></div></foreignObject><text x="250" y="622" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">https://someapp.example.com</text></switch></g><path d="M 289.06 793.99 C 293.87 793.99 297.23 791.75 296.28 790.03 L 286.73 773.39 C 285.53 770.86 283.81 770.35 280.97 770.35 L 219.03 770.35 C 216.02 770.35 214.47 770.96 213.01 773.49 L 204.15 789.93 C 202.43 792.57 207.59 793.99 211.29 793.99 Z M 433.76 739.91 L 433.76 496.43 L 65.98 496.43 L 65.98 739.91 Z M 25.89 816 C 16.09 815.9 7.31 812.04 3.61 806.06 C 0 800.17 1.46 794.29 4.56 790.23 L 40.18 747.52 L 40.18 495.12 C 40.18 482.43 49.81 466 65.81 466 L 433.84 466 C 446.32 466 459.57 477.77 459.57 496.74 L 459.57 747.52 L 495.53 790.64 C 498.54 794.7 500 800.07 496.39 805.86 C 491.66 813.16 482.71 815.49 474.28 816 Z" fill="#505050" stroke="none" pointer-events="none"/><path d="M 530 331 L 530 409 L 420 409 L 420 455.9" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 420 462.65 L 415.5 453.65 L 420 455.9 L 424.5 453.65 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 162.5 66 C 96.5 66 80 131 132.8 144 C 80 172.6 139.4 235 182.3 209 C 212 261 311 261 344 209 C 410 209 410 157 368.75 131 C 410 79 344 27 286.25 53 C 245 14 179 14 162.5 66 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 328px; height: 1px; padding-top: 131px; margin-left: 81px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">DNS Servers</font></div></div></div></foreignObject><text x="245" y="135" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DNS Servers</text></switch></g><rect x="635" y="861" width="355" height="440" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 891px; margin-left: 666px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font style="font-size: 24px" face="Roboto">TLS Termination Proxy<br /></font></div></div></div></foreignObject><text x="805" y="895" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">TLS Termination Proxy
+</text></switch></g><path d="M 1030 1081 L 1000.1 1081" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 993.35 1081 L 1002.35 1076.5 L 1000.1 1081 L 1002.35 1085.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><rect x="1035" y="1191" width="300" height="100" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 1241px; margin-left: 1036px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">FastAPI</font><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal"> app for: someapp.example.com</font></div></div></div></foreignObject><text x="1185" y="1245" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">FastAPI app for: someapp.example.com</text></switch></g><path d="M 1050 1041 L 1320 1041 L 1340 1081 L 1320 1121 L 1050 1121 L 1030 1081 Z" fill="#e1d5e7" stroke="#9673a6" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 1081px; margin-left: 1031px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Plain response from: someapp.example.com</span></div></div></div></foreignObject><text x="1185" y="1085" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Plain response from: someapp.example.com</text></switch></g><path d="M 1185 1191 L 1185 1121" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 990 931 L 1380 931 L 1380 1241 L 1345.1 1241" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 1338.35 1241 L 1347.35 1236.5 L 1345.1 1241 L 1347.35 1245.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 1050 891 L 1320 891 L 1340 931 L 1320 971 L 1050 971 L 1030 931 Z" fill="#d5e8d4" stroke="#82b366" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 931px; margin-left: 1031px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Decrypted request for: someapp.example.com</span></div></div></div></foreignObject><text x="1185" y="935" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Decrypted request for: someapp.example.com</text></switch></g><path d="M 185 331 L 185 296 L 245 296 L 245 271.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 245 264.35 L 249.5 273.35 L 245 271.1 L 240.5 273.35 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 135 466 L 135 451 L 135 411" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 408.04 111 L 530 111 L 530 251" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 480 1041 L 480 1021 L 480 826.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 480 819.35 L 484.5 828.35 L 480 826.1 L 475.5 828.35 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><ellipse cx="555" cy="1281" rx="85" ry="60.00000000000001" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 1281px; margin-left: 471px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">Port 443 (HTTPS)</font></div></div></div></foreignObject><text x="555" y="1285" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Port 443 (HTTPS)</text></switch></g><path d="M 190 1021 L 190 1281 L 459.9 1281" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 466.65 1281 L 457.65 1285.5 L 459.9 1281 L 457.65 1276.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 300 816 L 300 881 L 300 941" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 150 941 L 420 941 L 440 981 L 420 1021 L 150 1021 L 130 981 Z" fill="#d5e8d4" stroke="#82b366" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 981px; margin-left: 131px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Encrypted request for: someapp.example.com</span></div></div></div></foreignObject><text x="285" y="985" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Encrypted request for: someapp.example.com</text></switch></g><path d="M 50 331 L 320 331 L 340 371 L 320 411 L 50 411 L 30 371 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 371px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Who is: someapp.example.com</span></div></div></div></foreignObject><text x="185" y="375" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Who is: someapp.example.com</text></switch></g><path d="M 430 251 L 630 251 L 650 291 L 630 331 L 430 331 L 410 291 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 238px; height: 1px; padding-top: 291px; margin-left: 411px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">IP:</span><br style="font-family: "roboto"" /><span style="font-family: "roboto" ; font-size: 24px">123.124.125.126</span></div></div></div></foreignObject><text x="530" y="295" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">IP:...</text></switch></g><path d="M 100 921 L 100 1311 L 481.39 1311" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 50 841 L 240 841 L 260 881 L 240 921 L 50 921 L 30 881 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 881px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">TLS Handshake</span></div></div></div></foreignObject><text x="145" y="885" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">TLS Handshake</text></switch></g><path d="M 100 816 L 100 831 L 100 841" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 250 1041 L 520 1041 L 540 1081 L 520 1121 L 250 1121 L 230 1081 Z" fill="#e1d5e7" stroke="#9673a6" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 1081px; margin-left: 231px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Encrypted response from: someapp.example.com</span></div></div></div></foreignObject><text x="385" y="1085" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Encrypted response from: someapp.example.com</text></switch></g><path d="M 481.39 1251 L 385 1251 L 385 1121" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><rect x="650" y="941" width="310" height="320" fill="#fff2cc" stroke="#d6b656" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 226px; height: 1px; padding-top: 971px; margin-left: 692px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font style="font-size: 24px" face="Roboto">HTTPS certificates<br /></font></div></div></div></foreignObject><text x="805" y="975" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">HTTPS certificates
+</text></switch></g><rect x="670" y="1006" width="270" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1041px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">someapp.example.com</span><br /></font></div></div></div></foreignObject><text x="805" y="1045" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">someapp.example.com
+</text></switch></g><rect x="670" y="1086" width="270" height="70" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1121px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">another.example.net</span><br /></font></div></div></div></foreignObject><text x="805" y="1125" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">another.example.net
+</text></switch></g><rect x="670" y="1166" width="270" height="70" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1201px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">onemore.example.org</span><br /></font></div></div></div></foreignObject><text x="805" y="1205" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">onemore.example.org
+</text></switch></g><rect x="430" y="1141" width="220" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 1176px; margin-left: 431px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">IP:</span><br /><span style="font-size: 24px">123.124.125.126</span><br /></font></div></div></div></foreignObject><text x="540" y="1180" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">IP:...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file
--- /dev/null
+<mxfile host="65bd71144e">
+ <diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">
+ <mxGraphModel dx="3321" dy="2867" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1920" pageHeight="1200" math="0" shadow="0">
+ <root>
+ <mxCell id="0"/>
+ <mxCell id="1" parent="0"/>
+ <mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="1" vertex="1">
+ <mxGeometry x="450" y="-50" width="820" height="970" as="geometry"/>
+ </mxCell>
+ <mxCell id="3" value="<font face="Roboto"><span style="font-size: 24px">Server(s)</span></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
+ <mxGeometry x="710" y="-50" width="300" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;exitX=0.092;exitY=1.01;exitDx=0;exitDy=0;dashed=1;exitPerimeter=0;" parent="1" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="800" y="521"/>
+ <mxPoint x="800" y="560"/>
+ </Array>
+ <mxPoint x="803" y="521" as="sourcePoint"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;" parent="1" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="800" y="520" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="800" y="680"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="33" value="" style="group" parent="1" vertex="1" connectable="0">
+ <mxGeometry x="-140" y="-75" width="500" height="350" as="geometry"/>
+ </mxCell>
+ <mxCell id="29" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">https://someapp.example.com</font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="33" vertex="1">
+ <mxGeometry x="60" y="27" width="380" height="250" as="geometry"/>
+ </mxCell>
+ <mxCell id="32" value="" style="pointerEvents=1;shadow=0;dashed=0;html=1;fillColor=#505050;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.devices.laptop;strokeColor=none;" parent="33" vertex="1">
+ <mxGeometry width="500" height="350" as="geometry"/>
+ </mxCell>
+ <mxCell id="90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="101" target="32" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="390" y="-190" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="390" y="-132"/>
+ <mxPoint x="280" y="-132"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="34" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">DNS Servers</font>" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-60" y="-540" width="330" height="260" as="geometry"/>
+ </mxCell>
+ <mxCell id="6" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+ <mxGeometry x="495" y="320" width="355" height="440" as="geometry"/>
+ </mxCell>
+ <mxCell id="7" value="<font style="font-size: 24px" face="Roboto">TLS Termination Proxy<br></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
+ <mxGeometry x="525" y="330" width="280" height="40" as="geometry"/>
+ </mxCell>
+ <mxCell id="73" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="85" target="6" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="82" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;entryX=0.073;entryY=0.01;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.075;exitY=0.998;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="62" target="78" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="917" y="754" as="sourcePoint"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="62" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">FastAPI</font><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal"> app for: someapp.example.com</font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+ <mxGeometry x="895" y="650" width="300" height="100" as="geometry"/>
+ </mxCell>
+ <mxCell id="65" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal">Another app</font><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal">: another.example.com</font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+ <mxGeometry x="895" y="50" width="300" height="100" as="geometry"/>
+ </mxCell>
+ <mxCell id="66" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal">One more app</font><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal">: onemore.example.com</font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+ <mxGeometry x="895" y="180" width="300" height="100" as="geometry"/>
+ </mxCell>
+ <mxCell id="78" value="<font face="Roboto"><span style="font-size: 24px ; font-weight: 400">A Database</span></font>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+ <mxGeometry x="895" y="780" width="300" height="100" as="geometry"/>
+ </mxCell>
+ <mxCell id="85" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Plain response from: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#9673a6;strokeWidth=3;fillColor=#e1d5e7;" parent="1" vertex="1">
+ <mxGeometry x="890" y="500" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="86" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="62" target="85" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="1030.0000000000005" y="649.9999999999995" as="sourcePoint"/>
+ <mxPoint x="850" y="540.0000000000005" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="1030" y="540"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="87" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="6" target="62" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="1240" y="390"/>
+ <mxPoint x="1240" y="700"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="84" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Decrypted request for: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" parent="1" vertex="1">
+ <mxGeometry x="890" y="350" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="100" target="34" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="65.05882352941171" y="-220" as="sourcePoint"/>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="89" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="32" target="100" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="110" y="-75" as="sourcePoint"/>
+ <mxPoint x="-4.941176470588289" y="-139.99999999999955" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="-5" y="-90"/>
+ <mxPoint x="-5" y="-90"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="91" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="34" target="101" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="105" y="-280" as="sourcePoint"/>
+ <mxPoint x="390" y="-260" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="390" y="-430"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="109" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="97" target="32" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="340" y="480"/>
+ <mxPoint x="340" y="480"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="36" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">Port 443 (HTTPS)</font>" style="ellipse;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="330" y="680" width="170" height="120" as="geometry"/>
+ </mxCell>
+ <mxCell id="92" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="96" target="36" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="50" y="500" as="sourcePoint"/>
+ <Array as="points">
+ <mxPoint x="50" y="740"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="93" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="96" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="300" y="350" as="sourcePoint"/>
+ <mxPoint x="55" y="330" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="160" y="340"/>
+ <mxPoint x="160" y="340"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="96" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Encrypted request for: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" parent="1" vertex="1">
+ <mxGeometry x="-10" y="400" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="100" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Who is: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-110" y="-210" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="101" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">IP:</span><br style="font-family: &#34;roboto&#34;"><span style="font-family: &#34;roboto&#34; ; font-size: 24px">123.124.125.126</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="270" y="-290" width="240" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="106" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;strokeWidth=3;" parent="1" source="104" target="36" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="-40" y="770"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="104" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">TLS Handshake</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="-110" y="300" width="230" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="107" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="104" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="-40" y="275" as="sourcePoint"/>
+ <mxPoint x="341.38784067832285" y="770" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="-40" y="290"/>
+ <mxPoint x="-40" y="290"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="97" value="<span style="font-family: &#34;roboto&#34; ; font-size: 24px">Encrypted response from: someapp.example.com</span>" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#9673a6;strokeWidth=3;fillColor=#e1d5e7;" parent="1" vertex="1">
+ <mxGeometry x="90" y="500" width="310" height="80" as="geometry"/>
+ </mxCell>
+ <mxCell id="110" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="36" target="97" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="415" y="680" as="sourcePoint"/>
+ <mxPoint x="110" y="275" as="targetPoint"/>
+ <Array as="points">
+ <mxPoint x="245" y="710"/>
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="49" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+ <mxGeometry x="510" y="400" width="310" height="320" as="geometry"/>
+ </mxCell>
+ <mxCell id="50" value="<font style="font-size: 24px" face="Roboto">HTTPS certificates<br></font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
+ <mxGeometry x="550.9" y="410" width="228.21" height="40" as="geometry"/>
+ </mxCell>
+ <mxCell id="51" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">someapp.example.com</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="530" y="465" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="52" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">another.example.net</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
+ <mxGeometry x="530" y="545" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="53" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">onemore.example.org</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
+ <mxGeometry x="530" y="625" width="270" height="70" as="geometry"/>
+ </mxCell>
+ <mxCell id="42" value="<font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">IP:</span><br><span style="font-size: 24px">123.124.125.126</span><br></font>" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
+ <mxGeometry x="290" y="600" width="220" height="70" as="geometry"/>
+ </mxCell>
+ </root>
+ </mxGraphModel>
+ </diagram>
+</mxfile>
\ No newline at end of file
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1413px" height="1464px" viewBox="-0.5 -0.5 1413 1464" content="<mxfile><diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">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</diagram></mxfile>"><defs><style type="text/css">/* cyrillic-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu72xKOzY.woff2") format('woff2');
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu5mxKOzY.woff2") format('woff2');
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7mxKOzY.woff2") format('woff2');
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4WxKOzY.woff2") format('woff2');
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7WxKOzY.woff2") format('woff2');
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7GxKOzY.woff2") format('woff2');
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: url("https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4mxK.woff2") format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+</style></defs><g><rect x="590" y="491" width="820" height="970" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="all"/><rect x="850" y="491" width="300" height="80" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 531px; margin-left: 851px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font face="Roboto"><span style="font-size: 24px">Server(s)</span></font></div></div></div></foreignObject><text x="1000" y="535" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">Server(s)</text></switch></g><rect x="60" y="493" width="380" height="250" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 378px; height: 1px; padding-top: 618px; margin-left: 61px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">https://someapp.example.com</font></div></div></div></foreignObject><text x="250" y="622" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">https://someapp.example.com</text></switch></g><path d="M 289.06 793.99 C 293.87 793.99 297.23 791.75 296.28 790.03 L 286.73 773.39 C 285.53 770.86 283.81 770.35 280.97 770.35 L 219.03 770.35 C 216.02 770.35 214.47 770.96 213.01 773.49 L 204.15 789.93 C 202.43 792.57 207.59 793.99 211.29 793.99 Z M 433.76 739.91 L 433.76 496.43 L 65.98 496.43 L 65.98 739.91 Z M 25.89 816 C 16.09 815.9 7.31 812.04 3.61 806.06 C 0 800.17 1.46 794.29 4.56 790.23 L 40.18 747.52 L 40.18 495.12 C 40.18 482.43 49.81 466 65.81 466 L 433.84 466 C 446.32 466 459.57 477.77 459.57 496.74 L 459.57 747.52 L 495.53 790.64 C 498.54 794.7 500 800.07 496.39 805.86 C 491.66 813.16 482.71 815.49 474.28 816 Z" fill="#505050" stroke="none" pointer-events="none"/><path d="M 530 331 L 530 409 L 420 409 L 420 455.9" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 420 462.65 L 415.5 453.65 L 420 455.9 L 424.5 453.65 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 162.5 66 C 96.5 66 80 131 132.8 144 C 80 172.6 139.4 235 182.3 209 C 212 261 311 261 344 209 C 410 209 410 157 368.75 131 C 410 79 344 27 286.25 53 C 245 14 179 14 162.5 66 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 328px; height: 1px; padding-top: 131px; margin-left: 81px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">DNS Servers</font></div></div></div></foreignObject><text x="245" y="135" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DNS Servers</text></switch></g><rect x="635" y="861" width="355" height="440" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 891px; margin-left: 666px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font style="font-size: 24px" face="Roboto">TLS Termination Proxy<br /></font></div></div></div></foreignObject><text x="805" y="895" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">TLS Termination Proxy
+</text></switch></g><path d="M 1030 1081 L 1000.1 1081" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 993.35 1081 L 1002.35 1076.5 L 1000.1 1081 L 1002.35 1085.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 1057.5 1290.8 L 1057.09 1311.9" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 1056.96 1318.65 L 1052.64 1309.56 L 1057.09 1311.9 L 1061.64 1309.73 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><rect x="1035" y="1191" width="300" height="100" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 1241px; margin-left: 1036px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">FastAPI</font><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal"> app for: someapp.example.com</font></div></div></div></foreignObject><text x="1185" y="1245" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">FastAPI app for: someapp.example.com</text></switch></g><rect x="1035" y="591" width="300" height="100" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 641px; margin-left: 1036px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal">Another app</font><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal">: another.example.com</font></div></div></div></foreignObject><text x="1185" y="645" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Another app: another.example.com</text></switch></g><rect x="1035" y="721" width="300" height="100" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 771px; margin-left: 1036px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal">One more app</font><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px ; font-weight: normal">: onemore.example.com</font></div></div></div></foreignObject><text x="1185" y="775" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">One more app: onemore.example.com</text></switch></g><rect x="1035" y="1321" width="300" height="100" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 1371px; margin-left: 1036px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; word-wrap: normal; "><font face="Roboto"><span style="font-size: 24px ; font-weight: 400">A Database</span></font></div></div></div></foreignObject><text x="1185" y="1375" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">A Database</text></switch></g><path d="M 1050 1041 L 1320 1041 L 1340 1081 L 1320 1121 L 1050 1121 L 1030 1081 Z" fill="#e1d5e7" stroke="#9673a6" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 1081px; margin-left: 1031px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Plain response from: someapp.example.com</span></div></div></div></foreignObject><text x="1185" y="1085" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Plain response from: someapp.example.com</text></switch></g><path d="M 1185 1191 L 1185 1121" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 990 931 L 1380 931 L 1380 1241 L 1345.1 1241" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 1338.35 1241 L 1347.35 1236.5 L 1345.1 1241 L 1347.35 1245.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 1050 891 L 1320 891 L 1340 931 L 1320 971 L 1050 971 L 1030 931 Z" fill="#d5e8d4" stroke="#82b366" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 931px; margin-left: 1031px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Decrypted request for: someapp.example.com</span></div></div></div></foreignObject><text x="1185" y="935" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Decrypted request for: someapp.example.com</text></switch></g><path d="M 185 331 L 185 296 L 245 296 L 245 271.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 245 264.35 L 249.5 273.35 L 245 271.1 L 240.5 273.35 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 135 466 L 135 451 L 135 411" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 408.04 111 L 530 111 L 530 251" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 480 1041 L 480 1021 L 480 826.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 480 819.35 L 484.5 828.35 L 480 826.1 L 475.5 828.35 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><ellipse cx="555" cy="1281" rx="85" ry="60.00000000000001" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 1281px; margin-left: 471px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto" style="font-size: 24px">Port 443 (HTTPS)</font></div></div></div></foreignObject><text x="555" y="1285" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Port 443 (HTTPS)</text></switch></g><path d="M 190 1021 L 190 1281 L 459.9 1281" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 466.65 1281 L 457.65 1285.5 L 459.9 1281 L 457.65 1276.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><path d="M 300 816 L 300 881 L 300 941" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 150 941 L 420 941 L 440 981 L 420 1021 L 150 1021 L 130 981 Z" fill="#d5e8d4" stroke="#82b366" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 981px; margin-left: 131px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Encrypted request for: someapp.example.com</span></div></div></div></foreignObject><text x="285" y="985" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Encrypted request for: someapp.example.com</text></switch></g><path d="M 50 331 L 320 331 L 340 371 L 320 411 L 50 411 L 30 371 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 371px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Who is: someapp.example.com</span></div></div></div></foreignObject><text x="185" y="375" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Who is: someapp.example.com</text></switch></g><path d="M 430 251 L 630 251 L 650 291 L 630 331 L 430 331 L 410 291 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 238px; height: 1px; padding-top: 291px; margin-left: 411px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">IP:</span><br style="font-family: "roboto"" /><span style="font-family: "roboto" ; font-size: 24px">123.124.125.126</span></div></div></div></foreignObject><text x="530" y="295" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">IP:...</text></switch></g><path d="M 100 921 L 100 1311 L 481.39 1311" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 50 841 L 240 841 L 260 881 L 240 921 L 50 921 L 30 881 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 881px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">TLS Handshake</span></div></div></div></foreignObject><text x="145" y="885" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">TLS Handshake</text></switch></g><path d="M 100 816 L 100 831 L 100 841" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><path d="M 250 1041 L 520 1041 L 540 1081 L 520 1121 L 250 1121 L 230 1081 Z" fill="#e1d5e7" stroke="#9673a6" stroke-width="3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 1081px; margin-left: 231px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><span style="font-family: "roboto" ; font-size: 24px">Encrypted response from: someapp.example.com</span></div></div></div></foreignObject><text x="385" y="1085" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Encrypted response from: someapp.example.com</text></switch></g><path d="M 481.39 1251 L 385 1251 L 385 1121" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="none"/><rect x="650" y="941" width="310" height="320" fill="#fff2cc" stroke="#d6b656" stroke-width="4" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 226px; height: 1px; padding-top: 971px; margin-left: 692px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Roboto Mono, mono; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font style="font-size: 24px" face="Roboto">HTTPS certificates<br /></font></div></div></div></foreignObject><text x="805" y="975" fill="#000000" font-family="Roboto Mono, mono" font-size="12px" text-anchor="middle">HTTPS certificates
+</text></switch></g><rect x="670" y="1006" width="270" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1041px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">someapp.example.com</span><br /></font></div></div></div></foreignObject><text x="805" y="1045" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">someapp.example.com
+</text></switch></g><rect x="670" y="1086" width="270" height="70" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1121px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">another.example.net</span><br /></font></div></div></div></foreignObject><text x="805" y="1125" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">another.example.net
+</text></switch></g><rect x="670" y="1166" width="270" height="70" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1201px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">onemore.example.org</span><br /></font></div></div></div></foreignObject><text x="805" y="1205" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">onemore.example.org
+</text></switch></g><rect x="430" y="1141" width="220" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 1176px; margin-left: 431px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "><font face="Roboto" data-font-src="https://fonts.googleapis.com/css?family=Roboto"><span style="font-size: 24px">IP:</span><br /><span style="font-size: 24px">123.124.125.126</span><br /></font></div></div></div></foreignObject><text x="540" y="1180" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">IP:...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file