ahriman/docs/ahriman-architecture.svg
2021-09-18 06:28:52 +03:00

3409 lines
294 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (0)
-->
<!-- Title: G Pages: 1 -->
<svg width="6442pt" height="2994pt"
viewBox="0.00 0.00 6442.00 2993.99" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 2989.99)">
<title>G</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-2989.99 6438,-2989.99 6438,4 -4,4"/>
<!-- ahriman_application_ahriman -->
<g id="node1" class="node">
<title>ahriman_application_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#813737" stroke="black" cx="1509" cy="-28.99" rx="46.84" ry="28.98"/>
<text text-anchor="middle" x="1509" y="-37.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1509" y="-26.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1509" y="-15.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman</text>
</g>
<!-- ahriman_application_application -->
<g id="node2" class="node">
<title>ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#950303" stroke="black" cx="987" cy="-1049.95" rx="46.84" ry="28.98"/>
<text text-anchor="middle" x="987" y="-1058.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="987" y="-1047.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="987" y="-1036.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application</text>
</g>
<!-- ahriman_application_handlers_add -->
<g id="node4" class="node">
<title>ahriman_application_handlers_add</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="593" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="593" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="593" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="593" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="593" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">add</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_add -->
<g id="edge1" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_add</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M945.37,-1036.39C906.39,-1023.85 847.1,-1002.81 799,-977.18 737.57,-944.45 672.96,-896.31 632.83,-864.53"/>
<polygon fill="#950303" stroke="black" points="634.89,-861.7 624.89,-858.21 630.53,-867.18 634.89,-861.7"/>
</g>
<!-- ahriman_application_handlers_clean -->
<g id="node5" class="node">
<title>ahriman_application_handlers_clean</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="704" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="704" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="704" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="704" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="704" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">clean</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_clean -->
<g id="edge2" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_clean</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M958.31,-1026.94C907.95,-988.31 803.49,-908.19 745.34,-863.59"/>
<polygon fill="#950303" stroke="black" points="747.18,-860.58 737.11,-857.27 742.92,-866.14 747.18,-860.58"/>
</g>
<!-- ahriman_application_handlers_init -->
<g id="node8" class="node">
<title>ahriman_application_handlers_init</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="815" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="815" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="815" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="815" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="815" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">init</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_init -->
<g id="edge3" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_init</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M981.51,-1021.11C977.24,-999.41 971.19,-968.5 966,-941.41"/>
<path fill="none" stroke="black" d="M966,-939.41C964.76,-932.93 903.09,-890.59 858.96,-861.01"/>
<polygon fill="#950303" stroke="black" points="860.65,-857.93 850.39,-855.28 856.75,-863.75 860.65,-857.93"/>
</g>
<!-- ahriman_application_handlers_key_import -->
<g id="node9" class="node">
<title>ahriman_application_handlers_key_import</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="1075" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1075" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1075" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1075" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1075" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">key_import</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_key_import -->
<g id="edge4" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_key_import</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M966,-939.41C962.25,-919.86 1000.21,-886.36 1032.36,-861.94"/>
<polygon fill="#950303" stroke="black" points="1034.46,-864.74 1040.37,-855.94 1030.27,-859.13 1034.46,-864.74"/>
</g>
<!-- ahriman_application_handlers_rebuild -->
<g id="node10" class="node">
<title>ahriman_application_handlers_rebuild</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="1225" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1225" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1225" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1225" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1225" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">rebuild</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_rebuild -->
<g id="edge5" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_rebuild</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1019.25,-1028.68C1038.42,-1015.57 1062.36,-997.25 1080,-977.18 1105,-948.75 1097.38,-931.52 1123,-903.64 1138.94,-886.3 1159.75,-870.74 1178.41,-858.58"/>
<polygon fill="#950303" stroke="black" points="1180.53,-861.38 1187.09,-853.06 1176.77,-855.47 1180.53,-861.38"/>
</g>
<!-- ahriman_application_handlers_remove -->
<g id="node11" class="node">
<title>ahriman_application_handlers_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="371" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="371" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="371" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="371" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="371" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">remove</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_remove -->
<g id="edge6" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M940.15,-1048.04C860.23,-1044.97 693.8,-1031.91 566,-977.18 504.22,-950.73 443.88,-900.99 407.07,-867.15"/>
<polygon fill="#950303" stroke="black" points="409.29,-864.44 399.58,-860.19 404.52,-869.56 409.29,-864.44"/>
</g>
<!-- ahriman_application_handlers_remove_unknown -->
<g id="node12" class="node">
<title>ahriman_application_handlers_remove_unknown</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="945" cy="-830.87" rx="65.11" ry="36.54"/>
<text text-anchor="middle" x="945" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="945" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="945" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="945" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">remove_unknown</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge7" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_remove_unknown</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M966,-939.41C962.11,-919.14 957.75,-896.74 954.01,-877.65"/>
<polygon fill="#950303" stroke="black" points="957.42,-876.85 952.06,-867.71 950.55,-878.2 957.42,-876.85"/>
</g>
<!-- ahriman_application_handlers_report -->
<g id="node13" class="node">
<title>ahriman_application_handlers_report</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="260" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="260" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="260" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="260" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="260" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_report -->
<g id="edge8" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_report</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M940.55,-1045.93C826.45,-1038.01 535.21,-1014.64 446,-977.18 386.29,-952.11 329.41,-902.61 294.63,-868.4"/>
<polygon fill="#950303" stroke="black" points="296.68,-865.5 287.12,-860.92 291.73,-870.46 296.68,-865.5"/>
</g>
<!-- ahriman_application_handlers_setup -->
<g id="node15" class="node">
<title>ahriman_application_handlers_setup</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="1708" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1708" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1708" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1708" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1708" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">setup</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge9" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_setup</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1330,-939.41C1469.67,-893.4 1517.42,-924.59 1653,-867.64 1657.13,-865.91 1661.29,-863.86 1665.37,-861.65"/>
<polygon fill="#950303" stroke="black" points="1667.24,-864.61 1674.13,-856.56 1663.73,-858.55 1667.24,-864.61"/>
</g>
<!-- ahriman_application_handlers_sign -->
<g id="node16" class="node">
<title>ahriman_application_handlers_sign</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="1375" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1375" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1375" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1375" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1375" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">sign</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_sign -->
<g id="edge10" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_sign</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1029.29,-1037.64C1097.94,-1019.13 1226.86,-983.8 1235,-977.18 1248.97,-965.83 1237.97,-949.6 1254,-941.41"/>
<path fill="none" stroke="black" d="M1254,-939.41C1287.87,-922.1 1319.75,-893.04 1342.28,-869.48"/>
<polygon fill="#950303" stroke="black" points="1344.96,-871.74 1349.25,-862.05 1339.86,-866.95 1344.96,-871.74"/>
</g>
<!-- ahriman_application_handlers_status -->
<g id="node17" class="node">
<title>ahriman_application_handlers_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#7a2828" stroke="black" cx="1597" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1597" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1597" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1597" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1597" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_status -->
<g id="edge11" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1032,-1041.39C1088.51,-1031.01 1187.79,-1009.84 1268,-977.18 1297.46,-965.19 1299.79,-951.37 1330,-941.41"/>
<path fill="none" stroke="black" d="M1330,-939.41C1424.48,-908.28 1452.49,-911.05 1542,-867.64 1546.03,-865.69 1550.12,-863.49 1554.15,-861.17"/>
<polygon fill="#950303" stroke="black" points="1556.09,-864.09 1562.86,-855.95 1552.48,-858.09 1556.09,-864.09"/>
</g>
<!-- ahriman_application_handlers_status_update -->
<g id="node18" class="node">
<title>ahriman_application_handlers_status_update</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="140" cy="-830.87" rx="55.31" ry="36.54"/>
<text text-anchor="middle" x="140" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="140" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="140" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="140" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status_update</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_status_update -->
<g id="edge12" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_status_update</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M940.24,-1047.5C763.78,-1041.49 146.21,-1015.25 105,-941.41"/>
</g>
<!-- ahriman_application_handlers_sync -->
<g id="node19" class="node">
<title>ahriman_application_handlers_sync</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="1486" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1486" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1486" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1486" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1486" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">sync</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_sync -->
<g id="edge13" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_sync</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1254,-939.41C1282.33,-924.94 1286.87,-916.42 1316,-903.64 1365.05,-882.13 1382.54,-890.46 1431,-867.64 1435.05,-865.74 1439.16,-863.57 1443.2,-861.27"/>
<polygon fill="#950303" stroke="black" points="1445.12,-864.2 1451.92,-856.08 1441.54,-858.19 1445.12,-864.2"/>
</g>
<!-- ahriman_application_handlers_update -->
<g id="node20" class="node">
<title>ahriman_application_handlers_update</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="482" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="482" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="482" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="482" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="482" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">update</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_update -->
<g id="edge14" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_update</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M941.21,-1043.68C880.44,-1035.45 770.83,-1016.26 685,-977.18 622.03,-948.51 558.65,-899.09 519.86,-865.95"/>
<polygon fill="#950303" stroke="black" points="521.83,-863.02 511.97,-859.14 517.25,-868.32 521.83,-863.02"/>
</g>
<!-- ahriman_application_handlers_user -->
<g id="node21" class="node">
<title>ahriman_application_handlers_user</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#7a2828" stroke="black" cx="2041" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="2041" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2041" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="2041" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="2041" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_user -->
<g id="edge15" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1033.78,-1049.03C1194.39,-1048.7 1721.97,-1042.54 1876,-977.18 1930.65,-953.99 1979.8,-905.35 2009.96,-870.73"/>
<polygon fill="#950303" stroke="black" points="2012.99,-872.57 2016.84,-862.7 2007.68,-868.02 2012.99,-872.57"/>
</g>
<!-- ahriman_application_handlers -->
<g id="node3" class="node">
<title>ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#950303" stroke="black" cx="1509" cy="-122.97" rx="46.84" ry="28.98"/>
<text text-anchor="middle" x="1509" y="-131.47" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1509" y="-120.47" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1509" y="-109.47" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers</text>
</g>
<!-- ahriman_application_handlers&#45;&gt;ahriman_application_ahriman -->
<g id="edge16" class="edge">
<title>ahriman_application_handlers&#45;&gt;ahriman_application_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1509,-93.88C1509,-85.84 1509,-76.94 1509,-68.39"/>
<polygon fill="#950303" stroke="black" points="1512.5,-68.23 1509,-58.23 1505.5,-68.23 1512.5,-68.23"/>
</g>
<!-- ahriman_application_handlers_add&#45;&gt;ahriman_application_handlers -->
<g id="edge17" class="edge">
<title>ahriman_application_handlers_add&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M626.49,-805.17C633.34,-800.97 640.7,-797.02 648,-794.1 827.24,-722.43 910.15,-815 1075,-714.56"/>
</g>
<!-- ahriman_application_handlers_clean&#45;&gt;ahriman_application_handlers -->
<g id="edge18" class="edge">
<title>ahriman_application_handlers_clean&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M737.93,-805.35C744.69,-801.18 751.9,-797.2 759,-794.1 891.73,-736.16 951.32,-789.91 1075,-714.56"/>
</g>
<!-- ahriman_application_handlers_dump -->
<g id="node6" class="node">
<title>ahriman_application_handlers_dump</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#993333" stroke="black" cx="1819" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1819" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1819" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1819" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1819" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">dump</text>
</g>
<!-- ahriman_application_handlers_dump&#45;&gt;ahriman_application_handlers -->
<g id="edge19" class="edge">
<title>ahriman_application_handlers_dump&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1784.25,-806.21C1777.63,-802 1770.68,-797.8 1764,-794.1 1581.44,-693.24 1252.73,-787.59 1338,-597.24"/>
</g>
<!-- ahriman_application_handlers_handler -->
<g id="node7" class="node">
<title>ahriman_application_handlers_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b30404" stroke="black" cx="1179" cy="-940.41" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1179" y="-954.41" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1179" y="-943.41" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1179" y="-932.41" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1179" y="-921.41" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handler</text>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers -->
<g id="edge20" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1170.5,-904.22C1162.49,-874.06 1149.03,-829.94 1131,-794.1 1111.56,-755.48 1038.08,-737.05 1075,-714.56"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_add -->
<g id="edge21" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_add</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1133.7,-930.34C1093.46,-922.5 1032.99,-911.27 980,-903.64 833.09,-882.5 787.81,-917.46 648,-867.64 643.72,-866.12 639.44,-864.2 635.26,-862.05"/>
<polygon fill="#b30404" stroke="black" points="636.75,-858.87 626.32,-857.03 633.32,-864.97 636.75,-858.87"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_clean -->
<g id="edge22" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_clean</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1133.59,-931.03C1093.28,-923.65 1032.76,-912.68 980,-903.64 881.91,-886.84 851.82,-903.54 759,-867.64 754.76,-866 750.51,-864.01 746.35,-861.8"/>
<polygon fill="#b30404" stroke="black" points="747.85,-858.63 737.43,-856.71 744.38,-864.71 747.85,-858.63"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_dump -->
<g id="edge23" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_dump</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1213.52,-915.5C1221.85,-910.78 1230.97,-906.43 1240,-903.64 1463.05,-834.78 1542.6,-941.65 1764,-867.64 1768.49,-866.14 1772.97,-864.19 1777.33,-861.96"/>
<polygon fill="#b30404" stroke="black" points="1779.04,-865.01 1786.06,-857.08 1775.63,-858.9 1779.04,-865.01"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_init -->
<g id="edge24" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_init</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1132.87,-933.65C1071.28,-924.84 959.67,-905 871,-867.64 866.58,-865.78 862.12,-863.58 857.75,-861.2"/>
<polygon fill="#b30404" stroke="black" points="859.35,-858.09 848.94,-856.12 855.85,-864.15 859.35,-858.09"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_key_import -->
<g id="edge25" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_key_import</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1151.13,-910.59C1138.54,-897.58 1123.52,-882.05 1110.17,-868.24"/>
<polygon fill="#b30404" stroke="black" points="1112.41,-865.53 1102.95,-860.77 1107.38,-870.39 1112.41,-865.53"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_rebuild -->
<g id="edge26" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_rebuild</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1193.55,-905.39C1197.62,-895.87 1202.1,-885.4 1206.37,-875.42"/>
<polygon fill="#b30404" stroke="black" points="1209.67,-876.62 1210.38,-866.05 1203.23,-873.87 1209.67,-876.62"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_remove -->
<g id="edge27" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1134.17,-929.86C1093.98,-921.65 1033.31,-910.15 980,-903.64 857.54,-888.71 543.08,-906.54 426,-867.64 421.51,-866.15 417.02,-864.2 412.66,-861.98"/>
<polygon fill="#b30404" stroke="black" points="414.37,-858.92 403.93,-857.1 410.95,-865.03 414.37,-858.92"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge28" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_remove_unknown</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1138.74,-921.74C1106.3,-907.4 1059.57,-886.54 1019,-867.64 1013.7,-865.17 1008.19,-862.58 1002.69,-859.96"/>
<polygon fill="#b30404" stroke="black" points="1004,-856.7 993.47,-855.55 1000.98,-863.02 1004,-856.7"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_report -->
<g id="edge29" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_report</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1134.19,-929.72C1094.01,-921.42 1033.35,-909.86 980,-903.64 833,-886.52 455.7,-913.54 315,-867.64 310.5,-866.18 306.01,-864.24 301.65,-862.03"/>
<polygon fill="#b30404" stroke="black" points="303.35,-858.97 292.91,-857.17 299.94,-865.09 303.35,-858.97"/>
</g>
<!-- ahriman_application_handlers_search -->
<g id="node14" class="node">
<title>ahriman_application_handlers_search</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="1930" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1930" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1930" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1930" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1930" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">search</text>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_search -->
<g id="edge30" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_search</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1213.49,-915.42C1221.83,-910.7 1230.95,-906.38 1240,-903.64 1510.59,-821.87 1606.38,-955.66 1875,-867.64 1879.5,-866.17 1883.99,-864.23 1888.35,-862.02"/>
<polygon fill="#b30404" stroke="black" points="1890.05,-865.07 1897.09,-857.15 1886.65,-858.96 1890.05,-865.07"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge31" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_setup</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1213.55,-915.62C1221.89,-910.9 1230.99,-906.52 1240,-903.64 1415.54,-847.67 1478.8,-927.66 1653,-867.64 1657.48,-866.1 1661.95,-864.12 1666.3,-861.88"/>
<polygon fill="#b30404" stroke="black" points="1668.02,-864.92 1675.03,-856.97 1664.59,-858.82 1668.02,-864.92"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_sign -->
<g id="edge32" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_sign</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1215.51,-917.38C1223.52,-912.73 1231.99,-907.93 1240,-903.64 1272.24,-886.38 1281.76,-884.91 1314,-867.64 1319.13,-864.9 1324.45,-861.94 1329.72,-858.95"/>
<polygon fill="#b30404" stroke="black" points="1331.57,-861.92 1338.49,-853.9 1328.07,-855.86 1331.57,-861.92"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_status -->
<g id="edge33" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1213.95,-915.64C1222.19,-910.98 1231.16,-906.62 1240,-903.64 1368.12,-860.55 1414.91,-913.69 1542,-867.64 1546.27,-866.1 1550.55,-864.16 1554.72,-862"/>
<polygon fill="#b30404" stroke="black" points="1556.67,-864.92 1563.66,-856.96 1553.23,-858.82 1556.67,-864.92"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_status_update -->
<g id="edge34" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_status_update</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1134.2,-929.62C1094.03,-921.26 1033.37,-909.65 980,-903.64 808.45,-884.33 370,-915.02 204,-867.64 198.64,-866.12 193.25,-864.06 187.99,-861.72"/>
<polygon fill="#b30404" stroke="black" points="189.22,-858.42 178.69,-857.21 186.17,-864.72 189.22,-858.42"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_sync -->
<g id="edge35" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_sync</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1214.1,-916.08C1222.34,-911.4 1231.26,-906.92 1240,-903.64 1320.9,-873.35 1350.83,-899.8 1431,-867.64 1435.22,-865.95 1439.46,-863.92 1443.61,-861.69"/>
<polygon fill="#b30404" stroke="black" points="1445.59,-864.59 1452.51,-856.57 1442.1,-858.52 1445.59,-864.59"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_update -->
<g id="edge36" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_update</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1134.14,-930.07C1093.94,-922 1033.26,-910.58 980,-903.64 784.12,-878.14 723.95,-931.44 537,-867.64 532.52,-866.11 528.04,-864.14 523.69,-861.9"/>
<polygon fill="#b30404" stroke="black" points="525.4,-858.85 514.96,-857.01 521.97,-864.95 525.4,-858.85"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_user -->
<g id="edge37" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1213.48,-915.36C1221.81,-910.65 1230.94,-906.34 1240,-903.64 1558.15,-808.95 1670.13,-969.67 1986,-867.64 1990.5,-866.19 1995,-864.26 1999.36,-862.06"/>
<polygon fill="#b30404" stroke="black" points="2001.06,-865.12 2008.1,-857.2 1997.66,-859 2001.06,-865.12"/>
</g>
<!-- ahriman_application_handlers_web -->
<g id="node22" class="node">
<title>ahriman_application_handlers_web</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="1509" cy="-224.74" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1509" y="-238.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1509" y="-227.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1509" y="-216.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1509" y="-205.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web</text>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_web -->
<g id="edge38" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1215.51,-917.31C1240.95,-901.26 1271.9,-880.24 1281,-867.64 1330.99,-798.46 1376,-580.83 1376,-495.48 1376,-495.48 1376,-495.48 1376,-334.5 1376,-311.42 1424.63,-276.48 1463.07,-252.47"/>
<polygon fill="#b30404" stroke="black" points="1464.92,-255.44 1471.6,-247.22 1461.25,-249.48 1464.92,-255.44"/>
</g>
<!-- ahriman_application_handlers_init&#45;&gt;ahriman_application_handlers -->
<g id="edge39" class="edge">
<title>ahriman_application_handlers_init&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M849.93,-806.08C856.78,-801.85 864.01,-797.66 871,-794.1 957.76,-750.02 991.9,-765.19 1075,-714.56"/>
</g>
<!-- ahriman_application_handlers_key_import&#45;&gt;ahriman_application_handlers -->
<g id="edge40" class="edge">
<title>ahriman_application_handlers_key_import&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1061.97,-795.53C1053.82,-767.58 1049.18,-730.29 1075,-714.56"/>
</g>
<!-- ahriman_application_handlers_rebuild&#45;&gt;ahriman_application_handlers -->
<g id="edge41" class="edge">
<title>ahriman_application_handlers_rebuild&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1189.05,-806.93C1140.78,-775.54 1062.45,-722.21 1075,-714.56"/>
</g>
<!-- ahriman_application_handlers_remove&#45;&gt;ahriman_application_handlers -->
<g id="edge42" class="edge">
<title>ahriman_application_handlers_remove&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M404.35,-804.81C411.22,-800.63 418.62,-796.79 426,-794.1 699.05,-694.65 826.84,-865.77 1075,-714.56"/>
</g>
<!-- ahriman_application_handlers_remove_unknown&#45;&gt;ahriman_application_handlers -->
<g id="edge43" class="edge">
<title>ahriman_application_handlers_remove_unknown&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M974.53,-798.02C999.38,-772.7 1036.87,-737.79 1075,-714.56"/>
</g>
<!-- ahriman_application_handlers_report&#45;&gt;ahriman_application_handlers -->
<g id="edge44" class="edge">
<title>ahriman_application_handlers_report&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M293.01,-804.88C299.97,-800.65 307.48,-796.77 315,-794.1 635.13,-680.7 784.97,-891.27 1075,-714.56"/>
</g>
<!-- ahriman_application_handlers_search&#45;&gt;ahriman_application_handlers -->
<g id="edge45" class="edge">
<title>ahriman_application_handlers_search&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1964.08,-805.55C1999.83,-778.58 2049.72,-736.06 2041,-714.56"/>
<path fill="none" stroke="black" d="M2041,-712.56C1911.07,-392.07 1236.58,-509.67 1434,-225.74"/>
</g>
<!-- ahriman_application_handlers_setup&#45;&gt;ahriman_application_handlers -->
<g id="edge46" class="edge">
<title>ahriman_application_handlers_setup&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1674.68,-804.73C1667.81,-800.56 1660.4,-796.75 1653,-794.1 1514.46,-744.66 1469.63,-778.79 1324,-758.1 1212.77,-742.31 979.06,-773.01 1075,-714.56"/>
</g>
<!-- ahriman_application_handlers_sign&#45;&gt;ahriman_application_handlers -->
<g id="edge47" class="edge">
<title>ahriman_application_handlers_sign&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1333.48,-814.03C1250.96,-782.53 1074.27,-715 1075,-714.56"/>
</g>
<!-- ahriman_application_handlers_status&#45;&gt;ahriman_application_handlers -->
<g id="edge48" class="edge">
<title>ahriman_application_handlers_status&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1563.56,-805.05C1556.7,-800.86 1549.33,-796.95 1542,-794.1 1345.71,-717.94 895.2,-824.11 1075,-714.56"/>
</g>
<!-- ahriman_application_handlers_status_update&#45;&gt;ahriman_application_handlers -->
<g id="edge49" class="edge">
<title>ahriman_application_handlers_status_update&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M179.13,-804.66C187.09,-800.5 195.61,-796.7 204,-794.1 389.66,-736.6 909.02,-815.69 1075,-714.56"/>
<path fill="none" stroke="black" d="M1075,-712.56C1183.99,-646.15 1310.25,-721.82 1338,-597.24"/>
<path fill="none" stroke="black" d="M1338,-595.24C1356.72,-511.19 1338,-487.6 1338,-401.5 1338,-401.5 1338,-401.5 1338,-334.5 1338,-270.03 1393.34,-275.78 1434,-225.74"/>
<path fill="none" stroke="black" d="M1434,-223.74C1445.13,-209.59 1442.78,-202.79 1453,-187.97 1460.6,-176.94 1469.85,-165.69 1478.63,-155.76"/>
<polygon fill="#8a2e2e" stroke="black" points="1481.43,-157.88 1485.52,-148.11 1476.22,-153.19 1481.43,-157.88"/>
</g>
<!-- ahriman_application_handlers_sync&#45;&gt;ahriman_application_handlers -->
<g id="edge50" class="edge">
<title>ahriman_application_handlers_sync&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1452.13,-805.19C1445.37,-801.04 1438.14,-797.11 1431,-794.1 1281.56,-731.23 936.55,-798.92 1075,-714.56"/>
</g>
<!-- ahriman_application_handlers_update&#45;&gt;ahriman_application_handlers -->
<g id="edge51" class="edge">
<title>ahriman_application_handlers_update&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M515.4,-804.95C522.27,-800.77 529.65,-796.89 537,-794.1 763.07,-708.57 868.59,-840.33 1075,-714.56"/>
</g>
<!-- ahriman_application_handlers_user&#45;&gt;ahriman_application_handlers -->
<g id="edge52" class="edge">
<title>ahriman_application_handlers_user&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2043.28,-794.15C2044.18,-771.3 2044.32,-741.08 2041,-714.56"/>
</g>
<!-- ahriman_application_handlers_web&#45;&gt;ahriman_application_handlers -->
<g id="edge53" class="edge">
<title>ahriman_application_handlers_web&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1509,-187.72C1509,-179.48 1509,-170.69 1509,-162.35"/>
<polygon fill="#822b2b" stroke="black" points="1512.5,-162.11 1509,-152.11 1505.5,-162.11 1512.5,-162.11"/>
</g>
<!-- ahriman_application_lock -->
<g id="node23" class="node">
<title>ahriman_application_lock</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="2357" cy="-1525.11" rx="46.84" ry="28.98"/>
<text text-anchor="middle" x="2357" y="-1533.61" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2357" y="-1522.61" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="2357" y="-1511.61" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">lock</text>
</g>
<!-- ahriman_application_lock&#45;&gt;ahriman_application_handlers_handler -->
<g id="edge54" class="edge">
<title>ahriman_application_lock&#45;&gt;ahriman_application_handlers_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2323.96,-1504.39C2250.75,-1460.85 2069.09,-1353.67 1914,-1269.26 1851.67,-1235.34 1829.93,-1237.25 1772,-1196.26 1714.12,-1155.3 1701.82,-1140.84 1656,-1086.72 1643.63,-1072.11 1643.98,-1065.89 1632,-1050.95"/>
</g>
<!-- ahriman_core -->
<g id="node24" class="node">
<title>ahriman_core</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="2165" cy="-2550.5" rx="42.94" ry="18"/>
<text text-anchor="middle" x="2165" y="-2548" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.core</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_application -->
<g id="edge55" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1256,-2455.51C1121.7,-2403.32 1121.3,-2329.88 1052,-2203.56 964.77,-2044.56 851.55,-1597.26 836,-1416.57"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_add -->
<g id="edge56" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_add</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1104,-2455.51C992.71,-2431.33 844.28,-2152.55 762,-2073.8"/>
<path fill="none" stroke="black" d="M762,-2071.8C736.84,-2038.71 723.09,-2035.86 702,-2000.03 666.89,-1940.39 660.81,-1922.34 646,-1854.73"/>
<path fill="none" stroke="black" d="M646,-1852.73C633.52,-1820.49 625.53,-1814.19 616,-1780.96 602.39,-1733.53 605.13,-1720.24 598,-1671.42 569.69,-1477.52 550.7,-1428.03 559,-1232.26 564.46,-1103.45 579.76,-951.96 587.84,-877.66"/>
<polygon fill="#f91010" stroke="black" points="591.32,-878.02 588.93,-867.7 584.36,-877.26 591.32,-878.02"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_clean -->
<g id="edge57" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_clean</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M646,-1852.73C572.1,-1437.38 545.31,-1309.34 661,-903.64 664.11,-892.74 669.33,-881.8 675.07,-871.88"/>
<polygon fill="#f91010" stroke="black" points="678.22,-873.43 680.45,-863.07 672.25,-869.78 678.22,-873.43"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_dump -->
<g id="edge58" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_dump</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1426,-1962.27C1440.08,-1866.48 1444,-1842 1444,-1745.19 1444,-1745.19 1444,-1745.19 1444,-1633.65 1444,-1475.76 1565.37,-1477.35 1648,-1342.8 1661.22,-1321.27 1860.62,-966.65 1862,-941.41"/>
<path fill="none" stroke="black" d="M1862,-939.41C1860.44,-916.66 1851.82,-892.95 1842.7,-873.61"/>
<polygon fill="#f91010" stroke="black" points="1845.77,-871.91 1838.22,-864.49 1839.49,-875 1845.77,-871.91"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_handler -->
<g id="edge59" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2121.84,-2549.49C1983.99,-2548.89 1556.12,-2542.37 1432,-2485.5 1404.79,-2473.04 1256.5,-2321.82 1239,-2297.54 1203.79,-2248.69 1201.04,-2231.99 1180,-2175.57"/>
<path fill="none" stroke="black" d="M1180,-2173.57C1022.76,-1784.84 1178.15,-1646.95 1116,-1232.26 1103.57,-1149.36 1018.63,-1121.45 1064,-1050.95"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_init -->
<g id="edge60" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_init</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M762,-2071.8C658.95,-1956.73 693.1,-1532.55 708,-1378.8 726.28,-1190.14 779.24,-969.94 803.1,-876.95"/>
<polygon fill="#f91010" stroke="black" points="806.55,-877.6 805.66,-867.04 799.77,-875.85 806.55,-877.6"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_key_import -->
<g id="edge61" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_key_import</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1256,-2455.51C1187.2,-2430.84 988,-1927.82 988,-1854.73 988,-1854.73 988,-1854.73 988,-1633.65 988,-1417.34 803.36,-1364.94 874,-1160.49"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_rebuild -->
<g id="edge62" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_rebuild</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1180,-2173.57C1145.17,-2002.44 1167.56,-1955.56 1164,-1780.96 1163.33,-1748.28 1160.06,-1739.86 1164,-1707.42 1184.15,-1541.5 1323.85,-1143.1 1344,-977.18 1347.94,-944.74 1360.07,-932.1 1344,-903.64 1329.64,-878.22 1302.26,-860.79 1277.38,-849.48"/>
<polygon fill="#f91010" stroke="black" points="1278.57,-846.18 1268,-845.44 1275.8,-852.61 1278.57,-846.18"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_remove -->
<g id="edge63" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2122.01,-2548.51C1990.01,-2545.07 1579.05,-2531.17 1242,-2485.5 1179.98,-2477.1 1164.82,-2472.28 1104,-2457.51"/>
<path fill="none" stroke="black" d="M1104,-2455.51C1074.62,-2448.38 1070.66,-2437.16 1042,-2427.52 921,-2386.84 864.74,-2439.29 762,-2363.53"/>
<path fill="none" stroke="black" d="M762,-2361.53C600.41,-2242.37 418,-1726.88 418,-1526.11 418,-1526.11 418,-1526.11 418,-1305.03 418,-1147.33 391.83,-961.52 378.54,-877.36"/>
<polygon fill="#f91010" stroke="black" points="381.98,-876.69 376.95,-867.37 375.07,-877.79 381.98,-876.69"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge64" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_remove_unknown</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2121.95,-2548.81C2001.1,-2546.28 1648.74,-2534.89 1361,-2485.5 1313.4,-2477.34 1301.99,-2472.26 1256,-2457.51"/>
<path fill="none" stroke="black" d="M1256,-2455.51C1189.31,-2434.12 1166.4,-2435.63 1112,-2391.52 1031.91,-2326.58 1020.07,-2296.78 976,-2203.56 842.94,-1922.12 798,-1837.42 798,-1526.11 798,-1526.11 798,-1526.11 798,-1048.95 798,-978.74 818.27,-960.11 860,-903.64 870.08,-890.01 883.24,-877.29 896.18,-866.45"/>
<polygon fill="#f91010" stroke="black" points="898.62,-868.98 904.18,-859.96 894.21,-863.54 898.62,-868.98"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_report -->
<g id="edge65" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_report</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2122.21,-2548.28C1934.5,-2542.78 1188.95,-2518.99 1090,-2485.5 1046.33,-2470.73 1047.04,-2444.04 1004,-2427.52 896.73,-2386.35 850.41,-2443.62 748,-2391.52 611.98,-2322.32 622.7,-2244.82 552,-2109.57 501.71,-2013.37 486.39,-1990.44 444,-1890.5 424.65,-1844.88 133.98,-1099.67 143,-1050.95"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_search -->
<g id="edge66" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_search</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1446,-2267.55C1339.54,-2116.06 1442.39,-2030.03 1502,-1854.73"/>
<path fill="none" stroke="black" d="M1502,-1852.73C1525.27,-1790.83 1512.74,-1770.03 1534,-1707.42 1649.24,-1368.07 1737.46,-1307.7 1876,-977.18 1890.07,-943.62 1904.34,-904.98 1914.67,-875.98"/>
<polygon fill="#f91010" stroke="black" points="1917.98,-877.13 1918.02,-866.54 1911.38,-874.79 1917.98,-877.13"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge67" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_setup</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1446,-2455.51C1411.02,-2415.66 1493.94,-2408.53 1522,-2363.53"/>
<path fill="none" stroke="black" d="M1522,-2361.53C1550.06,-2316.53 1479.54,-2310.62 1446,-2269.55"/>
<path fill="none" stroke="black" d="M1446,-2267.55C1423.17,-2239.59 1407.75,-2237.68 1396,-2203.56 1390.54,-2187.71 1390.82,-2072.35 1398,-2036.03 1404.64,-2002.45 1421.39,-1998.19 1426,-1964.27"/>
<path fill="none" stroke="black" d="M1426,-1962.27C1433.72,-1751.48 1362.85,-1679.96 1451,-1488.34 1509.31,-1361.58 1599.15,-1368.36 1634,-1233.26"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_sign -->
<g id="edge68" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_sign</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2123.41,-2545.7C1973.53,-2531.81 1468.61,-2483.27 1446,-2457.51"/>
<path fill="none" stroke="black" d="M1446,-2455.51C1435.19,-2443.2 1433.11,-2439.57 1422,-2427.52 1366.81,-2367.7 1333.5,-2368.14 1293,-2297.54 1271.49,-2260.05 1273.6,-2246.41 1268,-2203.56 1252.04,-2081.46 1264.63,-2049.59 1268,-1926.5 1270.67,-1828.97 1273.57,-1804.62 1282,-1707.42 1290.47,-1609.78 1292.41,-1585.25 1307,-1488.34 1314.36,-1439.48 1317.33,-1427.45 1326,-1378.8 1360.66,-1184.25 1400.26,-1138.95 1406,-941.41"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_status -->
<g id="edge69" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1446,-2455.51C1419.03,-2424.79 1463.48,-2400.49 1446,-2363.53"/>
<path fill="none" stroke="black" d="M1446,-2361.53C1425.02,-2317.16 1391.76,-2331.15 1356,-2297.54 1316.86,-2260.75 1297.91,-2254.2 1280,-2203.56 1249.32,-2116.82 1302.56,-1455.08 1354,-1378.8 1372.68,-1351.1 1393.88,-1363.64 1420,-1342.8 1449.66,-1319.13 1622.82,-1116.77 1646,-1086.72 1657.69,-1071.56 1667.8,-1069.97 1670,-1050.95"/>
<path fill="none" stroke="black" d="M1670,-1048.95C1669.79,-998.41 1625.72,-991.43 1633,-941.41"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_status_update -->
<g id="edge70" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_status_update</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2122.1,-2548.38C1939.05,-2543.44 1222.49,-2522.1 1000,-2485.5 846.15,-2460.2 790.78,-2479.43 662,-2391.52 417.13,-2224.38 266,-2151.2 266,-1854.73 266,-1854.73 266,-1854.73 266,-1633.65 266,-1568.19 257.15,-1552.02 242,-1488.34 194.84,-1290.17 61.34,-1249.93 105,-1050.95"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_sync -->
<g id="edge71" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_sync</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1446,-2361.53C1416.66,-2292.73 1401.09,-2277.2 1388,-2203.56 1374.97,-2130.25 1386.81,-2110.48 1388,-2036.03 1391.89,-1792.26 1361.2,-1725.2 1419,-1488.34 1435.18,-1422.03 1454.05,-1409.61 1468,-1342.8 1504.61,-1167.51 1472.7,-1117.9 1503,-941.41"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_update -->
<g id="edge72" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_update</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M762,-2361.53C740.99,-2342.82 582.48,-1917.87 576,-1890.5 485.25,-1506.93 480.5,-1026.36 481.41,-877.76"/>
<polygon fill="#f91010" stroke="black" points="484.92,-877.67 481.49,-867.64 477.92,-877.62 484.92,-877.67"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_user -->
<g id="edge73" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1502,-1852.73C1588.7,-1649.5 1919.88,-1191.94 2090,-1050.95"/>
<path fill="none" stroke="black" d="M2090,-1048.95C2192.86,-956.5 2424.92,-1072.88 2382,-941.41"/>
<path fill="none" stroke="black" d="M2382,-939.41C2363.92,-884.03 2189.01,-852.05 2096.99,-838.92"/>
<polygon fill="#f91010" stroke="black" points="2097.39,-835.45 2087,-837.53 2096.42,-842.38 2097.39,-835.45"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_web -->
<g id="edge74" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1522,-2361.53C1547.97,-2319.88 1576.16,-2331.07 1612,-2297.54 1675.65,-2237.98 1680.44,-2212.75 1736,-2145.57 1789.79,-2080.53 1814.26,-2072.22 1858,-2000.03 2040.12,-1699.47 1944.1,-1546.55 2160,-1269.26 2227.04,-1183.16 2262.91,-1177.99 2357,-1122.72 3058.74,-710.49 3257.03,-635.15 4027,-371.5 4091.45,-349.44 4192.35,-401.64 4176,-335.5"/>
<path fill="none" stroke="black" d="M4176,-334.5C4163.61,-267.95 1950.41,-232.25 1565.69,-226.55"/>
<polygon fill="#f91010" stroke="black" points="1565.67,-223.05 1555.62,-226.4 1565.57,-230.05 1565.67,-223.05"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_lock -->
<g id="edge75" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_lock</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1522,-2361.53C1578.98,-2264.76 1507.23,-2221.79 1503,-2109.57 1501.77,-2076.91 1498.92,-2068.46 1503,-2036.03 1509.27,-1986.18 1525.27,-1854.21 1559,-1816.96 1612.19,-1758.21 2138.74,-1593.04 2306.17,-1541.6"/>
<polygon fill="#f91010" stroke="black" points="2307.21,-1544.94 2315.74,-1538.67 2305.15,-1538.25 2307.21,-1544.94"/>
</g>
<!-- ahriman_models_auth_settings -->
<g id="node62" class="node">
<title>ahriman_models_auth_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="4672" cy="-2362.53" rx="53.07" ry="28.98"/>
<text text-anchor="middle" x="4672" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4672" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="4672" y="-2349.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth_settings</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_models_auth_settings -->
<g id="edge76" class="edge">
<title>ahriman_core&#45;&gt;ahriman_models_auth_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2188.25,-2535.22C2198.26,-2529.85 2210.33,-2524.35 2222,-2521.5 2399.62,-2478.19 3684.86,-2501.23 3867,-2485.5 4147.68,-2461.27 4479.25,-2400.84 4612.34,-2375.26"/>
<polygon fill="#f91010" stroke="black" points="4613.18,-2378.66 4622.34,-2373.33 4611.86,-2371.79 4613.18,-2378.66"/>
</g>
<!-- ahriman_models_build_status -->
<g id="node63" class="node">
<title>ahriman_models_build_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#e50505" stroke="black" cx="5091" cy="-2362.53" rx="48.58" ry="28.98"/>
<text text-anchor="middle" x="5091" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5091" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="5091" y="-2349.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">build_status</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_models_build_status -->
<g id="edge77" class="edge">
<title>ahriman_core&#45;&gt;ahriman_models_build_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5014,-2455.51C5025.42,-2447.57 5019.91,-2438.84 5028,-2427.52 5036.39,-2415.79 5046.95,-2404.17 5057.01,-2394.13"/>
<polygon fill="#f91010" stroke="black" points="5059.49,-2396.6 5064.21,-2387.11 5054.6,-2391.58 5059.49,-2396.6"/>
</g>
<!-- ahriman_models_package -->
<g id="node66" class="node">
<title>ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#950303" stroke="black" cx="2800" cy="-2362.53" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="2800" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2800" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2800" y="-2349.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">package</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_models_package -->
<g id="edge78" class="edge">
<title>ahriman_core&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2189.28,-2535.49C2199.15,-2530.36 2210.84,-2524.96 2222,-2521.5 2328.39,-2488.56 2363.3,-2517.44 2470,-2485.5 2528.28,-2468.06 2537.26,-2449.48 2594,-2427.52 2648.16,-2406.56 2712.29,-2387.51 2754.44,-2375.75"/>
<polygon fill="#f91010" stroke="black" points="2755.43,-2379.11 2764.14,-2373.07 2753.57,-2372.36 2755.43,-2379.11"/>
</g>
<!-- ahriman_models_report_settings -->
<g id="node68" class="node">
<title>ahriman_models_report_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b03a3a" stroke="black" cx="2466" cy="-2362.53" rx="57.97" ry="28.98"/>
<text text-anchor="middle" x="2466" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2466" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2466" y="-2349.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report_settings</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_models_report_settings -->
<g id="edge79" class="edge">
<title>ahriman_core&#45;&gt;ahriman_models_report_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2188.12,-2535.21C2237.95,-2504.43 2356.21,-2431.36 2421.24,-2391.18"/>
<polygon fill="#f91010" stroke="black" points="2423.38,-2393.97 2430.05,-2385.74 2419.7,-2388.02 2423.38,-2393.97"/>
</g>
<!-- ahriman_models_sign_settings -->
<g id="node70" class="node">
<title>ahriman_models_sign_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="3900" cy="-2362.53" rx="52.15" ry="28.98"/>
<text text-anchor="middle" x="3900" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3900" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="3900" y="-2349.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">sign_settings</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_models_sign_settings -->
<g id="edge80" class="edge">
<title>ahriman_core&#45;&gt;ahriman_models_sign_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2188.91,-2535.32C2198.82,-2530.1 2210.64,-2524.69 2222,-2521.5 2393.88,-2473.36 2449.67,-2532.01 2622,-2485.5 2680.74,-2469.65 2686.86,-2441.78 2746,-2427.52 2963.68,-2375.04 3530.48,-2416.54 3753,-2391.52 3782.65,-2388.19 3815.27,-2382.21 3842.24,-2376.64"/>
<polygon fill="#f91010" stroke="black" points="3843.22,-2380.01 3852.28,-2374.53 3841.78,-2373.16 3843.22,-2380.01"/>
</g>
<!-- ahriman_models_upload_settings -->
<g id="node72" class="node">
<title>ahriman_models_upload_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b03a3a" stroke="black" cx="2916" cy="-2362.53" rx="60.21" ry="28.98"/>
<text text-anchor="middle" x="2916" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2916" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2916" y="-2349.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload_settings</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_models_upload_settings -->
<g id="edge81" class="edge">
<title>ahriman_core&#45;&gt;ahriman_models_upload_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2188.94,-2535.44C2198.86,-2530.24 2210.67,-2524.81 2222,-2521.5 2361.1,-2480.97 2406.52,-2524.71 2546,-2485.5 2604.57,-2469.04 2612.23,-2446.6 2670,-2427.52 2746.23,-2402.34 2770.14,-2414.71 2847,-2391.52 2852.18,-2389.96 2857.52,-2388.16 2862.81,-2386.24"/>
<polygon fill="#f91010" stroke="black" points="2864.14,-2389.48 2872.26,-2382.68 2861.67,-2382.93 2864.14,-2389.48"/>
</g>
<!-- ahriman_web_middlewares_auth_handler -->
<g id="node79" class="node">
<title>ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="5935" cy="-713.56" rx="52.15" ry="36.54"/>
<text text-anchor="middle" x="5935" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5935" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5935" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">middlewares.</text>
<text text-anchor="middle" x="5935" y="-694.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth_handler</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge82" class="edge">
<title>ahriman_core&#45;&gt;ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2188.24,-2535.17C2198.24,-2529.78 2210.31,-2524.29 2222,-2521.5 2387.05,-2482.14 5116.16,-2542.44 5276,-2485.5 5283.89,-2482.69 5388.2,-2397.58 5394,-2391.52 5542.85,-2236.08 5596.71,-2198.9 5679,-2000.03 5748.17,-1832.86 5711.75,-1776.25 5742,-1597.88 5750.27,-1549.09 5752.61,-1536.93 5762,-1488.34 5772.97,-1431.54 5821.97,-1290.56 5814,-1233.26"/>
<path fill="none" stroke="black" d="M5814,-1232.26C5804.57,-1207.7 5784.01,-1216.34 5767,-1196.26 5755.37,-1182.52 5739.46,-1176.34 5748,-1160.49"/>
</g>
<!-- ahriman_web_views_base -->
<g id="node83" class="node">
<title>ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#9f0404" stroke="black" cx="5036" cy="-830.87" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5036" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5036" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5036" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5036" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">base</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_web_views_base -->
<g id="edge83" class="edge">
<title>ahriman_core&#45;&gt;ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2188.24,-2535.17C2198.24,-2529.79 2210.31,-2524.3 2222,-2521.5 2516.28,-2451.09 4648.41,-2545.41 4945,-2485.5 4977.44,-2478.95 4986.83,-2476.4 5014,-2457.51"/>
<path fill="none" stroke="black" d="M5014,-2455.51C5054.25,-2427.53 4987.5,-2284.95 4969,-2239.56 4961.83,-2221.97 4951.71,-2221.66 4946,-2203.56 4941.85,-2190.4 4925.9,-1721.18 4925,-1707.42 4915.45,-1561.11 4916.51,-1523.98 4896,-1378.8 4891.45,-1346.62 4874.78,-1338.72 4882,-1307.03"/>
</g>
<!-- ahriman_web_views_index -->
<g id="node84" class="node">
<title>ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#7a2828" stroke="black" cx="5322" cy="-713.56" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5322" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5322" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5322" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5322" y="-694.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">index</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_web_views_index -->
<g id="edge84" class="edge">
<title>ahriman_core&#45;&gt;ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5262,-2455.51C5353.99,-2414.88 5370.18,-2382.49 5424,-2297.54 5456.89,-2245.62 5468.77,-2077.65 5514,-2036.03 5561.91,-1991.95 5616.02,-2051.42 5656,-2000.03 5710.98,-1929.38 5641.64,-1873.21 5572,-1816.96 5542.93,-1793.47 5515.99,-1812.54 5496,-1780.96 5478.52,-1753.34 5495.43,-1740.1 5496,-1707.42 5499.11,-1529.39 5510,-1485.09 5510,-1307.03 5510,-1307.03 5510,-1307.03 5510,-1232.26 5510,-1182.42 5499.83,-1170.6 5486,-1122.72 5481.28,-1106.38 5475.93,-1103.48 5473,-1086.72 5467.37,-1054.53 5464.72,-1044.8 5473,-1013.18 5496.43,-923.74 5629.94,-906.24 5575,-831.87"/>
<path fill="none" stroke="black" d="M5575,-829.87C5511.31,-756.77 5454.68,-803.48 5369,-758.1 5364.08,-755.5 5359.3,-752.25 5354.77,-748.71"/>
<polygon fill="#f91010" stroke="black" points="5356.84,-745.88 5346.95,-742.1 5352.33,-751.23 5356.84,-745.88"/>
</g>
<!-- ahriman_web_views_service_reload_auth -->
<g id="node87" class="node">
<title>ahriman_web_views_service_reload_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="4834" cy="-713.56" rx="47.25" ry="44.6"/>
<text text-anchor="middle" x="4834" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4834" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4834" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4834" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="4834" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">reload_auth</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge85" class="edge">
<title>ahriman_core&#45;&gt;ahriman_web_views_service_reload_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2188.28,-2535.34C2198.29,-2529.98 2210.35,-2524.47 2222,-2521.5 2406.29,-2474.59 2894.1,-2537.58 3077,-2485.5 3127.52,-2471.12 3129.48,-2441.91 3180,-2427.52 3362.47,-2375.56 3846.97,-2428.78 4033,-2391.52 4040.4,-2390.04 4282.19,-2302.36 4288,-2297.54 4325.4,-2266.47 4324.25,-2247.99 4344,-2203.56 4361.76,-2163.61 4364.8,-2152.51 4373,-2109.57 4412.61,-1902.05 4410,-1846.92 4410,-1635.65 4410,-1635.65 4410,-1635.65 4410,-1305.03 4410,-1270.98 4416.52,-1261.49 4434,-1232.26 4502.92,-1117.04 4547.64,-1108.7 4642,-1013.18 4669.68,-985.16 4687.83,-980.32 4694,-941.41"/>
<path fill="none" stroke="black" d="M4694,-939.41C4707.15,-866.78 4758.84,-796.83 4795.58,-754.76"/>
<polygon fill="#f91010" stroke="black" points="4798.24,-757.04 4802.26,-747.23 4793,-752.39 4798.24,-757.04"/>
</g>
<!-- ahriman_web_views_status_package -->
<g id="node92" class="node">
<title>ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="5134" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="5134" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5134" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5134" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5134" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="5134" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">package</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_web_views_status_package -->
<g id="edge86" class="edge">
<title>ahriman_core&#45;&gt;ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2188.24,-2535.17C2198.24,-2529.79 2210.31,-2524.3 2222,-2521.5 2373.63,-2485.26 4872.44,-2495.78 5028,-2485.5 5132.51,-2478.6 5168.17,-2504.07 5262,-2457.51"/>
<path fill="none" stroke="black" d="M5262,-2455.51C5274.99,-2449.07 5328.09,-2217.93 5330,-2203.56 5333.39,-2178.01 5330.86,-2171.33 5330,-2145.57 5315.33,-1707.02 5264,-1599.29 5264,-1160.49 5264,-1160.49 5264,-1160.49 5264,-1048.95 5264,-939.98 5169.97,-939 5150,-831.87"/>
</g>
<!-- ahriman_web_views_user_login -->
<g id="node96" class="node">
<title>ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="4730" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="4730" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4730" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4730" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4730" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user.</text>
<text text-anchor="middle" x="4730" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">login</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_web_views_user_login -->
<g id="edge87" class="edge">
<title>ahriman_core&#45;&gt;ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2188.56,-2535.22C2198.52,-2529.92 2210.47,-2524.47 2222,-2521.5 2550.78,-2436.92 2652.31,-2553.1 2985,-2485.5 3057.89,-2470.69 3069.07,-2442.15 3142,-2427.52 3235.12,-2408.84 3911.37,-2434.63 3996,-2391.52 4025.31,-2376.59 4013.71,-2350.32 4042,-2333.54 4123.07,-2285.45 4172.3,-2349.42 4251,-2297.54 4290.95,-2271.21 4344.12,-2155.92 4356,-2109.57 4368.11,-2062.32 4361.44,-2048.79 4363,-2000.03 4375.96,-1593.88 4330.39,-1492.96 4320,-1086.72 4317.04,-971.16 4287.48,-910.74 4372,-831.87"/>
</g>
<!-- ahriman_web_views_user_logout -->
<g id="node97" class="node">
<title>ahriman_web_views_user_logout</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="4222" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="4222" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4222" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4222" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4222" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user.</text>
<text text-anchor="middle" x="4222" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">logout</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge88" class="edge">
<title>ahriman_core&#45;&gt;ahriman_web_views_user_logout</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2188.61,-2535.39C2198.57,-2530.11 2210.51,-2524.63 2222,-2521.5 2426.7,-2465.74 2493.22,-2540.96 2698,-2485.5 2754.79,-2470.13 2759.89,-2441.65 2817,-2427.52 2940.46,-2396.99 3848.32,-2450.48 3961,-2391.52 3989.43,-2376.65 3976.66,-2350.32 4004,-2333.54 4085.45,-2283.55 4135.76,-2349.45 4216,-2297.54 4236.65,-2284.18 4325.48,-2133 4333,-2109.57 4357.93,-2031.96 4361.66,-2006.08 4344,-1926.5 4289.82,-1682.33 4106,-1666.67 4106,-1416.57 4106,-1416.57 4106,-1416.57 4106,-939.41 4106,-867.2 4153.84,-795 4188.08,-752.58"/>
<polygon fill="#f91010" stroke="black" points="4190.86,-754.7 4194.51,-744.76 4185.45,-750.26 4190.86,-754.7"/>
</g>
<!-- ahriman_web_web -->
<g id="node98" class="node">
<title>ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="4176" cy="-400.5" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="4176" y="-409" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4176" y="-398" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4176" y="-387" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_web_web -->
<g id="edge89" class="edge">
<title>ahriman_core&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2127.6,-2541.5C2054.99,-2523.53 1902,-2472.72 1902,-2363.53 1902,-2363.53 1902,-2363.53 1902,-2267.55 1902,-2209.29 2179.33,-1307.83 2223,-1269.26 2516.45,-1010.1 3702.08,-1241.1 3954,-941.41"/>
<path fill="none" stroke="black" d="M3954,-939.41C4018.55,-782.41 3946.3,-722.67 3993,-559.47 4005.8,-514.76 4004.91,-497.12 4039,-465.49 4070.58,-436.18 4090.37,-448.57 4129,-429.49 4132.07,-427.97 4135.21,-426.32 4138.34,-424.61"/>
<polygon fill="#f91010" stroke="black" points="4140.07,-427.66 4147.06,-419.69 4136.63,-421.56 4140.07,-427.66"/>
</g>
<!-- ahriman_core_alpm -->
<g id="node25" class="node">
<title>ahriman_core_alpm</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#ce3b3b" stroke="black" cx="2646" cy="-2550.5" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="2646" y="-2559" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2646" y="-2548" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2646" y="-2537" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">alpm</text>
</g>
<!-- ahriman_core_repository_properties -->
<g id="node45" class="node">
<title>ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="3034" cy="-1634.65" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="3034" y="-1648.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3034" y="-1637.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3034" y="-1626.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="3034" y="-1615.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">properties</text>
</g>
<!-- ahriman_core_alpm&#45;&gt;ahriman_core_repository_properties -->
<g id="edge90" class="edge">
<title>ahriman_core_alpm&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2638.01,-2522.02C2605.06,-2408.13 2482.72,-1978.42 2508,-1964.27"/>
</g>
<!-- ahriman_core_alpm&#45;&gt;ahriman_models_package -->
<g id="edge91" class="edge">
<title>ahriman_core_alpm&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2665.82,-2525.57C2693.31,-2492.37 2743.08,-2432.27 2773.67,-2395.33"/>
<polygon fill="#ce3b3b" stroke="black" points="2776.58,-2397.3 2780.26,-2387.37 2771.18,-2392.84 2776.58,-2397.3"/>
</g>
<!-- ahriman_core_alpm_pacman -->
<g id="node26" class="node">
<title>ahriman_core_alpm_pacman</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b42d2d" stroke="black" cx="2302" cy="-2652.26" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="2302" y="-2666.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2302" y="-2655.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2302" y="-2644.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">alpm.</text>
<text text-anchor="middle" x="2302" y="-2633.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">pacman</text>
</g>
<!-- ahriman_core_alpm_pacman&#45;&gt;ahriman_core_repository_properties -->
<g id="edge92" class="edge">
<title>ahriman_core_alpm_pacman&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2292.43,-2616.58C2266.86,-2515.96 2207.36,-2219.52 2337,-2036.03 2384.56,-1968.72 2435.99,-2004.37 2508,-1964.27"/>
</g>
<!-- ahriman_core_alpm_pacman&#45;&gt;ahriman_models_package -->
<g id="edge93" class="edge">
<title>ahriman_core_alpm_pacman&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2340.07,-2648.58C2427.12,-2641.78 2637.48,-2621.36 2693,-2579.49 2751.48,-2535.39 2780.01,-2450.62 2792.21,-2401.43"/>
<polygon fill="#b42d2d" stroke="black" points="2795.66,-2402.03 2794.57,-2391.5 2788.85,-2400.42 2795.66,-2402.03"/>
</g>
<!-- ahriman_core_alpm_repo -->
<g id="node27" class="node">
<title>ahriman_core_alpm_repo</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#993333" stroke="black" cx="2384" cy="-2072.8" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="2384" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2384" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2384" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">alpm.</text>
<text text-anchor="middle" x="2384" y="-2053.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repo</text>
</g>
<!-- ahriman_core_alpm_repo&#45;&gt;ahriman_core_repository_properties -->
<g id="edge94" class="edge">
<title>ahriman_core_alpm_repo&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2409.13,-2044.4C2432.61,-2020.26 2469.71,-1985.7 2508,-1964.27"/>
</g>
<!-- ahriman_core_auth -->
<g id="node28" class="node">
<title>ahriman_core_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="4646" cy="-1159.49" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="4646" y="-1167.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4646" y="-1156.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4646" y="-1145.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth</text>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge95" class="edge">
<title>ahriman_core_auth&#45;&gt;ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4682.7,-1151.37C4726.94,-1143.09 4803.61,-1129.66 4870,-1122.72 4950,-1114.37 5524.25,-1128.47 5593,-1086.72 5625.36,-1067.07 5608.83,-1039.55 5636,-1013.18 5659.98,-989.91 5675.86,-997.99 5702,-977.18 5786.37,-910.03 5865.41,-810.26 5906.19,-755.03"/>
<polygon fill="#f91010" stroke="black" points="5909.07,-757.02 5912.16,-746.89 5903.42,-752.88 5909.07,-757.02"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_base -->
<g id="edge96" class="edge">
<title>ahriman_core_auth&#45;&gt;ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4663.61,-1133.59C4700.21,-1083.5 4789.4,-969.71 4889,-903.64 4926.63,-878.68 4944,-888.59 4984,-867.64 4988.55,-865.26 4993.19,-862.55 4997.71,-859.71"/>
<polygon fill="#f91010" stroke="black" points="4999.78,-862.54 5006.25,-854.14 4995.96,-856.67 4999.78,-862.54"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_index -->
<g id="edge97" class="edge">
<title>ahriman_core_auth&#45;&gt;ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4673.14,-1138.83C4692.87,-1124.49 4720.18,-1104.52 4744,-1086.72 4851.46,-1006.4 4866.28,-967.99 4984,-903.64 5025.08,-881.19 5040.51,-887.31 5083,-867.64 5172.15,-826.37 5195.78,-816.21 5275,-758.1 5279.43,-754.86 5283.9,-751.24 5288.23,-747.52"/>
<polygon fill="#f91010" stroke="black" points="5290.68,-750.03 5295.83,-740.77 5286.03,-744.79 5290.68,-750.03"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge98" class="edge">
<title>ahriman_core_auth&#45;&gt;ahriman_web_views_service_reload_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4656,-1048.95C4661.52,-998.56 4685.58,-991.4 4694,-941.41"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_user_login -->
<g id="edge99" class="edge">
<title>ahriman_core_auth&#45;&gt;ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4648.04,-1130.12C4649.74,-1108.4 4652.46,-1077.72 4656,-1050.95"/>
<path fill="none" stroke="black" d="M4656,-1048.95C4668.64,-953.3 4614.18,-918.82 4656,-831.87"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge100" class="edge">
<title>ahriman_core_auth&#45;&gt;ahriman_web_views_user_logout</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4410,-1048.95C4340.25,-982.29 4465.61,-910.72 4410,-831.87"/>
<path fill="none" stroke="black" d="M4410,-829.87C4369.97,-772.06 4326.67,-798.33 4269,-758.1 4265.36,-755.57 4261.71,-752.76 4258.15,-749.83"/>
<polygon fill="#f91010" stroke="black" points="4260.39,-747.14 4250.52,-743.29 4255.83,-752.46 4260.39,-747.14"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_web -->
<g id="edge101" class="edge">
<title>ahriman_core_auth&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4608.09,-1154.6C4561.19,-1148.01 4481.16,-1130.74 4429,-1086.72 4415.24,-1075.11 4423.1,-1063.3 4410,-1050.95"/>
<path fill="none" stroke="black" d="M4410,-1048.95C4349.52,-991.97 4202.69,-836.45 4175,-758.1 4166.76,-734.81 4161.52,-560.73 4176,-495.48"/>
</g>
<!-- ahriman_core_auth_auth -->
<g id="node29" class="node">
<title>ahriman_core_auth_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#910707" stroke="black" cx="4890" cy="-2072.8" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4890" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4890" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4890" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth.</text>
<text text-anchor="middle" x="4890" y="-2053.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth</text>
</g>
<!-- ahriman_core_auth_mapping -->
<g id="node31" class="node">
<title>ahriman_core_auth_mapping</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8b2222" stroke="black" cx="4738" cy="-1963.27" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4738" y="-1977.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4738" y="-1966.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4738" y="-1955.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth.</text>
<text text-anchor="middle" x="4738" y="-1944.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">mapping</text>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge102" class="edge">
<title>ahriman_core_auth_auth&#45;&gt;ahriman_core_auth_mapping</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4851.19,-2044.35C4828.36,-2028.2 4799.59,-2007.84 4776.77,-1991.7"/>
<polygon fill="#910707" stroke="black" points="4849.42,-2047.38 4859.61,-2050.3 4853.46,-2041.67 4849.42,-2047.38"/>
<polygon fill="#910707" stroke="black" points="4778.53,-1988.65 4768.34,-1985.73 4774.48,-1994.36 4778.53,-1988.65"/>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge103" class="edge">
<title>ahriman_core_auth_auth&#45;&gt;ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4918,-1962.27C4999.27,-1730.57 5212.29,-1874.42 5451,-1816.96 5526.93,-1798.68 5569.2,-1837.57 5623,-1780.96 5685.31,-1715.39 5645.4,-1459.63 5686,-1378.8 5711.5,-1328.03 5840.14,-1247.35 5865,-1196.26 5893.49,-1137.69 5859.24,-1111.19 5884,-1050.95"/>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_web_views_base -->
<g id="edge104" class="edge">
<title>ahriman_core_auth_auth&#45;&gt;ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4898.21,-2036.69C4903.38,-2015.55 4910.49,-1988.19 4918,-1964.27"/>
<path fill="none" stroke="black" d="M4918,-1962.27C4939.84,-1892.7 4864.37,-1377.78 4882,-1307.03"/>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge105" class="edge">
<title>ahriman_core_auth_auth&#45;&gt;ahriman_web_views_service_reload_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4878.86,-2037.43C4828.61,-1882.05 4625.83,-1252.01 4636,-1233.26"/>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_web_web -->
<g id="edge106" class="edge">
<title>ahriman_core_auth_auth&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4927.71,-2065.52C5105.57,-2033.55 5852,-1872.25 5852,-1416.57 5852,-1416.57 5852,-1416.57 5852,-1305.03 5852,-1248.86 6024.2,-887.74 6030,-831.87"/>
<path fill="none" stroke="black" d="M6030,-829.87C6031.79,-756.82 6034.99,-730.82 5996,-669.01 5981.96,-646.75 5964.82,-654.03 5949,-633.01 5938.73,-619.37 5945.37,-610.8 5935,-597.24"/>
</g>
<!-- ahriman_core_auth_helpers -->
<g id="node30" class="node">
<title>ahriman_core_auth_helpers</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#d92626" stroke="black" cx="4476" cy="-1049.95" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4476" y="-1063.95" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4476" y="-1052.95" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4476" y="-1041.95" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth.</text>
<text text-anchor="middle" x="4476" y="-1030.95" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">helpers</text>
</g>
<!-- ahriman_core_auth_helpers&#45;&gt;ahriman_web_views_index -->
<g id="edge107" class="edge">
<title>ahriman_core_auth_helpers&#45;&gt;ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4508.08,-1029.87C4599.62,-975.76 4861.48,-823.37 4956,-794.1 5092.3,-751.91 5145.3,-817.56 5275,-758.1 5280.31,-755.67 5285.42,-752.4 5290.19,-748.74"/>
<polygon fill="#d92626" stroke="black" points="5292.46,-751.41 5297.87,-742.29 5287.96,-746.04 5292.46,-751.41"/>
</g>
<!-- ahriman_core_auth_helpers&#45;&gt;ahriman_web_views_user_login -->
<g id="edge108" class="edge">
<title>ahriman_core_auth_helpers&#45;&gt;ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4505.15,-1025.85C4528.56,-1005.84 4560.61,-974.9 4580,-941.41"/>
<path fill="none" stroke="black" d="M4580,-939.41C4589.59,-922.85 4593.05,-919.35 4604,-903.64 4626.53,-871.33 4638.93,-867.37 4656,-831.87"/>
<path fill="none" stroke="black" d="M4656,-829.87C4668.23,-804.44 4685.02,-777.81 4699.52,-756.56"/>
<polygon fill="#d92626" stroke="black" points="4702.56,-758.31 4705.36,-748.09 4696.8,-754.33 4702.56,-758.31"/>
</g>
<!-- ahriman_core_auth_helpers&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge109" class="edge">
<title>ahriman_core_auth_helpers&#45;&gt;ahriman_web_views_user_logout</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4473.18,-1012.9C4467.87,-966.48 4452.74,-885.45 4410,-831.87"/>
</g>
<!-- ahriman_core_auth_oauth -->
<g id="node32" class="node">
<title>ahriman_core_auth_oauth</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8b2222" stroke="black" cx="4738" cy="-1853.73" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4738" y="-1867.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4738" y="-1856.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4738" y="-1845.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth.</text>
<text text-anchor="middle" x="4738" y="-1834.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">oauth</text>
</g>
<!-- ahriman_core_auth_mapping&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge111" class="edge">
<title>ahriman_core_auth_mapping&#45;&gt;ahriman_core_auth_oauth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4738,-1926.46C4738,-1918.29 4738,-1909.5 4738,-1900.97"/>
<polygon fill="#8b2222" stroke="black" points="4741.5,-1900.75 4738,-1890.75 4734.5,-1900.75 4741.5,-1900.75"/>
</g>
<!-- ahriman_core_auth_oauth&#45;&gt;ahriman_core_auth_auth -->
<g id="edge112" class="edge">
<title>ahriman_core_auth_oauth&#45;&gt;ahriman_core_auth_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4758.47,-1885.24C4766.84,-1897.91 4776.53,-1912.82 4785,-1926.5 4804.93,-1958.69 4805.98,-1969.24 4828,-2000.03 4837.03,-2012.66 4847.81,-2025.71 4857.83,-2037.17"/>
<polygon fill="#8b2222" stroke="black" points="4855.37,-2039.67 4864.62,-2044.83 4860.61,-2035.02 4855.37,-2039.67"/>
</g>
<!-- ahriman_core_auth_oauth&#45;&gt;ahriman_web_views_user_login -->
<g id="edge113" class="edge">
<title>ahriman_core_auth_oauth&#45;&gt;ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4716.83,-1822.95C4648.42,-1724.21 4435.48,-1396.25 4396,-1086.72 4391.86,-1054.3 4382.65,-1043.02 4396,-1013.18 4456.2,-878.6 4610.36,-779.6 4686.33,-737.27"/>
<polygon fill="#8b2222" stroke="black" points="4688.13,-740.28 4695.2,-732.39 4684.75,-734.15 4688.13,-740.28"/>
</g>
<!-- ahriman_core_build_tools -->
<g id="node33" class="node">
<title>ahriman_core_build_tools</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#e72222" stroke="black" cx="1312" cy="-2550.5" rx="44.6" ry="28.98"/>
<text text-anchor="middle" x="1312" y="-2559" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1312" y="-2548" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="1312" y="-2537" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">build_tools</text>
</g>
<!-- ahriman_core_build_tools&#45;&gt;ahriman_application_application -->
<g id="edge114" class="edge">
<title>ahriman_core_build_tools&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1274.11,-2534.94C1260.92,-2530.22 1245.93,-2525.24 1232,-2521.5 1016.86,-2463.83 911.28,-2543.02 748,-2391.52 681.94,-2330.23 689.21,-2292.01 672,-2203.56 667.08,-2178.26 669.79,-2171.25 672,-2145.57 680.48,-2047.12 688.39,-2022.93 710,-1926.5 728.28,-1844.93 760,-1828.78 760,-1745.19 760,-1745.19 760,-1745.19 760,-1633.65 760,-1531.43 836,-1518.79 836,-1416.57"/>
<path fill="none" stroke="black" d="M836,-1414.57C831.9,-1366.95 828.06,-1354.16 836,-1307.03"/>
</g>
<!-- ahriman_core_repository_executor -->
<g id="node44" class="node">
<title>ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="3023" cy="-1415.57" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="3023" y="-1429.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3023" y="-1418.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3023" y="-1407.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="3023" y="-1396.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">executor</text>
</g>
<!-- ahriman_core_build_tools&#45;&gt;ahriman_core_repository_executor -->
<g id="edge115" class="edge">
<title>ahriman_core_build_tools&#45;&gt;ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1326.94,-2522.69C1342.03,-2496.85 1366.92,-2457.39 1394,-2427.52 1526.34,-2281.6 1574.05,-2257.73 1736,-2145.57 2003.23,-1960.51 2095.7,-1955.36 2370,-1780.96 2561.37,-1659.28 2584.16,-1587.71 2788,-1488.34 2847.61,-1459.28 2921.47,-1439.05 2970.3,-1427.64"/>
<polygon fill="#e72222" stroke="black" points="2971.36,-1430.99 2980.32,-1425.34 2969.8,-1424.17 2971.36,-1430.99"/>
</g>
<!-- ahriman_core_tree -->
<g id="node55" class="node">
<title>ahriman_core_tree</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#993333" stroke="black" cx="1606" cy="-1853.73" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="1606" y="-1862.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1606" y="-1851.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="1606" y="-1840.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">tree</text>
</g>
<!-- ahriman_core_build_tools&#45;&gt;ahriman_core_tree -->
<g id="edge116" class="edge">
<title>ahriman_core_build_tools&#45;&gt;ahriman_core_tree</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1273.57,-2535.28C1260.46,-2530.63 1245.67,-2525.62 1232,-2521.5 1169.66,-2502.74 1129.98,-2536.89 1090,-2485.5 1034.14,-2413.71 992.71,-2426.16 1166,-2145.57 1242.93,-2021.01 1286.5,-2001.89 1412,-1926.5 1459.21,-1898.14 1519.48,-1878 1560.21,-1866.41"/>
<polygon fill="#e72222" stroke="black" points="1561.18,-1869.77 1569.87,-1863.72 1559.3,-1863.03 1561.18,-1869.77"/>
</g>
<!-- ahriman_core_build_tools&#45;&gt;ahriman_models_package -->
<g id="edge117" class="edge">
<title>ahriman_core_build_tools&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1356.41,-2548.15C1484.54,-2543.84 1865.69,-2528.12 2179,-2485.5 2309.67,-2467.73 2340.6,-2452.96 2470,-2427.52 2570.62,-2407.74 2688.59,-2384.97 2752.68,-2372.63"/>
<polygon fill="#e72222" stroke="black" points="2753.71,-2375.99 2762.87,-2370.67 2752.39,-2369.12 2753.71,-2375.99"/>
</g>
<!-- ahriman_core_build_tools_task -->
<g id="node34" class="node">
<title>ahriman_core_build_tools_task</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#a51212" stroke="black" cx="1559" cy="-2072.8" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1559" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1559" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="1559" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">build_tools.</text>
<text text-anchor="middle" x="1559" y="-2053.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">task</text>
</g>
<!-- ahriman_core_build_tools_task&#45;&gt;ahriman_application_application -->
<g id="edge118" class="edge">
<title>ahriman_core_build_tools_task&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1534.3,-2041.35C1510.33,-2011.87 1472.86,-1965.96 1440,-1926.5 1222.55,-1665.31 1081.55,-1654.46 946,-1342.8 913.68,-1268.48 912.23,-1232.2 950,-1160.49"/>
</g>
<!-- ahriman_core_build_tools_task&#45;&gt;ahriman_core_repository_executor -->
<g id="edge119" class="edge">
<title>ahriman_core_build_tools_task&#45;&gt;ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1584.85,-2041.83C1672.95,-1942.02 1974.16,-1619.92 2301,-1488.34 2422.39,-1439.47 2822.29,-1422.65 2968.69,-1418.05"/>
<polygon fill="#a51212" stroke="black" points="2968.9,-1421.54 2978.78,-1417.74 2968.68,-1414.55 2968.9,-1421.54"/>
</g>
<!-- ahriman_core_build_tools_task&#45;&gt;ahriman_core_tree -->
<g id="edge120" class="edge">
<title>ahriman_core_build_tools_task&#45;&gt;ahriman_core_tree</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1566.66,-2036.44C1575.22,-1996.88 1589.05,-1933.03 1597.82,-1892.5"/>
<polygon fill="#a51212" stroke="black" points="1601.29,-1893 1599.99,-1882.48 1594.45,-1891.52 1601.29,-1893"/>
</g>
<!-- ahriman_core_configuration -->
<g id="node35" class="node">
<title>ahriman_core_configuration</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#e50505" stroke="black" cx="952" cy="-2791.02" rx="50.82" ry="28.98"/>
<text text-anchor="middle" x="952" y="-2799.52" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="952" y="-2788.52" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="952" y="-2777.52" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">configuration</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_application -->
<g id="edge122" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M686,-2651.26C646.04,-2632.04 692.47,-2595.36 686,-2551.5"/>
<path fill="none" stroke="black" d="M686,-2549.5C674.21,-2469.56 616.69,-2469.63 596,-2391.52 543.08,-2191.73 563.32,-2130.57 596,-1926.5 604.1,-1875.89 615.6,-1865.51 632,-1816.96 648.49,-1768.14 651.68,-1755.58 670,-1707.42 704.24,-1617.39 819.99,-1402.01 836,-1307.03"/>
<path fill="none" stroke="black" d="M836,-1305.03C841.24,-1242.5 888.47,-1246.55 926,-1196.26 937.45,-1180.92 941.36,-1177.57 950,-1160.49"/>
<path fill="none" stroke="black" d="M950,-1158.49C959.23,-1135.5 968.3,-1109.22 975.15,-1088.39"/>
<polygon fill="#e50505" stroke="black" points="978.56,-1089.23 978.33,-1078.64 971.9,-1087.06 978.56,-1089.23"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_add -->
<g id="edge123" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_add</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M228,-1524.11C180.92,-1244.73 452.73,-961.18 555.15,-865.63"/>
<polygon fill="#e50505" stroke="black" points="557.55,-868.18 562.51,-858.82 552.8,-863.04 557.55,-868.18"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_clean -->
<g id="edge124" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_clean</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1002.97,-2790.19C1241.08,-2790.64 2232.42,-2788.77 2236,-2726.03"/>
<path fill="none" stroke="black" d="M2236,-2725.03C2238.47,-2681.64 711.42,-2707.32 672,-2689.03 557.48,-2635.88 395.73,-2336.1 382,-2269.55"/>
<path fill="none" stroke="black" d="M382,-2267.55C295.58,-2063.2 323.16,-1486.96 366,-1269.26 402.19,-1085.37 579.87,-927.51 662.1,-862.97"/>
<polygon fill="#e50505" stroke="black" points="664.48,-865.56 670.22,-856.66 660.18,-860.03 664.48,-865.56"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_dump -->
<g id="edge125" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_dump</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2236,-2651.26C2209.62,-2615.62 2261.06,-2588.07 2236,-2551.5"/>
<path fill="none" stroke="black" d="M2236,-2549.5C2227.5,-2537.09 2229.76,-2529.47 2217,-2521.5 2120.64,-2461.38 2060.59,-2545.25 1964,-2485.5 1821.64,-2397.45 1793.23,-2337.28 1750,-2175.57"/>
<path fill="none" stroke="black" d="M1750,-2173.57C1570.75,-1653.72 1899.56,-1490.01 1862,-941.41"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_handler -->
<g id="edge126" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M686,-2455.51C650.02,-2270.52 715.33,-2221.64 748,-2036.03 827.7,-1583.21 829.87,-1446.67 1064,-1050.95"/>
<path fill="none" stroke="black" d="M1064,-1048.95C1081.26,-1017.66 1110.87,-990.29 1135.73,-970.99"/>
<polygon fill="#e50505" stroke="black" points="1138.1,-973.59 1143.95,-964.76 1133.87,-968.01 1138.1,-973.59"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_init -->
<g id="edge127" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_init</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M382,-2267.55C365.56,-2183.02 382,-2159.91 382,-2073.8 382,-2073.8 382,-2073.8 382,-1962.27 382,-1817.1 380,-1780.81 380,-1635.65 380,-1635.65 380,-1635.65 380,-1305.03 380,-1189.21 666.04,-950.1 774.22,-863.81"/>
<polygon fill="#e50505" stroke="black" points="776.66,-866.34 782.3,-857.38 772.3,-860.86 776.66,-866.34"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_key_import -->
<g id="edge128" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_key_import</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M686,-2549.5C689.09,-2508.73 694.7,-2497.46 686,-2457.51"/>
<path fill="none" stroke="black" d="M686,-2455.51C666.99,-2368.27 610,-2358.84 610,-2269.55 610,-2269.55 610,-2269.55 610,-2071.8 610,-1992.41 761.3,-1454.88 784,-1378.8 798.73,-1329.42 802.41,-1316.92 822,-1269.26 842.37,-1219.7 854.89,-1210.55 874,-1160.49"/>
<path fill="none" stroke="black" d="M874,-1158.49C893.74,-1041.7 869.72,-988.86 952,-903.64 975.48,-879.33 989.85,-884.75 1019,-867.64 1022.91,-865.35 1026.94,-862.91 1030.96,-860.44"/>
<polygon fill="#e50505" stroke="black" points="1033.07,-863.25 1039.7,-854.99 1029.36,-857.31 1033.07,-863.25"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_rebuild -->
<g id="edge129" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_rebuild</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M686,-2549.5C690.44,-2490.89 763.88,-2513.73 781,-2457.51"/>
<path fill="none" stroke="black" d="M781,-2455.51C790.32,-2424.9 755.69,-2422.58 748,-2391.52 741.8,-2366.51 745.43,-2359.18 748,-2333.54 774.63,-2067.45 874,-2012.61 874,-1745.19 874,-1745.19 874,-1745.19 874,-1633.65 874,-1511.97 916.71,-1486.14 974,-1378.8 1001.9,-1326.53 1015.38,-1317.35 1050,-1269.26 1061.83,-1252.83 1261.62,-996.4 1268,-977.18 1278.3,-946.16 1276.71,-935.14 1268,-903.64 1264.91,-892.49 1259.59,-881.33 1253.71,-871.24"/>
<polygon fill="#e50505" stroke="black" points="1256.66,-869.37 1248.44,-862.69 1250.7,-873.04 1256.66,-869.37"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_remove -->
<g id="edge130" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M996.24,-2776.5C1027.81,-2764.67 1061.5,-2746.11 1042,-2725.03 972.23,-2649.59 669.76,-2740.79 581,-2689.03 233.2,-2486.19 228,-2257.35 228,-1854.73 228,-1854.73 228,-1854.73 228,-1743.19 228,-1646.71 244.23,-1621.21 228,-1526.11"/>
<path fill="none" stroke="black" d="M228,-1524.11C216.58,-1466.71 177.44,-1469.28 152,-1416.57"/>
<path fill="none" stroke="black" d="M152,-1414.57C55.72,-1215.05 254.05,-961.45 336.91,-868.3"/>
<polygon fill="#e50505" stroke="black" points="339.54,-870.61 343.61,-860.83 334.33,-865.93 339.54,-870.61"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge131" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_remove_unknown</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2236,-2725.03C2240.91,-2638.96 763.68,-2690.62 686,-2653.26"/>
<path fill="none" stroke="black" d="M686,-2651.26C430.26,-2528.25 497.6,-1650.96 578,-1378.8 644.36,-1154.16 642.81,-1071.68 806,-903.64 809.33,-900.22 850.92,-878.91 887.75,-860.4"/>
<polygon fill="#e50505" stroke="black" points="889.61,-863.37 896.98,-855.76 886.47,-857.12 889.61,-863.37"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_report -->
<g id="edge132" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_report</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M967.51,-2763.39C972.9,-2750.33 975.51,-2735.25 966,-2725.03 890.89,-2644.26 570.46,-2736.68 471,-2689.03 236.39,-2576.62 190,-2435.71 190,-2175.57 190,-2175.57 190,-2175.57 190,-1852.73 190,-1591.7 111.08,-1530.01 123,-1269.26 127.45,-1171.93 131.05,-1147.65 143,-1050.95"/>
<path fill="none" stroke="black" d="M143,-1048.95C140.27,-978.42 189.58,-908.7 225.04,-868"/>
<polygon fill="#e50505" stroke="black" points="227.68,-870.3 231.71,-860.5 222.45,-865.65 227.68,-870.3"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_search -->
<g id="edge133" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_search</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2236,-2549.5C2227.9,-2536.83 2229.54,-2529.81 2217,-2521.5 2148.25,-2475.98 2087.34,-2549.22 2035,-2485.5 2018.64,-2465.59 2034.68,-2453.29 2035,-2427.52 2038.78,-2124.19 2052,-2048.54 2052,-1745.19 2052,-1745.19 2052,-1745.19 2052,-1524.11 2052,-1296.78 1972.58,-1215.63 2076,-1013.18 2099.27,-967.62 2179.39,-990.79 2166,-941.41"/>
<path fill="none" stroke="black" d="M2166,-939.41C2160.95,-925.84 1990.08,-870.17 1985,-867.64 1981.05,-865.68 1977.03,-863.49 1973.07,-861.19"/>
<polygon fill="#e50505" stroke="black" points="1974.87,-858.19 1964.49,-856.02 1971.25,-864.19 1974.87,-858.19"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge134" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_setup</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1218,-2549.5C1050.9,-2479.92 1137.38,-2324.3 1166,-2145.57 1223.86,-1784.23 1264.29,-1684.13 1466,-1378.8 1502.84,-1323.04 1516.25,-1310.28 1569,-1269.26 1595.07,-1248.99 1623.02,-1264.41 1634,-1233.26"/>
<path fill="none" stroke="black" d="M1634,-1232.26C1659.56,-1168.82 1669.58,-1153.58 1684,-1086.72 1699.51,-1014.79 1705,-929.28 1706.94,-877.86"/>
<polygon fill="#e50505" stroke="black" points="1710.44,-877.85 1707.29,-867.74 1703.45,-877.61 1710.44,-877.85"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_sign -->
<g id="edge135" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_sign</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2236,-2725.03C2237.89,-2693.19 2254.98,-2678.89 2236,-2653.26"/>
<path fill="none" stroke="black" d="M2236,-2651.26C2171.16,-2563.69 1360.65,-2616.02 1258,-2579.49 1237.56,-2572.21 1238.03,-2559.84 1218,-2551.5"/>
<path fill="none" stroke="black" d="M1218,-2549.5C1126.35,-2511.34 1080,-2549.37 1004,-2485.5 993.35,-2476.56 1000.56,-2466.56 990,-2457.51"/>
<path fill="none" stroke="black" d="M990,-2455.51C826.73,-2315.66 928.72,-1686.54 1012,-1488.34 1112.8,-1248.46 1201.67,-1224.12 1354,-1013.18 1377.06,-981.25 1404.14,-980.76 1406,-941.41"/>
<path fill="none" stroke="black" d="M1406,-939.41C1407.2,-917.67 1401.41,-894.36 1394.52,-875.01"/>
<polygon fill="#e50505" stroke="black" points="1397.76,-873.7 1390.96,-865.58 1391.21,-876.17 1397.76,-873.7"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_status -->
<g id="edge136" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M781,-2455.51C844.42,-2283.34 1313.13,-1400.04 1326,-1378.8 1387.53,-1277.24 1615.9,-1058.93 1633,-941.41"/>
<path fill="none" stroke="black" d="M1633,-939.41C1630.23,-917.69 1623.07,-894.55 1615.86,-875.32"/>
<polygon fill="#e50505" stroke="black" points="1619.1,-873.99 1612.22,-865.93 1612.58,-876.52 1619.1,-873.99"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_status_update -->
<g id="edge137" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_status_update</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M957.37,-2761.97C958.28,-2750.29 957.5,-2736.94 952,-2726.03"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_sync -->
<g id="edge138" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_sync</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M990,-2455.51C934.59,-2394.18 990,-2352.2 990,-2269.55 990,-2269.55 990,-2269.55 990,-2173.57 990,-1859.36 1044.26,-1778.84 1164,-1488.34 1187.06,-1432.4 1393.28,-1061.27 1430,-1013.18 1457.61,-977.02 1493.07,-985.81 1503,-941.41"/>
<path fill="none" stroke="black" d="M1503,-939.41C1506.21,-918.74 1503.46,-895.83 1499.31,-876.49"/>
<polygon fill="#e50505" stroke="black" points="1502.72,-875.68 1497.04,-866.74 1495.9,-877.27 1502.72,-875.68"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_update -->
<g id="edge139" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_update</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M152,-1414.57C96.5,-1305.37 355.97,-981.13 449.48,-869.86"/>
<polygon fill="#e50505" stroke="black" points="452.41,-871.81 456.18,-861.91 447.06,-867.3 452.41,-871.81"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_user -->
<g id="edge140" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1750,-2173.57C1748.2,-2165.62 2083.94,-1056.4 2090,-1050.95"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_web -->
<g id="edge141" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1003.04,-2789.59C1478.72,-2785.52 5129.46,-2752.36 5609,-2689.03 5925.76,-2647.19 6250,-2683.05 6250,-2363.53 6250,-2363.53 6250,-2363.53 6250,-2173.57 6250,-1994.94 6301.15,-1956.15 6336,-1780.96 6384.24,-1538.42 6434,-1480.55 6434,-1233.26 6434,-1233.26 6434,-1233.26 6434,-1048.95 6434,-841.9 6320,-804.3 6320,-597.24 6320,-597.24 6320,-597.24 6320,-334.5 6320,-271.97 2107.93,-231.23 1566.14,-226.25"/>
<polygon fill="#e50505" stroke="black" points="1565.87,-222.75 1555.84,-226.16 1565.81,-229.75 1565.87,-222.75"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_lock -->
<g id="edge142" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_lock</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2236,-2651.26C2132.42,-2501.09 1589.15,-2578.15 1432,-2485.5 1417.88,-2477.18 1421.02,-2467.46 1408,-2457.51"/>
<path fill="none" stroke="black" d="M1408,-2455.51C1365.95,-2420.56 1382.29,-2387.35 1392,-2333.54 1417.07,-2194.66 1404.99,-2137.58 1503,-2036.03 1543.38,-1994.2 2511.29,-1676.59 2470,-1635.65"/>
<path fill="none" stroke="black" d="M2470,-1633.65C2445.32,-1605.78 2414.57,-1576.83 2391.37,-1556"/>
<polygon fill="#e50505" stroke="black" points="2393.61,-1553.3 2383.82,-1549.26 2388.95,-1558.53 2393.61,-1553.3"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_alpm_pacman -->
<g id="edge143" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_alpm_pacman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2236,-2725.03C2237.03,-2706.94 2248.73,-2691.44 2262,-2679.52"/>
<polygon fill="#e50505" stroke="black" points="2264.48,-2682.01 2269.93,-2672.92 2260,-2676.63 2264.48,-2682.01"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_auth_auth -->
<g id="edge144" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_auth_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3947,-2725.03C4232.17,-2693.23 4319.53,-2708.17 4576,-2579.49 4698.35,-2518.1 4730.84,-2495.39 4820,-2391.52 4835.84,-2373.08 4869.55,-2320.98 4876,-2297.54 4890.46,-2245.02 4868.08,-2229.88 4864,-2175.57"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge145" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_auth_mapping</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3947,-2725.03C4022.05,-2716.89 4041.54,-2713.37 4113,-2689.03 4185.18,-2664.44 4196.22,-2641.2 4268,-2615.49 4330.11,-2593.24 4350.57,-2603.54 4412,-2579.49 4458.49,-2561.29 4788.38,-2410.24 4806,-2363.53"/>
<path fill="none" stroke="black" d="M4806,-2361.53C4840.5,-2285.9 4853.98,-2253.84 4826,-2175.57"/>
<path fill="none" stroke="black" d="M4826,-2173.57C4807.55,-2113.82 4778.17,-2047.74 4758.5,-2006.13"/>
<polygon fill="#e50505" stroke="black" points="4761.54,-2004.39 4754.08,-1996.86 4755.22,-2007.4 4761.54,-2004.39"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge146" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_auth_oauth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3947,-2725.03C3989.82,-2720.33 4000.84,-2712.45 4037,-2689.03 4076.45,-2663.48 4074.75,-2642.8 4113,-2615.49 4316.44,-2470.2 4457.93,-2517.35 4577,-2297.54 4603.13,-2249.3 4564.61,-2220.56 4596,-2175.57"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge147" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_build_tools_task</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1408,-2455.51C1351.74,-2411.72 1475.67,-2203.21 1532.49,-2114.21"/>
<polygon fill="#e50505" stroke="black" points="1535.47,-2116.03 1537.93,-2105.73 1529.58,-2112.25 1535.47,-2116.03"/>
</g>
<!-- ahriman_core_report_email -->
<g id="node38" class="node">
<title>ahriman_core_report_email</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#7a2828" stroke="black" cx="3706" cy="-1744.19" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3706" y="-1758.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3706" y="-1747.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3706" y="-1736.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report.</text>
<text text-anchor="middle" x="3706" y="-1725.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">email</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_report_email -->
<g id="edge148" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_report_email</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1003,-2790.09C1366.41,-2790.25 3549,-2785.71 3549,-2653.26 3549,-2653.26 3549,-2653.26 3549,-2549.5 3549,-2464.94 3621,-2468.94 3655,-2391.52 3719.68,-2244.24 3731.39,-2196.67 3723,-2036.03 3718.77,-1955.12 3686.97,-1933.94 3704,-1854.73"/>
</g>
<!-- ahriman_core_report_html -->
<g id="node39" class="node">
<title>ahriman_core_report_html</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="3952" cy="-1525.11" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3952" y="-1539.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3952" y="-1528.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3952" y="-1517.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report.</text>
<text text-anchor="middle" x="3952" y="-1506.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">html</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_report_html -->
<g id="edge149" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_report_html</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1003.08,-2790.17C1348.18,-2791.03 3343.34,-2792.98 3947,-2726.03"/>
<path fill="none" stroke="black" d="M3947,-2725.03C3976.78,-2721.72 3984.36,-2711.66 4004,-2689.03 4027.48,-2661.97 4018.31,-2646.05 4037,-2615.49 4156.13,-2420.7 4286.92,-2424.64 4344,-2203.56 4374.78,-2084.33 4403.66,-2034.22 4344,-1926.5 4299.55,-1846.23 4249.84,-1860.37 4169,-1816.96 4101.05,-1780.47 4039.52,-1816.85 4011,-1745.19"/>
</g>
<!-- ahriman_core_report_jinja_template -->
<g id="node40" class="node">
<title>ahriman_core_report_jinja_template</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#832020" stroke="black" cx="4011" cy="-1853.73" rx="54.39" ry="36.54"/>
<text text-anchor="middle" x="4011" y="-1867.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4011" y="-1856.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4011" y="-1845.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report.</text>
<text text-anchor="middle" x="4011" y="-1834.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">jinja_template</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge150" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_report_jinja_template</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1003.04,-2790.09C1322.66,-2790.34 3051.93,-2788.72 3577,-2726.03 3728.72,-2707.91 3883.14,-2803.11 3913,-2653.26"/>
<path fill="none" stroke="black" d="M3913,-2651.26C3933.7,-2620.91 3884.47,-2614.04 3872,-2579.49 3834.55,-2475.75 3807.1,-2439.12 3839,-2333.54 3868.02,-2237.5 3882.22,-2203.69 3964,-2145.57 4016.37,-2108.36 4058.77,-2155.2 4104,-2109.57 4150.84,-2062.32 4171.19,-2023.03 4140,-1964.27"/>
<path fill="none" stroke="black" d="M4140,-1962.27C4123.2,-1928.42 4090.35,-1901.28 4062.01,-1882.74"/>
<polygon fill="#e50505" stroke="black" points="4063.7,-1879.66 4053.38,-1877.26 4059.94,-1885.57 4063.7,-1879.66"/>
</g>
<!-- ahriman_core_report_report -->
<g id="node41" class="node">
<title>ahriman_core_report_report</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8b1818" stroke="black" cx="3266" cy="-1634.65" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3266" y="-1648.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3266" y="-1637.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3266" y="-1626.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report.</text>
<text text-anchor="middle" x="3266" y="-1615.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_report_report -->
<g id="edge151" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_report_report</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3194,-2455.51C3189.49,-2415.61 3028.52,-1770.12 3060,-1745.19"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_repository_properties -->
<g id="edge152" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2236,-2549.5C2172.2,-2454.35 2104.53,-2112.32 2190,-2036.03 2248.92,-1983.45 2287,-2017.56 2364,-2000.03 2428.3,-1985.4 2450.38,-1996.33 2508,-1964.27"/>
<path fill="none" stroke="black" d="M2508,-1962.27C2532.48,-1948.56 2534.19,-1937.49 2560,-1926.5 2633.05,-1895.38 2671.44,-1938.09 2735,-1890.5 2749.41,-1879.71 2738.51,-1863.9 2754,-1854.73"/>
</g>
<!-- ahriman_core_sign_gpg -->
<g id="node49" class="node">
<title>ahriman_core_sign_gpg</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#932424" stroke="black" cx="4036" cy="-2072.8" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4036" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4036" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4036" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">sign.</text>
<text text-anchor="middle" x="4036" y="-2053.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">gpg</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge153" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_sign_gpg</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1003.03,-2789.95C1357.57,-2789.31 3443.18,-2783.14 3563,-2726.03 3601.35,-2707.74 3625,-2695.75 3625,-2653.26 3625,-2653.26 3625,-2653.26 3625,-2549.5 3625,-2488.68 3653.86,-2478.51 3687,-2427.52 3706.97,-2396.79 3744.11,-2399.82 3739,-2363.53"/>
<path fill="none" stroke="black" d="M3739,-2361.53C3730.36,-2321.05 3717.76,-2201.53 3750,-2175.57"/>
</g>
<!-- ahriman_core_spawn -->
<g id="node50" class="node">
<title>ahriman_core_spawn</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="6064" cy="-1159.49" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="6064" y="-1167.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6064" y="-1156.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="6064" y="-1145.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">spawn</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_spawn -->
<g id="edge154" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_spawn</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1003.13,-2789.32C1471.56,-2782.85 5005.77,-2732.71 5223,-2689.03 5256.77,-2682.24 5483.78,-2597.72 5513,-2579.49 5564.75,-2547.2 5570.17,-2528.93 5613,-2485.5 5637.52,-2460.65 5636.59,-2446.34 5666,-2427.52 5826.29,-2324.93 5947.32,-2439.57 6074,-2297.54 6110.78,-2256.31 6098,-2230.82 6098,-2175.57 6098,-2175.57 6098,-2175.57 6098,-1852.73 6098,-1707.29 6118,-1671.54 6118,-1526.11 6118,-1526.11 6118,-1526.11 6118,-1305.03 6118,-1265.56 6100.11,-1223.64 6084.93,-1195.17"/>
<polygon fill="#e50505" stroke="black" points="6087.8,-1193.13 6079.91,-1186.05 6081.66,-1196.5 6087.8,-1193.13"/>
</g>
<!-- ahriman_core_status_client -->
<g id="node52" class="node">
<title>ahriman_core_status_client</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#931a1a" stroke="black" cx="3166" cy="-1853.73" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3166" y="-1867.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3166" y="-1856.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3166" y="-1845.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="3166" y="-1834.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">client</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_status_client -->
<g id="edge155" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_status_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2236,-2651.26C2225.78,-2636.44 2243.54,-2629.37 2255,-2615.49 2356.05,-2493.16 2432.62,-2514.4 2533,-2391.52 2668.26,-2225.96 2638.7,-2144.3 2754,-1964.27"/>
<path fill="none" stroke="black" d="M2754,-1962.27C2765.64,-1948.54 2758.3,-1936.89 2773,-1926.5 2861.43,-1863.98 2907.64,-1910.92 3014,-1890.5 3049.64,-1883.65 3089.57,-1874.19 3119.56,-1866.71"/>
<polygon fill="#e50505" stroke="black" points="3120.48,-1870.09 3129.33,-1864.26 3118.77,-1863.3 3120.48,-1870.09"/>
</g>
<!-- ahriman_core_status_watcher -->
<g id="node53" class="node">
<title>ahriman_core_status_watcher</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8b2222" stroke="black" cx="5406" cy="-1159.49" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5406" y="-1173.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5406" y="-1162.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="5406" y="-1151.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="5406" y="-1140.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">watcher</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_status_watcher -->
<g id="edge156" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_status_watcher</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1003.04,-2789.46C1444.24,-2784.56 4607.21,-2747.53 5024,-2689.03 5224.42,-2660.89 5289.51,-2678.55 5466,-2579.49 5495.46,-2562.95 5667.34,-2394.85 5680,-2363.53"/>
<path fill="none" stroke="black" d="M5680,-2361.53C5748.34,-2197.86 5638.06,-2141.59 5642,-1964.27"/>
</g>
<!-- ahriman_core_status_web_client -->
<g id="node54" class="node">
<title>ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="5012" cy="-1744.19" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="5012" y="-1758.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5012" y="-1747.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="5012" y="-1736.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="5012" y="-1725.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web_client</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_status_web_client -->
<g id="edge157" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1003.05,-2789.31C1292.97,-2785.23 2761.76,-2763.48 3961,-2726.03 4160.63,-2719.79 4664.83,-2735.79 4859,-2689.03 5069.26,-2638.39 5180.51,-2665.1 5301,-2485.5 5464.81,-2241.34 5155.63,-1890.67 5047.42,-1780.01"/>
<polygon fill="#e50505" stroke="black" points="5049.8,-1777.44 5040.29,-1772.77 5044.81,-1782.35 5049.8,-1777.44"/>
</g>
<!-- ahriman_core_upload_rsync -->
<g id="node57" class="node">
<title>ahriman_core_upload_rsync</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="2972" cy="-2072.8" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="2972" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2972" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2972" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload.</text>
<text text-anchor="middle" x="2972" y="-2053.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">rsync</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_upload_rsync -->
<g id="edge158" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_upload_rsync</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3194,-2549.5C3186.98,-2509.22 3205.01,-2496.89 3194,-2457.51"/>
<path fill="none" stroke="black" d="M3194,-2455.51C3173.59,-2382.5 3052.19,-2194.45 2998.05,-2112.71"/>
<polygon fill="#e50505" stroke="black" points="3000.85,-2110.6 2992.4,-2104.21 2995.02,-2114.47 3000.85,-2110.6"/>
</g>
<!-- ahriman_core_upload_s3 -->
<g id="node58" class="node">
<title>ahriman_core_upload_s3</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="4122" cy="-1853.73" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4122" y="-1867.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4122" y="-1856.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4122" y="-1845.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload.</text>
<text text-anchor="middle" x="4122" y="-1834.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">s3</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_upload_s3 -->
<g id="edge159" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_upload_s3</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3913,-2651.26C3924.75,-2637.62 3921.5,-2630.11 3932,-2615.49 3944.83,-2597.61 3952.91,-2597.18 3966,-2579.49 4042.95,-2475.55 4240.64,-2202.43 4254,-2073.8"/>
</g>
<!-- ahriman_core_upload_upload -->
<g id="node59" class="node">
<title>ahriman_core_upload_upload</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8b1818" stroke="black" cx="2820" cy="-1963.27" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="2820" y="-1977.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2820" y="-1966.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2820" y="-1955.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload.</text>
<text text-anchor="middle" x="2820" y="-1944.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_upload_upload -->
<g id="edge160" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_upload_upload</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2236,-2725.03C2238.96,-2673.13 3131.98,-2723.37 3171,-2689.03 3217.52,-2648.08 3204.64,-2612.55 3194,-2551.5"/>
<path fill="none" stroke="black" d="M3194,-2549.5C3178.71,-2453.38 3030.41,-2248.52 2966,-2175.57"/>
<path fill="none" stroke="black" d="M2966,-2173.57C2918.96,-2132.94 2892.81,-2130.79 2868,-2073.8"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_web_views_base -->
<g id="edge161" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3947,-2725.03C4148.58,-2702.64 4661.7,-2736.05 4859,-2689.03 4935.52,-2670.79 4947.99,-2647.17 5020,-2615.49 5155.62,-2555.82 5203.06,-2566.7 5327,-2485.5 5428.5,-2419.01 5477.11,-2409.03 5525,-2297.54 5564.79,-2204.91 5533.62,-2210.24 5436,-1926.5 5397.57,-1814.79 5027.18,-1059.22 5036,-941.41"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_web_web -->
<g id="edge162" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1002.94,-2789.5C1317.42,-2786.19 3027.14,-2766.97 4421,-2726.03 4625.08,-2720.03 5140.89,-2738.37 5339,-2689.03 5756.71,-2584.99 6212,-2700.02 6212,-2269.55 6212,-2269.55 6212,-2269.55 6212,-1633.65 6212,-1374.28 6244,-1310.32 6244,-1050.95 6244,-1050.95 6244,-1050.95 6244,-939.41 6244,-839.48 6259.59,-813.27 6244,-714.56"/>
<path fill="none" stroke="black" d="M6244,-712.56C6219.84,-566.83 6087.12,-611.84 5949,-559.47 5788.74,-498.7 5744.57,-490.41 5575,-465.49 5305.93,-425.94 4438.78,-406.64 4224.31,-402.41"/>
<polygon fill="#e50505" stroke="black" points="4224.37,-398.91 4214.31,-402.21 4224.23,-405.9 4224.37,-398.91"/>
</g>
<!-- ahriman_core_exceptions -->
<g id="node36" class="node">
<title>ahriman_core_exceptions</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="3909" cy="-2885" rx="44.6" ry="28.98"/>
<text text-anchor="middle" x="3909" y="-2893.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3909" y="-2882.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3909" y="-2871.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">exceptions</text>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_application_handlers_handler -->
<g id="edge163" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_application_handlers_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M873,-2790.02C869.83,-2775.32 880.63,-2771.87 892,-2762.03 919.8,-2737.96 991.04,-2751.95 966,-2725.03 890.89,-2644.26 555.85,-2759.49 471,-2689.03 242.73,-2499.45 285.09,-2329.02 332,-2036.03 340.1,-1985.43 345.73,-1972.65 368,-1926.5 418.63,-1821.55 446.34,-1803.68 512,-1707.42 646.42,-1510.35 672.86,-1455.43 822,-1269.26 849.35,-1235.13 867.69,-1235 888,-1196.26 926.81,-1122.24 872.09,-1072.47 931,-1013.18 979.02,-964.86 1014.75,-996.79 1080,-977.18 1095.65,-972.48 1112.44,-966.7 1127.67,-961.17"/>
<polygon fill="#f91010" stroke="black" points="1129.25,-964.32 1137.43,-957.58 1126.84,-957.75 1129.25,-964.32"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_application_handlers_status_update -->
<g id="edge164" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_application_handlers_status_update</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3864.5,-2883.62C3495.91,-2880.43 960.29,-2857.13 892,-2820.01 878.79,-2812.83 876.31,-2806.69 873,-2792.02"/>
<path fill="none" stroke="black" d="M873,-2790.02C869.69,-2775.35 881.07,-2772.36 892,-2762.03 914.6,-2740.66 966,-2753.8 952,-2726.03"/>
<path fill="none" stroke="black" d="M952,-2725.03C923.93,-2669.35 449.98,-2711.96 392,-2689.03 157.75,-2596.39 152,-2427.47 152,-2175.57 152,-2175.57 152,-2175.57 152,-1962.27 152,-1710.5 0,-1668.33 0,-1416.57 0,-1416.57 0,-1416.57 0,-1305.03 0,-1182.84 78.14,-1170.15 105,-1050.95"/>
<path fill="none" stroke="black" d="M105,-1048.95C110.76,-1001.51 128.29,-983.15 105,-941.41"/>
<path fill="none" stroke="black" d="M105,-939.41C93.5,-918.8 100.52,-893.84 111.2,-873.15"/>
<polygon fill="#f91010" stroke="black" points="114.33,-874.72 116.13,-864.28 108.21,-871.31 114.33,-874.72"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_application_lock -->
<g id="edge165" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_application_lock</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M873,-2790.02C860.62,-2726.21 1047.41,-2773.4 1004,-2725.03 954.43,-2669.8 721.57,-2744.26 672,-2689.03 594.37,-2602.53 633.24,-2537.09 672,-2427.52 734.83,-2249.89 791.21,-2238.97 1240,-1926.5 1509.9,-1738.57 1585.34,-1683.02 1903,-1597.88 2043.54,-1560.21 2214.2,-1539.79 2300.77,-1531.16"/>
<polygon fill="#f91010" stroke="black" points="2301.3,-1534.63 2310.91,-1530.17 2300.61,-1527.66 2301.3,-1534.63"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_alpm_repo -->
<g id="edge166" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_alpm_repo</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3916,-2856.32C3919.3,-2836.98 3920.36,-2811.27 3909,-2792.02"/>
<path fill="none" stroke="black" d="M3909,-2790.02C3881.83,-2743.97 3004.83,-2697.25 2952,-2689.03 2714.33,-2652.02 2617.96,-2718.98 2422,-2579.49 2276.93,-2476.22 2337.38,-2220.46 2369.14,-2117.64"/>
<polygon fill="#f91010" stroke="black" points="2372.55,-2118.48 2372.21,-2107.89 2365.87,-2116.38 2372.55,-2118.48"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_auth_auth -->
<g id="edge167" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_auth_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5376,-2725.03C5298.45,-2609.08 5333.5,-2554.61 5276,-2427.52 5236.19,-2339.54 5221.75,-2319.11 5167,-2239.56 5136.55,-2195.3 5134.82,-2176.65 5091,-2145.57 5044.13,-2112.33 4980.29,-2093.03 4937.24,-2082.98"/>
<polygon fill="#f91010" stroke="black" points="4937.83,-2079.52 4927.31,-2080.73 4936.29,-2086.35 4937.83,-2079.52"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge168" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_auth_oauth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5376,-2790.02C5377.81,-2761.64 5392.08,-2749.48 5376,-2726.03"/>
<path fill="none" stroke="black" d="M5376,-2725.03C5338.92,-2670.95 4835.1,-2733.59 4787,-2689.03 4741.74,-2647.09 4768,-2613.2 4768,-2551.5 4768,-2551.5 4768,-2551.5 4768,-2455.51 4768,-2344.28 4657.46,-2074.54 4672,-1964.27"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge169" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_build_tools_task</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M873,-2790.02C870.4,-2775.21 879.44,-2770.29 892,-2762.03 963.08,-2715.27 1006.48,-2768.83 1080,-2726.03 1116.72,-2704.65 1142,-2695.75 1142,-2653.26 1142,-2653.26 1142,-2653.26 1142,-2455.51 1142,-2259.53 1395.7,-2137.05 1507.33,-2092.64"/>
<polygon fill="#f91010" stroke="black" points="1508.69,-2095.87 1516.72,-2088.96 1506.13,-2089.35 1508.69,-2095.87"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_configuration -->
<g id="edge170" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_configuration</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3864.32,-2882.61C3528.43,-2872.16 1401.49,-2806 1012.91,-2793.91"/>
<polygon fill="#f91010" stroke="black" points="1012.82,-2790.41 1002.72,-2793.6 1012.6,-2797.41 1012.82,-2790.41"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_report_report -->
<g id="edge171" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_report_report</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3909,-2790.02C3863.94,-2699.34 3558.65,-2736.06 3458,-2725.03 3246.22,-2701.82 3189.58,-2727.3 2980,-2689.03 2866.07,-2668.22 2842.98,-2640.99 2730,-2615.49 2630.79,-2593.09 2587.39,-2637.73 2504,-2579.49 2425.55,-2524.7 2423.11,-2484.13 2399,-2391.52 2338.95,-2160.89 2464.83,-2054.28 2666,-1926.5 2706.58,-1900.72 2726.36,-1914.52 2768,-1890.5 2811.56,-1865.36 2812.86,-1845.89 2854,-1816.96 2934.36,-1760.44 2956.17,-1747.2 3046,-1707.42 3104.06,-1681.71 3174.28,-1660.39 3219.52,-1647.84"/>
<polygon fill="#f91010" stroke="black" points="3220.62,-1651.16 3229.34,-1645.14 3218.77,-1644.41 3220.62,-1651.16"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge172" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_sign_gpg</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3909,-2790.02C3884.77,-2747.34 3973.62,-2768.03 3999,-2726.03 4011.81,-2704.82 4007.48,-2620.05 4004,-2615.49 3967.09,-2567.16 3920.68,-2615.93 3872,-2579.49 3781.76,-2511.94 3752.88,-2475.4 3739,-2363.53"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_status_watcher -->
<g id="edge173" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_status_watcher</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5376,-2725.03C5317.16,-2638.95 5482.3,-2649.02 5560,-2579.49 5603.79,-2540.3 5611.93,-2527.54 5653,-2485.5 5665.08,-2473.14 5676.7,-2474.48 5680,-2457.51"/>
<path fill="none" stroke="black" d="M5680,-2455.51C5702.29,-2421.25 5667.6,-2402.48 5680,-2363.53"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_upload_upload -->
<g id="edge174" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_upload_upload</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3985,-2725.03C3982.18,-2705.58 3378.29,-2400.87 3361,-2391.52 3273,-2343.95 3041.71,-2240.95 2966,-2175.57"/>
</g>
<!-- ahriman_core_util -->
<g id="node60" class="node">
<title>ahriman_core_util</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#db0505" stroke="black" cx="3919" cy="-2550.5" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="3919" y="-2559" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3919" y="-2548" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3919" y="-2537" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">util</text>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_util -->
<g id="edge175" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_util</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3909,-2790.02C3855.37,-2680.89 4110.76,-2829.27 4175,-2726.03"/>
<path fill="none" stroke="black" d="M4175,-2725.03C4230.19,-2636.34 4053.65,-2582.23 3965.71,-2561.36"/>
<polygon fill="#f91010" stroke="black" points="3966.24,-2557.89 3955.7,-2559.04 3964.65,-2564.71 3966.24,-2557.89"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_auth_settings -->
<g id="edge176" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_models_auth_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4701,-2725.03C4581.5,-2683.7 4631.65,-2484.73 4658.81,-2400.9"/>
<polygon fill="#f91010" stroke="black" points="4662.18,-2401.86 4662,-2391.26 4655.54,-2399.66 4662.18,-2401.86"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_package -->
<g id="edge177" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3909,-2790.02C3891.39,-2754.19 3883.31,-2741.61 3847,-2725.03 3771.32,-2690.45 3160.4,-2745.18 3099,-2689.03 3053.47,-2647.38 3088.12,-2612.67 3080,-2551.5"/>
<path fill="none" stroke="black" d="M3080,-2549.5C3071.18,-2489.33 3066.26,-2464.52 3018,-2427.52 2956.36,-2380.27 2919.34,-2419.78 2847,-2391.52 2843.72,-2390.24 2840.4,-2388.74 2837.12,-2387.11"/>
<polygon fill="#f91010" stroke="black" points="2838.53,-2383.9 2828.07,-2382.27 2835.23,-2390.07 2838.53,-2383.9"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_report_settings -->
<g id="edge178" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_models_report_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3909,-2790.02C3844.34,-2665.95 3739.58,-2744.25 3601,-2725.03 3483.85,-2708.78 3179.99,-2732.5 3070,-2689.03 3021.96,-2670.04 3027.88,-2634.88 2980,-2615.49 2892.36,-2579.98 2632.39,-2635.22 2556,-2579.49 2498.41,-2537.47 2477.48,-2451.55 2470.02,-2401.69"/>
<polygon fill="#f91010" stroke="black" points="2473.46,-2401.04 2468.62,-2391.62 2466.53,-2402.01 2473.46,-2401.04"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_sign_settings -->
<g id="edge179" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_models_sign_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3953.55,-2883.59C4198.59,-2881.03 5371.33,-2865 5376,-2792.02"/>
<path fill="none" stroke="black" d="M5376,-2790.02C5380.81,-2714.84 4774.53,-2742.41 4701,-2726.03"/>
<path fill="none" stroke="black" d="M4701,-2725.03C4392.22,-2656.23 4058.16,-2461.73 3942.34,-2390.28"/>
<polygon fill="#f91010" stroke="black" points="3944.08,-2387.24 3933.73,-2384.95 3940.39,-2393.2 3944.08,-2387.24"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_upload_settings -->
<g id="edge180" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_models_upload_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3909,-2790.02C3889.53,-2750.39 3994.43,-2769.16 3985,-2726.03"/>
<path fill="none" stroke="black" d="M3985,-2725.03C3972.74,-2668.96 3915.26,-2707.72 3861,-2689.03 3565.42,-2587.21 3509.38,-2510.64 3208,-2427.52 3109.53,-2400.36 3079.12,-2419.94 2981,-2391.52 2976.63,-2390.26 2972.17,-2388.77 2967.73,-2387.16"/>
<polygon fill="#f91010" stroke="black" points="2968.69,-2383.78 2958.1,-2383.46 2966.18,-2390.31 2968.69,-2383.78"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_web_views_status_package -->
<g id="edge181" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5680,-2455.51C5728.69,-2380.67 5756,-2358.84 5756,-2269.55 5756,-2269.55 5756,-2269.55 5756,-2071.8 5756,-1944.45 5720.12,-1901.64 5625,-1816.96 5590.96,-1786.66 5557.15,-1816.79 5529,-1780.96 5463.47,-1697.54 5472,-1413.11 5472,-1307.03 5472,-1307.03 5472,-1307.03 5472,-1232.26 5472,-1182.85 5473.04,-1167.89 5453,-1122.72 5383.11,-965.2 5239.13,-814.81 5171.12,-749.13"/>
<polygon fill="#f91010" stroke="black" points="5173.25,-746.32 5163.61,-741.92 5168.4,-751.37 5173.25,-746.32"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_web_web -->
<g id="edge182" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3953.62,-2883.45C4280.1,-2879.15 6288,-2847.72 6288,-2726.03 6288,-2726.03 6288,-2726.03 6288,-1852.73 6288,-1592.97 6338.14,-1528.52 6322,-1269.26 6314.88,-1154.78 6304.38,-1126.98 6290,-1013.18 6281.58,-946.57 6284.44,-768.16 6244,-714.56"/>
</g>
<!-- ahriman_core_report -->
<g id="node37" class="node">
<title>ahriman_core_report</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#e72222" stroke="black" cx="2802" cy="-1634.65" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="2802" y="-1643.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2802" y="-1632.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2802" y="-1621.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report</text>
</g>
<!-- ahriman_core_report&#45;&gt;ahriman_core_repository_executor -->
<g id="edge183" class="edge">
<title>ahriman_core_report&#45;&gt;ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2794.32,-1606.19C2789.51,-1582.99 2786.77,-1549.84 2802,-1526.11"/>
</g>
<!-- ahriman_core_report_email&#45;&gt;ahriman_core_report_report -->
<g id="edge184" class="edge">
<title>ahriman_core_report_email&#45;&gt;ahriman_core_report_report</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3659.28,-1731.77C3574.76,-1711.11 3397.39,-1667.76 3312.81,-1647.09"/>
<polygon fill="#7a2828" stroke="black" points="3658.7,-1735.23 3669.24,-1734.2 3660.36,-1728.43 3658.7,-1735.23"/>
<polygon fill="#7a2828" stroke="black" points="3313.51,-1643.66 3302.96,-1644.68 3311.85,-1650.46 3313.51,-1643.66"/>
</g>
<!-- ahriman_core_report_jinja_template&#45;&gt;ahriman_core_report_email -->
<g id="edge186" class="edge">
<title>ahriman_core_report_jinja_template&#45;&gt;ahriman_core_report_email</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3963.34,-1835.92C3905.38,-1815.48 3808.24,-1781.24 3751.34,-1761.17"/>
<polygon fill="#832020" stroke="black" points="3752.48,-1757.86 3741.88,-1757.84 3750.15,-1764.47 3752.48,-1757.86"/>
</g>
<!-- ahriman_core_report_jinja_template&#45;&gt;ahriman_core_report_html -->
<g id="edge187" class="edge">
<title>ahriman_core_report_jinja_template&#45;&gt;ahriman_core_report_html</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4015.23,-1816.86C4016.68,-1795.71 4016.72,-1768.58 4011,-1745.19"/>
</g>
<!-- ahriman_core_report_report&#45;&gt;ahriman_core_report_html -->
<g id="edge189" class="edge">
<title>ahriman_core_report_report&#45;&gt;ahriman_core_report_html</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3313.45,-1623.88C3350.97,-1616.31 3404.72,-1605.81 3452,-1597.88 3617.55,-1570.09 3815.08,-1543.73 3904.2,-1532.2"/>
<polygon fill="#8b1818" stroke="black" points="3312.42,-1620.52 3303.31,-1625.93 3313.81,-1627.38 3312.42,-1620.52"/>
<polygon fill="#8b1818" stroke="black" points="3904.8,-1535.65 3914.27,-1530.9 3903.91,-1528.71 3904.8,-1535.65"/>
</g>
<!-- ahriman_core_report_report&#45;&gt;ahriman_core_repository_executor -->
<g id="edge190" class="edge">
<title>ahriman_core_report_report&#45;&gt;ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3231.22,-1618.87C3194.87,-1601.7 3138.66,-1570.01 3106,-1526.11"/>
</g>
<!-- ahriman_core_repository -->
<g id="node42" class="node">
<title>ahriman_core_repository</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="2274" cy="-1306.03" rx="42.35" ry="28.98"/>
<text text-anchor="middle" x="2274" y="-1314.53" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2274" y="-1303.53" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2274" y="-1292.53" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository</text>
</g>
<!-- ahriman_core_repository&#45;&gt;ahriman_application_application -->
<g id="edge191" class="edge">
<title>ahriman_core_repository&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2231.66,-1302.92C2061.77,-1294.08 1429.65,-1257.66 1240,-1196.26 1157.03,-1169.4 1071.23,-1112.95 1023.94,-1078.86"/>
<polygon fill="#f91010" stroke="black" points="1025.99,-1076.02 1015.84,-1072.97 1021.87,-1081.68 1025.99,-1076.02"/>
</g>
<!-- ahriman_core_repository&#45;&gt;ahriman_core_status_watcher -->
<g id="edge192" class="edge">
<title>ahriman_core_repository&#45;&gt;ahriman_core_status_watcher</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2316.51,-1302.86C2437.56,-1296.74 2794.44,-1279.18 3091,-1269.26 3783.69,-1246.1 3958.15,-1274.49 4650,-1233.26 4917.99,-1217.29 5237.91,-1180.69 5357.64,-1166.38"/>
<polygon fill="#f91010" stroke="black" points="5358.41,-1169.81 5367.92,-1165.15 5357.58,-1162.86 5358.41,-1169.81"/>
</g>
<!-- ahriman_core_repository_cleaner -->
<g id="node43" class="node">
<title>ahriman_core_repository_cleaner</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b42d2d" stroke="black" cx="3034" cy="-1525.11" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="3034" y="-1539.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3034" y="-1528.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3034" y="-1517.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="3034" y="-1506.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">cleaner</text>
</g>
<!-- ahriman_core_repository_cleaner&#45;&gt;ahriman_core_repository_executor -->
<g id="edge193" class="edge">
<title>ahriman_core_repository_cleaner&#45;&gt;ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3030.34,-1488.3C3029.48,-1479.96 3028.56,-1470.96 3027.67,-1462.25"/>
<polygon fill="#b42d2d" stroke="black" points="3031.15,-1461.81 3026.65,-1452.22 3024.18,-1462.53 3031.15,-1461.81"/>
</g>
<!-- ahriman_core_repository_update_handler -->
<g id="node47" class="node">
<title>ahriman_core_repository_update_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#993333" stroke="black" cx="3144" cy="-1415.57" rx="58.88" ry="36.54"/>
<text text-anchor="middle" x="3144" y="-1429.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3144" y="-1418.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3144" y="-1407.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="3144" y="-1396.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">update_handler</text>
</g>
<!-- ahriman_core_repository_cleaner&#45;&gt;ahriman_core_repository_update_handler -->
<g id="edge194" class="edge">
<title>ahriman_core_repository_cleaner&#45;&gt;ahriman_core_repository_update_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3062.04,-1496.69C3075.27,-1483.76 3091.26,-1468.13 3105.59,-1454.12"/>
<polygon fill="#b42d2d" stroke="black" points="3108.2,-1456.46 3112.91,-1446.97 3103.31,-1451.45 3108.2,-1456.46"/>
</g>
<!-- ahriman_core_repository_repository -->
<g id="node46" class="node">
<title>ahriman_core_repository_repository</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#932424" stroke="black" cx="3144" cy="-1306.03" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="3144" y="-1320.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3144" y="-1309.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3144" y="-1298.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="3144" y="-1287.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository</text>
</g>
<!-- ahriman_core_repository_executor&#45;&gt;ahriman_core_repository_repository -->
<g id="edge195" class="edge">
<title>ahriman_core_repository_executor&#45;&gt;ahriman_core_repository_repository</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3052.6,-1388.26C3068.86,-1373.81 3089.19,-1355.74 3106.55,-1340.32"/>
<polygon fill="#732626" stroke="black" points="3109.14,-1342.7 3114.29,-1333.44 3104.49,-1337.47 3109.14,-1342.7"/>
</g>
<!-- ahriman_core_repository_properties&#45;&gt;ahriman_core_repository_cleaner -->
<g id="edge196" class="edge">
<title>ahriman_core_repository_properties&#45;&gt;ahriman_core_repository_cleaner</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3034,-1597.84C3034,-1589.67 3034,-1580.88 3034,-1572.35"/>
<polygon fill="#732626" stroke="black" points="3037.5,-1572.13 3034,-1562.13 3030.5,-1572.13 3037.5,-1572.13"/>
</g>
<!-- ahriman_core_repository_repository&#45;&gt;ahriman_application_application -->
<g id="edge197" class="edge">
<title>ahriman_core_repository_repository&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3099.92,-1302.9C2835,-1289.72 1452.24,-1215.63 1050,-1086.72 1042.25,-1084.24 1034.4,-1080.73 1026.98,-1076.86"/>
<polygon fill="#932424" stroke="black" points="1028.32,-1073.6 1017.87,-1071.84 1024.94,-1079.73 1028.32,-1073.6"/>
</g>
<!-- ahriman_core_repository_repository&#45;&gt;ahriman_core_status_watcher -->
<g id="edge198" class="edge">
<title>ahriman_core_repository_repository&#45;&gt;ahriman_core_status_watcher</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3187.78,-1304.03C3373.82,-1299.56 4117.06,-1279.61 4726,-1233.26 4963.69,-1215.17 5246.81,-1180.7 5357.9,-1166.66"/>
<polygon fill="#932424" stroke="black" points="5358.63,-1170.1 5368.11,-1165.37 5357.75,-1163.16 5358.63,-1170.1"/>
</g>
<!-- ahriman_core_repository_update_handler&#45;&gt;ahriman_core_repository_repository -->
<g id="edge199" class="edge">
<title>ahriman_core_repository_update_handler&#45;&gt;ahriman_core_repository_repository</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3144,-1378.76C3144,-1370.59 3144,-1361.8 3144,-1353.27"/>
<polygon fill="#993333" stroke="black" points="3147.5,-1353.05 3144,-1343.05 3140.5,-1353.05 3147.5,-1353.05"/>
</g>
<!-- ahriman_core_sign -->
<g id="node48" class="node">
<title>ahriman_core_sign</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#ce3b3b" stroke="black" cx="3676" cy="-2072.8" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="3676" y="-2081.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3676" y="-2070.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3676" y="-2059.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">sign</text>
</g>
<!-- ahriman_core_sign&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge200" class="edge">
<title>ahriman_core_sign&#45;&gt;ahriman_core_report_jinja_template</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3702.37,-2051.5C3740.59,-2022.41 3814.06,-1967.84 3880,-1926.5 3905.42,-1910.55 3934.63,-1894.36 3959,-1881.4"/>
<polygon fill="#ce3b3b" stroke="black" points="3960.88,-1884.36 3968.09,-1876.6 3957.61,-1878.18 3960.88,-1884.36"/>
</g>
<!-- ahriman_core_sign&#45;&gt;ahriman_core_repository_properties -->
<g id="edge201" class="edge">
<title>ahriman_core_sign&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3648,-2052.78C3546.54,-1983.85 3197.72,-1746.88 3076.17,-1664.3"/>
<polygon fill="#ce3b3b" stroke="black" points="3078.06,-1661.35 3067.82,-1658.63 3074.13,-1667.14 3078.06,-1661.35"/>
</g>
<!-- ahriman_core_sign_gpg&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge202" class="edge">
<title>ahriman_core_sign_gpg&#45;&gt;ahriman_core_report_jinja_template</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4022,-2038.47C4014.54,-2017.51 4007.07,-1989.71 4008,-1964.27"/>
</g>
<!-- ahriman_core_sign_gpg&#45;&gt;ahriman_core_repository_properties -->
<g id="edge203" class="edge">
<title>ahriman_core_sign_gpg&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4016.72,-2040.85C3965.71,-1960.05 3826.1,-1746.31 3753,-1707.42 3648,-1651.56 3336.95,-1686.74 3219,-1671.42 3173.78,-1665.54 3122.95,-1655.46 3086.04,-1647.5"/>
<polygon fill="#932424" stroke="black" points="3086.52,-1644.02 3076.01,-1645.31 3085.03,-1650.86 3086.52,-1644.02"/>
</g>
<!-- ahriman_core_spawn&#45;&gt;ahriman_application_handlers_web -->
<g id="edge204" class="edge">
<title>ahriman_core_spawn&#45;&gt;ahriman_application_handlers_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6069.94,-1130.66C6089.46,-1030.59 6139.99,-688.21 5949,-559.47 5806.88,-463.67 5743.94,-494.39 5575,-465.49 5498.06,-452.33 4148.72,-408.64 4176,-335.5"/>
</g>
<!-- ahriman_core_spawn&#45;&gt;ahriman_web_views_base -->
<g id="edge205" class="edge">
<title>ahriman_core_spawn&#45;&gt;ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6027.47,-1150.95C5987.67,-1142.96 5922.05,-1130.45 5865,-1122.72 5691.63,-1099.22 5639.63,-1140.06 5473,-1086.72 5311.84,-1035.14 5145.74,-916.85 5073.41,-861.48"/>
<polygon fill="#c82323" stroke="black" points="5075.12,-858.38 5065.06,-855.05 5070.85,-863.92 5075.12,-858.38"/>
</g>
<!-- ahriman_core_spawn&#45;&gt;ahriman_web_web -->
<g id="edge206" class="edge">
<title>ahriman_core_spawn&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6060,-1130.26C6057.27,-1108.6 6054.12,-1077.95 6054,-1050.95"/>
</g>
<!-- ahriman_core_status -->
<g id="node51" class="node">
<title>ahriman_core_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="2688" cy="-1853.73" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="2688" y="-1862.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2688" y="-1851.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2688" y="-1840.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status</text>
</g>
<!-- ahriman_core_status&#45;&gt;ahriman_application_lock -->
<g id="edge207" class="edge">
<title>ahriman_core_status&#45;&gt;ahriman_application_lock</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2677.88,-1825.56C2671.18,-1803.41 2665.12,-1771.6 2674,-1745.19"/>
<path fill="none" stroke="black" d="M2674,-1743.19C2706.67,-1646.04 2547.44,-1702.79 2470,-1635.65"/>
</g>
<!-- ahriman_core_status&#45;&gt;ahriman_core_repository_properties -->
<g id="edge208" class="edge">
<title>ahriman_core_status&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2674,-1743.19C2684.64,-1711.56 2708.37,-1718.04 2740,-1707.42 2840.58,-1673.64 2876.4,-1708 2976,-1671.42 2981.48,-1669.41 2987,-1666.84 2992.34,-1664.01"/>
<polygon fill="#f91010" stroke="black" points="2994.14,-1667.01 3001.13,-1659.05 2990.7,-1660.92 2994.14,-1667.01"/>
</g>
<!-- ahriman_core_status&#45;&gt;ahriman_web_views_base -->
<g id="edge209" class="edge">
<title>ahriman_core_status&#45;&gt;ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2674,-1743.19C2713.45,-1625.91 2846.57,-1748.96 2943,-1671.42 2971.67,-1648.36 2950.76,-1618.83 2981,-1597.88 3023.49,-1568.44 3853.48,-1492.6 3905,-1488.34 4073.94,-1474.35 4506.12,-1505.79 4667,-1452.34 4776.45,-1415.97 4839.3,-1414.17 4882,-1307.03"/>
<path fill="none" stroke="black" d="M4882,-1305.03C4930.46,-1181.4 4866.37,-1119.45 4946,-1013.18 4966.04,-986.44 4987.32,-999.7 5012,-977.18 5026.14,-964.28 5034.36,-960.49 5036,-941.41"/>
<path fill="none" stroke="black" d="M5036,-939.41C5037.51,-919.31 5037.74,-897.02 5037.51,-877.98"/>
<polygon fill="#f91010" stroke="black" points="5041.01,-877.71 5037.34,-867.77 5034.01,-877.83 5041.01,-877.71"/>
</g>
<!-- ahriman_core_status&#45;&gt;ahriman_web_web -->
<g id="edge210" class="edge">
<title>ahriman_core_status&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2674,-1743.19C2713.55,-1625.58 2709.72,-1584.61 2788,-1488.34 2892.84,-1359.41 2940.43,-1339.58 3091,-1269.26 3180.62,-1227.41 3907.55,-1138.28 3954,-1050.95"/>
<path fill="none" stroke="black" d="M3954,-1048.95C3974.07,-1005.58 3923.25,-978 3954,-941.41"/>
</g>
<!-- ahriman_core_status_client&#45;&gt;ahriman_application_lock -->
<g id="edge211" class="edge">
<title>ahriman_core_status_client&#45;&gt;ahriman_application_lock</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3130.02,-1840.65C3050.76,-1814.31 2854.9,-1750.59 2688,-1707.42 2614.07,-1688.3 2589.85,-1702.28 2520,-1671.42 2495.01,-1660.38 2490.64,-1653.55 2470,-1635.65"/>
</g>
<!-- ahriman_core_status_client&#45;&gt;ahriman_core_repository_properties -->
<g id="edge212" class="edge">
<title>ahriman_core_status_client&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3147.09,-1821.62C3123.86,-1783.43 3084.4,-1718.53 3058.77,-1676.38"/>
<polygon fill="#931a1a" stroke="black" points="3061.71,-1674.48 3053.52,-1667.75 3055.73,-1678.12 3061.71,-1674.48"/>
</g>
<!-- ahriman_core_status_client&#45;&gt;ahriman_core_status_web_client -->
<g id="edge213" class="edge">
<title>ahriman_core_status_client&#45;&gt;ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3214.44,-1849.9C3472.75,-1834.86 4686.44,-1764.15 4958.01,-1748.33"/>
<polygon fill="#931a1a" stroke="black" points="3213.91,-1846.43 3204.13,-1850.5 3214.32,-1853.42 3213.91,-1846.43"/>
<polygon fill="#931a1a" stroke="black" points="4958.23,-1751.83 4968.01,-1747.75 4957.82,-1744.84 4958.23,-1751.83"/>
</g>
<!-- ahriman_core_status_watcher&#45;&gt;ahriman_web_views_base -->
<g id="edge214" class="edge">
<title>ahriman_core_status_watcher&#45;&gt;ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5372.07,-1141.62C5317.53,-1113.28 5209.06,-1051.84 5136,-977.18 5105,-945.51 5077.1,-903.21 5058.69,-872.42"/>
<polygon fill="#8b2222" stroke="black" points="5061.62,-870.5 5053.52,-863.66 5055.59,-874.05 5061.62,-870.5"/>
</g>
<!-- ahriman_core_status_watcher&#45;&gt;ahriman_web_web -->
<g id="edge215" class="edge">
<title>ahriman_core_status_watcher&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5442.94,-1149.3C5482.29,-1138.42 5545.35,-1117.75 5593,-1086.72 5762.52,-976.35 5760.83,-893.58 5855,-714.56"/>
<path fill="none" stroke="black" d="M5855,-712.56C5863.58,-693.26 5862.82,-686.92 5874,-669.01 5896.16,-633.5 5935,-639.1 5935,-597.24"/>
<path fill="none" stroke="black" d="M5935,-595.24C5935,-404.68 4410.31,-484.95 4228,-429.49 4223.34,-428.07 4218.62,-426.22 4214.02,-424.13"/>
<polygon fill="#8b2222" stroke="black" points="4215.33,-420.88 4204.81,-419.61 4212.25,-427.16 4215.33,-420.88"/>
</g>
<!-- ahriman_core_tree&#45;&gt;ahriman_application_application -->
<g id="edge217" class="edge">
<title>ahriman_core_tree&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1579.91,-1832.24C1508.9,-1775.85 1307.87,-1611.9 1164,-1452.34 1056.29,-1332.88 887.05,-1308.51 950,-1160.49"/>
</g>
<!-- ahriman_core_upload -->
<g id="node56" class="node">
<title>ahriman_core_upload</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#e72222" stroke="black" cx="2896" cy="-1634.65" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="2896" y="-1643.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2896" y="-1632.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2896" y="-1621.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload</text>
</g>
<!-- ahriman_core_upload&#45;&gt;ahriman_core_repository_executor -->
<g id="edge218" class="edge">
<title>ahriman_core_upload&#45;&gt;ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2869.93,-1613.43C2838.24,-1587.67 2790.32,-1544.32 2802,-1526.11"/>
</g>
<!-- ahriman_core_upload_rsync&#45;&gt;ahriman_core_upload_upload -->
<g id="edge219" class="edge">
<title>ahriman_core_upload_rsync&#45;&gt;ahriman_core_upload_upload</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2933.19,-2044.35C2910.36,-2028.2 2881.59,-2007.84 2858.77,-1991.7"/>
<polygon fill="#8a2e2e" stroke="black" points="2931.42,-2047.38 2941.61,-2050.3 2935.46,-2041.67 2931.42,-2047.38"/>
<polygon fill="#8a2e2e" stroke="black" points="2860.53,-1988.65 2850.34,-1985.73 2856.48,-1994.36 2860.53,-1988.65"/>
</g>
<!-- ahriman_core_upload_upload&#45;&gt;ahriman_core_repository_executor -->
<g id="edge221" class="edge">
<title>ahriman_core_upload_upload&#45;&gt;ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2843.32,-1933.7C2883.15,-1885.45 2967.61,-1785.42 3046,-1707.42 3063.19,-1690.31 3075.58,-1692.81 3087,-1671.42 3117.66,-1613.95 3144.88,-1578.37 3106,-1526.11"/>
<path fill="none" stroke="black" d="M3106,-1524.11C3095.3,-1509.63 3097.29,-1503.11 3087,-1488.34 3078.24,-1475.76 3067.53,-1462.97 3057.4,-1451.74"/>
<polygon fill="#8b1818" stroke="black" points="3059.85,-1449.24 3050.51,-1444.24 3054.7,-1453.97 3059.85,-1449.24"/>
</g>
<!-- ahriman_core_upload_upload&#45;&gt;ahriman_core_upload_s3 -->
<g id="edge223" class="edge">
<title>ahriman_core_upload_upload&#45;&gt;ahriman_core_upload_s3</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2868.43,-1959.26C2969.71,-1952.98 3211.28,-1938.13 3414,-1926.5 3560.64,-1918.08 3935.89,-1940.51 4074,-1890.5 4078.01,-1889.04 4081.97,-1887.14 4085.79,-1884.96"/>
<polygon fill="#8b1818" stroke="black" points="2867.98,-1955.78 2858.22,-1959.89 2868.41,-1962.76 2867.98,-1955.78"/>
<polygon fill="#8b1818" stroke="black" points="4087.86,-1887.79 4094.42,-1879.47 4084.1,-1881.88 4087.86,-1887.79"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_application_application -->
<g id="edge224" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1674,-2361.53C1595.3,-2281.55 1662.52,-2221.69 1658,-2109.57 1657.35,-2093.33 1659.61,-1831.81 1653,-1816.96 1489.05,-1448.31 1186.91,-1530.47 1026,-1160.49"/>
<path fill="none" stroke="black" d="M1026,-1158.49C1013.98,-1136.34 1004.29,-1109.73 997.58,-1088.52"/>
<polygon fill="#db0505" stroke="black" points="1000.9,-1087.41 994.62,-1078.88 994.21,-1089.47 1000.9,-1087.41"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_alpm_repo -->
<g id="edge225" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_core_alpm_repo</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3701,-2455.51C3656.44,-2443.49 3646.47,-2435.45 3601,-2427.52 3382.82,-2389.48 3317.86,-2449.07 3104,-2391.52 3047.19,-2376.24 3041.09,-2351.3 2985,-2333.54 2889.29,-2303.23 2855.36,-2334.46 2762,-2297.54 2719.13,-2280.58 2718.05,-2258.46 2676,-2239.56 2617.4,-2213.22 2593.01,-2233.18 2536,-2203.56 2489.03,-2179.15 2444.05,-2137.75 2415.38,-2108.28"/>
<polygon fill="#db0505" stroke="black" points="2417.9,-2105.85 2408.45,-2101.06 2412.85,-2110.7 2417.9,-2105.85"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge226" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_core_build_tools_task</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3880.85,-2547.88C3774.41,-2543.39 3465.1,-2530.51 3208,-2521.5 2947.37,-2512.38 2292.87,-2524.43 2035,-2485.5 1879.55,-2462.04 1822.88,-2481.54 1694,-2391.52 1681.46,-2382.77 1685.42,-2373.7 1674,-2363.53"/>
<path fill="none" stroke="black" d="M1674,-2361.53C1636.81,-2323.73 1631.04,-2311.03 1598,-2269.55"/>
<path fill="none" stroke="black" d="M1598,-2267.55C1564.53,-2225.52 1557.41,-2162.42 1556.93,-2119.75"/>
<polygon fill="#db0505" stroke="black" points="1560.43,-2119.64 1556.94,-2109.63 1553.43,-2119.63 1560.43,-2119.64"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_report_email -->
<g id="edge227" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_core_report_email</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3928.2,-2522.21C3933.26,-2503.95 3937.96,-2479.36 3935,-2457.51"/>
<path fill="none" stroke="black" d="M3935,-2455.51C3928.12,-2404.7 3863.2,-2436.73 3839,-2391.52 3826.84,-2368.8 3831.55,-2358.21 3839,-2333.54 3868.02,-2237.5 3883.46,-2205.4 3964,-2145.57 4008.36,-2112.63 4050.07,-2153.94 4083,-2109.57 4102.48,-2083.33 4101.27,-2063.13 4083,-2036.03 4059.15,-2000.66 4030.28,-2022.5 3994,-2000.03 3890.12,-1935.72 3787.59,-1833.13 3737.56,-1779.85"/>
<polygon fill="#db0505" stroke="black" points="3739.95,-1777.28 3730.56,-1772.35 3734.83,-1782.05 3739.95,-1777.28"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge228" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_core_report_jinja_template</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3935,-2455.51C3941.08,-2425.42 3953.93,-2421.4 3961,-2391.52 3972.08,-2344.68 3949.45,-2214.33 3978,-2175.57"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_repository_repository -->
<g id="edge229" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_core_repository_repository</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3950.42,-2533.82C4021.69,-2497.52 4199.52,-2402.73 4330,-2297.54 4375.02,-2261.24 4381.78,-2246.96 4420,-2203.56 4455.5,-2163.24 4478.09,-2160.22 4496,-2109.57 4506.9,-2078.76 4505.76,-2067.23 4496,-2036.03 4438.76,-1853.13 4299.23,-1704.74 3999,-1488.34 3938.72,-1444.89 3912.78,-1452.97 3848,-1416.57"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge230" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_core_sign_gpg</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3905.85,-2523.12C3894.42,-2502.64 3876.08,-2474.89 3853,-2457.51"/>
<path fill="none" stroke="black" d="M3853,-2455.51C3800.99,-2416.36 3748.08,-2428 3739,-2363.53"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_status_web_client -->
<g id="edge231" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3957.4,-2549.16C4173.44,-2547.1 5229.25,-2534.52 5276,-2485.5 5378.57,-2377.98 5104.39,-1994.52 5054,-1854.73"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_upload_rsync -->
<g id="edge232" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_core_upload_rsync</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3892.5,-2529.56C3854.98,-2502.33 3783.34,-2453.88 3715,-2427.52 3638.88,-2398.16 3613.3,-2414.43 3535,-2391.52 3349.17,-2337.16 3301.49,-2313.34 3142,-2203.56 3094.92,-2171.15 3042.98,-2130.79 3009.06,-2103.77"/>
<polygon fill="#db0505" stroke="black" points="3010.83,-2100.71 3000.84,-2097.2 3006.46,-2106.18 3010.83,-2100.71"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_models_build_status -->
<g id="edge233" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_models_build_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3957.35,-2549.51C4142.27,-2549.28 4936.61,-2544.84 5028,-2485.5 5057.11,-2466.61 5073.49,-2429.74 5082.2,-2401.47"/>
<polygon fill="#db0505" stroke="black" points="5085.67,-2402.06 5085.07,-2391.49 5078.94,-2400.13 5085.67,-2402.06"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_models_package -->
<g id="edge234" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3885.69,-2536.22C3854.01,-2523.51 3805.08,-2503.63 3763,-2485.5 3735.23,-2473.55 3730.19,-2465.39 3701,-2457.51"/>
<path fill="none" stroke="black" d="M3701,-2455.51C3565.3,-2418.91 3526.13,-2438.43 3386,-2427.52 3266.32,-2418.21 2961.61,-2427.22 2847,-2391.52 2843.48,-2390.43 2839.95,-2389.02 2836.5,-2387.42"/>
<polygon fill="#db0505" stroke="black" points="2838.06,-2384.29 2827.57,-2382.83 2834.86,-2390.52 2838.06,-2384.29"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_web_views_index -->
<g id="edge235" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3957.25,-2549.23C4171.57,-2547.56 5218.56,-2536.81 5352,-2485.5 5607.75,-2387.18 5667.89,-2266.43 5732,-2000.03 5739.65,-1968.26 5734.81,-1959.06 5732,-1926.5 5703.67,-1598.3 5633.33,-1524.46 5605,-1196.26 5602.19,-1163.7 5586.34,-1149.55 5605,-1122.72 5631.26,-1084.97 5675.74,-1124.47 5702,-1086.72 5739.05,-1033.46 5725.54,-994.33 5688,-941.41"/>
</g>
<!-- ahriman_models -->
<g id="node61" class="node">
<title>ahriman_models</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="3595" cy="-2362.53" rx="50.75" ry="18"/>
<text text-anchor="middle" x="3595" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.models</text>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_ahriman -->
<g id="edge236" class="edge">
<title>ahriman_models&#45;&gt;ahriman_application_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5908,-1962.27C5916.45,-1693.74 5976.14,-1631.98 6066,-1378.8 6095.69,-1295.15 6112.3,-1277.95 6147,-1196.26 6174.25,-1132.11 6206,-1120.65 6206,-1050.95 6206,-1050.95 6206,-1050.95 6206,-939.41 6206,-833.92 6236.68,-809.82 6282,-714.56"/>
<path fill="none" stroke="black" d="M6282,-712.56C6306.16,-656.13 6348.43,-657.87 6358,-597.24"/>
<path fill="none" stroke="black" d="M6358,-595.24C6371.43,-510.19 6358,-487.6 6358,-401.5 6358,-401.5 6358,-401.5 6358,-334.5 6358,-286.16 6382.76,-267.26 6358,-225.74"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_application -->
<g id="edge237" class="edge">
<title>ahriman_models&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3544.56,-2359.95C3449.48,-2356 3237.84,-2342.46 3066,-2297.54 2959.96,-2269.82 2938.78,-2246.66 2838,-2203.56 2633.2,-2115.97 2575.19,-2107.36 2380,-2000.03 2374.37,-1996.94 1615.5,-1491.66 1610,-1488.34 1435.77,-1383.25 1394.35,-1350.96 1208,-1269.26 1162.43,-1249.28 1143.68,-1260.44 1102,-1233.26"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_handler -->
<g id="edge238" class="edge">
<title>ahriman_models&#45;&gt;ahriman_application_handlers_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3549.41,-2354.68C3489.83,-2345.08 3382.62,-2325.6 3294,-2297.54 3192.63,-2265.45 2935.45,-2177.92 2854,-2109.57 2824.1,-2084.49 2839.2,-2056.56 2806,-2036.03 2687.27,-1962.64 2617.77,-2064.57 2494,-2000.03 2397.66,-1949.8 2408.49,-1894.12 2332,-1816.96 2075.97,-1558.65 2037.2,-1454.14 1724,-1269.26 1681.88,-1244.4 1648.37,-1273.11 1620,-1233.26 1591.5,-1193.24 1615.94,-1171.68 1620,-1122.72 1622.68,-1090.49 1655.26,-1073.42 1632,-1050.95"/>
<path fill="none" stroke="black" d="M1632,-1048.95C1585.55,-1007.13 1557.27,-1025.5 1496,-1013.18 1383.36,-990.53 1348.51,-1014.96 1240,-977.18 1234.36,-975.22 1228.65,-972.71 1223.11,-969.93"/>
<polygon fill="#f91010" stroke="black" points="1224.46,-966.68 1213.99,-965.05 1221.16,-972.85 1224.46,-966.68"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge239" class="edge">
<title>ahriman_models&#45;&gt;ahriman_application_handlers_remove_unknown</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3544.84,-2360.07C3457.21,-2356.36 3271.35,-2343.3 3122,-2297.54 3066.51,-2280.54 3057.6,-2264.08 3005,-2239.56 2800.54,-2144.22 2752.73,-2111.14 2540,-2036.03 2482.66,-2015.79 2460.1,-2031.39 2408,-2000.03 2369.6,-1976.93 2372.16,-1956.65 2339,-1926.5 2305.92,-1896.42 1097.07,-973.57 1066,-941.41"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge240" class="edge">
<title>ahriman_models&#45;&gt;ahriman_application_handlers_setup</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2432,-1524.11C2414.04,-1499.2 2341.02,-1295.46 2325,-1269.26 2214.16,-1087.99 2202.87,-1006.58 2017,-903.64 1917.26,-848.41 1869.76,-907.67 1763,-867.64 1758.75,-866.05 1754.48,-864.08 1750.31,-861.9"/>
<polygon fill="#f91010" stroke="black" points="1751.81,-858.72 1741.39,-856.83 1748.36,-864.81 1751.81,-858.72"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_status -->
<g id="edge241" class="edge">
<title>ahriman_models&#45;&gt;ahriman_application_handlers_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3308,-2267.55C3267.85,-2232.91 3268.94,-2213.61 3232,-2175.57"/>
<path fill="none" stroke="black" d="M3232,-2173.57C3192.41,-2132.79 3192.68,-2113.49 3152,-2073.8"/>
<path fill="none" stroke="black" d="M3152,-2071.8C3128.95,-2049.32 3118.96,-2047.83 3089,-2036.03 3024.81,-2010.75 2991.87,-2043.14 2938,-2000.03 2909.59,-1977.3 2931.79,-1947.4 2902,-1926.5 2780.5,-1841.25 2683.85,-1985.71 2570,-1890.5 2466.02,-1803.54 2543.74,-1719.55 2484,-1597.88 2466.64,-1562.52 2456.97,-1556.57 2432,-1526.11"/>
<path fill="none" stroke="black" d="M2432,-1524.11C2421.19,-1509.72 2424.63,-1502.08 2413,-1488.34 2413,-1488.34 2223,-1342.8 2223,-1342.8 1998.78,-1165.49 1734.88,-946.73 1636.54,-864.86"/>
<polygon fill="#f91010" stroke="black" points="1638.56,-861.99 1628.64,-858.28 1634.09,-867.37 1638.56,-861.99"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_user -->
<g id="edge242" class="edge">
<title>ahriman_models&#45;&gt;ahriman_application_handlers_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3152,-2071.8C3069.49,-1991.75 3045.65,-1966.84 2938,-1926.5 2813.49,-1879.83 2750.62,-1965.75 2641,-1890.5 2626.16,-1880.31 2633.14,-1868.87 2622,-1854.73"/>
<path fill="none" stroke="black" d="M2622,-1852.73C2586.78,-1808.06 2609.63,-1653.56 2598,-1597.88 2535.21,-1297.22 2496.44,-1226.45 2382,-941.41"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_lock -->
<g id="edge243" class="edge">
<title>ahriman_models&#45;&gt;ahriman_application_lock</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3156,-2173.57C3083.52,-2126.76 3092.41,-2081.36 3019,-2036.03 2975.59,-2009.23 2949.66,-2032.13 2910,-2000.03 2880.57,-1976.22 2898.9,-1946.89 2867,-1926.5 2796.84,-1881.63 2554.84,-1947.36 2494,-1890.5 2446.18,-1845.8 2480.88,-1809.73 2470,-1745.19"/>
<path fill="none" stroke="black" d="M2470,-1743.19C2461.11,-1696.23 2503.94,-1669.3 2470,-1635.65"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_alpm_repo -->
<g id="edge244" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_alpm_repo</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2852,-2267.55C2765.51,-2248.86 2525.76,-2139.81 2427.18,-2094.03"/>
<polygon fill="#f91010" stroke="black" points="2428.64,-2090.85 2418.09,-2089.8 2425.68,-2097.19 2428.64,-2090.85"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_auth_auth -->
<g id="edge245" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_auth_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3641.68,-2355.19C3690.72,-2348.77 3770.14,-2339.01 3839,-2333.54 3928.69,-2326.41 4564.96,-2332.19 4648,-2297.54 4742.23,-2258.22 4822.68,-2165 4862.78,-2112.13"/>
<polygon fill="#f91010" stroke="black" points="4865.67,-2114.11 4868.86,-2104.01 4860.06,-2109.91 4865.67,-2114.11"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge246" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_auth_mapping</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3641.69,-2355.25C3690.73,-2348.88 3770.15,-2339.16 3839,-2333.54 3920.83,-2326.86 4501.12,-2328.88 4577,-2297.54 4586.34,-2293.68 4709.66,-2185.4 4712,-2175.57"/>
<path fill="none" stroke="black" d="M4712,-2173.57C4727.87,-2118.82 4734.06,-2053.27 4736.46,-2010.29"/>
<polygon fill="#f91010" stroke="black" points="4739.97,-2010.3 4736.99,-2000.14 4732.98,-2009.94 4739.97,-2010.3"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge247" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_auth_oauth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3642.2,-2355.85C3691.33,-2349.99 3770.52,-2340.74 3839,-2333.54 4006.4,-2315.95 4051.14,-2331.46 4216,-2297.54 4259.43,-2288.6 4573.89,-2214.01 4596,-2175.57"/>
<path fill="none" stroke="black" d="M4596,-2173.57C4618.47,-2144.61 4632.96,-2142.99 4648,-2109.57 4674.87,-2049.89 4665.46,-2029.39 4672,-1964.27"/>
<path fill="none" stroke="black" d="M4672,-1962.27C4675.56,-1935.28 4691.21,-1909.16 4706.38,-1889.42"/>
<polygon fill="#f91010" stroke="black" points="4709.3,-1891.36 4712.81,-1881.36 4703.84,-1886.99 4709.3,-1891.36"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge248" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_build_tools_task</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3545.24,-2358.86C3423.95,-2352.01 3103.53,-2331.92 2838,-2297.54 2360.75,-2235.75 1790.05,-2121.43 1613.63,-2085.16"/>
<polygon fill="#f91010" stroke="black" points="1614.31,-2081.72 1603.81,-2083.13 1612.9,-2088.58 1614.31,-2081.72"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_report_email -->
<g id="edge249" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_report_email</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3573.3,-2346.08C3531.25,-2314.17 3446,-2238.71 3484,-2175.57"/>
<path fill="none" stroke="black" d="M3484,-2173.57C3508.73,-2123.98 3560.59,-2155.9 3591,-2109.57 3626.74,-2055.13 3575.34,-2019.41 3610,-1964.27"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_report_html -->
<g id="edge250" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_report_html</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3560,-2267.55C3572.72,-2189.62 3642.96,-2213.89 3712,-2175.57"/>
<path fill="none" stroke="black" d="M3712,-2173.57C3726.33,-2165.61 3722.14,-2154.31 3736,-2145.57 3788.17,-2112.7 3826.44,-2153.22 3870,-2109.57 3917.54,-2061.94 3916.3,-1876.32 3948,-1816.96 3967.99,-1779.52 4021.08,-1786.42 4011,-1745.19"/>
<path fill="none" stroke="black" d="M4011,-1743.19C3995.75,-1683.32 3976.82,-1614.56 3964.58,-1570.75"/>
<polygon fill="#f91010" stroke="black" points="3967.91,-1569.67 3961.85,-1560.98 3961.17,-1571.56 3967.91,-1569.67"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge251" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_report_jinja_template</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3712,-2173.57C3726.43,-2165.8 3721.9,-2153.92 3736,-2145.57 3803.22,-2105.81 3842.9,-2152.72 3908,-2109.57 3940.67,-2087.92 4006.57,-2003.44 4008,-1964.27"/>
<path fill="none" stroke="black" d="M4008,-1962.27C4010.05,-1942.2 4010.9,-1919.92 4011.21,-1900.87"/>
<polygon fill="#f91010" stroke="black" points="4014.71,-1900.7 4011.32,-1890.66 4007.71,-1900.62 4014.71,-1900.7"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_report_report -->
<g id="edge252" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_report_report</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3308,-2267.55C3278.8,-2240.26 3379.76,-2146.92 3394,-2109.57 3417.62,-2047.6 3436.03,-2030.1 3428,-1964.27"/>
<path fill="none" stroke="black" d="M3428,-1962.27C3423.35,-1901.74 3334.74,-1748.57 3290.58,-1675.55"/>
<polygon fill="#f91010" stroke="black" points="3293.35,-1673.37 3285.17,-1666.64 3287.37,-1677 3293.35,-1673.37"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_repository_executor -->
<g id="edge253" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3308,-2173.57C3283.81,-1918.84 3437.92,-1821.18 3313,-1597.88 3252.65,-1490 3179.92,-1519.27 3076,-1452.34 3072.43,-1450.04 3068.74,-1447.63 3065.06,-1445.19"/>
<polygon fill="#f91010" stroke="black" points="3066.76,-1442.12 3056.5,-1439.5 3062.88,-1447.95 3066.76,-1442.12"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_repository_properties -->
<g id="edge254" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3152,-2071.8C3050.43,-1959.63 3034.93,-1768.85 3033.46,-1681.62"/>
<polygon fill="#f91010" stroke="black" points="3036.96,-1681.47 3033.35,-1671.51 3029.96,-1681.55 3036.96,-1681.47"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_repository_repository -->
<g id="edge255" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_repository_repository</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3484,-2173.57C3532.36,-2074.81 3646.11,-2188.19 3723,-2109.57 3777.71,-2053.64 3913.1,-1459.98 3848,-1416.57"/>
<path fill="none" stroke="black" d="M3848,-1414.57C3736.14,-1351.71 3342.9,-1320.09 3198.07,-1310.37"/>
<polygon fill="#f91010" stroke="black" points="3197.88,-1306.85 3187.67,-1309.68 3197.42,-1313.84 3197.88,-1306.85"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_repository_update_handler -->
<g id="edge256" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_repository_update_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3428,-1962.27C3427.79,-1865.79 3428,-1841.67 3428,-1745.19 3428,-1745.19 3428,-1745.19 3428,-1633.65 3428,-1568.19 3447.78,-1537 3404,-1488.34 3378.38,-1459.86 3279.32,-1438.47 3211.15,-1426.74"/>
<polygon fill="#f91010" stroke="black" points="3211.35,-1423.22 3200.91,-1425.01 3210.19,-1430.13 3211.35,-1423.22"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge257" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_sign_gpg</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3608.8,-2344.86C3646.35,-2299.51 3747.77,-2177.15 3750,-2175.57"/>
<path fill="none" stroke="black" d="M3750,-2173.57C3833.98,-2105.94 3886.21,-2154.98 3984,-2109.57 3988.66,-2107.41 3993.36,-2104.84 3997.93,-2102.08"/>
<polygon fill="#f91010" stroke="black" points="3999.96,-2104.93 4006.51,-2096.6 3996.2,-2099.03 3999.96,-2104.93"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_status_client -->
<g id="edge258" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_status_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3308,-2267.55C3278.13,-2239.64 3318.9,-2214.97 3308,-2175.57"/>
<path fill="none" stroke="black" d="M3308,-2173.57C3279.08,-2069.07 3221.22,-1954.89 3189,-1895.61"/>
<polygon fill="#f91010" stroke="black" points="3191.93,-1893.67 3184.06,-1886.58 3185.79,-1897.03 3191.93,-1893.67"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_status_watcher -->
<g id="edge259" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_status_watcher</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3641.21,-2355C3690.2,-2348.36 3769.88,-2338.38 3839,-2333.54 3916.56,-2328.1 5168.27,-2331.93 5238,-2297.54 5334.35,-2250.01 5350.06,-2209.31 5390,-2109.57 5456.68,-1943.09 5402.07,-1885.53 5423,-1707.42 5426.77,-1675.37 5429.16,-1667.55 5434,-1635.65"/>
<path fill="none" stroke="black" d="M5434,-1633.65C5434.65,-1585.86 5429.46,-1573.69 5434,-1526.11"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_status_web_client -->
<g id="edge260" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4202,-2267.55C4379.31,-2185.67 4478.81,-2155.18 4520,-1964.27"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_tree -->
<g id="edge261" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_tree</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3545.78,-2357.92C3442.43,-2349.97 3195.39,-2329.16 2990,-2297.54 2928.15,-2288.02 2913.12,-2283 2852,-2269.55"/>
<path fill="none" stroke="black" d="M2852,-2267.55C2395.1,-2166.99 2239.18,-2214.68 1844,-1964.27"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_upload_rsync -->
<g id="edge262" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_upload_rsync</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3545.49,-2358.54C3489.88,-2353.22 3398.69,-2338.46 3332,-2297.54 3318.03,-2288.97 3319.97,-2280.74 3308,-2269.55"/>
<path fill="none" stroke="black" d="M3308,-2267.55C3296.03,-2256.36 3296.92,-2249.64 3284,-2239.56 3233.86,-2200.42 3209.43,-2210.07 3156,-2175.57"/>
<path fill="none" stroke="black" d="M3156,-2173.57C3142.23,-2164.68 3145.6,-2154.72 3132,-2145.57 3090.01,-2117.34 3069.29,-2132.13 3024,-2109.57 3019.4,-2107.28 3014.74,-2104.63 3010.19,-2101.82"/>
<polygon fill="#f91010" stroke="black" points="3011.94,-2098.78 3001.64,-2096.29 3008.14,-2104.66 3011.94,-2098.78"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_upload_s3 -->
<g id="edge263" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_upload_s3</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3628.24,-2348.68C3761.95,-2295.96 4250.93,-2093.03 4199,-1964.27"/>
<path fill="none" stroke="black" d="M4199,-1962.27C4190.23,-1934.77 4171.52,-1908.35 4154.73,-1888.58"/>
<polygon fill="#f91010" stroke="black" points="4157.15,-1886.03 4147.93,-1880.8 4151.88,-1890.63 4157.15,-1886.03"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_upload_upload -->
<g id="edge264" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_upload_upload</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3232,-2173.57C3222.2,-2163.45 3031.71,-2042.11 3019,-2036.03 2972.98,-2014.02 2957.95,-2017.46 2910,-2000.03 2895.11,-1994.62 2878.98,-1988.35 2864.55,-1982.58"/>
<polygon fill="#f91010" stroke="black" points="2865.45,-1979.16 2854.86,-1978.68 2862.83,-1985.66 2865.45,-1979.16"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge265" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3641.2,-2354.89C3690.18,-2348.16 3769.86,-2338.11 3839,-2333.54 3894.72,-2329.85 5806.62,-2333.9 5849,-2297.54 5893.75,-2259.14 5883.35,-2094.03 5894,-2036.03 5899.87,-2004.07 5908,-1996.76 5908,-1964.27"/>
<path fill="none" stroke="black" d="M5908,-1962.27C5905.08,-1929.9 5899.08,-1922.6 5894,-1890.5 5848.02,-1599.85 5848.28,-1525.52 5814,-1233.26"/>
</g>
<!-- ahriman_web_views_status_ahriman -->
<g id="node91" class="node">
<title>ahriman_web_views_status_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="4090" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="4090" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4090" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4090" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4090" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="4090" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman</text>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_status_ahriman -->
<g id="edge266" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_status_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3582.72,-2344.82C3570.93,-2326.81 3555.51,-2297.04 3560,-2269.55"/>
<path fill="none" stroke="black" d="M3560,-2267.55C3573.18,-2186.76 3632.72,-2194.96 3698,-2145.57 3721.6,-2127.72 3735.52,-2132.68 3754,-2109.57 3786.38,-2069.1 3778.46,-2049.48 3794,-2000.03 3824,-1904.56 3827.16,-1879.24 3846,-1780.96 3855.3,-1732.43 3859.11,-1720.48 3865,-1671.42 3865.46,-1667.63 3899.94,-1125.94 3902,-1122.72 3920.01,-1094.58 3945.9,-1111.78 3968,-1086.72 4008.24,-1041.09 4052.38,-890.67 4068,-831.87"/>
<path fill="none" stroke="black" d="M4068,-829.87C4071.52,-809.35 4075.73,-786.83 4079.53,-767.19"/>
<polygon fill="#f91010" stroke="black" points="4082.99,-767.69 4081.47,-757.2 4076.12,-766.35 4082.99,-767.69"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_status_package -->
<g id="edge267" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4330,-1962.27C4338.65,-1615.79 4712.87,-1730.23 4920,-1452.34 5068.82,-1252.68 5094.36,-1184.14 5150,-941.41"/>
<path fill="none" stroke="black" d="M5150,-939.41C5152.07,-891.66 5155.97,-879.29 5150,-831.87"/>
</g>
<!-- ahriman_web_views_status_status -->
<g id="node94" class="node">
<title>ahriman_web_views_status_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#7a2828" stroke="black" cx="5228" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="5228" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5228" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5228" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5228" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="5228" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status</text>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_status_status -->
<g id="edge268" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_status_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3641.21,-2355.01C3690.2,-2348.38 3769.88,-2338.41 3839,-2333.54 3914.12,-2328.24 5133.58,-2342.49 5194,-2297.54 5270.4,-2240.69 5311.03,-1984.2 5328,-1890.5 5388.87,-1554.45 5270.89,-1452.67 5359,-1122.72 5361.35,-1113.91 5516.87,-838.85 5511,-831.87"/>
<path fill="none" stroke="black" d="M5511,-829.87C5439.92,-746.41 5370.07,-812.7 5275,-758.1 5271.15,-755.9 5267.36,-753.32 5263.71,-750.54"/>
<polygon fill="#f91010" stroke="black" points="5265.9,-747.81 5255.94,-744.2 5261.48,-753.24 5265.9,-747.81"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_user_login -->
<g id="edge269" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3642.69,-2356.05C3691.87,-2350.4 3770.8,-2341.34 3839,-2333.54 3979.44,-2317.48 4021.06,-2342.71 4155,-2297.54 4178.04,-2289.77 4179.76,-2279.38 4202,-2269.55"/>
<path fill="none" stroke="black" d="M4202,-2267.55C4211.61,-2263.3 4302.17,-2119.36 4306,-2109.57 4329.85,-2048.62 4343.17,-2028.38 4330,-1964.27"/>
<path fill="none" stroke="black" d="M4330,-1962.27C4324.38,-1925.74 4302.81,-1924.36 4288,-1890.5 4199.8,-1688.79 4144,-1636.71 4144,-1416.57 4144,-1416.57 4144,-1416.57 4144,-1305.03 4144,-1229.11 4238.48,-945.22 4372,-831.87"/>
<path fill="none" stroke="black" d="M4372,-829.87C4382.46,-820.11 4643.68,-758.6 4645,-758.1 4659.13,-752.81 4673.95,-745.78 4687.2,-738.91"/>
<polygon fill="#f91010" stroke="black" points="4688.88,-741.98 4696.08,-734.21 4685.6,-735.79 4688.88,-741.98"/>
</g>
<!-- ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_auth -->
<g id="edge270" class="edge">
<title>ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4713.95,-2344.52C4772.95,-2317.5 4872.42,-2259.14 4864,-2175.57"/>
<path fill="none" stroke="black" d="M4864,-2173.57C4862.14,-2154.66 4866.29,-2134.27 4871.79,-2116.89"/>
<polygon fill="#c82323" stroke="black" points="4875.24,-2117.63 4875.15,-2107.04 4868.61,-2115.37 4875.24,-2117.63"/>
</g>
<!-- ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge271" class="edge">
<title>ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_mapping</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4679.83,-2333.78C4689.58,-2297.69 4705.71,-2232.52 4712,-2175.57"/>
</g>
<!-- ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge272" class="edge">
<title>ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_oauth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4658.14,-2334.15C4634.23,-2286.12 4588.47,-2190.37 4596,-2175.57"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_application_ahriman -->
<g id="edge273" class="edge">
<title>ahriman_models_build_status&#45;&gt;ahriman_application_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5124.67,-2341.3C5131.21,-2338.17 5138.17,-2335.38 5145,-2333.54 5225.99,-2311.74 5830.72,-2346.24 5899,-2297.54 5959.7,-2254.25 6383.61,-1124.47 6396,-1050.95"/>
<path fill="none" stroke="black" d="M6396,-1048.95C6412.39,-848.15 6322.67,-795.59 6358,-597.24"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_application_handlers_status -->
<g id="edge274" class="edge">
<title>ahriman_models_build_status&#45;&gt;ahriman_application_handlers_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5046.65,-2350.26C5020.7,-2344.17 4987.2,-2337.17 4957,-2333.54 4718.58,-2304.88 4110.41,-2353.95 3877,-2297.54 3723.18,-2260.36 3705.48,-2194.54 3555,-2145.57 3473.69,-2119.12 3444.77,-2142.84 3366,-2109.57 3313.51,-2087.41 3310.71,-2063.87 3261,-2036.03 3154.45,-1976.36 3127.33,-1956.68 3009,-1926.5 2922.31,-1904.38 2678.29,-1945.85 2608,-1890.5 2554.07,-1848.03 2536.89,-1660.61 2509,-1597.88 2441,-1444.92 2440.38,-1390.53 2325,-1269.26 2219.59,-1158.47 1878.32,-972.94 1742,-903.64 1703.6,-884.12 1690.24,-887.48 1652,-867.64 1648.08,-865.61 1644.09,-863.38 1640.14,-861.04"/>
<polygon fill="#e50505" stroke="black" points="1641.95,-858.05 1631.59,-855.83 1638.31,-864.03 1641.95,-858.05"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_application_lock -->
<g id="edge275" class="edge">
<title>ahriman_models_build_status&#45;&gt;ahriman_application_lock</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5046.66,-2350.23C5020.71,-2344.12 4987.21,-2337.13 4957,-2333.54 4695.82,-2302.53 4029.16,-2361.31 3774,-2297.54 3682.6,-2274.7 3665.46,-2250.88 3584,-2203.56 3544.14,-2180.4 3540.44,-2163.57 3498,-2145.57 3426.89,-2115.43 3401.37,-2133.68 3328,-2109.57 3252.88,-2084.9 3238.53,-2067.53 3166,-2036.03 3049.48,-1985.43 3025.06,-1958 2902,-1926.5 2758.22,-1889.68 2697.45,-1966.55 2570,-1890.5 2536.34,-1870.41 2477.29,-1783.7 2470,-1745.19"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_core_status_client -->
<g id="edge276" class="edge">
<title>ahriman_models_build_status&#45;&gt;ahriman_core_status_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5046.65,-2350.31C5020.7,-2344.23 4987.2,-2337.23 4957,-2333.54 4745.1,-2307.62 4202.5,-2355.36 3997,-2297.54 3864.07,-2260.14 3857.19,-2188.68 3726,-2145.57 3576.8,-2096.54 3485.43,-2190.21 3380,-2073.8"/>
<path fill="none" stroke="black" d="M3380,-2071.8C3367.15,-2057.61 3368.33,-2050.68 3356,-2036.03 3307.4,-1978.33 3242.25,-1919.47 3202.25,-1885.06"/>
<polygon fill="#e50505" stroke="black" points="3204.47,-1882.35 3194.59,-1878.51 3199.92,-1887.67 3204.47,-1882.35"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_core_status_watcher -->
<g id="edge277" class="edge">
<title>ahriman_models_build_status&#45;&gt;ahriman_core_status_watcher</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5135.56,-2350.67C5157.87,-2345.33 5185.32,-2338.91 5210,-2333.54 5289.72,-2316.2 5327.18,-2349.6 5390,-2297.54 5484.21,-2219.47 5395.24,-2127.95 5476,-2036.03 5529.05,-1975.65 5635.09,-2044.35 5642,-1964.27"/>
<path fill="none" stroke="black" d="M5642,-1962.27C5645.3,-1920.09 5551.34,-1844.24 5519,-1816.96 5494.94,-1796.66 5475.79,-1806.93 5458,-1780.96 5421,-1726.96 5423.12,-1700.19 5434,-1635.65"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_core_status_web_client -->
<g id="edge278" class="edge">
<title>ahriman_models_build_status&#45;&gt;ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5076,-2334.73C5066.93,-2316.88 5056.32,-2292.56 5052,-2269.55"/>
</g>
<!-- ahriman_models_counters -->
<g id="node64" class="node">
<title>ahriman_models_counters</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b42d2d" stroke="black" cx="5119" cy="-2268.55" rx="38.78" ry="28.98"/>
<text text-anchor="middle" x="5119" y="-2277.05" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5119" y="-2266.05" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="5119" y="-2255.05" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">counters</text>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_models_counters -->
<g id="edge279" class="edge">
<title>ahriman_models_build_status&#45;&gt;ahriman_models_counters</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5099.4,-2333.93C5102,-2325.38 5104.92,-2315.82 5107.68,-2306.73"/>
<polygon fill="#e50505" stroke="black" points="5111.04,-2307.71 5110.61,-2297.13 5104.34,-2305.67 5111.04,-2307.71"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_web_views_status_ahriman -->
<g id="edge280" class="edge">
<title>ahriman_models_build_status&#45;&gt;ahriman_web_views_status_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5046.28,-2350.68C5020.36,-2344.77 4987,-2337.81 4957,-2333.54 4905.26,-2326.18 4523.51,-2335.88 4488,-2297.54 4370.04,-2170.18 4664.75,-2091.23 4610,-1926.5 4488.7,-1561.51 4224.14,-1594.46 4092,-1233.26 4061.3,-1149.34 4052.91,-919.95 4068,-831.87"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_web_views_status_package -->
<g id="edge281" class="edge">
<title>ahriman_models_build_status&#45;&gt;ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5134.11,-2348.9C5165.06,-2338.43 5206.66,-2321.4 5238,-2297.54 5280.74,-2265 5296.09,-2254.2 5314,-2203.56 5322.59,-2179.26 5315.74,-2171.29 5314,-2145.57 5309.43,-2078.21 5138.78,-1007.99 5150,-941.41"/>
</g>
<!-- ahriman_models_internal_status -->
<g id="node65" class="node">
<title>ahriman_models_internal_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="5025" cy="-2174.57" rx="56.64" ry="28.98"/>
<text text-anchor="middle" x="5025" y="-2183.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5025" y="-2172.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="5025" y="-2161.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">internal_status</text>
</g>
<!-- ahriman_models_counters&#45;&gt;ahriman_models_internal_status -->
<g id="edge282" class="edge">
<title>ahriman_models_counters&#45;&gt;ahriman_models_internal_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5095.76,-2244.81C5084.31,-2233.6 5070.3,-2219.9 5057.78,-2207.64"/>
<polygon fill="#b42d2d" stroke="black" points="5060.21,-2205.12 5050.61,-2200.63 5055.31,-2210.12 5060.21,-2205.12"/>
</g>
<!-- ahriman_models_counters&#45;&gt;ahriman_web_views_status_status -->
<g id="edge283" class="edge">
<title>ahriman_models_counters&#45;&gt;ahriman_web_views_status_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5124.07,-2239.54C5160.28,-2039.28 5378.41,-832.96 5378,-831.87"/>
</g>
<!-- ahriman_models_internal_status&#45;&gt;ahriman_core_status_client -->
<g id="edge284" class="edge">
<title>ahriman_models_internal_status&#45;&gt;ahriman_core_status_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4968.19,-2173.01C4702.08,-2170.16 3585.42,-2155.54 3437,-2109.57 3408.43,-2100.73 3400.08,-2095.97 3380,-2073.8"/>
</g>
<!-- ahriman_models_internal_status&#45;&gt;ahriman_core_status_web_client -->
<g id="edge285" class="edge">
<title>ahriman_models_internal_status&#45;&gt;ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5035.23,-2145.91C5048.97,-2106.27 5071.7,-2030.74 5072,-1964.27"/>
<path fill="none" stroke="black" d="M5072,-1962.27C5075.95,-1913.97 5070.43,-1900.32 5054,-1854.73"/>
<path fill="none" stroke="black" d="M5054,-1852.73C5046.38,-1831.6 5037.39,-1808.36 5029.68,-1788.91"/>
<polygon fill="#c82323" stroke="black" points="5032.84,-1787.4 5025.89,-1779.4 5026.34,-1789.98 5032.84,-1787.4"/>
</g>
<!-- ahriman_models_internal_status&#45;&gt;ahriman_web_views_status_status -->
<g id="edge286" class="edge">
<title>ahriman_models_internal_status&#45;&gt;ahriman_web_views_status_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5072,-1962.27C5079.89,-1865.7 5092,-1842.07 5092,-1745.19 5092,-1745.19 5092,-1745.19 5092,-1414.57 5092,-1344.36 5124.2,-1332.84 5154,-1269.26 5177.17,-1219.82 5386.17,-885.86 5378,-831.87"/>
<path fill="none" stroke="black" d="M5378,-829.87C5358.29,-777.68 5318.46,-793.1 5275,-758.1 5271.54,-755.32 5268.02,-752.35 5264.54,-749.31"/>
<polygon fill="#c82323" stroke="black" points="5266.82,-746.65 5257.03,-742.61 5262.16,-751.88 5266.82,-746.65"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_application_application -->
<g id="edge287" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2764.31,-2352.12C2701.8,-2335.59 2568.42,-2300.22 2456,-2269.55"/>
<path fill="none" stroke="black" d="M2456,-2267.55C2389.82,-2249.49 2214.25,-2236.36 2154,-2203.56 2037.72,-2140.24 1822.55,-1879.39 1734,-1780.96 1621.89,-1656.32 1623.95,-1596.65 1496,-1488.34 1396.11,-1403.78 1348.47,-1416.04 1240,-1342.8 1175.1,-1298.98 1166.27,-1278 1102,-1233.26"/>
<path fill="none" stroke="black" d="M1102,-1232.26C1063.08,-1206.89 1044.53,-1203.1 1026,-1160.49"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge288" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_application_handlers_remove_unknown</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2456,-2267.55C2440.24,-2263.04 2445.91,-2248.22 2432,-2239.56 2377.46,-2205.6 2344.54,-2240.53 2292,-2203.56 2235.02,-2163.45 2222.77,-2140.91 2204,-2073.8"/>
<path fill="none" stroke="black" d="M2204,-2071.8C2172.3,-2034.3 2157.29,-2031.98 2120,-2000.03 1893.07,-1805.61 1821.16,-1773.33 1610,-1561.88 1579.59,-1531.42 1575.86,-1520.27 1547,-1488.34 1381.6,-1305.37 1318.62,-1278.9 1164,-1086.72 1115.17,-1026.03 1117.05,-1000.25 1066,-941.41"/>
<path fill="none" stroke="black" d="M1066,-939.41C1041.79,-914.35 1012.65,-888.34 989.03,-868.18"/>
<polygon fill="#950303" stroke="black" points="991.14,-865.38 981.25,-861.58 986.61,-870.72 991.14,-865.38"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_application_handlers_status -->
<g id="edge289" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_application_handlers_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2204,-2071.8C2199.06,-2052.58 1856.98,-1470.04 1848,-1452.34 1759.71,-1278.31 1670.8,-1246.1 1670,-1050.95"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge290" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_build_tools_task</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2752.28,-2355.87C2698.91,-2349.69 2609.86,-2339.84 2533,-2333.54 2398.33,-2322.49 2054.96,-2337.9 1926,-2297.54 1794.53,-2256.39 1661.83,-2158.24 1598.04,-2106.7"/>
<polygon fill="#950303" stroke="black" points="2752.13,-2359.38 2762.47,-2357.05 2752.94,-2352.42 2752.13,-2359.38"/>
<polygon fill="#950303" stroke="black" points="1600.2,-2103.95 1590.24,-2100.35 1595.78,-2109.38 1600.2,-2103.95"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_report_email -->
<g id="edge291" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_report_email</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2716,-1962.27C2725.58,-1945.69 2724.35,-1937.53 2740,-1926.5 2793.21,-1888.98 2819.33,-1908.15 2882,-1890.5 2988.16,-1860.59 3011.16,-1840.08 3119,-1816.96 3316.3,-1774.64 3556.65,-1755 3657.65,-1748.16"/>
<polygon fill="#950303" stroke="black" points="3658.09,-1751.63 3667.84,-1747.48 3657.63,-1744.65 3658.09,-1751.63"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_report_html -->
<g id="edge292" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_report_html</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2827.2,-2342.09C2873.4,-2308.4 2963.79,-2239.35 2980,-2203.56 2990.63,-2180.08 2992.26,-2168.24 2980,-2145.57 2966.11,-2119.87 2938.89,-2135.27 2925,-2109.57 2909.46,-2080.82 2907.78,-2063.81 2925,-2036.03 2928.68,-2030.1 3715.36,-1642.59 3909.21,-1547.17"/>
<polygon fill="#950303" stroke="black" points="3910.83,-1550.27 3918.26,-1542.72 3907.74,-1543.99 3910.83,-1550.27"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge293" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_report_jinja_template</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2828.43,-2342.93C2834.41,-2339.49 2840.79,-2336.17 2847,-2333.54 2903.39,-2309.65 2922.63,-2318.97 2980,-2297.54 3125.24,-2243.28 3144.46,-2186.51 3294,-2145.57 3478.55,-2095.05 3547.07,-2184.8 3723,-2109.57 3834.4,-2061.94 3932.58,-1953.79 3980.3,-1894.84"/>
<polygon fill="#950303" stroke="black" points="3983.18,-1896.86 3986.7,-1886.86 3977.72,-1892.48 3983.18,-1896.86"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_report_report -->
<g id="edge294" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_report_report</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2662,-2267.55C2637.01,-2252.61 2670.44,-2232.14 2676,-2203.56 2684.09,-2161.96 2684.99,-2151.36 2692,-2109.57 2702.83,-2045.02 2681.64,-2019.98 2716,-1964.27"/>
<path fill="none" stroke="black" d="M2716,-1962.27C2727.68,-1947.1 2724.84,-1938.18 2740,-1926.5 2778.74,-1896.64 2805.26,-1920.35 2844,-1890.5 2859.16,-1878.81 2851.62,-1864.64 2868,-1854.73"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_repository_executor -->
<g id="edge295" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2662,-2267.55C2576.32,-2219.11 2536.68,-2250.18 2450,-2203.56 2370.91,-2161.02 2304.55,-2119.78 2337,-2036.03 2447.82,-1750.04 2636.35,-1784.25 2802,-1526.11"/>
<path fill="none" stroke="black" d="M2802,-1524.11C2837.92,-1465.02 2916.92,-1437.65 2970.07,-1425.52"/>
<polygon fill="#950303" stroke="black" points="2970.98,-1428.9 2980,-1423.35 2969.49,-1422.06 2970.98,-1428.9"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_repository_repository -->
<g id="edge296" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_repository_repository</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2765.31,-2350.39C2738.19,-2340.22 2701.02,-2322.88 2676,-2297.54 2666.23,-2287.64 2673.91,-2276.73 2662,-2269.55"/>
<path fill="none" stroke="black" d="M2662,-2267.55C2602.88,-2231.89 2412.39,-2246.07 2358,-2203.56 2264.88,-2130.77 2242,-2082.45 2242,-1964.27 2242,-1964.27 2242,-1964.27 2242,-1743.19 2242,-1626.93 2218.15,-1569.9 2301,-1488.34 2414.64,-1376.47 2922.94,-1325.23 3090.35,-1311.18"/>
<polygon fill="#950303" stroke="black" points="3090.73,-1314.66 3100.41,-1310.35 3090.15,-1307.69 3090.73,-1314.66"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_repository_update_handler -->
<g id="edge297" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_repository_update_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2662,-2267.55C2634.69,-2250.9 2640.39,-2017.56 2702,-1926.5 2720.72,-1898.82 2740.49,-1909.46 2768,-1890.5 2809.41,-1861.96 2813.45,-1846.7 2854,-1816.96 2903.22,-1780.85 3049.93,-1719.92 3087,-1671.42 3133.81,-1610.16 3143.58,-1517.85 3144.87,-1462.76"/>
<polygon fill="#950303" stroke="black" points="3148.37,-1462.64 3145.02,-1452.59 3141.37,-1462.53 3148.37,-1462.64"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_status_client -->
<g id="edge298" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_status_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2801.11,-2333.2C2802.71,-2281.44 2804.27,-2168.21 2792,-2073.8"/>
<path fill="none" stroke="black" d="M2792,-2071.8C2788.86,-2021.21 2726.66,-2006.95 2754,-1964.27"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_status_watcher -->
<g id="edge299" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_status_watcher</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2827.24,-2342.11C2833.46,-2338.6 2840.24,-2335.46 2847,-2333.54 2971.01,-2298.37 5062.41,-2372.89 5167,-2297.54 5202.92,-2271.66 5186.1,-2245.59 5200,-2203.56 5240.48,-2081.14 5244.52,-2048.58 5286,-1926.5 5316.52,-1836.68 5424.98,-1620.54 5434,-1526.11"/>
<path fill="none" stroke="black" d="M5434,-1524.11C5432.21,-1409.55 5418.96,-1275.26 5411.35,-1206.37"/>
<polygon fill="#950303" stroke="black" points="5414.81,-1205.84 5410.22,-1196.29 5407.85,-1206.62 5414.81,-1205.84"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_status_web_client -->
<g id="edge300" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2827.26,-2342.18C2833.48,-2338.67 2840.25,-2335.5 2847,-2333.54 3114.91,-2255.65 3840,-2393.44 4102,-2297.54 4129.89,-2287.33 4511.49,-1992.72 4520,-1964.27"/>
<path fill="none" stroke="black" d="M4520,-1962.27C4585.56,-1789.36 4844.19,-1754.06 4957.89,-1746.94"/>
<polygon fill="#950303" stroke="black" points="4958.32,-1750.42 4968.1,-1746.35 4957.92,-1743.43 4958.32,-1750.42"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_tree -->
<g id="edge301" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_tree</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2762.04,-2357.14C2626.01,-2340.9 2164.4,-2281.04 2040,-2203.56 1923.31,-2130.87 1960.33,-2037.52 1844,-1964.27"/>
<path fill="none" stroke="black" d="M1844,-1962.27C1780.27,-1921.88 1698.83,-1888.56 1649.63,-1870.18"/>
<polygon fill="#950303" stroke="black" points="1650.83,-1866.89 1640.24,-1866.71 1648.4,-1873.46 1650.83,-1866.89"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_upload_rsync -->
<g id="edge302" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_upload_rsync</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2815.42,-2335.74C2845.45,-2285.49 2912.02,-2174.14 2947.92,-2114.08"/>
<polygon fill="#950303" stroke="black" points="2951.08,-2115.63 2953.2,-2105.25 2945.07,-2112.04 2951.08,-2115.63"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_upload_s3 -->
<g id="edge303" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_upload_s3</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2828,-2342.62C2834.07,-2339.17 2840.59,-2335.92 2847,-2333.54 2934.15,-2301.23 2962.11,-2316.96 3053,-2297.54 3385.68,-2226.44 3475.3,-2225.86 3795,-2109.57 3900.27,-2071.28 3936.96,-2072.95 4022,-2000.03 4055.85,-1971.01 4083.55,-1927.98 4101.14,-1896.28"/>
<polygon fill="#950303" stroke="black" points="4104.35,-1897.7 4106.05,-1887.25 4098.2,-1894.36 4104.35,-1897.7"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_upload_upload -->
<g id="edge304" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_upload_upload</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2792,-2071.8C2789.17,-2050.04 2794.39,-2026.38 2801.06,-2006.8"/>
<polygon fill="#950303" stroke="black" points="2804.4,-2007.86 2804.53,-1997.26 2797.82,-2005.46 2804.4,-2007.86"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_models_counters -->
<g id="edge305" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_models_counters</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2827.24,-2342.11C2833.46,-2338.61 2840.24,-2335.46 2847,-2333.54 3084.21,-2266.18 4827.14,-2358.8 5066,-2297.54 5070.98,-2296.26 5076,-2294.44 5080.88,-2292.32"/>
<polygon fill="#950303" stroke="black" points="5082.49,-2295.43 5090.01,-2287.97 5079.47,-2289.12 5082.49,-2295.43"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_web_views_status_package -->
<g id="edge306" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2827.26,-2342.18C2833.48,-2338.67 2840.25,-2335.5 2847,-2333.54 2977.42,-2295.57 3952.59,-2367.54 4069,-2297.54 4094.41,-2282.26 4082.63,-2262.01 4102,-2239.56 4132.61,-2204.09 4242.95,-2149.17 4268,-2109.57 4339.29,-1996.91 4289.55,-1942.65 4334,-1816.96 4352.1,-1765.78 4352.33,-1748.33 4388,-1707.42 4570.62,-1497.93 4723.19,-1560.45 4896,-1342.8 4935.42,-1293.15 5157.93,-894.77 5150,-831.87"/>
<path fill="none" stroke="black" d="M5150,-829.87C5146.25,-809.74 5142.96,-787.48 5140.35,-767.92"/>
<polygon fill="#950303" stroke="black" points="5143.82,-767.43 5139.06,-757.97 5136.88,-768.34 5143.82,-767.43"/>
</g>
<!-- ahriman_models_package_description -->
<g id="node67" class="node">
<title>ahriman_models_package_description</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c04040" stroke="black" cx="2901" cy="-2456.51" rx="74.91" ry="28.98"/>
<text text-anchor="middle" x="2901" y="-2465.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2901" y="-2454.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2901" y="-2443.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">package_description</text>
</g>
<!-- ahriman_models_package_description&#45;&gt;ahriman_models_package -->
<g id="edge307" class="edge">
<title>ahriman_models_package_description&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2872.6,-2429.65C2859.82,-2418.01 2844.69,-2404.23 2831.56,-2392.27"/>
<polygon fill="#c04040" stroke="black" points="2833.84,-2389.61 2824.09,-2385.47 2829.13,-2394.79 2833.84,-2389.61"/>
</g>
<!-- ahriman_models_report_settings&#45;&gt;ahriman_core_report_report -->
<g id="edge308" class="edge">
<title>ahriman_models_report_settings&#45;&gt;ahriman_core_report_report</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2473.4,-2333.58C2495.09,-2257.04 2565.71,-2042.11 2702,-1926.5 2739.3,-1894.85 2761.5,-1910.81 2806,-1890.5 2834.94,-1877.28 2840.78,-1871.19 2868,-1854.73"/>
<path fill="none" stroke="black" d="M2868,-1852.73C2882.66,-1843.98 2869.09,-1828.13 2882,-1816.96 2935.14,-1770.94 2978.18,-1820.92 3036,-1780.96 3051.75,-1770.07 3044.99,-1757.07 3060,-1745.19"/>
<path fill="none" stroke="black" d="M3060,-1743.19C3110.27,-1703.36 3177.55,-1671.53 3221.32,-1653.12"/>
<polygon fill="#b03a3a" stroke="black" points="3222.94,-1656.24 3230.83,-1649.17 3220.26,-1649.77 3222.94,-1656.24"/>
</g>
<!-- ahriman_models_repository_paths -->
<g id="node69" class="node">
<title>ahriman_models_repository_paths</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="2107" cy="-2456.51" rx="62.87" ry="28.98"/>
<text text-anchor="middle" x="2107" y="-2465.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2107" y="-2454.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2107" y="-2443.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository_paths</text>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_application_handlers_handler -->
<g id="edge309" class="edge">
<title>ahriman_models_repository_paths&#45;&gt;ahriman_application_handlers_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2063.58,-2435.5C2007.4,-2407.15 1911.17,-2349.66 1864,-2269.55"/>
<path fill="none" stroke="black" d="M1864,-2267.55C1749.14,-2085.42 1770.17,-2015.15 1686,-1816.96 1574.41,-1554.18 1571.52,-1474.23 1420,-1232.26 1357.64,-1132.67 1264.5,-1030 1214.23,-977.36"/>
<polygon fill="#f91010" stroke="black" points="1216.58,-974.75 1207.13,-969.96 1211.53,-979.6 1216.58,-974.75"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge310" class="edge">
<title>ahriman_models_repository_paths&#45;&gt;ahriman_application_handlers_setup</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1864,-2267.55C1814.06,-2177.31 1834.07,-2138.23 1848,-2036.03 1850.24,-2019.58 1855.76,-2016.49 1858,-2000.03 1862.41,-1967.65 1858.51,-1959.18 1858,-1926.5 1854.22,-1682.99 1858.92,-1621.68 1841,-1378.8 1836.21,-1313.85 1824,-1298.38 1824,-1233.26 1824,-1233.26 1824,-1233.26 1824,-1048.95 1824,-978.85 1776.36,-909.44 1742.14,-868.63"/>
<polygon fill="#f91010" stroke="black" points="1744.65,-866.18 1735.49,-860.86 1739.33,-870.73 1744.65,-866.18"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_core_alpm_repo -->
<g id="edge311" class="edge">
<title>ahriman_models_repository_paths&#45;&gt;ahriman_core_alpm_repo</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2118,-2361.53C2101.99,-2231.28 2261.15,-2133.95 2340.58,-2093.88"/>
<polygon fill="#f91010" stroke="black" points="2342.45,-2096.86 2349.85,-2089.28 2339.34,-2090.59 2342.45,-2096.86"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge312" class="edge">
<title>ahriman_models_repository_paths&#45;&gt;ahriman_core_build_tools_task</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2058.57,-2437.78C2049.11,-2434.35 2039.25,-2430.8 2030,-2427.52 1933.67,-2393.34 1654.66,-2354.63 1598,-2269.55"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_core_repository_properties -->
<g id="edge313" class="edge">
<title>ahriman_models_repository_paths&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2113.59,-2427.36C2117.06,-2409.17 2120.17,-2384.97 2118,-2363.53"/>
<path fill="none" stroke="black" d="M2118,-2361.53C2114.62,-2328.16 2087.25,-2329.78 2078,-2297.54 2059.38,-2232.62 2058.23,-2210.16 2078,-2145.57 2095.2,-2089.4 2104.99,-2071.28 2152,-2036.03 2279.7,-1940.29 2338.56,-1962.75 2494,-1926.5 2599.47,-1901.9 2646.57,-1953.02 2735,-1890.5 2749.7,-1880.1 2743.82,-1869.57 2754,-1854.73"/>
<path fill="none" stroke="black" d="M2754,-1852.73C2765.17,-1837.18 2764.63,-1830.66 2778,-1816.96 2812.59,-1781.48 2927.32,-1704.85 2990.81,-1663.48"/>
<polygon fill="#f91010" stroke="black" points="2992.94,-1666.27 2999.41,-1657.89 2989.12,-1660.4 2992.94,-1666.27"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_models_package -->
<g id="edge314" class="edge">
<title>ahriman_models_repository_paths&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2166.99,-2447.55C2302.29,-2429.59 2629.01,-2386.23 2752.05,-2369.9"/>
<polygon fill="#f91010" stroke="black" points="2752.83,-2373.32 2762.28,-2368.54 2751.91,-2366.38 2752.83,-2373.32"/>
</g>
<!-- ahriman_models_sign_settings&#45;&gt;ahriman_application_ahriman -->
<g id="edge315" class="edge">
<title>ahriman_models_sign_settings&#45;&gt;ahriman_application_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3952.1,-2359.28C4069.51,-2354.25 4363.73,-2341.9 4610,-2333.54 4680.32,-2331.15 5819.66,-2339.68 5876,-2297.54 5879.65,-2294.81 6282,-1055.5 6282,-1050.95 6282,-1050.95 6282,-1050.95 6282,-939.41 6282,-839.48 6242.66,-806.43 6282,-714.56"/>
</g>
<!-- ahriman_models_sign_settings&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge316" class="edge">
<title>ahriman_models_sign_settings&#45;&gt;ahriman_core_report_jinja_template</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3940,-2267.55C3954.49,-2225.76 3950.08,-2209.87 3978,-2175.57"/>
<path fill="none" stroke="black" d="M3978,-2173.57C4030.54,-2109.01 4106.25,-2177.75 4154,-2109.57 4191.22,-2056.43 4176.65,-2017.8 4140,-1964.27"/>
</g>
<!-- ahriman_models_sign_settings&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge317" class="edge">
<title>ahriman_models_sign_settings&#45;&gt;ahriman_core_sign_gpg</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3918.22,-2335.06C3928.67,-2317.35 3939.79,-2293.06 3940,-2269.55"/>
<path fill="none" stroke="black" d="M3940,-2267.55C3940.5,-2212.3 3937.97,-2194.31 3964,-2145.57 3972.55,-2129.57 3985.85,-2114.84 3998.7,-2102.95"/>
<polygon fill="#c82323" stroke="black" points="4001.04,-2105.55 4006.17,-2096.29 3996.38,-2100.33 4001.04,-2105.55"/>
</g>
<!-- ahriman_models_smtp_ssl_settings -->
<g id="node71" class="node">
<title>ahriman_models_smtp_ssl_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c24747" stroke="black" cx="3514" cy="-2072.8" rx="67.76" ry="28.98"/>
<text text-anchor="middle" x="3514" y="-2081.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3514" y="-2070.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="3514" y="-2059.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">smtp_ssl_settings</text>
</g>
<!-- ahriman_models_smtp_ssl_settings&#45;&gt;ahriman_core_report_email -->
<g id="edge318" class="edge">
<title>ahriman_models_smtp_ssl_settings&#45;&gt;ahriman_core_report_email</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3541.6,-2046.01C3562.46,-2025.41 3590.69,-1994.99 3610,-1964.27"/>
<path fill="none" stroke="black" d="M3610,-1962.27C3643.78,-1908.52 3690.66,-1916.79 3704,-1854.73"/>
<path fill="none" stroke="black" d="M3704,-1852.73C3708.29,-1832.76 3709.28,-1810.23 3709.01,-1790.97"/>
<polygon fill="#c24747" stroke="black" points="3712.51,-1790.85 3708.75,-1780.94 3705.51,-1791.03 3712.51,-1790.85"/>
</g>
<!-- ahriman_models_upload_settings&#45;&gt;ahriman_core_upload_upload -->
<g id="edge319" class="edge">
<title>ahriman_models_upload_settings&#45;&gt;ahriman_core_upload_upload</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2877.28,-2340.11C2862.08,-2329.48 2846.31,-2315.11 2838,-2297.54 2795.1,-2206.85 2913.69,-2163.12 2868,-2073.8"/>
<path fill="none" stroke="black" d="M2868,-2071.8C2858.6,-2050.22 2847.95,-2026.29 2839.07,-2006.5"/>
<polygon fill="#b03a3a" stroke="black" points="2842.15,-2004.83 2834.86,-1997.14 2835.77,-2007.7 2842.15,-2004.83"/>
</g>
<!-- ahriman_models_user -->
<g id="node73" class="node">
<title>ahriman_models_user</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#af1313" stroke="black" cx="4910" cy="-2362.53" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="4910" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4910" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="4910" y="-2349.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user</text>
</g>
<!-- ahriman_models_user&#45;&gt;ahriman_application_handlers_user -->
<g id="edge320" class="edge">
<title>ahriman_models_user&#45;&gt;ahriman_application_handlers_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4873.09,-2354.28C4837.6,-2347.64 4782.35,-2338.16 4734,-2333.54 4491.42,-2310.36 3871.76,-2366.38 3638,-2297.54 3330.32,-2206.92 3323.72,-2026.62 3019,-1926.5 2938.84,-1900.15 2711.17,-1937.35 2641,-1890.5 2626.03,-1880.5 2634.43,-1867.74 2622,-1854.73"/>
</g>
<!-- ahriman_models_user&#45;&gt;ahriman_core_auth_auth -->
<g id="edge321" class="edge">
<title>ahriman_models_user&#45;&gt;ahriman_core_auth_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4938,-2267.55C4925.26,-2216.65 4869.26,-2227.77 4864,-2175.57"/>
</g>
<!-- ahriman_models_user&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge322" class="edge">
<title>ahriman_models_user&#45;&gt;ahriman_core_auth_mapping</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4925.53,-2335.95C4934.77,-2317.6 4943.68,-2292.22 4938,-2269.55"/>
<path fill="none" stroke="black" d="M4938,-2267.55C4922.36,-2205.06 4847.68,-2236.22 4826,-2175.57"/>
</g>
<!-- ahriman_models_user&#45;&gt;ahriman_core_status_web_client -->
<g id="edge323" class="edge">
<title>ahriman_models_user&#45;&gt;ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4946.89,-2354.82C4992.05,-2344.36 5061.46,-2319.92 5052,-2269.55"/>
<path fill="none" stroke="black" d="M5052,-2267.55C5042.74,-2218.24 4985.01,-2246.46 4959,-2203.56 4937.2,-2167.59 4961.41,-2150.74 4970,-2109.57 4993.59,-1996.47 5004.84,-1860.65 5009.39,-1791.13"/>
<polygon fill="#af1313" stroke="black" points="5012.9,-1791.16 5010.04,-1780.96 5005.91,-1790.72 5012.9,-1791.16"/>
</g>
<!-- ahriman_models_user_access -->
<g id="node74" class="node">
<title>ahriman_models_user_access</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="4885" cy="-2456.51" rx="50.82" ry="28.98"/>
<text text-anchor="middle" x="4885" y="-2465.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4885" y="-2454.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="4885" y="-2443.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user_access</text>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_application_ahriman -->
<g id="edge324" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_application_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4930.36,-2443.26C4951.42,-2437.88 4976.87,-2431.83 5000,-2427.52 5006.88,-2426.24 5994.52,-2301.9 6000,-2297.54 6113.75,-2207.09 6386.16,-1195.95 6396,-1050.95"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_application_handlers_user -->
<g id="edge325" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_application_handlers_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4834.01,-2454.69C4655.24,-2451.46 4040.32,-2437.48 3535,-2391.52 3496.09,-2387.98 2873.62,-2313.6 2838,-2297.54 2745.86,-2256 2554.06,-2081.32 2494,-2000.03 2367.55,-1828.89 2344.83,-1770.11 2301,-1561.88 2270.02,-1414.68 2382,-1383.68 2382,-1233.26 2382,-1233.26 2382,-1233.26 2382,-1158.49 2382,-1062.01 2411.13,-1033.39 2382,-941.41"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_core_auth_auth -->
<g id="edge326" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_core_auth_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4919.29,-2434.63C4933.79,-2423.76 4949.12,-2409.07 4957,-2391.52 4965.88,-2371.76 4958.37,-2249.82 4952,-2239.56 4926.49,-2198.48 4868.74,-2223.69 4864,-2175.57"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge327" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_core_auth_mapping</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4849.07,-2435.95C4823.32,-2419.05 4794.97,-2392.78 4806,-2363.53"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_models_user -->
<g id="edge328" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_models_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4892.64,-2427.42C4894.91,-2419.05 4897.44,-2409.74 4899.85,-2400.88"/>
<polygon fill="#f91010" stroke="black" points="4903.25,-2401.71 4902.5,-2391.14 4896.5,-2399.87 4903.25,-2401.71"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge329" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4931.16,-2444.26C4952.16,-2439.14 4977.33,-2433.02 5000,-2427.52 5066.21,-2411.47 5083.01,-2408.47 5149,-2391.52 5244.03,-2367.11 5265.19,-2349.46 5362,-2333.54 5427.68,-2322.74 5904.33,-2334.04 5960,-2297.54 6010.86,-2264.2 6022,-2236.38 6022,-2175.57 6022,-2175.57 6022,-2175.57 6022,-2071.8 6022,-1844.72 5998.98,-1788.78 5990,-1561.88 5983.58,-1399.49 5985.33,-1358.77 5984,-1196.26 5983.73,-1163.58 5983.28,-1155.4 5984,-1122.72 5985.78,-1042.08 6029.7,-1012.72 5992,-941.41"/>
<path fill="none" stroke="black" d="M5992,-939.41C5962.67,-888.77 5908.74,-889.95 5916,-831.87"/>
</g>
<!-- ahriman_models_user_identity -->
<g id="node75" class="node">
<title>ahriman_models_user_identity</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#ce3b3b" stroke="black" cx="5533" cy="-1049.95" rx="50.82" ry="28.98"/>
<text text-anchor="middle" x="5533" y="-1058.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5533" y="-1047.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="5533" y="-1036.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user_identity</text>
</g>
<!-- ahriman_models_user_identity&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge330" class="edge">
<title>ahriman_models_user_identity&#45;&gt;ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5553.32,-1023.06C5593.56,-973.18 5688.16,-862.66 5788,-794.1 5820.48,-771.81 5834.44,-777.02 5869,-758.1 5875.94,-754.3 5883.11,-750.01 5890.04,-745.63"/>
<polygon fill="#ce3b3b" stroke="black" points="5892.15,-748.43 5898.66,-740.07 5888.36,-742.55 5892.15,-748.43"/>
</g>
<!-- ahriman_models_user_identity&#45;&gt;ahriman_web_views_user_login -->
<g id="edge331" class="edge">
<title>ahriman_models_user_identity&#45;&gt;ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5502.67,-1026.5C5461.54,-996.57 5385.26,-942.82 5316,-903.64 5216.4,-847.31 5193.02,-825.56 5083,-794.1 4951.76,-756.58 4902.23,-814.65 4778,-758.1 4773.8,-756.19 4769.71,-753.77 4765.8,-751.06"/>
<polygon fill="#ce3b3b" stroke="black" points="4767.64,-748.05 4757.58,-744.73 4763.37,-753.6 4767.64,-748.05"/>
</g>
<!-- ahriman_version -->
<g id="node76" class="node">
<title>ahriman_version</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#e72222" stroke="black" cx="5576" cy="-1744.19" rx="38.37" ry="21.43"/>
<text text-anchor="middle" x="5576" y="-1747.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5576" y="-1736.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">version</text>
</g>
<!-- ahriman_version&#45;&gt;ahriman_application_ahriman -->
<g id="edge332" class="edge">
<title>ahriman_version&#45;&gt;ahriman_application_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5604.98,-1730.3C5682.71,-1693.54 5890,-1580.18 5890,-1416.57 5890,-1416.57 5890,-1416.57 5890,-1305.03 5890,-1195.56 6044.22,-1283.01 6111,-1196.26 6222.22,-1051.79 6153.63,-972.35 6192,-794.1 6229.68,-619.1 6282,-580.51 6282,-401.5 6282,-401.5 6282,-401.5 6282,-334.5 6282,-275.53 6344.03,-283.03 6358,-225.74"/>
<path fill="none" stroke="black" d="M6358,-223.74C6383.8,-100.2 2111.55,-38.17 1566.06,-30.75"/>
<polygon fill="#e72222" stroke="black" points="1565.74,-27.24 1555.7,-30.61 1565.65,-34.24 1565.74,-27.24"/>
</g>
<!-- ahriman_version&#45;&gt;ahriman_application_lock -->
<g id="edge333" class="edge">
<title>ahriman_version&#45;&gt;ahriman_application_lock</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5538.53,-1739.86C5454.1,-1732.53 5242.48,-1715.01 5065,-1707.42 4808.54,-1696.45 3007.42,-1718.09 2755,-1671.42 2621.92,-1646.81 2474.55,-1582.52 2402.17,-1548.29"/>
<polygon fill="#e72222" stroke="black" points="2403.41,-1545.01 2392.88,-1543.87 2400.4,-1551.33 2403.41,-1545.01"/>
</g>
<!-- ahriman_version&#45;&gt;ahriman_web_views_index -->
<g id="edge334" class="edge">
<title>ahriman_version&#45;&gt;ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5688,-1048.95C5697.63,-1002.14 5715.66,-980.39 5688,-941.41"/>
<path fill="none" stroke="black" d="M5688,-939.41C5647.88,-882.87 5616.2,-887.63 5575,-831.87"/>
</g>
<!-- ahriman_version&#45;&gt;ahriman_web_views_status_status -->
<g id="edge335" class="edge">
<title>ahriman_version&#45;&gt;ahriman_web_views_status_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5571.62,-1722.95C5563.75,-1684.69 5548,-1599.07 5548,-1526.11 5548,-1526.11 5548,-1526.11 5548,-1232.26 5548,-1182.42 5539.57,-1160.56 5572,-1122.72 5600.84,-1089.07 5630.66,-1114.74 5665,-1086.72 5679.64,-1074.77 5684.19,-1069.47 5688,-1050.95"/>
<path fill="none" stroke="black" d="M5688,-1048.95C5699.32,-987.75 5545.57,-883.63 5511,-831.87"/>
</g>
<!-- ahriman_web -->
<g id="node77" class="node">
<title>ahriman_web</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="4078" cy="-400.5" rx="41.59" ry="18"/>
<text text-anchor="middle" x="4078" y="-398" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.web</text>
</g>
<!-- ahriman_web&#45;&gt;ahriman_application_handlers_web -->
<g id="edge336" class="edge">
<title>ahriman_web&#45;&gt;ahriman_application_handlers_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4102.23,-385.71C4130.26,-369.46 4172.96,-343.64 4176,-335.5"/>
</g>
<!-- ahriman_web_middlewares -->
<g id="node78" class="node">
<title>ahriman_web_middlewares</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="4098" cy="-494.48" rx="50.41" ry="28.98"/>
<text text-anchor="middle" x="4098" y="-502.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4098" y="-491.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4098" y="-480.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">middlewares</text>
</g>
<!-- ahriman_web_middlewares&#45;&gt;ahriman_web_web -->
<g id="edge337" class="edge">
<title>ahriman_web_middlewares&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4119.73,-467.86C4128.8,-457.16 4139.43,-444.63 4148.99,-433.35"/>
<polygon fill="#c82323" stroke="black" points="4151.93,-435.29 4155.73,-425.4 4146.59,-430.77 4151.93,-435.29"/>
</g>
<!-- ahriman_web_middlewares_auth_handler&#45;&gt;ahriman_web_web -->
<g id="edge338" class="edge">
<title>ahriman_web_middlewares_auth_handler&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5935,-676.72C5935,-653.95 5935,-623.87 5935,-597.24"/>
</g>
<!-- ahriman_web_middlewares_exception_handler -->
<g id="node80" class="node">
<title>ahriman_web_middlewares_exception_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="4081" cy="-596.24" rx="67.35" ry="36.54"/>
<text text-anchor="middle" x="4081" y="-610.24" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4081" y="-599.24" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4081" y="-588.24" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">middlewares.</text>
<text text-anchor="middle" x="4081" y="-577.24" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">exception_handler</text>
</g>
<!-- ahriman_web_middlewares_exception_handler&#45;&gt;ahriman_web_web -->
<g id="edge339" class="edge">
<title>ahriman_web_middlewares_exception_handler&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4123.53,-567.77C4145.62,-550.3 4169.37,-525.36 4176,-495.48"/>
<path fill="none" stroke="black" d="M4176,-493.48C4179.83,-476.21 4180.35,-456.67 4179.7,-440.06"/>
<polygon fill="#913030" stroke="black" points="4183.17,-439.41 4179.13,-429.61 4176.18,-439.79 4183.17,-439.41"/>
</g>
<!-- ahriman_web_routes -->
<g id="node81" class="node">
<title>ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="4537" cy="-494.48" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="4537" y="-502.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4537" y="-491.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4537" y="-480.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">routes</text>
</g>
<!-- ahriman_web_routes&#45;&gt;ahriman_web_web -->
<g id="edge340" class="edge">
<title>ahriman_web_routes&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4499.42,-489.26C4440.27,-481.84 4322.47,-463.86 4228,-429.49 4223.48,-427.84 4218.87,-425.86 4214.36,-423.72"/>
<polygon fill="#732626" stroke="black" points="4215.79,-420.52 4205.28,-419.16 4212.65,-426.78 4215.79,-420.52"/>
</g>
<!-- ahriman_web_views -->
<g id="node82" class="node">
<title>ahriman_web_views</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="4570" cy="-596.24" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="4570" y="-604.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4570" y="-593.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4570" y="-582.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views</text>
</g>
<!-- ahriman_web_views&#45;&gt;ahriman_web_routes -->
<g id="edge341" class="edge">
<title>ahriman_web_views&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4560.98,-567.98C4557.34,-556.98 4553.09,-544.12 4549.19,-532.31"/>
<polygon fill="#f91010" stroke="black" points="4552.47,-531.1 4546.01,-522.71 4545.82,-533.3 4552.47,-531.1"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_index -->
<g id="edge342" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5065.02,-806.83C5072.21,-802.01 5080.12,-797.4 5088,-794.1 5166.08,-761.43 5199.49,-796.34 5275,-758.1 5279.96,-755.59 5284.78,-752.4 5289.32,-748.89"/>
<polygon fill="#9f0404" stroke="black" points="5291.75,-751.42 5297.16,-742.3 5287.25,-746.05 5291.75,-751.42"/>
</g>
<!-- ahriman_web_views_service_add -->
<g id="node86" class="node">
<title>ahriman_web_views_service_add</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#993333" stroke="black" cx="4316" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="4316" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4316" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4316" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4316" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="4316" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">add</text>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_add -->
<g id="edge343" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_service_add</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5007.54,-806.25C5000.28,-801.39 4992.19,-796.91 4984,-794.1 4853.24,-749.28 4490.18,-812.27 4363,-758.1 4358.86,-756.34 4354.85,-754.05 4351.04,-751.43"/>
<polygon fill="#9f0404" stroke="black" points="4353.1,-748.6 4343.03,-745.29 4348.83,-754.15 4353.1,-748.6"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge344" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_service_reload_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5006.23,-807.65C4999.14,-802.85 4991.46,-798.05 4984,-794.1 4944.81,-773.4 4929.66,-779.78 4891,-758.1 4886.5,-755.58 4881.96,-752.73 4877.52,-749.73"/>
<polygon fill="#9f0404" stroke="black" points="4879.31,-746.72 4869.12,-743.82 4875.28,-752.44 4879.31,-746.72"/>
</g>
<!-- ahriman_web_views_service_remove -->
<g id="node88" class="node">
<title>ahriman_web_views_service_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#993333" stroke="black" cx="4938" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="4938" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4938" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4938" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4938" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="4938" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">remove</text>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_remove -->
<g id="edge345" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_service_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5012.28,-801.96C5000.02,-787.54 4984.87,-769.71 4971.45,-753.92"/>
<polygon fill="#9f0404" stroke="black" points="4973.76,-751.23 4964.61,-745.87 4968.42,-755.76 4973.76,-751.23"/>
</g>
<!-- ahriman_web_views_service_search -->
<g id="node89" class="node">
<title>ahriman_web_views_service_search</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="5416" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="5416" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5416" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5416" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5416" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="5416" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">search</text>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_search -->
<g id="edge346" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_service_search</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5074.15,-828.17C5138.43,-823.92 5270.89,-809.15 5369,-758.1 5372.94,-756.06 5376.79,-753.59 5380.48,-750.88"/>
<polygon fill="#9f0404" stroke="black" points="5382.67,-753.62 5388.3,-744.65 5378.3,-748.15 5382.67,-753.62"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_status_ahriman -->
<g id="edge347" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_status_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5007.57,-806.17C5000.3,-801.32 4992.21,-796.86 4984,-794.1 4813.38,-736.9 4348.96,-804.19 4175,-758.1 4160.41,-754.24 4145.46,-747.62 4132.24,-740.69"/>
<polygon fill="#9f0404" stroke="black" points="4133.84,-737.58 4123.39,-735.88 4130.5,-743.73 4133.84,-737.58"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_status_package -->
<g id="edge348" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5059.72,-801.96C5071.98,-787.54 5087.13,-769.71 5100.55,-753.92"/>
<polygon fill="#9f0404" stroke="black" points="5103.58,-755.76 5107.39,-745.87 5098.24,-751.23 5103.58,-755.76"/>
</g>
<!-- ahriman_web_views_status_packages -->
<g id="node93" class="node">
<title>ahriman_web_views_status_packages</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#993333" stroke="black" cx="5036" cy="-713.56" rx="41.94" ry="44.6"/>
<text text-anchor="middle" x="5036" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5036" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5036" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5036" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="5036" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">packages</text>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_status_packages -->
<g id="edge349" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_status_packages</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5036,-794.02C5036,-785.94 5036,-777.19 5036,-768.55"/>
<polygon fill="#9f0404" stroke="black" points="5039.5,-768.51 5036,-758.51 5032.5,-768.51 5039.5,-768.51"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_status_status -->
<g id="edge350" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_status_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5065.77,-807.65C5072.86,-802.85 5080.54,-798.05 5088,-794.1 5127.19,-773.4 5143.41,-781.58 5181,-758.1 5184.76,-755.75 5188.5,-753.08 5192.11,-750.24"/>
<polygon fill="#9f0404" stroke="black" points="5194.38,-752.9 5199.82,-743.81 5189.9,-747.52 5194.38,-752.9"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_user_login -->
<g id="edge351" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5007.02,-806.73C4999.83,-801.92 4991.91,-797.34 4984,-794.1 4897.96,-758.96 4861.49,-798.94 4778,-758.1 4773.74,-756.02 4769.58,-753.44 4765.6,-750.59"/>
<polygon fill="#9f0404" stroke="black" points="4767.76,-747.83 4757.73,-744.41 4763.44,-753.34 4767.76,-747.83"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge352" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_user_logout</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5007.56,-806.2C5000.29,-801.35 4992.2,-796.88 4984,-794.1 4833.31,-743.09 4415.61,-819.88 4269,-758.1 4264.85,-756.36 4260.84,-754.07 4257.03,-751.47"/>
<polygon fill="#9f0404" stroke="black" points="4259.08,-748.63 4249.02,-745.33 4254.82,-754.19 4259.08,-748.63"/>
</g>
<!-- ahriman_web_views_index&#45;&gt;ahriman_web_routes -->
<g id="edge353" class="edge">
<title>ahriman_web_views_index&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5296.63,-685.75C5289.99,-679.7 5282.57,-673.69 5275,-669.01 5198.24,-621.5 5141.14,-667.92 5085,-597.24"/>
</g>
<!-- ahriman_web_views_service -->
<g id="node85" class="node">
<title>ahriman_web_views_service</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c24747" stroke="black" cx="4410" cy="-713.56" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4410" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4410" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4410" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4410" y="-694.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service</text>
</g>
<!-- ahriman_web_views_service&#45;&gt;ahriman_web_routes -->
<g id="edge354" class="edge">
<title>ahriman_web_views_service&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4435.97,-686.03C4456.61,-663.8 4485.07,-630.45 4504,-597.24"/>
</g>
<!-- ahriman_web_views_service_add&#45;&gt;ahriman_web_routes -->
<g id="edge355" class="edge">
<title>ahriman_web_views_service_add&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4344.52,-683.82C4350.39,-678.59 4356.7,-673.4 4363,-669.01 4420.67,-628.78 4469.18,-658.33 4504,-597.24"/>
</g>
<!-- ahriman_web_views_service_reload_auth&#45;&gt;ahriman_web_routes -->
<g id="edge356" class="edge">
<title>ahriman_web_views_service_reload_auth&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4869.07,-683.2C4876.08,-678.08 4883.58,-673.09 4891,-669.01 4971.53,-624.66 5142.18,-669.23 5085,-597.24"/>
</g>
<!-- ahriman_web_views_service_remove&#45;&gt;ahriman_web_routes -->
<g id="edge357" class="edge">
<title>ahriman_web_views_service_remove&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4967.08,-684.57C4972.9,-679.27 4979.06,-673.86 4985,-669.01 5027.37,-634.4 5119.02,-640.08 5085,-597.24"/>
</g>
<!-- ahriman_web_views_service_search&#45;&gt;ahriman_web_routes -->
<g id="edge358" class="edge">
<title>ahriman_web_views_service_search&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5388.2,-682.66C5382.27,-677.52 5375.75,-672.67 5369,-669.01 5254.59,-606.89 5165.97,-699.19 5085,-597.24"/>
</g>
<!-- ahriman_web_views_status -->
<g id="node90" class="node">
<title>ahriman_web_views_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c24747" stroke="black" cx="4504" cy="-713.56" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4504" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4504" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4504" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4504" y="-694.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status</text>
</g>
<!-- ahriman_web_views_status&#45;&gt;ahriman_web_routes -->
<g id="edge359" class="edge">
<title>ahriman_web_views_status&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4495.41,-677.72C4491.41,-653.57 4490.17,-621.5 4504,-597.24"/>
</g>
<!-- ahriman_web_views_status_ahriman&#45;&gt;ahriman_web_routes -->
<g id="edge360" class="edge">
<title>ahriman_web_views_status_ahriman&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4123.83,-692.67C4139.06,-684.39 4157.52,-675.27 4175,-669.01 4315.89,-618.52 4429.89,-727.26 4504,-597.24"/>
<path fill="none" stroke="black" d="M4504,-595.24C4515,-575.94 4523,-552.43 4528.37,-533.08"/>
<polygon fill="#8a2e2e" stroke="black" points="4531.76,-533.95 4530.94,-523.38 4524.99,-532.15 4531.76,-533.95"/>
</g>
<!-- ahriman_web_views_status_package&#45;&gt;ahriman_web_routes -->
<g id="edge361" class="edge">
<title>ahriman_web_views_status_package&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5122.4,-670.98C5114.47,-647.65 5102.25,-618.96 5085,-597.24"/>
</g>
<!-- ahriman_web_views_status_packages&#45;&gt;ahriman_web_routes -->
<g id="edge362" class="edge">
<title>ahriman_web_views_status_packages&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5065.5,-681.76C5085.52,-657.05 5105.02,-622.45 5085,-597.24"/>
</g>
<!-- ahriman_web_views_status_status&#45;&gt;ahriman_web_routes -->
<g id="edge363" class="edge">
<title>ahriman_web_views_status_status&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5198.84,-684.66C5193.03,-679.35 5186.9,-673.92 5181,-669.01 5140.07,-634.91 5118.13,-638.95 5085,-597.24"/>
</g>
<!-- ahriman_web_views_user -->
<g id="node95" class="node">
<title>ahriman_web_views_user</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c24747" stroke="black" cx="4598" cy="-713.56" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4598" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4598" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4598" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4598" y="-694.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user</text>
</g>
<!-- ahriman_web_views_user&#45;&gt;ahriman_web_routes -->
<g id="edge364" class="edge">
<title>ahriman_web_views_user&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4570.76,-687.24C4555.62,-672.33 4537.05,-652.6 4523,-633.01 4512.51,-618.38 4495.09,-612.88 4504,-597.24"/>
</g>
<!-- ahriman_web_views_user_login&#45;&gt;ahriman_web_routes -->
<g id="edge365" class="edge">
<title>ahriman_web_views_user_login&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4757.89,-683.02C4764.08,-677.72 4770.93,-672.72 4778,-669.01 4902.08,-603.9 5172.15,-706.96 5085,-597.24"/>
<path fill="none" stroke="black" d="M5085,-595.24C5023.2,-517.43 4707.47,-500.26 4585.33,-496.51"/>
<polygon fill="#732626" stroke="black" points="4585.25,-493.01 4575.15,-496.22 4585.05,-500 4585.25,-493.01"/>
</g>
<!-- ahriman_web_views_user_logout&#45;&gt;ahriman_web_routes -->
<g id="edge366" class="edge">
<title>ahriman_web_views_user_logout&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4249.95,-682.92C4255.86,-677.76 4262.35,-672.84 4269,-669.01 4363.67,-614.57 4449.92,-692.12 4504,-597.24"/>
</g>
<!-- ahriman_web_web&#45;&gt;ahriman_application_handlers_web -->
<g id="edge367" class="edge">
<title>ahriman_web_web&#45;&gt;ahriman_application_handlers_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4171.81,-371.65C4171.14,-360.14 4171.77,-346.85 4176,-335.5"/>
</g>
<!-- aioauthclient -->
<g id="node99" class="node">
<title>aioauthclient</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#b67e53" stroke="black" points="4567.5,-2286.55 4564.5,-2290.55 4543.5,-2290.55 4540.5,-2286.55 4496.5,-2286.55 4496.5,-2250.55 4567.5,-2250.55 4567.5,-2286.55"/>
<text text-anchor="middle" x="4532" y="-2266.05" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aioauthclient</text>
</g>
<!-- aioauthclient&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge368" class="edge">
<title>aioauthclient&#45;&gt;ahriman_core_auth_oauth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4546.03,-2250.48C4560.15,-2232.67 4581.8,-2203.49 4596,-2175.57"/>
</g>
<!-- aiohttp -->
<g id="node100" class="node">
<title>aiohttp</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#f9d606" stroke="black" points="4777,-1324.03 4774,-1328.03 4753,-1328.03 4750,-1324.03 4723,-1324.03 4723,-1288.03 4777,-1288.03 4777,-1324.03"/>
<text text-anchor="middle" x="4750" y="-1303.53" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aiohttp</text>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_middlewares -->
<g id="edge369" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_middlewares</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4182,-1232.26C4147.69,-1221.05 4159.62,-1193.03 4144,-1160.49"/>
<path fill="none" stroke="black" d="M4144,-1158.49C4039.44,-940.71 4029.82,-873.31 4005,-633.01 4001.64,-600.5 3989.79,-588.4 4005,-559.47 4014.55,-541.3 4031.86,-527.29 4048.97,-517.07"/>
<polygon fill="#f9d606" stroke="black" points="4050.86,-520.02 4057.86,-512.07 4047.43,-513.92 4050.86,-520.02"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge370" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4777.22,-1295.19C4862.09,-1264.89 5129.99,-1172 5359,-1122.72 5476.92,-1097.35 5526.61,-1152.06 5628,-1086.72 5660.41,-1065.84 5644.89,-1038.46 5674,-1013.18 5703.75,-987.35 5721.97,-998.65 5755,-977.18 5835.83,-924.66 5902.76,-927.35 5916,-831.87"/>
<path fill="none" stroke="black" d="M5916,-829.87C5918.63,-806.83 5922.7,-781.38 5926.4,-760.26"/>
<polygon fill="#f9d606" stroke="black" points="5929.87,-760.73 5928.18,-750.27 5922.98,-759.5 5929.87,-760.73"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_middlewares_exception_handler -->
<g id="edge371" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_middlewares_exception_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4144,-1158.49C4118.14,-1098.36 4134.82,-1076.94 4120,-1013.18 4093.18,-897.84 4060.3,-875.26 4043,-758.1 4037.22,-718.93 4033.45,-707.44 4043,-669.01 4045.42,-659.26 4049.44,-649.38 4053.98,-640.19"/>
<polygon fill="#f9d606" stroke="black" points="4057.11,-641.75 4058.65,-631.27 4050.91,-638.51 4057.11,-641.75"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_routes -->
<g id="edge372" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4722.81,-1299.54C4666.43,-1286.41 4542,-1247.56 4542,-1160.49 4542,-1160.49 4542,-1160.49 4542,-1048.95 4542,-983.5 4544.76,-965.56 4566,-903.64 4589.88,-834.03 4626.89,-829.44 4645,-758.1 4654.75,-719.72 4668.71,-700.72 4645,-669.01 4611.15,-623.73 4566.79,-668.76 4523,-633.01 4509.06,-621.62 4495.09,-612.88 4504,-597.24"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_base -->
<g id="edge373" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4998,-939.41C5007.23,-919.05 5015.71,-895.72 5022.31,-876.02"/>
<polygon fill="#f9d606" stroke="black" points="5025.68,-876.96 5025.48,-866.37 5019.03,-874.77 5025.68,-876.96"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_add -->
<g id="edge374" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_service_add</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4334,-1048.95C4310.33,-952.19 4310.28,-835.17 4312.84,-768.34"/>
<polygon fill="#f9d606" stroke="black" points="4316.35,-768.2 4313.27,-758.06 4309.35,-767.9 4316.35,-768.2"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge375" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_service_reload_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4749.16,-1287.85C4746.45,-1222.24 4740.88,-981.71 4794,-794.1 4797.06,-783.29 4801.61,-772.19 4806.56,-761.86"/>
<polygon fill="#f9d606" stroke="black" points="4809.85,-763.12 4811.18,-752.61 4803.58,-759.99 4809.85,-763.12"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_remove -->
<g id="edge376" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_service_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4777.08,-1291.96C4804.61,-1278.34 4848.19,-1255.88 4884,-1233.26"/>
<path fill="none" stroke="black" d="M4884,-1232.26C4910.97,-1215.23 4889.3,-1191.95 4884,-1160.49"/>
<path fill="none" stroke="black" d="M4884,-1158.49C4878.6,-1126.44 4873.13,-1119.07 4870,-1086.72 4858.73,-970.11 4896.17,-835.34 4919.92,-764.31"/>
<polygon fill="#f9d606" stroke="black" points="4923.28,-765.31 4923.17,-754.72 4916.65,-763.07 4923.28,-765.31"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_search -->
<g id="edge377" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_service_search</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4884,-1232.26C4916.43,-1209.89 4931.15,-1216.42 4965,-1196.26 5170.76,-1073.74 5269.87,-1073.63 5392,-867.64 5409.63,-837.91 5415.61,-799.47 5417.19,-768.54"/>
<polygon fill="#f9d606" stroke="black" points="5420.69,-768.49 5417.57,-758.36 5413.7,-768.23 5420.69,-768.49"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_status_ahriman -->
<g id="edge378" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_status_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4722.84,-1297.67C4695.07,-1290.22 4650.63,-1278.5 4612,-1269.26 4539.42,-1251.9 4518.66,-1257.26 4448,-1233.26"/>
<path fill="none" stroke="black" d="M4448,-1232.26C4403.27,-1217.07 4382.96,-1228.02 4348,-1196.26 4201.69,-1063.33 4265.39,-960.07 4158,-794.1 4148.44,-779.33 4136.37,-764.34 4125.07,-751.42"/>
<polygon fill="#f9d606" stroke="black" points="4127.42,-748.8 4118.16,-743.66 4122.2,-753.46 4127.42,-748.8"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_status_package -->
<g id="edge379" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4970,-829.87C4974.67,-812.49 4975.43,-805.94 4989,-794.1 5023.97,-763.6 5047.43,-782.34 5087,-758.1 5090.78,-755.79 5094.53,-753.13 5098.16,-750.31"/>
<polygon fill="#f9d606" stroke="black" points="5100.42,-752.98 5105.88,-743.9 5095.95,-747.59 5100.42,-752.98"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_status_packages -->
<g id="edge380" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_status_packages</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4884,-1158.49C4881.61,-1093.08 4874.87,-1069.64 4908,-1013.18 4933.89,-969.06 4976.88,-988.01 4998,-941.41"/>
<path fill="none" stroke="black" d="M4998,-939.41C5017.24,-893.93 4957.18,-879.57 4970,-831.87"/>
<path fill="none" stroke="black" d="M4970,-829.87C4976.92,-804.14 4991.03,-778.16 5004.43,-757.38"/>
<polygon fill="#f9d606" stroke="black" points="5007.5,-759.09 5010.11,-748.82 5001.67,-755.22 5007.5,-759.09"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_status_status -->
<g id="edge381" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_status_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4884,-1232.26C4989.61,-1165.58 4957.89,-1085.1 5060,-1013.18 5099.99,-985.02 5131.08,-1013.36 5164,-977.18 5216.14,-919.88 5227.65,-827.27 5229.25,-768.72"/>
<polygon fill="#f9d606" stroke="black" points="5232.75,-768.62 5229.43,-758.55 5225.75,-768.49 5232.75,-768.62"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_user_login -->
<g id="edge382" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4722.82,-1294.2C4687.39,-1278.49 4626.7,-1245.73 4599,-1196.26 4571.25,-1146.71 4551.54,-990.56 4580,-941.41"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge383" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_user_logout</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4448,-1232.26C4357.33,-1203.28 4359.34,-1142.7 4334,-1050.95"/>
<path fill="none" stroke="black" d="M4334,-1048.95C4290.27,-952.09 4254.35,-832.83 4235.75,-766.09"/>
<polygon fill="#f9d606" stroke="black" points="4239.06,-764.94 4233.03,-756.24 4232.32,-766.81 4239.06,-764.94"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_web -->
<g id="edge384" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4722.81,-1296.52C4695.19,-1288.22 4651.04,-1275.91 4612,-1269.26 4422.94,-1237.09 4364.29,-1292.84 4182,-1233.26"/>
<path fill="none" stroke="black" d="M4182,-1232.26C4090.1,-1202.22 3917.19,-1112.49 3954,-1050.95"/>
</g>
<!-- aiohttpjinja2 -->
<g id="node101" class="node">
<title>aiohttpjinja2</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#8eb03a" stroke="black" points="5682,-1177.49 5679,-1181.49 5658,-1181.49 5655,-1177.49 5614,-1177.49 5614,-1141.49 5682,-1141.49 5682,-1177.49"/>
<text text-anchor="middle" x="5648" y="-1156.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aiohttpjinja2</text>
</g>
<!-- aiohttp&#45;&gt;aiohttpjinja2 -->
<g id="edge385" class="edge">
<title>aiohttp&#45;&gt;aiohttpjinja2</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4777.19,-1301.1C4871.07,-1287.48 5190.27,-1240.67 5453,-1196.26 5504.98,-1187.47 5564.57,-1176.4 5604.05,-1168.92"/>
<polygon fill="#f9d606" stroke="black" points="5604.71,-1172.35 5613.88,-1167.05 5603.4,-1165.48 5604.71,-1172.35"/>
</g>
<!-- aiohttpsession -->
<g id="node103" class="node">
<title>aiohttpsession</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#3db84e" stroke="black" points="5856,-1177.49 5853,-1181.49 5832,-1181.49 5829,-1177.49 5776,-1177.49 5776,-1141.49 5856,-1141.49 5856,-1177.49"/>
<text text-anchor="middle" x="5816" y="-1156.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aiohttpsession</text>
</g>
<!-- aiohttp&#45;&gt;aiohttpsession -->
<g id="edge386" class="edge">
<title>aiohttp&#45;&gt;aiohttpsession</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4777.34,-1303.84C4919.25,-1297.41 5572.7,-1264.51 5762,-1196.26 5770.52,-1193.19 5779.02,-1188.51 5786.67,-1183.55"/>
<polygon fill="#f9d606" stroke="black" points="5788.96,-1186.21 5795.21,-1177.66 5784.99,-1180.45 5788.96,-1186.21"/>
</g>
<!-- aiohttpjinja2&#45;&gt;ahriman_web_views_index -->
<g id="edge387" class="edge">
<title>aiohttpjinja2&#45;&gt;ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5668.79,-1141.39C5676.98,-1135.08 5686.66,-1128.16 5696,-1122.72 5730.4,-1102.7 5747.47,-1112.26 5778,-1086.72 5792.68,-1074.44 5794.71,-1068.66 5802,-1050.95"/>
<path fill="none" stroke="black" d="M5802,-1048.95C5828.51,-984.54 5728.31,-998.22 5688,-941.41"/>
</g>
<!-- aiohttpjinja2&#45;&gt;ahriman_web_web -->
<g id="edge388" class="edge">
<title>aiohttpjinja2&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5802,-1048.95C5859.26,-909.8 5793.86,-852.05 5855,-714.56"/>
</g>
<!-- aiohttpsecurity -->
<g id="node102" class="node">
<title>aiohttpsecurity</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#65ce3b" stroke="black" points="4658,-1433.57 4655,-1437.57 4634,-1437.57 4631,-1433.57 4578,-1433.57 4578,-1397.57 4658,-1397.57 4658,-1433.57"/>
<text text-anchor="middle" x="4618" y="-1413.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aiohttpsecurity</text>
</g>
<!-- aiohttpsecurity&#45;&gt;ahriman_core_auth_helpers -->
<g id="edge389" class="edge">
<title>aiohttpsecurity&#45;&gt;ahriman_core_auth_helpers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4616.06,-1397.51C4613.34,-1376.06 4607.62,-1338.24 4598,-1307.03"/>
<path fill="none" stroke="black" d="M4598,-1305.03C4584.87,-1262.45 4550.35,-1271.81 4528,-1233.26 4503.15,-1190.39 4489.54,-1134.9 4482.55,-1096.45"/>
<polygon fill="#65ce3b" stroke="black" points="4485.99,-1095.82 4480.83,-1086.57 4479.1,-1097.02 4485.99,-1095.82"/>
</g>
<!-- aiohttpsecurity&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge390" class="edge">
<title>aiohttpsecurity&#45;&gt;ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4658.17,-1412.99C4846.4,-1404.57 5636.62,-1357.67 5748,-1160.49"/>
<path fill="none" stroke="black" d="M5748,-1158.49C5756.54,-1142.64 5753.68,-1134.83 5767,-1122.72 5797.97,-1094.59 5820.25,-1111.46 5854,-1086.72 5870.73,-1074.45 5875.54,-1069.9 5884,-1050.95"/>
<path fill="none" stroke="black" d="M5884,-1048.95C5923.76,-959.9 5904.94,-928.77 5916,-831.87"/>
</g>
<!-- aiohttpsecurity&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge391" class="edge">
<title>aiohttpsecurity&#45;&gt;ahriman_web_views_service_reload_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4598,-1305.03C4590.91,-1269.64 4617.79,-1264.43 4636,-1233.26"/>
<path fill="none" stroke="black" d="M4636,-1232.26C4651.11,-1206.39 4678.49,-1222.47 4693,-1196.26 4747.87,-1097.17 4675.18,-1053.1 4694,-941.41"/>
</g>
<!-- aiohttpsession&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge392" class="edge">
<title>aiohttpsession&#45;&gt;ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5828.95,-1141.48C5844.02,-1120.99 5868.78,-1085.04 5884,-1050.95"/>
</g>
<!-- aur -->
<g id="node104" class="node">
<title>aur</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#33cc8a" stroke="black" points="3995,-2670.26 3992,-2674.26 3971,-2674.26 3968,-2670.26 3941,-2670.26 3941,-2634.26 3995,-2634.26 3995,-2670.26"/>
<text text-anchor="middle" x="3968" y="-2649.76" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aur</text>
</g>
<!-- aur&#45;&gt;ahriman_application_handlers_search -->
<g id="edge393" class="edge">
<title>aur&#45;&gt;ahriman_application_handlers_search</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3953.41,-2634.07C3946.26,-2626.93 3937.03,-2619.4 3927,-2615.49 3858.25,-2588.64 2656.95,-2625.2 2599,-2579.49 2510.14,-2509.4 2608.32,-2418.02 2533,-2333.54 2504.06,-2301.07 2482.14,-2314.29 2442,-2297.54 2346.13,-2257.54 2300.36,-2278.09 2228,-2203.56 2196.62,-2171.23 2199.21,-2153.68 2190,-2109.57 2110.38,-1728.18 2166,-1622.88 2166,-1233.26 2166,-1233.26 2166,-1233.26 2166,-1158.49 2166,-1062.01 2190.26,-1034.79 2166,-941.41"/>
</g>
<!-- aur&#45;&gt;ahriman_models_package -->
<g id="edge394" class="edge">
<title>aur&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3951.78,-2634C3944.72,-2627.37 3936.02,-2620.26 3927,-2615.49 3854.01,-2576.88 3289.28,-2442.11 3208,-2427.52 3049.29,-2399.04 3000.14,-2441.98 2847,-2391.52 2843.5,-2390.37 2839.98,-2388.92 2836.54,-2387.3"/>
<polygon fill="#33cc8a" stroke="black" points="2838.11,-2384.17 2827.62,-2382.67 2834.88,-2390.38 2838.11,-2384.17"/>
</g>
<!-- aur&#45;&gt;ahriman_web_views_service_search -->
<g id="edge395" class="edge">
<title>aur&#45;&gt;ahriman_web_views_service_search</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3995.03,-2651.53C4142.81,-2652.31 4866.77,-2647.39 5427,-2485.5 5576.33,-2442.35 5594.62,-2382.94 5742,-2333.54 5819.35,-2307.61 5866.98,-2357.78 5922,-2297.54 5989.44,-2223.7 5946,-2173.81 5946,-2073.8 5946,-2073.8 5946,-2073.8 5946,-1962.27 5946,-1609.02 5781.54,-1546.29 5734,-1196.26 5729.6,-1163.87 5716.13,-1150.09 5734,-1122.72 5755.76,-1089.4 5794.24,-1120.05 5816,-1086.72 5833.87,-1059.36 5828.78,-1043.27 5816,-1013.18 5749.9,-857.52 5552.15,-765.66 5461.86,-730.77"/>
<polygon fill="#33cc8a" stroke="black" points="5463.03,-727.47 5452.44,-727.19 5460.54,-734.01 5463.03,-727.47"/>
</g>
<!-- boto3 -->
<g id="node105" class="node">
<title>boto3</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#40bfc0" stroke="black" points="4060,-2286.55 4057,-2290.55 4036,-2290.55 4033,-2286.55 4006,-2286.55 4006,-2250.55 4060,-2250.55 4060,-2286.55"/>
<text text-anchor="middle" x="4033" y="-2266.05" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">boto3</text>
</g>
<!-- boto3&#45;&gt;ahriman_core_upload_s3 -->
<g id="edge396" class="edge">
<title>boto3&#45;&gt;ahriman_core_upload_s3</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4048.78,-2250.33C4072.29,-2225.3 4118.62,-2178.28 4164,-2145.57 4191.11,-2126.04 4205.32,-2132.09 4230,-2109.57 4244.14,-2096.67 4252.32,-2092.87 4254,-2073.8"/>
<path fill="none" stroke="black" d="M4254,-2071.8C4259.55,-2018.41 4219.08,-2014.05 4199,-1964.27"/>
</g>
<!-- cryptography -->
<g id="node106" class="node">
<title>cryptography</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#198ee6" stroke="black" points="6211,-2903 6208,-2907 6187,-2907 6184,-2903 6137,-2903 6137,-2867 6211,-2867 6211,-2903"/>
<text text-anchor="middle" x="6174" y="-2882.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">cryptography</text>
</g>
<!-- cryptography&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge397" class="edge">
<title>cryptography&#45;&gt;ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6211.09,-2874.63C6240.01,-2865.43 6279,-2848.54 6302,-2820.01 6329.06,-2786.45 6326,-2769.14 6326,-2726.03 6326,-2726.03 6326,-2726.03 6326,-1852.73 6326,-1514.5 6255.91,-1428.33 6111,-1122.72 6069.7,-1035.63 6040.3,-1024.83 5992,-941.41"/>
</g>
<!-- cryptography&#45;&gt;aiohttpsession -->
<g id="edge398" class="edge">
<title>cryptography&#45;&gt;aiohttpsession</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6174,-2866.94C6174,-2837.97 6174,-2777.31 6174,-2726.03 6174,-2726.03 6174,-2726.03 6174,-2071.8 6174,-1696.46 5907.65,-1290.61 5834.43,-1186.13"/>
<polygon fill="#198ee6" stroke="black" points="5837.16,-1183.93 5828.53,-1177.78 5831.44,-1187.96 5837.16,-1183.93"/>
</g>
<!-- requests -->
<g id="node110" class="node">
<title>requests</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#dd18c1" stroke="black" points="4202,-2809.02 4199,-2813.02 4178,-2813.02 4175,-2809.02 4148,-2809.02 4148,-2773.02 4202,-2773.02 4202,-2809.02"/>
<text text-anchor="middle" x="4175" y="-2788.52" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">requests</text>
</g>
<!-- cryptography&#45;&gt;requests -->
<g id="edge399" class="edge">
<title>cryptography&#45;&gt;requests</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6136.73,-2882.29C5887.24,-2870.81 4462.06,-2805.23 4212.34,-2793.74"/>
<polygon fill="#198ee6" stroke="black" points="4212.47,-2790.24 4202.32,-2793.28 4212.14,-2797.23 4212.47,-2790.24"/>
</g>
<!-- jinja2 -->
<g id="node107" class="node">
<title>jinja2</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#3b50ce" stroke="black" points="5840,-2286.55 5837,-2290.55 5816,-2290.55 5813,-2286.55 5786,-2286.55 5786,-2250.55 5840,-2250.55 5840,-2286.55"/>
<text text-anchor="middle" x="5813" y="-2266.05" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">jinja2</text>
</g>
<!-- jinja2&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge400" class="edge">
<title>jinja2&#45;&gt;ahriman_core_report_jinja_template</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5785.92,-2255.52C5669.18,-2204.32 5196.21,-2003.66 4785,-1926.5 4474.46,-1868.22 4378.64,-1977.86 4075,-1890.5 4069.44,-1888.89 4063.83,-1886.73 4058.37,-1884.26"/>
<polygon fill="#3b50ce" stroke="black" points="4059.88,-1881.1 4049.36,-1879.85 4056.8,-1887.39 4059.88,-1881.1"/>
</g>
<!-- jinja2&#45;&gt;ahriman_web_web -->
<g id="edge401" class="edge">
<title>jinja2&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5870,-1962.27C5867.17,-1896.87 5882.96,-1881.47 5894,-1816.96 5907.22,-1739.74 5991.94,-1196.94 6017,-1122.72 6028.48,-1088.72 6054.16,-1086.84 6054,-1050.95"/>
<path fill="none" stroke="black" d="M6054,-1048.95C6051.44,-951.92 6028.84,-928.93 6030,-831.87"/>
</g>
<!-- jinja2&#45;&gt;aiohttpjinja2 -->
<g id="edge402" class="edge">
<title>jinja2&#45;&gt;aiohttpjinja2</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5816.13,-2250.4C5823.15,-2212 5840.75,-2116.15 5856,-2036.03 5862.08,-2004.11 5870,-1996.76 5870,-1964.27"/>
<path fill="none" stroke="black" d="M5870,-1962.27C5867.16,-1922.98 5834.35,-1926.33 5818,-1890.5 5802.77,-1857.1 5682.3,-1315.37 5653.96,-1187.42"/>
<polygon fill="#3b50ce" stroke="black" points="5657.37,-1186.64 5651.79,-1177.63 5650.53,-1188.15 5657.37,-1186.64"/>
</g>
<!-- passlib -->
<g id="node108" class="node">
<title>passlib</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#653bce" stroke="black" points="4850,-2670.26 4847,-2674.26 4826,-2674.26 4823,-2670.26 4796,-2670.26 4796,-2634.26 4850,-2634.26 4850,-2670.26"/>
<text text-anchor="middle" x="4823" y="-2649.76" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">passlib</text>
</g>
<!-- passlib&#45;&gt;ahriman_models_user -->
<g id="edge403" class="edge">
<title>passlib&#45;&gt;ahriman_models_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4818.3,-2634.07C4808.56,-2594.91 4789.92,-2497.06 4825,-2427.52 4830.39,-2416.84 4852.07,-2400.59 4872.19,-2387.14"/>
<polygon fill="#653bce" stroke="black" points="4874.23,-2389.99 4880.67,-2381.57 4870.39,-2384.14 4874.23,-2389.99"/>
</g>
<!-- pyalpm -->
<g id="node109" class="node">
<title>pyalpm</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#a43bce" stroke="black" points="2917,-2985.99 2914,-2989.99 2893,-2989.99 2890,-2985.99 2863,-2985.99 2863,-2949.99 2917,-2949.99 2917,-2985.99"/>
<text text-anchor="middle" x="2890" y="-2965.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">pyalpm</text>
</g>
<!-- pyalpm&#45;&gt;ahriman_core_alpm_pacman -->
<g id="edge404" class="edge">
<title>pyalpm&#45;&gt;ahriman_core_alpm_pacman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2895.78,-2949.8C2908.79,-2907.72 2935.82,-2797.78 2890,-2726.03"/>
<path fill="none" stroke="black" d="M2890,-2725.03C2854.42,-2684.74 2484.84,-2662.39 2350.48,-2655.55"/>
<polygon fill="#a43bce" stroke="black" points="2350.63,-2652.05 2340.47,-2655.05 2350.28,-2659.04 2350.63,-2652.05"/>
</g>
<!-- pyalpm&#45;&gt;ahriman_models_package -->
<g id="edge405" class="edge">
<title>pyalpm&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2890,-2725.03C2851.64,-2682.52 2974.25,-2541.75 2985,-2485.5 2989.84,-2460.19 3000.76,-2447.92 2985,-2427.52 2946.25,-2377.36 2905.48,-2415.98 2847,-2391.52 2843.79,-2390.18 2840.54,-2388.65 2837.32,-2387.01"/>
<polygon fill="#a43bce" stroke="black" points="2838.87,-2383.87 2828.41,-2382.18 2835.54,-2390.02 2838.87,-2383.87"/>
</g>
<!-- pyalpm&#45;&gt;ahriman_models_package_description -->
<g id="edge406" class="edge">
<title>pyalpm&#45;&gt;ahriman_models_package_description</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2890,-2725.03C2833.72,-2661.3 2863.48,-2552.06 2885.06,-2494.89"/>
<polygon fill="#a43bce" stroke="black" points="2888.35,-2496.1 2888.71,-2485.51 2881.82,-2493.56 2888.35,-2496.1"/>
</g>
<!-- requests&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge407" class="edge">
<title>requests&#45;&gt;ahriman_core_sign_gpg</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4180.14,-2772.78C4189.14,-2738.83 4203.59,-2662.52 4168,-2615.49 4073.51,-2490.59 3978.12,-2551.72 3853,-2457.51"/>
</g>
<!-- requests&#45;&gt;ahriman_core_status_web_client -->
<g id="edge408" class="edge">
<title>requests&#45;&gt;ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4202.18,-2789.32C4370.14,-2784.45 5266.14,-2750.66 5466,-2579.49 5587.03,-2475.83 5642.13,-2386.3 5580,-2239.56 5475.79,-1993.41 5175.72,-1825.09 5059.12,-1767.3"/>
<polygon fill="#dd18c1" stroke="black" points="5060.58,-1764.12 5050.06,-1762.85 5057.49,-1770.4 5060.58,-1764.12"/>
</g>
<!-- requests&#45;&gt;ahriman_core_util -->
<g id="edge409" class="edge">
<title>requests&#45;&gt;ahriman_core_util</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4170.36,-2772.91C4167.67,-2759.19 4166.31,-2739.99 4175,-2726.03"/>
</g>
<!-- requests&#45;&gt;aur -->
<g id="edge410" class="edge">
<title>requests&#45;&gt;aur</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4149.2,-2772.97C4112.07,-2748.44 4043.49,-2703.13 4002.18,-2675.84"/>
<polygon fill="#dd18c1" stroke="black" points="4004.07,-2672.89 3993.8,-2670.3 4000.21,-2678.73 4004.07,-2672.89"/>
</g>
<!-- srcinfo -->
<g id="node111" class="node">
<title>srcinfo</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#b6537e" stroke="black" points="3162,-2670.26 3159,-2674.26 3138,-2674.26 3135,-2670.26 3108,-2670.26 3108,-2634.26 3162,-2634.26 3162,-2670.26"/>
<text text-anchor="middle" x="3135" y="-2649.76" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">srcinfo</text>
</g>
<!-- srcinfo&#45;&gt;ahriman_models_package -->
<g id="edge411" class="edge">
<title>srcinfo&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3120.18,-2633.98C3105.38,-2615.16 3084.24,-2583.45 3080,-2551.5"/>
</g>
</g>
</svg>