ahriman/docs/ahriman-architecture.svg

3673 lines
326 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.49.0 (0)
-->
<!-- Title: G Pages: 1 -->
<svg width="6520pt" height="2994pt"
viewBox="0.00 0.00 6520.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 6516,-2989.99 6516,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="#793434" stroke="black" cx="1720" cy="-28.99" rx="46.84" ry="28.98"/>
<text text-anchor="middle" x="1720" y="-37.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1720" y="-26.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1720" 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="1387" cy="-1049.95" rx="46.84" ry="28.98"/>
<text text-anchor="middle" x="1387" y="-1058.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1387" y="-1047.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1387" 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="1207" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1207" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1207" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1207" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1207" 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="M1366,-1023.63C1334.66,-985.83 1275.41,-914.38 1238.76,-870.18"/>
<polygon fill="#950303" stroke="black" points="1241.27,-867.72 1232.19,-862.25 1235.88,-872.19 1241.27,-867.72"/>
</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="613" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="613" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="613" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="613" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="613" 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="M1340.34,-1049.18C1244.86,-1048.26 1021.49,-1039.03 847,-977.18 772.74,-950.86 697.15,-898.24 652.7,-864.07"/>
<polygon fill="#950303" stroke="black" points="654.81,-861.28 644.76,-857.91 650.52,-866.81 654.81,-861.28"/>
</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="391" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="391" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="391" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="391" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="391" 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="M1340.39,-1048.01C1191.5,-1044.49 728.95,-1029.52 590,-977.18 525.9,-953.04 464.14,-902.25 426.87,-867.6"/>
<polygon fill="#950303" stroke="black" points="428.97,-864.77 419.29,-860.46 424.17,-869.87 428.97,-864.77"/>
</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="280" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="280" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="280" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="280" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="280" 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="M385,-939.41C351.79,-927.15 324.29,-897.68 305.78,-872.69"/>
<polygon fill="#950303" stroke="black" points="308.52,-870.5 299.85,-864.42 302.83,-874.58 308.52,-870.5"/>
</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="724" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="724" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="724" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="724" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="724" 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="M1340.75,-1045.61C1234.82,-1037.4 977.74,-1014.19 900,-977.18 878.76,-967.07 877.86,-957.81 861,-941.41"/>
<path fill="none" stroke="black" d="M861,-939.41C831.63,-910.85 794.98,-882.4 766.97,-861.94"/>
<polygon fill="#950303" stroke="black" points="768.73,-858.89 758.58,-855.86 764.62,-864.56 768.73,-858.89"/>
</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="1429" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1429" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1429" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1429" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1429" 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="M1387,-939.41C1385.59,-916.44 1393.89,-892.45 1403.48,-872.96"/>
<polygon fill="#950303" stroke="black" points="1406.6,-874.56 1408.1,-864.07 1400.38,-871.33 1406.6,-874.56"/>
</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="1746" cy="-830.87" rx="65.11" ry="36.54"/>
<text text-anchor="middle" x="1746" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1746" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1746" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1746" 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="M1419.81,-1029.11C1482.18,-991.4 1618.34,-909.07 1693.52,-863.61"/>
<polygon fill="#950303" stroke="black" points="1695.63,-866.42 1702.38,-858.25 1692.01,-860.43 1695.63,-866.42"/>
</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="835" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="835" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="835" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="835" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="835" 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="M861,-939.41C844.73,-923.59 837.94,-899.46 835.35,-878.07"/>
<polygon fill="#950303" stroke="black" points="838.8,-877.46 834.39,-867.83 831.83,-878.11 838.8,-877.46"/>
</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="1318" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1318" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1318" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1318" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1318" 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="M1387.95,-1020.62C1388.44,-998.92 1388.65,-968.25 1387,-941.41"/>
<path fill="none" stroke="black" d="M1387,-939.41C1385.35,-912.56 1369.78,-887.01 1353.84,-867.56"/>
<polygon fill="#950303" stroke="black" points="1356.43,-865.2 1347.27,-859.88 1351.11,-869.75 1356.43,-865.2"/>
</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="946" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="946" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="946" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="946" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="946" 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="M861,-939.41C848.24,-927 879.43,-892.36 907.56,-865.72"/>
<polygon fill="#950303" stroke="black" points="910.06,-868.16 914.99,-858.79 905.29,-863.04 910.06,-868.16"/>
</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="1540" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1540" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1540" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1540" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1540" 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="M1405.15,-1023.2C1431.55,-985.74 1480.77,-915.91 1511.89,-871.76"/>
<polygon fill="#950303" stroke="black" points="1514.76,-873.75 1517.66,-863.56 1509.04,-869.72 1514.76,-873.75"/>
</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="1884" cy="-830.87" rx="55.31" ry="36.54"/>
<text text-anchor="middle" x="1884" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1884" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1884" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1884" 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="M1433.85,-1048.86C1506.4,-1046.8 1648.25,-1034.94 1751,-977.18 1795.66,-952.08 1833.59,-906.6 1857.38,-873.18"/>
<polygon fill="#950303" stroke="black" points="1860.26,-875.17 1863.12,-864.97 1854.53,-871.16 1860.26,-875.17"/>
</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="502" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="502" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="502" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="502" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="502" 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="M1340.1,-1047.15C1205.64,-1041.5 820.98,-1021.77 704,-977.18 669.37,-963.98 590.42,-903.21 542.12,-864.56"/>
<polygon fill="#950303" stroke="black" points="544.05,-861.61 534.06,-858.08 539.66,-867.07 544.05,-861.61"/>
</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="169" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="169" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="169" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="169" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="169" 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="M1340.35,-1047.36C1177.55,-1041.5 635.36,-1019.2 467,-977.18 428.42,-967.55 422.3,-955.19 385,-941.41"/>
<path fill="none" stroke="black" d="M385,-939.41C311.51,-912.26 292.83,-905.06 224,-867.64 220.12,-865.54 216.16,-863.25 212.23,-860.88"/>
<polygon fill="#950303" stroke="black" points="214.05,-857.89 203.71,-855.62 210.37,-863.85 214.05,-857.89"/>
</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="2154" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="2154" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2154" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="2154" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="2154" 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="M1433.11,-1044.42C1510.8,-1036.03 1672.23,-1015.36 1804,-977.18 1915.43,-944.9 2039.4,-888.15 2105.78,-855.96"/>
<polygon fill="#950303" stroke="black" points="2107.69,-858.92 2115.15,-851.39 2104.62,-852.63 2107.69,-858.92"/>
</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="1720" cy="-122.97" rx="46.84" ry="28.98"/>
<text text-anchor="middle" x="1720" y="-131.47" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1720" y="-120.47" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1720" 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="M1720,-93.88C1720,-85.84 1720,-76.94 1720,-68.39"/>
<polygon fill="#950303" stroke="black" points="1723.5,-68.23 1720,-58.23 1716.5,-68.23 1723.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="M1206.41,-794C1204.95,-728.46 1199.92,-585.07 1183,-465.49 1178.92,-436.66 1146.46,-419.92 1169,-401.5"/>
</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="M638.65,-799.58C660.12,-775.16 692.26,-740.71 724,-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="2004" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="2004" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2004" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="2004" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="2004" 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="M1995.28,-794.73C1991.28,-770.58 1990.08,-738.65 2004,-714.56"/>
</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="956" cy="-940.41" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="956" y="-954.41" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="956" y="-943.41" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="956" y="-932.41" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="956" 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="M992.22,-916.81C1000.24,-912.19 1008.8,-907.55 1017,-903.64 1058.14,-884.05 1084.32,-903.06 1113,-867.64 1165.63,-802.65 1139.23,-573.64 1169,-495.48"/>
<path fill="none" stroke="black" d="M1169,-493.48C1184.47,-455.64 1137.19,-427.17 1169,-401.5"/>
</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="M991.65,-916.45C999.78,-911.8 1008.52,-907.24 1017,-903.64 1071.8,-880.4 1091.2,-890.89 1146,-867.64 1151.43,-865.34 1156.97,-862.64 1162.39,-859.78"/>
<polygon fill="#b30404" stroke="black" points="1164.28,-862.73 1171.35,-854.84 1160.9,-856.6 1164.28,-862.73"/>
</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="M917.18,-919.97C904.05,-914.02 889.12,-907.92 875,-903.64 785.63,-876.58 754.91,-901.8 668,-867.64 663.77,-865.98 659.52,-863.97 655.37,-861.76"/>
<polygon fill="#b30404" stroke="black" points="656.87,-858.58 646.46,-856.65 653.39,-864.66 656.87,-858.58"/>
</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="M1002.25,-935.1C1079.16,-927.99 1238.22,-913.64 1373,-903.64 1500.68,-894.17 1826.29,-907.37 1948,-867.64 1952.62,-866.13 1957.24,-864.15 1961.73,-861.89"/>
<polygon fill="#b30404" stroke="black" points="1963.66,-864.83 1970.73,-856.93 1960.29,-858.7 1963.66,-864.83"/>
</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="M917.39,-919.24C904.27,-913.23 889.3,-907.29 875,-903.64 689.6,-856.35 627,-929.68 446,-867.64 441.52,-866.11 437.05,-864.13 432.69,-861.89"/>
<polygon fill="#b30404" stroke="black" points="434.4,-858.83 423.97,-856.99 430.97,-864.94 434.4,-858.83"/>
</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="M917.42,-919.09C904.3,-913.08 889.33,-907.17 875,-903.64 641.43,-846.19 563.2,-943.67 335,-867.64 330.51,-866.15 326.03,-864.19 321.67,-861.97"/>
<polygon fill="#b30404" stroke="black" points="323.37,-858.91 312.93,-857.09 319.96,-865.02 323.37,-858.91"/>
</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="M915.82,-921.13C902.85,-915.37 888.38,-909.1 875,-903.64 832.81,-886.43 819.67,-888.19 779,-867.64 775.06,-865.65 771.06,-863.45 767.09,-861.14"/>
<polygon fill="#b30404" stroke="black" points="768.9,-858.14 758.53,-855.95 765.27,-864.12 768.9,-858.14"/>
</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="M1001.37,-931.74C1108.72,-913.59 1369.65,-869.35 1374,-867.64 1378.23,-865.99 1382.48,-863.98 1386.63,-861.77"/>
<polygon fill="#b30404" stroke="black" points="1388.61,-864.67 1395.55,-856.66 1385.13,-858.59 1388.61,-864.67"/>
</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="M1002.46,-936.16C1108.33,-928.33 1375.44,-906.16 1596,-867.64 1623.01,-862.93 1652.41,-856.26 1677.97,-849.96"/>
<polygon fill="#b30404" stroke="black" points="1679.08,-853.29 1687.93,-847.47 1677.38,-846.5 1679.08,-853.29"/>
</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="M925.47,-912.28C909.56,-898.14 889.96,-880.72 873.07,-865.71"/>
<polygon fill="#b30404" stroke="black" points="875.32,-863.03 865.52,-859 870.67,-868.26 875.32,-863.03"/>
</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="1057" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1057" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1057" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1057" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1057" 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="M983.33,-910.31C995.46,-897.4 1009.86,-882.07 1022.7,-868.4"/>
<polygon fill="#b30404" stroke="black" points="1025.35,-870.68 1029.65,-861 1020.25,-865.89 1025.35,-870.68"/>
</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="M997.39,-922.62C1014.94,-915.99 1035.74,-908.75 1055,-903.64 1145.69,-879.61 1175.67,-901.92 1263,-867.64 1267.23,-865.98 1271.48,-863.97 1275.63,-861.76"/>
<polygon fill="#b30404" stroke="black" points="1277.61,-864.66 1284.54,-856.65 1274.13,-858.59 1277.61,-864.66"/>
</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="M952.67,-903.6C951.91,-895.44 951.09,-886.65 950.3,-878.11"/>
<polygon fill="#b30404" stroke="black" points="953.76,-877.53 949.35,-867.89 946.79,-878.17 953.76,-877.53"/>
</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="M1001.18,-931.11C1044.23,-923.37 1110.89,-911.83 1169,-903.64 1308.97,-883.93 1351.98,-915.45 1485,-867.64 1489.28,-866.11 1493.55,-864.18 1497.73,-862.02"/>
<polygon fill="#b30404" stroke="black" points="1499.67,-864.95 1506.67,-856.99 1496.24,-858.85 1499.67,-864.95"/>
</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="M1002.27,-935.36C1079.21,-928.65 1238.31,-914.84 1373,-903.64 1571.62,-887.13 1629.3,-925.59 1820,-867.64 1825.25,-866.05 1830.55,-863.97 1835.73,-861.63"/>
<polygon fill="#b30404" stroke="black" points="1837.44,-864.69 1844.89,-857.16 1834.37,-858.4 1837.44,-864.69"/>
</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="M917.32,-919.48C904.2,-913.49 889.25,-907.5 875,-903.64 737.7,-866.49 690.87,-915.7 557,-867.64 552.72,-866.11 548.44,-864.18 544.27,-862.03"/>
<polygon fill="#b30404" stroke="black" points="545.76,-858.85 535.33,-857 542.33,-864.95 545.76,-858.85"/>
</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="M917.85,-919.19C904.64,-913.1 889.5,-907.12 875,-903.64 593.23,-836.02 499.43,-957.68 224,-867.64 219.5,-866.17 215.01,-864.24 210.65,-862.03"/>
<polygon fill="#b30404" stroke="black" points="212.35,-858.97 201.91,-857.16 208.94,-865.08 212.35,-858.97"/>
</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="M1002.24,-934.94C1079.13,-927.62 1238.17,-912.96 1373,-903.64 1678.03,-882.58 1760.84,-930.78 2060,-867.64 2074.85,-864.51 2090.46,-859.38 2104.59,-853.97"/>
<polygon fill="#b30404" stroke="black" points="2106.11,-857.13 2114.12,-850.2 2103.53,-850.63 2106.11,-857.13"/>
</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="1720" cy="-224.74" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1720" y="-238.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1720" y="-227.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1720" y="-216.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1720" 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="M1169,-493.48C1196.4,-310.56 1390.53,-422.03 1554,-335.5 1598.15,-312.14 1645.38,-280.15 1678.13,-256.74"/>
<polygon fill="#b30404" stroke="black" points="1680.47,-259.36 1686.55,-250.68 1676.39,-253.68 1680.47,-259.36"/>
</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="M425.02,-805.53C431.77,-801.35 438.95,-797.32 446,-794.1 562.94,-740.8 624.81,-796.27 724,-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="M313.53,-805.27C320.38,-801.06 327.73,-797.09 335,-794.1 498.27,-727.15 587.8,-826.76 724,-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="M711.65,-795.14C704.66,-768.52 701.29,-733.27 724,-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="M1461.12,-804.16C1492.83,-777.62 1537.02,-737.01 1540,-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="M1690.6,-811.37C1628.03,-788.73 1535.4,-749.14 1540,-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="M800.69,-805.43C761.68,-776.31 705.61,-729.71 724,-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="M1022.98,-805.53C1016.23,-801.35 1009.05,-797.32 1002,-794.1 885.06,-740.8 624.81,-796.27 724,-714.56"/>
</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="M1352.78,-806.27C1359.4,-802.06 1366.34,-797.83 1373,-794.1 1444.73,-753.93 1529.17,-796.05 1540,-714.56"/>
<path fill="none" stroke="black" d="M1540,-712.56C1562.08,-546.44 1443.22,-472.31 1540,-335.5"/>
</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="M911.22,-806.27C904.6,-802.06 897.66,-797.83 891,-794.1 819.27,-753.93 660.55,-766.83 724,-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="M1537.58,-794.13C1536.63,-771.27 1536.48,-741.05 1540,-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="M1921.14,-803.44C1948.07,-782.35 1983.26,-750.46 2004,-714.56"/>
<path fill="none" stroke="black" d="M2004,-712.56C2015.05,-693.42 2016.16,-687.67 2028,-669.01 2049.1,-635.75 2084.03,-636.42 2080,-597.24"/>
<path fill="none" stroke="black" d="M2080,-595.24C2054.07,-342.9 1495.87,-430.94 1645,-225.74"/>
</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="M536.78,-806.27C543.4,-802.06 550.34,-797.83 557,-794.1 628.73,-753.93 660.55,-766.83 724,-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="M202.42,-805.02C209.29,-800.83 216.66,-796.93 224,-794.1 434.02,-713.32 550.33,-857.63 724,-714.56"/>
<path fill="none" stroke="black" d="M724,-712.56C910.24,-559.12 977.46,-548.27 1169,-401.5"/>
<path fill="none" stroke="black" d="M1169,-399.5C1180.9,-389.89 1175.78,-379.19 1189,-371.5 1256.8,-332.12 1493.94,-398.96 1540,-335.5"/>
<path fill="none" stroke="black" d="M1540,-334.5C1579.47,-280.13 1602.73,-277.96 1645,-225.74"/>
<path fill="none" stroke="black" d="M1645,-223.74C1655.38,-209.03 1653.78,-202.79 1664,-187.97 1671.6,-176.94 1680.85,-165.69 1689.63,-155.76"/>
<polygon fill="#913030" stroke="black" points="1692.43,-157.88 1696.52,-148.11 1687.22,-153.19 1692.43,-157.88"/>
</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="M2138.49,-796.13C2119.19,-751.69 2087.81,-670.57 2080,-597.24"/>
</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="M1720,-187.72C1720,-179.48 1720,-170.69 1720,-162.35"/>
<polygon fill="#822b2b" stroke="black" points="1723.5,-162.11 1720,-152.11 1716.5,-162.11 1723.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="2905" cy="-1525.11" rx="46.84" ry="28.98"/>
<text text-anchor="middle" x="2905" y="-1533.61" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2905" y="-1522.61" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="2905" 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="M2858.43,-1521.54C2770.68,-1515.76 2575.48,-1498.44 2418,-1452.34 1961.88,-1318.83 1903.04,-1132.49 1443,-1013.18 1259.08,-965.48 1198.11,-1034.66 1017,-977.18 1011.09,-975.31 1005.13,-972.78 999.38,-969.93"/>
<polygon fill="#822b2b" stroke="black" points="1001.02,-966.83 990.55,-965.23 997.73,-973.01 1001.02,-966.83"/>
</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="1763" cy="-2550.5" rx="42.94" ry="18"/>
<text text-anchor="middle" x="1763" 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="M1234,-2455.51C1194.45,-2434.8 1318.52,-2313.37 1310,-2269.55"/>
<path fill="none" stroke="black" d="M1310,-2267.55C1311.88,-2197.61 1163.18,-2067.32 1144,-2000.03 1131.42,-1955.89 1148.07,-1804.01 1158,-1745.19"/>
<path fill="none" stroke="black" d="M1158,-1743.19C1167.74,-1678.46 1156.79,-1658.29 1182,-1597.88 1197.17,-1561.53 1224.8,-1564.41 1234,-1526.11"/>
<path fill="none" stroke="black" d="M1234,-1524.11C1236.83,-1491.73 1223.13,-1484.69 1220,-1452.34 1216.86,-1419.81 1212.37,-1410.58 1220,-1378.8 1247.72,-1263.3 1323.29,-1142.61 1362.56,-1085.21"/>
<polygon fill="#f91010" stroke="black" points="1365.51,-1087.1 1368.31,-1076.88 1359.75,-1083.12 1365.51,-1087.1"/>
</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="M1082,-2173.57C1065.34,-2132.47 1090.92,-2117.24 1082,-2073.8"/>
<path fill="none" stroke="black" d="M1082,-2071.8C1075.11,-2038.27 1062.46,-2033.21 1054,-2000.03 1041.88,-1952.48 1044.9,-1939.33 1040,-1890.5 1035.13,-1841.93 1034,-1829.73 1032,-1780.96 1030,-1732.31 1031.22,-1720.1 1031,-1671.42 1030.85,-1638.73 1030.37,-1630.56 1031,-1597.88 1031.39,-1577.56 1055.38,-1249.74 1045,-1232.26 1027.94,-1203.53 996.06,-1224.99 979,-1196.26 962.32,-1168.16 974.45,-1155.09 979,-1122.72 984.83,-1081.21 1004.84,-974.16 1031,-941.41"/>
<path fill="none" stroke="black" d="M1031,-939.41C1041.7,-923.54 1040.24,-915.83 1055,-903.64 1086.64,-877.52 1102.98,-885.32 1140,-867.64 1146.63,-864.48 1153.54,-861 1160.3,-857.49"/>
<polygon fill="#f91010" stroke="black" points="1162.17,-860.47 1169.39,-852.71 1158.91,-854.27 1162.17,-860.47"/>
</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="M1720.16,-2549.03C1627.43,-2546.57 1402.85,-2532.63 1234,-2457.51"/>
<path fill="none" stroke="black" d="M1234,-2455.51C1062.21,-2379.08 910.62,-2448.85 854,-2269.55"/>
<path fill="none" stroke="black" d="M854,-2267.55C834.87,-2239.12 827.87,-2233.38 811,-2203.56 788.29,-2163.41 785.55,-2151.8 767,-2109.57 703.51,-1965.01 687.9,-1928.63 632,-1780.96 603.1,-1704.6 339.17,-958.8 347,-941.41"/>
</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="M1614,-2071.8C1614,-2039.31 1603.13,-2032.38 1600,-2000.03 1596.86,-1967.5 1592.12,-1958.22 1600,-1926.5 1622.13,-1837.39 1663.49,-1829.85 1699,-1745.19"/>
<path fill="none" stroke="black" d="M1699,-1743.19C1725.59,-1679.79 1719.95,-1658.69 1752,-1597.88 1789.07,-1527.55 1818.66,-1522.53 1856,-1452.34 1921.03,-1330.1 1965,-1298.95 1965,-1160.49 1965,-1160.49 1965,-1160.49 1965,-1048.95 1965,-988.56 1979.8,-920.19 1991.17,-876.59"/>
<polygon fill="#f91010" stroke="black" points="1994.57,-877.43 1993.75,-866.87 1987.8,-875.64 1994.57,-877.43"/>
</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="M1234,-2455.51C1179.37,-2428.8 1200.84,-2387.08 1172,-2333.54 1133.68,-2262.4 1115.56,-2249.07 1082,-2175.57"/>
<path fill="none" stroke="black" d="M1082,-2173.57C1041.51,-2096.7 1019.63,-2082.41 992,-2000.03 944.89,-1859.57 948.49,-1819.05 936,-1671.42 924.9,-1540.2 930.11,-1304.63 954,-1269.26 975.15,-1237.96 1025.69,-1270.66 1031,-1233.26"/>
<path fill="none" stroke="black" d="M1031,-1232.26C1035.26,-1189.39 974.49,-1223.36 941,-1196.26 926.12,-1184.22 926.4,-1177.17 917,-1160.49"/>
<path fill="none" stroke="black" d="M917,-1158.49C893.54,-1116.85 897.91,-1094.77 917,-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="M1720.76,-2546.71C1628.97,-2540.19 1404.68,-2521.65 1220,-2485.5 1020.01,-2446.36 913.1,-2516.1 778,-2363.53"/>
<path fill="none" stroke="black" d="M778,-2361.53C747.79,-2337.37 740.49,-2329.7 719,-2297.54 489.05,-1953.4 500.82,-1828.42 328,-1452.34 283.31,-1355.08 228,-1340.29 228,-1233.26 228,-1233.26 228,-1233.26 228,-1158.49 228,-1110.25 198.56,-979.63 228,-941.41"/>
</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="M1721.11,-2546.33C1651.11,-2541.06 1505.9,-2530.2 1383,-2521.5 1265.02,-2513.16 958.86,-2536.2 852,-2485.5 749.15,-2436.71 746.27,-2388.64 678,-2297.54 521.97,-2089.33 190,-1493.44 190,-1233.26 190,-1233.26 190,-1233.26 190,-1158.49 190,-1062.01 142.83,-1025.57 190,-941.41"/>
</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="M854,-2267.55C823.39,-2145.15 799.81,-2119.42 759,-2000.03 638.93,-1648.78 591.73,-1562.63 532,-1196.26 511.05,-1067.73 459.52,-1000.1 547,-903.64 584.98,-861.77 617.65,-891.3 669,-867.64 673.07,-865.77 677.18,-863.63 681.23,-861.34"/>
<polygon fill="#f91010" stroke="black" points="683.15,-864.28 689.96,-856.17 679.58,-858.26 683.15,-864.28"/>
</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="M1082,-2071.8C1011.3,-1652.26 1000.43,-1494.67 1207,-1122.72 1261.86,-1023.95 1347.66,-922.02 1394.92,-869.01"/>
<polygon fill="#f91010" stroke="black" points="1397.81,-871.02 1401.88,-861.24 1392.6,-866.35 1397.81,-871.02"/>
</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="M1234,-2071.8C1169.28,-1949.8 1382.18,-1609.75 1448,-1488.34 1505.84,-1381.65 1754.83,-1170.62 1775,-1050.95"/>
<path fill="none" stroke="black" d="M1775,-1048.95C1782.61,-989.47 1769.84,-920.89 1758.91,-876.99"/>
<polygon fill="#f91010" stroke="black" points="1762.27,-876.02 1756.4,-867.2 1755.49,-877.76 1762.27,-876.02"/>
</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="M1234,-2455.51C1197.93,-2439.18 1199.14,-2420.36 1172,-2391.52 1148.07,-2366.1 1143.25,-2358.65 1119,-2333.54 1004.43,-2214.91 959.01,-2200.97 854,-2073.8"/>
<path fill="none" stroke="black" d="M854,-2071.8C773.52,-1937.5 722,-1901.76 722,-1745.19 722,-1745.19 722,-1745.19 722,-1633.65 722,-1304.63 390.27,-1157.98 599,-903.64 651.03,-840.24 704.03,-898.56 780,-867.64 784.21,-865.93 788.44,-863.88 792.59,-861.65"/>
<polygon fill="#f91010" stroke="black" points="794.58,-864.54 801.49,-856.51 791.08,-858.48 794.58,-864.54"/>
</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="M854,-1962.27C838.78,-1775.76 764.85,-1308.28 789,-1122.72 802,-1022.84 774.7,-973.77 847,-903.64 897.77,-854.41 936.93,-895.34 1002,-867.64 1006.12,-865.89 1010.27,-863.83 1014.35,-861.6"/>
<polygon fill="#f91010" stroke="black" points="1016.23,-864.56 1023.11,-856.51 1012.71,-858.51 1016.23,-864.56"/>
</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="M1031,-1232.26C1047.29,-1068.45 1201.34,-924.62 1276.78,-863.33"/>
<polygon fill="#f91010" stroke="black" points="1279.1,-865.96 1284.7,-856.96 1274.71,-860.5 1279.1,-865.96"/>
</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="M854,-2071.8C823.57,-2034.95 861.17,-2011.52 854,-1964.27"/>
<path fill="none" stroke="black" d="M854,-1962.27C849.04,-1929.53 841.12,-1922.84 834,-1890.5 770.4,-1601.46 727,-1529.21 727,-1233.26 727,-1233.26 727,-1233.26 727,-1048.95 727,-977.46 743.44,-952.11 796,-903.64 829.2,-873.04 850.73,-888.07 891,-867.64 894.93,-865.65 898.94,-863.44 902.9,-861.12"/>
<polygon fill="#f91010" stroke="black" points="904.72,-864.11 911.46,-855.93 901.09,-858.12 904.72,-864.11"/>
</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="M1158,-1743.19C1169.58,-1699.72 1229.45,-1602.86 1248,-1561.88 1342.14,-1353.92 1359.06,-1299 1443,-1086.72 1472.11,-1013.1 1504.58,-926.92 1523.6,-876"/>
<polygon fill="#f91010" stroke="black" points="1526.89,-877.2 1527.1,-866.61 1520.33,-874.75 1526.89,-877.2"/>
</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="M1310,-2173.57C1326.28,-1910.96 1328.78,-1832.43 1448,-1597.88 1474.85,-1545.06 1476.78,-1524.14 1524,-1488.34 1562.98,-1458.79 1591.49,-1484.89 1628,-1452.34 1722.24,-1368.32 1701.96,-1312.61 1751,-1196.26 1798.74,-1082.99 1846.01,-946.01 1869.22,-876.7"/>
<polygon fill="#f91010" stroke="black" points="1872.62,-877.57 1872.46,-866.98 1865.98,-875.36 1872.62,-877.57"/>
</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="M778,-2361.53C735.64,-2303.77 315.75,-1231.8 309,-1160.49"/>
</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="M1721.12,-2546.2C1651.13,-2540.74 1505.94,-2529.61 1383,-2521.5 1245.51,-2512.44 890.75,-2539.53 764,-2485.5 485.04,-2366.6 25.61,-1606.06 76,-1307.03"/>
</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="M1754.02,-2532.82C1744.98,-2514.85 1731.84,-2485.1 1728,-2457.51"/>
<path fill="none" stroke="black" d="M1728,-2455.51C1727.09,-2448.95 1655.36,-2369.24 1652,-2363.53"/>
<path fill="none" stroke="black" d="M1652,-2361.53C1627.1,-2319.24 1594.05,-2334.71 1562,-2297.54 1522.29,-2251.48 1500,-2236.38 1500,-2175.57 1500,-2175.57 1500,-2175.57 1500,-2071.8 1500,-1804.27 1454.41,-1672.99 1648,-1488.34 1680.37,-1457.46 1704.04,-1476.02 1742,-1452.34 1759.71,-1441.29 2004.07,-1212.65 2017,-1196.26 2094.57,-1097.95 2131.62,-951.07 2146.17,-877.42"/>
<polygon fill="#f91010" stroke="black" points="2149.62,-878.01 2148.08,-867.53 2142.75,-876.69 2149.62,-878.01"/>
</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="M1310,-2173.57C1311.21,-2156.62 1508.98,-1613.35 1516,-1597.88 1539.02,-1547.13 1534.83,-1524.77 1577,-1488.34 1611.17,-1458.82 1636.63,-1480.41 1672,-1452.34 1771.62,-1373.27 1921.66,-1083.79 1991,-977.18 2022.37,-928.95 2031.43,-917.59 2060,-867.64 2078.27,-835.71 2076.89,-824.24 2098,-794.1 2244.65,-584.78 2271.1,-506.69 2488,-371.5 2535.62,-341.83 2560.22,-363.22 2609,-335.5"/>
<path fill="none" stroke="black" d="M2609,-334.5C2633.08,-316.68 2685.75,-321.04 2666,-298.5"/>
<path fill="none" stroke="black" d="M2666,-297.5C2607.27,-230.51 1971.99,-225.49 1776.75,-225.55"/>
<polygon fill="#f91010" stroke="black" points="1776.69,-222.05 1766.7,-225.55 1776.7,-229.05 1776.69,-222.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="M1819,-2361.53C1855.14,-2246.94 1885.91,-2225.63 1917,-2109.57 1951.05,-1982.48 1875.52,-1916.13 1962,-1816.96 1998.87,-1774.67 2029.31,-1797.26 2083,-1780.96 2375.59,-1692.08 2725.74,-1582.42 2854.4,-1542.02"/>
<polygon fill="#f91010" stroke="black" points="2855.5,-1545.34 2864,-1539 2853.41,-1538.66 2855.5,-1545.34"/>
</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="5485" cy="-2072.8" rx="53.07" ry="28.98"/>
<text text-anchor="middle" x="5485" y="-2081.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5485" y="-2070.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="5485" y="-2059.3" 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="M1805.94,-2548.76C2016.94,-2544.97 2945.14,-2526.25 3231,-2485.5 3512.73,-2445.35 3571.72,-2376.75 3853,-2333.54 4095.57,-2296.28 4159.42,-2317.71 4404,-2297.54 4823.76,-2262.92 4963.62,-2377.98 5347,-2203.56 5393.71,-2182.3 5434.75,-2138.75 5459.68,-2107.98"/>
<polygon fill="#f91010" stroke="black" points="5462.49,-2110.06 5465.97,-2100.06 5457.01,-2105.71 5462.49,-2110.06"/>
</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="3367" cy="-2362.53" rx="48.58" ry="28.98"/>
<text text-anchor="middle" x="3367" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3367" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="3367" 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="M1806,-2548.7C1994.55,-2545 2749.12,-2527.79 2982,-2485.5 3106.12,-2462.97 3245.95,-2411.86 3318.09,-2383.47"/>
<polygon fill="#f91010" stroke="black" points="3319.38,-2386.73 3327.39,-2379.79 3316.8,-2380.22 3319.38,-2386.73"/>
</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="2555" cy="-2362.53" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="2555" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2555" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2555" 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="M1803.77,-2544.58C1897.03,-2533.08 2120.14,-2503.98 2149,-2485.5 2161.66,-2477.4 2153.25,-2460.41 2168,-2457.51"/>
</g>
<!-- ahriman_models_package_source -->
<g id="node68" class="node">
<title>ahriman_models_package_source</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="2710" cy="-2362.53" rx="62.45" ry="28.98"/>
<text text-anchor="middle" x="2710" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2710" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2710" y="-2349.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">package_source</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_models_package_source -->
<g id="edge79" class="edge">
<title>ahriman_core&#45;&gt;ahriman_models_package_source</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1805.88,-2548.14C1904.14,-2544.31 2152.69,-2530.6 2355,-2485.5 2464.35,-2461.13 2586.93,-2414.49 2655.65,-2386.48"/>
<polygon fill="#f91010" stroke="black" points="2657.06,-2389.68 2664.99,-2382.65 2654.41,-2383.2 2657.06,-2389.68"/>
</g>
<!-- ahriman_models_report_settings -->
<g id="node69" class="node">
<title>ahriman_models_report_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b03a3a" stroke="black" cx="2986" cy="-2362.53" rx="57.97" ry="28.98"/>
<text text-anchor="middle" x="2986" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2986" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2986" 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="edge80" 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="M1805.78,-2548.27C1959.11,-2542.9 2494.33,-2515.8 2914,-2391.52 2920.08,-2389.72 2926.36,-2387.63 2932.57,-2385.42"/>
<polygon fill="#f91010" stroke="black" points="2934.05,-2388.61 2942.23,-2381.88 2931.64,-2382.04 2934.05,-2388.61"/>
</g>
<!-- ahriman_models_sign_settings -->
<g id="node71" class="node">
<title>ahriman_models_sign_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="3524" cy="-2362.53" rx="52.15" ry="28.98"/>
<text text-anchor="middle" x="3524" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3524" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="3524" 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="edge81" 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="M1806.09,-2548.78C2005.85,-2545.28 2843.04,-2528.26 3101,-2485.5 3237.48,-2462.88 3392.44,-2411.27 3471.51,-2382.98"/>
<polygon fill="#f91010" stroke="black" points="3473,-2386.16 3481.23,-2379.48 3470.63,-2379.57 3473,-2386.16"/>
</g>
<!-- ahriman_models_upload_settings -->
<g id="node73" class="node">
<title>ahriman_models_upload_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b03a3a" stroke="black" cx="3922" cy="-2362.53" rx="60.21" ry="28.98"/>
<text text-anchor="middle" x="3922" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3922" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="3922" 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="edge82" 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="M1805.8,-2548.42C2089.28,-2541.28 3686.38,-2500.44 3734,-2485.5 3793.02,-2466.99 3851.24,-2424.43 3886.89,-2394.83"/>
<polygon fill="#f91010" stroke="black" points="3889.19,-2397.47 3894.58,-2388.36 3884.68,-2392.12 3889.19,-2397.47"/>
</g>
<!-- ahriman_web_middlewares_auth_handler -->
<g id="node80" class="node">
<title>ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="6224" cy="-713.56" rx="52.15" ry="36.54"/>
<text text-anchor="middle" x="6224" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6224" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="6224" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">middlewares.</text>
<text text-anchor="middle" x="6224" 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="edge83" 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="M1728,-2455.51C1720.06,-2398.56 1799.85,-2417.75 1819,-2363.53"/>
<path fill="none" stroke="black" d="M1819,-2361.53C1837.27,-2309.8 1828.67,-2293.62 1838,-2239.56 1854.25,-2145.37 1855.22,-1889.02 1918,-1816.96 1950.96,-1779.12 1983.98,-1809.86 2025,-1780.96 2059.03,-1756.98 2048.69,-1730.99 2083,-1707.42 2127.49,-1676.85 2149.45,-1692.84 2199,-1671.42 2219.8,-1662.42 2887.63,-1276.83 2909,-1269.26 3095.04,-1203.4 3158.7,-1255.35 3347,-1196.26 3419.75,-1173.43 3427.84,-1140.47 3502,-1122.72 3793,-1053.09 4560.52,-1169.71 4848,-1086.72 4909.56,-1068.95 4912.61,-1037.23 4972,-1013.18 5409.31,-836.12 5976.89,-747.99 6162.41,-722.54"/>
<polygon fill="#f91010" stroke="black" points="6163.08,-725.98 6172.52,-721.17 6162.14,-719.05 6163.08,-725.98"/>
</g>
<!-- ahriman_web_views_base -->
<g id="node84" class="node">
<title>ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#950303" stroke="black" cx="4806" cy="-830.87" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4806" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4806" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4806" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4806" 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="edge84" 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="M1652,-2361.53C1636.58,-2332.43 1861.88,-1839.37 1886,-1816.96 1915.16,-1789.86 1934.23,-1802.02 1968,-1780.96 2010.96,-1754.16 2013.14,-1735.9 2055,-1707.42 2082.95,-1688.4 2092.51,-1687.93 2122,-1671.42 2262.95,-1592.49 2295.33,-1567.76 2436,-1488.34 2524.42,-1438.42 2741.29,-1303.17 2837,-1269.26 3006.93,-1209.06 3062.29,-1244.48 3236,-1196.26 3325.25,-1171.48 3340.45,-1142.23 3431,-1122.72 3676.11,-1069.9 3745.38,-1119.24 3994,-1086.72 4014.53,-1084.04 4709.05,-954.61 4725,-941.41"/>
<path fill="none" stroke="black" d="M4725,-939.41C4748.51,-921.24 4768.64,-894.6 4782.96,-872.38"/>
<polygon fill="#f91010" stroke="black" points="4785.99,-874.13 4788.35,-863.79 4780.07,-870.4 4785.99,-874.13"/>
</g>
<!-- ahriman_web_views_index -->
<g id="node85" class="node">
<title>ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="4534" cy="-713.56" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4534" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4534" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4534" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4534" 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="edge85" 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="M1652,-2361.53C1608.22,-2289.42 1615.13,-2259.92 1614,-2175.57"/>
<path fill="none" stroke="black" d="M1614,-2173.57C1620.95,-2129.78 1611.88,-2118.09 1614,-2073.8"/>
<path fill="none" stroke="black" d="M1699,-1743.19C1738.77,-1668.86 1911.87,-1537.99 1980,-1488.34 2058.77,-1430.93 2084.59,-1425.78 2170,-1378.8 2261.89,-1328.26 2284.15,-1314.01 2379,-1269.26 2567.88,-1180.14 2620.58,-1170.24 2812,-1086.72 2884.85,-1054.94 2899.25,-1037.23 2975,-1013.18 3056.22,-987.4 3645.73,-889.87 3728,-867.64 3823.47,-841.85 3841.1,-813.86 3938,-794.1 4057.8,-769.68 4374.7,-806.43 4487,-758.1 4492.37,-755.79 4497.51,-752.6 4502.3,-748.98"/>
<polygon fill="#f91010" stroke="black" points="4504.55,-751.66 4509.99,-742.57 4500.07,-746.28 4504.55,-751.66"/>
</g>
<!-- ahriman_web_views_service_reload_auth -->
<g id="node88" class="node">
<title>ahriman_web_views_service_reload_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="4826" cy="-713.56" rx="47.25" ry="44.6"/>
<text text-anchor="middle" x="4826" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4826" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4826" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4826" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="4826" 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="edge86" 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="M1310,-2267.55C1314.14,-2226.88 1307.08,-2216.34 1310,-2175.57"/>
<path fill="none" stroke="black" d="M1310,-2173.57C1313.99,-2117.97 1260.62,-2122.78 1234,-2073.8"/>
<path fill="none" stroke="black" d="M1234,-2071.8C1179.88,-1972.22 1208.74,-1924.99 1243,-1816.96 1250.35,-1793.77 1647.93,-810.3 1672,-794.1 1743.38,-746.08 4687.66,-786.15 4769,-758.1 4774.22,-756.3 4779.35,-753.82 4784.25,-750.94"/>
<polygon fill="#f91010" stroke="black" points="4786.32,-753.77 4792.82,-745.4 4782.52,-747.89 4786.32,-753.77"/>
</g>
<!-- ahriman_web_views_status_package -->
<g id="node94" class="node">
<title>ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="4440" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="4440" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4440" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4440" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4440" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="4440" 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="edge87" 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="M1234,-1524.11C1270.18,-1358.71 1345.53,-1344.13 1428,-1196.26 1434.14,-1185.24 1628.25,-800.7 1639,-794.1 1769.42,-714.08 4250.91,-814.89 4393,-758.1 4397.18,-756.43 4401.21,-754.2 4405.04,-751.63"/>
<polygon fill="#f91010" stroke="black" points="4407.22,-754.37 4413.07,-745.54 4402.99,-748.8 4407.22,-754.37"/>
</g>
<!-- ahriman_web_views_user_login -->
<g id="node98" class="node">
<title>ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="5382" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="5382" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5382" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5382" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5382" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user.</text>
<text text-anchor="middle" x="5382" 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="edge88" 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="M1614,-2173.57C1621.37,-2127.12 1811.27,-1852.56 1842,-1816.96 1890.48,-1760.78 1909.7,-1753.32 1968,-1707.42 2033.99,-1655.46 2051.69,-1643.83 2122,-1597.88 2201.35,-1546.02 2223.33,-1536.45 2305,-1488.34 2388.65,-1439.06 2405.73,-1419.24 2494,-1378.8 2651.82,-1306.49 3063.32,-1163.71 3232,-1122.72 3564.47,-1041.93 3654.09,-1052.22 3994,-1013.18 4179.25,-991.91 4233.09,-1029.73 4412,-977.18 4579.3,-928.04 4591.21,-841.57 4759,-794.1 4993.01,-727.91 5071.98,-827.71 5305,-758.1 5317.19,-754.46 5329.56,-748.62 5340.71,-742.38"/>
<polygon fill="#f91010" stroke="black" points="5342.49,-745.39 5349.36,-737.32 5338.96,-739.34 5342.49,-745.39"/>
</g>
<!-- ahriman_web_views_user_logout -->
<g id="node99" class="node">
<title>ahriman_web_views_user_logout</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="4930" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="4930" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4930" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4930" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4930" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user.</text>
<text text-anchor="middle" x="4930" 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="edge89" 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="M1614,-2071.8C1617.74,-1993.5 1666.02,-1988.5 1714,-1926.5 1871.76,-1722.64 1893.22,-1649.99 2094,-1488.34 2120.03,-1467.39 2131.19,-1469.27 2160,-1452.34 2291.42,-1375.12 2309.79,-1329.05 2450,-1269.26 2907.48,-1074.19 4146.56,-876.65 4637,-794.1 4745.53,-775.84 4782.49,-805.12 4882,-758.1 4886.18,-756.13 4890.25,-753.67 4894.14,-750.93"/>
<polygon fill="#f91010" stroke="black" points="4896.59,-753.46 4902.35,-744.57 4892.3,-747.93 4896.59,-753.46"/>
</g>
<!-- ahriman_web_web -->
<g id="node100" class="node">
<title>ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="5596" cy="-400.5" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="5596" y="-409" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5596" y="-398" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5596" 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="edge90" 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="M1652,-2361.53C1633.29,-2333.12 1621.45,-2329.57 1610,-2297.54 1554.4,-2142.06 1579.04,-2091.19 1591,-1926.5 1594.56,-1877.42 1589.3,-1862.86 1607,-1816.96 1715.16,-1536.44 1789.01,-1479.42 2004,-1269.26 2288.01,-991.63 2484.82,-1064.94 2737,-758.1 2764.45,-724.71 2757.63,-708.14 2776,-669.01 2799.15,-619.7 2797.8,-602.66 2831,-559.47 2869.37,-509.55 2878.41,-488.53 2937,-465.49 3063.2,-415.85 5197.22,-403.43 5547.52,-401.72"/>
<polygon fill="#f91010" stroke="black" points="5547.62,-405.22 5557.6,-401.67 5547.58,-398.22 5547.62,-405.22"/>
</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="3148" cy="-2550.5" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="3148" y="-2559" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3148" y="-2548" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3148" 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="3908" cy="-1634.65" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="3908" y="-1648.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3908" y="-1637.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3908" y="-1626.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="3908" 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="edge91" 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="M3185.28,-2543.81C3300.63,-2525.17 3644,-2461.47 3644,-2363.53 3644,-2363.53 3644,-2363.53 3644,-2267.55 3644,-2159.43 3775.78,-2203.69 3829,-2109.57 3870.28,-2036.57 3895.45,-1785.82 3904.35,-1681.62"/>
<polygon fill="#ce3b3b" stroke="black" points="3907.86,-1681.68 3905.21,-1671.42 3900.89,-1681.09 3907.86,-1681.68"/>
</g>
<!-- ahriman_core_alpm&#45;&gt;ahriman_models_package -->
<g id="edge92" 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="M3118.09,-2532.43C3082.91,-2512.77 3022.39,-2480.27 2968,-2457.51"/>
</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="2144" cy="-2652.26" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="2144" y="-2666.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2144" y="-2655.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2144" y="-2644.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">alpm.</text>
<text text-anchor="middle" x="2144" 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="edge93" 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="M2109.41,-2636.34C2053.14,-2609.46 1948,-2547.23 1948,-2457.51 1948,-2457.51 1948,-2457.51 1948,-2361.53 1948,-2240.06 1907.05,-1900.73 1995,-1816.96 2072.37,-1743.26 2854.08,-1813.06 2956,-1780.96 3013.51,-1762.84 3012.57,-1725.77 3070,-1707.42 3236.34,-1654.25 3689.22,-1726.31 3855,-1671.42 3859.33,-1669.99 3863.63,-1668.09 3867.8,-1665.92"/>
<polygon fill="#b42d2d" stroke="black" points="3869.77,-1668.83 3876.69,-1660.81 3866.28,-1662.76 3869.77,-1668.83"/>
</g>
<!-- ahriman_core_alpm_pacman&#45;&gt;ahriman_models_package -->
<g id="edge94" 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="M2170.71,-2625.56C2194.19,-2603.9 2230,-2573.07 2265,-2551.5"/>
</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="5764" cy="-2072.8" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5764" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5764" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="5764" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">alpm.</text>
<text text-anchor="middle" x="5764" 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="edge95" 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="M5730.44,-2055.12C5715.1,-2048.17 5696.49,-2040.66 5679,-2036.03 5645.9,-2027.29 4483.64,-1909.26 4455,-1890.5 4423.33,-1869.75 4442.81,-1838.96 4412,-1816.96 4346.33,-1770.05 4125.17,-1786.76 4056,-1745.19"/>
</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="5052" cy="-1159.49" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="5052" y="-1167.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5052" y="-1156.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="5052" 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="edge96" 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="M5089.12,-1152.31C5155.49,-1141.02 5298.73,-1115.55 5418,-1086.72 5588.85,-1045.43 5637.26,-1048.3 5798,-977.18 5946.8,-911.35 6105.88,-801.28 6180.56,-746.94"/>
<polygon fill="#f91010" stroke="black" points="6182.8,-749.63 6188.81,-740.91 6178.67,-743.98 6182.8,-749.63"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_base -->
<g id="edge97" 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="M5036.65,-1132.44C5020.68,-1105.53 4996.56,-1065.48 4986,-1050.95"/>
<path fill="none" stroke="black" d="M4986,-1048.95C4937.36,-982.01 4868.38,-1016.69 4834,-941.41"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_index -->
<g id="edge98" 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="M5013.85,-1157.77C4930.63,-1155.16 4727.59,-1143.01 4569,-1086.72 4478.95,-1054.76 4458.73,-1036.74 4384,-977.18 4366.59,-963.31 4233.58,-850.35 4246,-831.87"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge99" 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="M4986,-1048.95C4956.2,-1007.94 4966.13,-988.75 4948,-941.41"/>
<path fill="none" stroke="black" d="M4948,-939.41C4927.07,-884.76 4892.28,-886.78 4872,-831.87"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_user_login -->
<g id="edge100" 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="M5074.99,-1135.95C5122,-1089.05 5230.86,-976.27 5304,-867.64 5326.34,-834.46 5346.69,-794.02 5360.99,-763.05"/>
<polygon fill="#f91010" stroke="black" points="5364.26,-764.3 5365.23,-753.75 5357.89,-761.4 5364.26,-764.3"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge101" 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="M4948,-939.41C4933.25,-882.31 4929.62,-814.57 4929.14,-768.47"/>
<polygon fill="#f91010" stroke="black" points="4932.64,-768.38 4929.08,-758.4 4925.64,-768.42 4932.64,-768.38"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_web -->
<g id="edge102" 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="M5083.14,-1142.4C5107.94,-1128.95 5143.03,-1108.52 5171,-1086.72 5316.66,-973.2 5303.14,-881.18 5466,-794.1 5536.79,-756.25 5590,-818.4 5643,-758.1 5681.64,-714.16 5688.36,-547.72 5662,-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="5812" cy="-1744.19" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5812" y="-1758.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5812" y="-1747.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="5812" y="-1736.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth.</text>
<text text-anchor="middle" x="5812" y="-1725.19" 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="5698" cy="-1634.65" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5698" y="-1648.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5698" y="-1637.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="5698" y="-1626.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth.</text>
<text text-anchor="middle" x="5698" y="-1615.65" 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="edge103" 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="M5777.47,-1710.61C5763.21,-1697.17 5746.73,-1681.62 5732.48,-1668.17"/>
<polygon fill="#910707" stroke="black" points="5775.31,-1713.39 5784.98,-1717.7 5780.11,-1708.29 5775.31,-1713.39"/>
<polygon fill="#910707" stroke="black" points="5734.5,-1665.27 5724.82,-1660.95 5729.7,-1670.36 5734.5,-1665.27"/>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge104" 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="M5848.58,-1732.56C5942.3,-1704.61 6187.26,-1626.72 6239,-1561.88 6411.44,-1345.76 6358.82,-1207.58 6284,-941.41"/>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_web_views_base -->
<g id="edge105" 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="M5819.26,-1707.96C5823.97,-1677.98 5827.34,-1634.13 5816,-1597.88 5798.3,-1541.33 5790.84,-1518.78 5740,-1488.34 5620.24,-1416.63 5550.2,-1519.8 5428,-1452.34 5318.66,-1391.97 5366.37,-1283.45 5252,-1233.26"/>
<path fill="none" stroke="black" d="M5252,-1232.26C5115.79,-1177.92 5048.04,-1274.51 4924,-1196.26 4915.97,-1191.19 4835.58,-1060.32 4834,-1050.95"/>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge106" 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="M5824.17,-1708.95C5827.77,-1697.21 5831.21,-1683.88 5833,-1671.42 5844.92,-1588.26 5847.07,-1546.02 5786,-1488.34 5648.16,-1358.16 5533.57,-1460.59 5385,-1342.8 5354.42,-1318.55 5360.97,-1300.06 5337,-1269.26 5176.26,-1062.72 4955.01,-840.55 4865.73,-753.06"/>
<polygon fill="#910707" stroke="black" points="4868.11,-750.5 4858.52,-746.01 4863.22,-755.5 4868.11,-750.5"/>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_web_web -->
<g id="edge107" 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="M5849.09,-1735.15C5929.61,-1717.65 6114.25,-1677.2 6127,-1671.42 6250.39,-1615.45 6287.12,-1577.51 6339,-1452.34 6396.45,-1313.73 6432.41,-1271.37 6412,-1122.72 6383.51,-915.27 6383.31,-853.9 6285,-669.01 6265.35,-632.05 6242.57,-634.76 6224,-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="4616" cy="-1049.95" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4616" y="-1063.95" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4616" y="-1052.95" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4616" y="-1041.95" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth.</text>
<text text-anchor="middle" x="4616" 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="edge108" 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="M4597.44,-1017.54C4577.82,-982.4 4548.07,-923.11 4536,-867.64 4528.28,-832.18 4528.23,-790.99 4529.86,-760.27"/>
<polygon fill="#d92626" stroke="black" points="4533.35,-760.47 4530.47,-750.28 4526.37,-760.05 4533.35,-760.47"/>
</g>
<!-- ahriman_core_auth_helpers&#45;&gt;ahriman_web_views_user_login -->
<g id="edge109" 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="M4652.74,-1039.39C4698.96,-1026.95 4780.48,-1003.64 4848,-977.18 5057.71,-894.99 5105.3,-862.29 5305,-758.1 5316.28,-752.22 5328.33,-745.58 5339.46,-739.3"/>
<polygon fill="#d92626" stroke="black" points="5341.19,-742.34 5348.16,-734.35 5337.73,-736.25 5341.19,-742.34"/>
</g>
<!-- ahriman_core_auth_helpers&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge110" 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="M4615.06,-1012.89C4615.7,-957.25 4625.67,-850.96 4688,-794.1 4752.79,-735.01 4803.43,-797.05 4882,-758.1 4886.25,-756 4890.4,-753.4 4894.37,-750.54"/>
<polygon fill="#d92626" stroke="black" points="4896.54,-753.29 4902.24,-744.36 4892.22,-747.78 4896.54,-753.29"/>
</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="5584" cy="-1525.11" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5584" y="-1539.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5584" y="-1528.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="5584" y="-1517.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth.</text>
<text text-anchor="middle" x="5584" y="-1506.11" 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="edge112" 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="M5670.98,-1608.16C5655.22,-1593.3 5635.19,-1574.4 5618.32,-1558.49"/>
<polygon fill="#8b2222" stroke="black" points="5620.5,-1555.73 5610.82,-1551.41 5615.7,-1560.82 5620.5,-1555.73"/>
</g>
<!-- ahriman_core_auth_oauth&#45;&gt;ahriman_core_auth_auth -->
<g id="edge113" 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="M5613.63,-1548.61C5620.73,-1553.4 5628.44,-1558.13 5636,-1561.88 5681.7,-1584.56 5706.94,-1563.9 5745,-1597.88 5774.45,-1624.17 5791.85,-1666.06 5801.5,-1698.12"/>
<polygon fill="#8b2222" stroke="black" points="5798.26,-1699.49 5804.37,-1708.15 5804.99,-1697.57 5798.26,-1699.49"/>
</g>
<!-- ahriman_core_auth_oauth&#45;&gt;ahriman_web_views_user_login -->
<g id="edge114" 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="M5611.51,-1499.46C5645.12,-1467.3 5700.19,-1407.46 5722,-1342.8 5768.82,-1203.99 5756.81,-1155.48 5722,-1013.18 5695.92,-906.56 5695.73,-860.07 5608,-794.1 5543.14,-745.34 5501.24,-795.06 5429,-758.1 5425.16,-756.14 5421.4,-753.77 5417.79,-751.16"/>
<polygon fill="#8b2222" stroke="black" points="5419.67,-748.19 5409.66,-744.72 5415.33,-753.68 5419.67,-748.19"/>
</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="1329" cy="-2550.5" rx="44.6" ry="28.98"/>
<text text-anchor="middle" x="1329" y="-2559" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1329" y="-2548" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="1329" 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="edge115" 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="M1288.27,-2538.34C1258.59,-2528.49 1219.01,-2511.58 1192,-2485.5 1093.51,-2390.43 1094.14,-2337.93 1068,-2203.56 1053.78,-2130.47 1064.78,-2110.42 1068,-2036.03 1074.36,-1889.15 1064.3,-1502.35 1144,-1378.8 1159.44,-1354.87 1181.04,-1366.38 1197,-1342.8 1224.93,-1301.52 1209.19,-1281.68 1221,-1233.26"/>
</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="3656" cy="-1415.57" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="3656" y="-1429.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3656" y="-1418.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3656" y="-1407.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="3656" 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="edge116" 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="M1290.19,-2536.2C1266.3,-2526.02 1237.08,-2509.58 1220,-2485.5 1188.03,-2440.45 1196,-2418.78 1196,-2363.53 1196,-2363.53 1196,-2363.53 1196,-2267.55 1196,-2102.31 1539.01,-1784.81 1685,-1707.42 2064.4,-1506.3 2201.36,-1552.15 2626,-1488.34 2996.39,-1432.68 3448.33,-1420.07 3601.94,-1417.31"/>
<polygon fill="#e72222" stroke="black" points="3602.12,-1420.81 3612.06,-1417.14 3602,-1413.81 3602.12,-1420.81"/>
</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="2042" cy="-1853.73" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="2042" y="-1862.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2042" y="-1851.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2042" 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="edge117" 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="M1353.13,-2525.98C1460.25,-2421.61 1892.63,-2000.27 2011.58,-1884.37"/>
<polygon fill="#e72222" stroke="black" points="2014.24,-1886.66 2018.96,-1877.18 2009.35,-1881.65 2014.24,-1886.66"/>
</g>
<!-- ahriman_core_build_tools&#45;&gt;ahriman_models_package -->
<g id="edge118" 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="M1373.16,-2546.31C1542.38,-2534.05 2140.52,-2490.43 2149,-2485.5 2162,-2477.95 2153.25,-2460.41 2168,-2457.51"/>
<path fill="none" stroke="black" d="M2168,-2455.51C2182.75,-2452.61 2174.37,-2435.68 2187,-2427.52 2239.22,-2393.81 2419.6,-2374.7 2506.91,-2367.23"/>
<polygon fill="#e72222" stroke="black" points="2507.41,-2370.7 2517.08,-2366.38 2506.82,-2363.73 2507.41,-2370.7"/>
</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="2054" cy="-2072.8" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="2054" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2054" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2054" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">build_tools.</text>
<text text-anchor="middle" x="2054" 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="edge119" 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="M2017.71,-2049.41C1932.57,-1995.07 1718.28,-1847.7 1600,-1671.42 1553.7,-1602.41 1536.37,-1567.39 1562,-1488.34 1574.15,-1450.87 1605.06,-1454.93 1614,-1416.57"/>
<path fill="none" stroke="black" d="M1614,-1414.57C1618.69,-1374.5 1648.62,-1264.42 1623,-1233.26"/>
<path fill="none" stroke="black" d="M1623,-1232.26C1604.24,-1211.33 1593.6,-1212.98 1571,-1196.26 1518.37,-1157.32 1459.24,-1109.96 1422.56,-1080.12"/>
<polygon fill="#a51212" stroke="black" points="1424.59,-1077.27 1414.63,-1073.66 1420.17,-1082.69 1424.59,-1077.27"/>
</g>
<!-- ahriman_core_build_tools_task&#45;&gt;ahriman_core_repository_executor -->
<g id="edge120" 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="M2078.96,-2041.61C2164.09,-1941.11 2455.67,-1617.06 2778,-1488.34 2854.42,-1457.82 3422.86,-1427.89 3602.06,-1419.13"/>
<polygon fill="#a51212" stroke="black" points="3602.48,-1422.61 3612.3,-1418.63 3602.14,-1415.62 3602.48,-1422.61"/>
</g>
<!-- ahriman_core_build_tools_task&#45;&gt;ahriman_core_tree -->
<g id="edge121" 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="M2052.02,-2035.96C2049.84,-1996.52 2046.35,-1933.39 2044.12,-1893.01"/>
<polygon fill="#a51212" stroke="black" points="2047.61,-1892.8 2043.56,-1883.01 2040.62,-1893.19 2047.61,-1892.8"/>
</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="4181" cy="-2791.02" rx="50.82" ry="28.98"/>
<text text-anchor="middle" x="4181" y="-2799.52" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4181" y="-2788.52" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4181" 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="edge123" 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="M816,-2455.51C792.44,-2334.4 972.69,-1636.01 1038,-1488.34 1086.24,-1379.26 1120.1,-1363.66 1193,-1269.26 1205.39,-1253.22 1215.44,-1252.75 1221,-1233.26"/>
<path fill="none" stroke="black" d="M1221,-1232.26C1234.33,-1176.29 1250.87,-1164.9 1290,-1122.72 1306.16,-1105.3 1327.05,-1089.23 1345.3,-1076.73"/>
<polygon fill="#e50505" stroke="black" points="1347.65,-1079.36 1354.01,-1070.89 1343.75,-1073.55 1347.65,-1079.36"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_add -->
<g id="edge124" 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="M1910,-2651.26C1840.62,-2634.11 1855.26,-2580.56 1815,-2521.5 1794.82,-2491.91 1786.15,-2487.13 1766,-2457.51"/>
<path fill="none" stroke="black" d="M1766,-2455.51C1744.94,-2423.06 1730.09,-2422.56 1707,-2391.52 1630.92,-2289.28 1485.07,-2004.44 1428,-1890.5 1384.38,-1803.41 1015.53,-964.37 1031,-941.41"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_clean -->
<g id="edge125" 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="M314,-2267.55C196.19,-2067.45 329.29,-1976.01 304,-1745.19"/>
<path fill="none" stroke="black" d="M304,-1743.19C294.05,-1679.37 299.79,-1662.43 302,-1597.88 302.63,-1579.61 337.92,-957.28 347,-941.41"/>
<path fill="none" stroke="black" d="M347,-939.41C356.88,-923.02 355.04,-914.22 371,-903.64 441.56,-856.91 479.51,-899.3 558,-867.64 562.21,-865.94 566.45,-863.91 570.6,-861.68"/>
<polygon fill="#e50505" stroke="black" points="572.59,-864.57 579.5,-856.54 569.09,-858.51 572.59,-864.57"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_dump -->
<g id="edge126" 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="M4231.57,-2786.22C4478.53,-2766.87 5556.76,-2672.72 5827,-2485.5 5995.7,-2368.63 6201.04,-1765.06 6082,-1597.88 6053.63,-1558.03 6020.44,-1586.2 5978,-1561.88 5934.37,-1536.87 5938.4,-1507.73 5892,-1488.34 5716.69,-1415.07 5653.19,-1484.93 5466,-1452.34 5340.93,-1430.57 5314.01,-1405.94 5190,-1378.8 4909.8,-1317.47 4837.25,-1314.45 4554,-1269.26 4498.88,-1260.47 4111.09,-1210.02 4057,-1196.26 3965.22,-1172.91 3946.24,-1154.44 3857,-1122.72 3715.76,-1072.51 3685.16,-1041.73 3538,-1013.18 3238.72,-955.12 3155.92,-1011.54 2853,-977.18 2664.7,-955.83 2620.65,-930.12 2433,-903.64 2284.72,-882.72 2243.62,-902.56 2098,-867.64 2083.38,-864.14 2067.95,-858.94 2053.92,-853.59"/>
<polygon fill="#e50505" stroke="black" points="2055.05,-850.27 2044.46,-849.88 2052.49,-856.79 2055.05,-850.27"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_handler -->
<g id="edge127" 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="M2210,-2725.03C2205.12,-2708.6 1926.62,-2657.45 1910,-2653.26"/>
<path fill="none" stroke="black" d="M1910,-2651.26C1791.66,-2621.37 919.59,-2616.05 816,-2551.5"/>
<path fill="none" stroke="black" d="M816,-2549.5C721.63,-2490.69 672.45,-2490.61 622,-2391.52 602.94,-2354.09 614.23,-2339.49 612,-2297.54 605.84,-2181.48 598.46,-2151.47 612,-2036.03 654.74,-1671.79 637.55,-1560.57 803,-1233.26"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_init -->
<g id="edge128" 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="M457,-2725.03C342.88,-2680.32 438.09,-2570.25 390,-2457.51"/>
<path fill="none" stroke="black" d="M390,-2455.51C374.38,-2425.29 365.82,-2420.5 348,-2391.52 297.54,-2309.44 274.9,-2293.36 240,-2203.56 136.97,-1938.44 152,-2225.32 152,-1233.26 152,-1233.26 152,-1233.26 152,-1158.49 152,-1107.38 196,-981.27 228,-941.41"/>
<path fill="none" stroke="black" d="M228,-939.41C229.04,-937.96 299.24,-891.89 347.16,-860.53"/>
<polygon fill="#e50505" stroke="black" points="349.08,-863.46 355.53,-855.05 345.25,-857.6 349.08,-863.46"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_key_import -->
<g id="edge129" 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="M4130.07,-2789.4C3687,-2783.96 501.55,-2744.24 457,-2726.03"/>
<path fill="none" stroke="black" d="M457,-2725.03C176.21,-2610.26 235.57,-2403.85 162,-2109.57 116.07,-1925.84 114,-2261.92 114,-1233.26 114,-1233.26 114,-1233.26 114,-1158.49 114,-1056.27 137.55,-1029.15 190,-941.41"/>
<path fill="none" stroke="black" d="M190,-939.41C204.28,-913.17 225.55,-887.38 243.83,-867.64"/>
<polygon fill="#e50505" stroke="black" points="246.61,-869.78 250.93,-860.11 241.52,-864.98 246.61,-869.78"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_rebuild -->
<g id="edge130" 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="M304,-1743.19C292.48,-1648.8 401.83,-969.93 470,-903.64 534.44,-840.98 585.46,-900.8 669,-867.64 673.22,-865.97 677.47,-863.95 681.62,-861.73"/>
<polygon fill="#e50505" stroke="black" points="683.6,-864.62 690.53,-856.61 680.11,-858.55 683.6,-864.62"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_remove -->
<g id="edge131" 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="M1766,-2173.57C1685.94,-1758.96 1769.38,-1633.24 1637,-1232.26 1590.9,-1092.63 1500.57,-942.49 1455.66,-872.33"/>
<polygon fill="#e50505" stroke="black" points="1458.51,-870.29 1450.15,-863.77 1452.62,-874.08 1458.51,-870.29"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge132" 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="M1766,-2455.51C1666.11,-2274.95 1696.1,-2205.4 1676,-2000.03 1668.03,-1918.57 1670.96,-1894.89 1696,-1816.96 1701.41,-1800.11 1708.4,-1798.04 1713,-1780.96 1797.64,-1466.53 1741.05,-1374.79 1775,-1050.95"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_report -->
<g id="edge133" 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="M457,-2725.03C364.64,-2683.36 458.01,-2368.45 436,-2269.55"/>
<path fill="none" stroke="black" d="M436,-2267.55C429.31,-2238.23 419.27,-2233.17 414,-2203.56 406.68,-2162.42 412.44,-2151.35 412,-2109.57 411.13,-2028.21 411.63,-2007.86 412,-1926.5 412.44,-1829.09 411.96,-1804.63 418,-1707.42 433.12,-1464.06 461,-1404.32 461,-1160.49 461,-1160.49 461,-1160.49 461,-1048.95 461,-973.91 484.85,-945.7 547,-903.64 633.79,-844.92 682.12,-905.04 780,-867.64 784.24,-866.02 788.5,-864.04 792.66,-861.84"/>
<polygon fill="#e50505" stroke="black" points="794.63,-864.75 801.59,-856.76 791.16,-858.67 794.63,-864.75"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_search -->
<g id="edge134" 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="M4129.69,-2789.67C3821.04,-2787.41 2224.09,-2773.46 2210,-2726.03"/>
<path fill="none" stroke="black" d="M2210,-2725.03C2208.6,-2720.32 806.68,-2581 802,-2579.49 722.44,-2553.74 692.41,-2549.85 639,-2485.5 610.73,-2451.44 614.13,-2435.04 606,-2391.52 553.22,-2109.15 608,-2032.45 608,-1745.19 608,-1745.19 608,-1745.19 608,-1633.65 608,-1454.67 651,-1412.23 651,-1233.26 651,-1233.26 651,-1233.26 651,-1048.95 651,-957.72 715.06,-945.75 796,-903.64 878.45,-860.75 915.51,-901.67 1002,-867.64 1006.23,-865.98 1010.47,-863.97 1014.63,-861.75"/>
<polygon fill="#e50505" stroke="black" points="1016.61,-864.65 1023.54,-856.64 1013.12,-858.58 1016.61,-864.65"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge135" 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="M816,-2549.5C582.25,-2373.07 841,-1568.15 841,-1416.57 841,-1416.57 841,-1416.57 841,-1232.26 841,-1177.17 864.58,-1165.73 899,-1122.72 945.79,-1064.26 1089.83,-940.51 1155,-903.64 1199.04,-878.73 1217.42,-889.61 1263,-867.64 1267.03,-865.7 1271.13,-863.51 1275.16,-861.19"/>
<polygon fill="#e50505" stroke="black" points="1277.09,-864.12 1283.87,-855.97 1273.49,-858.11 1277.09,-864.12"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_sign -->
<g id="edge136" 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="M436,-2267.55C377.29,-1965.72 438.58,-1107.24 669,-903.64 743.9,-837.46 797.76,-903.67 891,-867.64 895.24,-866.01 899.49,-864.01 903.65,-861.81"/>
<polygon fill="#e50505" stroke="black" points="905.62,-864.71 912.57,-856.71 902.15,-858.64 905.62,-864.71"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_status -->
<g id="edge137" 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="M816,-2549.5C783.37,-2524.87 823.62,-2497.68 816,-2457.51"/>
<path fill="none" stroke="black" d="M816,-2455.51C813.41,-2441.85 810.29,-2438.7 802,-2427.52 788.14,-2408.84 773.19,-2412.89 764,-2391.52 753.82,-2367.85 762.39,-2359.26 764,-2333.54 789.61,-1923.6 879,-1827.3 879,-1416.57 879,-1416.57 879,-1416.57 879,-1232.26 879,-1166.34 1313.61,-932.26 1373,-903.64 1420.1,-880.95 1437.78,-890.09 1485,-867.64 1489.04,-865.72 1493.14,-863.55 1497.18,-861.24"/>
<polygon fill="#e50505" stroke="black" points="1499.11,-864.17 1505.9,-856.03 1495.52,-858.16 1499.11,-864.17"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_status_update -->
<g id="edge138" 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="M4504,-2725.03C4631.42,-2687.58 5554.02,-2540.28 5675,-2485.5 5738,-2456.98 5757.22,-2446.63 5799,-2391.52 5873.58,-2293.15 5905.87,-2405.52 6006,-1780.96 6019.92,-1694.13 5992.23,-1660.99 5931,-1597.88 5902.26,-1568.25 5819.83,-1502.33 5781,-1488.34 5657.21,-1443.74 5300.25,-1524.15 5190,-1452.34 5159.17,-1432.26 5182.83,-1398.87 5152,-1378.8 5096.21,-1342.49 4619.97,-1351.67 4554,-1342.8 4534.39,-1340.16 3874.62,-1205.26 3857,-1196.26 3813.7,-1174.15 3819.92,-1143.59 3776,-1122.72 3679.38,-1076.8 3643.64,-1103.6 3538,-1086.72 3343.51,-1055.65 3296.76,-1034.86 3101,-1013.18 2805.49,-980.46 2725.9,-1028.28 2433,-977.18 2321,-957.64 2298.94,-928.48 2188,-903.64 2082.75,-880.08 2050.07,-902.52 1948,-867.64 1942.88,-865.89 1937.7,-863.74 1932.61,-861.36"/>
<polygon fill="#e50505" stroke="black" points="1934.11,-858.2 1923.6,-856.88 1931,-864.47 1934.11,-858.2"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_sync -->
<g id="edge139" 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="M390,-2455.51C358.4,-2372 365.34,-2342.6 314,-2269.55"/>
<path fill="none" stroke="black" d="M314,-2267.55C296.82,-2236.12 279.09,-2236.49 265,-2203.56 209.59,-2074.08 226.92,-2030.9 216,-1890.5 190.64,-1564.41 285.74,-1486.73 309,-1160.49"/>
<path fill="none" stroke="black" d="M309,-1158.49C302.82,-1044.89 261.52,-992.15 333,-903.64 366.39,-862.31 398.96,-890.34 447,-867.64 451.05,-865.73 455.15,-863.56 459.2,-861.26"/>
<polygon fill="#e50505" stroke="black" points="461.12,-864.19 467.91,-856.06 457.53,-858.18 461.12,-864.19"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_update -->
<g id="edge140" 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="M4129.98,-2789.48C3695.92,-2784.83 634.29,-2751.24 443,-2726.03 375.78,-2717.17 347.77,-2731.6 295,-2689.03 93.41,-2526.38 0,-2389.04 0,-1635.65 0,-1635.65 0,-1635.65 0,-1524.11 0,-1421.89 59.42,-1407.9 76,-1307.03"/>
<path fill="none" stroke="black" d="M76,-1305.03C81.93,-1241.07 76,-1224.73 76,-1160.49 76,-1160.49 76,-1160.49 76,-1048.95 76,-982.73 113.02,-913.66 140.34,-871.7"/>
<polygon fill="#e50505" stroke="black" points="143.39,-873.43 146.01,-863.17 137.56,-869.56 143.39,-873.43"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_user -->
<g id="edge141" 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="M1910,-2651.26C1839.56,-2633.47 1855.81,-2402.51 1833,-2333.54 1809.05,-2261.13 1772.17,-2251.58 1766,-2175.57"/>
<path fill="none" stroke="black" d="M1766,-2173.57C1757.79,-2042.27 1863.37,-1723 1904,-1597.88 1958.17,-1431.05 1991.11,-1396.61 2055,-1233.26 2080.28,-1168.62 2086.16,-1152.27 2109,-1086.72 2125.86,-1038.33 2135.34,-1027.51 2145,-977.18 2151.3,-944.35 2153.5,-906.66 2154.14,-877.89"/>
<polygon fill="#e50505" stroke="black" points="2157.64,-877.78 2154.32,-867.72 2150.65,-877.66 2157.64,-877.78"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_web -->
<g id="edge142" 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="M2210,-2651.26C2193.97,-2592.94 2208.82,-2564.85 2251,-2521.5 2285.11,-2486.45 2326.63,-2525.35 2355,-2485.5 2369.95,-2464.51 2363.52,-2451.84 2355,-2427.52 2312.85,-2307.27 2228.25,-2319.78 2176,-2203.56 2100.83,-2036.37 2090.82,-1548.56 2160,-1378.8 2219.34,-1233.18 2609,-989.12 2609,-831.87 2609,-831.87 2609,-831.87 2609,-493.48 2609,-458.37 2580.78,-356.39 2609,-335.5"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_lock -->
<g id="edge143" 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="M816,-2549.5C765.96,-2515.42 1191.98,-2244.03 1237,-2203.56 1264.34,-2178.98 1267.26,-2168.5 1296,-2145.57 1607.78,-1896.93 1708.52,-1854.96 2079,-1707.42 2233.58,-1645.85 2274.78,-1634.93 2437,-1597.88 2584.04,-1564.29 2760.72,-1541.98 2849.01,-1532.04"/>
<polygon fill="#e50505" stroke="black" points="2849.53,-1535.5 2859.08,-1530.92 2848.75,-1528.55 2849.53,-1535.5"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_alpm_pacman -->
<g id="edge144" 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="M2210,-2725.03C2205.29,-2708.44 2193.88,-2693.69 2181.85,-2681.94"/>
<polygon fill="#e50505" stroke="black" points="2184.06,-2679.22 2174.33,-2675.02 2179.32,-2684.37 2184.06,-2679.22"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_auth_auth -->
<g id="edge145" 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="M4230.07,-2783.07C4293.94,-2773.39 4408.65,-2753.86 4504,-2726.03"/>
<path fill="none" stroke="black" d="M4504,-2725.03C4606.57,-2695.08 4616.52,-2648.94 4718,-2615.49 4961.43,-2535.25 5033.05,-2556.26 5287,-2521.5 5433.61,-2501.44 5479.03,-2536.35 5618,-2485.5 5661.29,-2469.66 5664.61,-2451.47 5704,-2427.52 5732.55,-2410.16 5750.18,-2418.42 5770,-2391.52 5842.18,-2293.56 5887.74,-1976.01 5878,-1854.73"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge146" 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="M4428,-2725.03C4493.53,-2672.49 4507.67,-2654.6 4582,-2615.49 4635.81,-2587.17 4781.46,-2541.18 4839,-2521.5 5149.28,-2415.4 5334.63,-2551.56 5542,-2297.54 5605.24,-2220.07 5520.53,-2162.88 5566,-2073.8"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge147" 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="M4238,-2455.51C4210.43,-2417.92 4215.48,-2070.38 4247,-2036.03 4297.63,-1980.87 4509.69,-2019.44 4582,-2000.03 4813.97,-1937.77 4858.82,-1883.52 5076,-1780.96 5250.54,-1698.53 5454.96,-1593.27 5541.68,-1548.2"/>
<polygon fill="#e50505" stroke="black" points="5543.43,-1551.23 5550.69,-1543.51 5540.2,-1545.02 5543.43,-1551.23"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge148" 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="M2210,-2725.03C2201.29,-2694.34 2222.91,-2682.43 2210,-2653.26"/>
<path fill="none" stroke="black" d="M2210,-2651.26C2202.72,-2634.8 2202.93,-2628.97 2191,-2615.49 2124.15,-2539.97 2051.61,-2574.94 2005,-2485.5 1993.09,-2462.65 2004.32,-2453.28 2005,-2427.52 2006.11,-2385.71 2004.4,-2374.99 2010,-2333.54 2013.9,-2304.69 2021.1,-2298.52 2024,-2269.55"/>
<path fill="none" stroke="black" d="M2024,-2267.55C2026.31,-2216.36 2036.28,-2158.37 2044.1,-2119.29"/>
<polygon fill="#e50505" stroke="black" points="2047.57,-2119.78 2046.14,-2109.28 2040.71,-2118.38 2047.57,-2119.78"/>
</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="3724" cy="-1744.19" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3724" y="-1758.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3724" y="-1747.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3724" y="-1736.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report.</text>
<text text-anchor="middle" x="3724" 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="edge149" 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="M4131.59,-2783.74C4067.26,-2774.51 3959.98,-2755.17 3934,-2726.03"/>
<path fill="none" stroke="black" d="M3934,-2725.03C3918.52,-2707.66 3910.87,-2706.92 3896,-2689.03 3849.47,-2633.03 3819.48,-2623.23 3807,-2551.5"/>
<path fill="none" stroke="black" d="M3807,-2549.5C3770.53,-2456.83 3682,-2463.12 3682,-2363.53 3682,-2363.53 3682,-2363.53 3682,-2267.55 3682,-2164.61 3626.82,-2127.01 3675,-2036.03 3688.33,-2010.87 3707.92,-2020.23 3728,-2000.03 3741.5,-1986.46 3748.07,-1983 3752,-1964.27"/>
<path fill="none" stroke="black" d="M3752,-1962.27C3763.36,-1902.88 3749.78,-1833.46 3737.88,-1789.42"/>
<polygon fill="#e50505" stroke="black" points="3741.2,-1788.3 3735.14,-1779.61 3734.46,-1790.18 3741.2,-1788.3"/>
</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="3506" cy="-1525.11" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3506" y="-1539.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3506" y="-1528.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3506" y="-1517.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report.</text>
<text text-anchor="middle" x="3506" 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="edge150" 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="M2800,-2361.53C2761.54,-2332.82 2794.5,-2192.81 2803,-2145.57 2830.45,-1992.99 2817.07,-1932.89 2920,-1816.96 2959.82,-1772.11 3332.83,-1603.28 3462.13,-1545.58"/>
<polygon fill="#e50505" stroke="black" points="3463.66,-1548.73 3471.37,-1541.46 3460.81,-1542.34 3463.66,-1548.73"/>
</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="3594" cy="-1853.73" rx="54.39" ry="36.54"/>
<text text-anchor="middle" x="3594" y="-1867.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3594" y="-1856.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3594" y="-1845.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report.</text>
<text text-anchor="middle" x="3594" 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="edge151" 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="M2210,-2725.03C2194.55,-2670.59 3178.33,-2716.15 3228,-2689.03 3280.01,-2660.63 3271.02,-2628.72 3304,-2579.49 3308.53,-2572.73 3457.96,-2339.93 3463,-2333.54 3487.33,-2302.68 3516.15,-2308.05 3524,-2269.55"/>
<path fill="none" stroke="black" d="M3524,-2267.55C3551.04,-2134.99 3498.35,-2089.31 3550,-1964.27"/>
</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="3544" cy="-1634.65" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3544" y="-1648.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3544" y="-1637.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3544" y="-1626.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report.</text>
<text text-anchor="middle" x="3544" 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="edge152" 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="M3807,-2549.5C3770.95,-2460.06 3772.88,-2412.67 3828,-2333.54 3859.46,-2288.39 3916.81,-2321.83 3934,-2269.55"/>
<path fill="none" stroke="black" d="M3934,-2267.55C3944.1,-2233.74 3901.75,-2235.61 3887,-2203.56 3827.27,-2073.77 3841.88,-2030.62 3814,-1890.5 3807.61,-1858.4 3817.83,-1762.4 3790,-1745.19"/>
<path fill="none" stroke="black" d="M3790,-1743.19C3774.51,-1734.02 3785.41,-1718.21 3771,-1707.42 3707.44,-1659.82 3669.05,-1702.54 3596,-1671.42 3591.21,-1669.38 3586.4,-1666.86 3581.76,-1664.12"/>
<polygon fill="#e50505" stroke="black" points="3583.38,-1661 3573.06,-1658.62 3579.64,-1666.92 3583.38,-1661"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_repository_properties -->
<g id="edge153" 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="M3807,-2549.5C3799.97,-2525.99 3837.02,-2352.16 3853,-2333.54 3882.4,-2299.27 3916.47,-2329.86 3948,-2297.54 3978.92,-2265.85 3973.56,-2247.2 3981,-2203.56 4014.07,-2009.54 3952.32,-1775.93 3922.64,-1680.02"/>
<polygon fill="#e50505" stroke="black" points="3925.94,-1678.86 3919.61,-1670.37 3919.26,-1680.96 3925.94,-1678.86"/>
</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="4388" cy="-2072.8" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4388" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4388" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4388" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">sign.</text>
<text text-anchor="middle" x="4388" 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="edge154" 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="M4428,-2651.26C4389.81,-2439.83 4307.93,-2387.69 4342,-2175.57"/>
<path fill="none" stroke="black" d="M4342,-2173.57C4344.28,-2152.41 4353.31,-2130.75 4362.77,-2113.04"/>
<polygon fill="#e50505" stroke="black" points="4365.91,-2114.6 4367.72,-2104.16 4359.8,-2111.19 4365.91,-2114.6"/>
</g>
<!-- ahriman_core_spawn -->
<g id="node50" class="node">
<title>ahriman_core_spawn</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b62020" stroke="black" cx="3934" cy="-2174.57" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="3934" y="-2183.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3934" y="-2172.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3934" y="-2161.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">spawn</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_spawn -->
<g id="edge155" 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="M3934,-2267.55C3939.62,-2250.46 3940.29,-2230.61 3939.29,-2213.73"/>
<polygon fill="#e50505" stroke="black" points="3942.77,-2213.34 3938.47,-2203.65 3935.79,-2213.9 3942.77,-2213.34"/>
</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="3086" cy="-1853.73" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3086" y="-1867.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3086" y="-1856.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3086" y="-1845.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="3086" 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="edge156" 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="M3006,-2549.5C2956.07,-2495.9 3038.99,-2463.42 3053,-2391.52 3089.48,-2204.28 3071.51,-2153.7 3094,-1964.27"/>
</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="3549" cy="-1159.49" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3549" y="-1173.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3549" y="-1162.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3549" y="-1151.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="3549" 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="edge157" 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="M3934,-2725.03C3880.08,-2650.14 4048,-2643.77 4048,-2551.5 4048,-2551.5 4048,-2551.5 4048,-2361.53 4048,-2114.16 4186.39,-2063.22 4163,-1816.96 4153.17,-1713.46 4161.3,-1663.91 4081,-1597.88 4040.94,-1564.94 4008.97,-1596.1 3970,-1561.88 3929.51,-1526.32 3939.39,-1501.8 3918,-1452.34 3911.22,-1436.67 3915.37,-1429.31 3904,-1416.57"/>
<path fill="none" stroke="black" d="M3904,-1414.57C3890.52,-1401.66 3897.02,-1389.88 3882,-1378.8 3830.3,-1340.66 3791.12,-1384.21 3742,-1342.8 3714.61,-1319.71 3732.02,-1296.71 3709,-1269.26 3690.7,-1247.44 3668.3,-1258.94 3656,-1233.26"/>
</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="3318" cy="-1744.19" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="3318" y="-1758.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3318" y="-1747.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3318" y="-1736.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="3318" 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="edge158" 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="M3214,-2651.26C3250.47,-2581.44 3193.56,-2376.27 3191,-2297.54 3185.15,-2117.27 3191.39,-1848.04 3209,-1816.96 3212.94,-1810.01 3245.57,-1788.97 3274.11,-1771.45"/>
<polygon fill="#e50505" stroke="black" points="3276.09,-1774.34 3282.8,-1766.14 3272.44,-1768.36 3276.09,-1774.34"/>
</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="4294" cy="-2072.8" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4294" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4294" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4294" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload.</text>
<text text-anchor="middle" x="4294" 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="edge159" 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="M4352,-2549.5C4273.9,-2433.69 4295.64,-2379.16 4300,-2239.56 4300.89,-2211.07 4306.3,-2203.97 4304,-2175.57"/>
<path fill="none" stroke="black" d="M4304,-2173.57C4301.57,-2156.15 4299.5,-2136.94 4297.89,-2120.07"/>
<polygon fill="#e50505" stroke="black" points="4301.35,-2119.53 4296.94,-2109.9 4294.38,-2120.18 4301.35,-2119.53"/>
</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="3256" cy="-1853.73" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3256" y="-1867.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3256" y="-1856.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3256" y="-1845.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload.</text>
<text text-anchor="middle" x="3256" 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="edge160" 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="M3214,-2651.26C3241.8,-2605.39 3297.95,-2229.16 3296,-2175.57"/>
</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="4084" cy="-1963.27" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4084" y="-1977.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4084" y="-1966.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4084" y="-1955.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload.</text>
<text text-anchor="middle" x="4084" 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="edge161" 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="M3934,-2725.03C3841.49,-2606.48 3966.76,-2539.93 3991,-2391.52 3999.84,-2337.38 3990.23,-2320.73 4010,-2269.55"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_web_views_base -->
<g id="edge162" 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="M4231.81,-2787.38C4285.1,-2782.36 4369.15,-2767.86 4428,-2726.03"/>
<path fill="none" stroke="black" d="M4428,-2725.03C4454,-2706.55 4435.28,-2684.31 4428,-2653.26"/>
<path fill="none" stroke="black" d="M4428,-2651.26C4415.28,-2596.99 4386.76,-2595.07 4352,-2551.5"/>
<path fill="none" stroke="black" d="M4352,-2549.5C4311.4,-2498.6 4278.34,-2508.61 4238,-2457.51"/>
<path fill="none" stroke="black" d="M4238,-2455.51C4122.42,-2309.1 4113.98,-2186.67 4224,-2036.03 4249.9,-2000.58 4275.67,-2017.38 4316,-2000.03 4497.92,-1921.78 4559.35,-1916.21 4704,-1780.96 4847.09,-1647.16 4960.12,-1612.3 4952,-1416.57"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_web_web -->
<g id="edge163" 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="M2210,-2725.03C2199.3,-2670.14 3187.5,-2702.5 3214,-2653.26"/>
<path fill="none" stroke="black" d="M3214,-2651.26C3257.56,-2570.3 3088.46,-2640.84 3020,-2579.49 3009.64,-2570.2 3015.14,-2561.98 3006,-2551.5"/>
<path fill="none" stroke="black" d="M3006,-2549.5C2924.93,-2456.54 2899.96,-2435.79 2800,-2363.53"/>
<path fill="none" stroke="black" d="M2800,-2361.53C2788.06,-2352.39 2793.63,-2341.7 2781,-2333.54 2702.94,-2283.09 2644.36,-2359.41 2575,-2297.54 2384,-2127.15 2412,-2001.14 2412,-1745.19 2412,-1745.19 2412,-1745.19 2412,-1633.65 2412,-1280.87 2951,-1403.73 2951,-1050.95 2951,-1050.95 2951,-1050.95 2951,-712.56 2951,-616.08 2870.77,-549.06 2951,-495.48"/>
</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="4181" cy="-2885" rx="44.6" ry="28.98"/>
<text text-anchor="middle" x="4181" y="-2893.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4181" y="-2882.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4181" 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="edge164" 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="M4136.4,-2884.24C3765.67,-2885.95 1190.4,-2891.64 436,-2726.03 390.93,-2716.13 372.67,-2720.57 339,-2689.03 289.94,-2643.06 276,-2618.73 276,-2551.5 276,-2551.5 276,-2551.5 276,-2173.57 276,-1835.54 440.89,-1783.29 606,-1488.34 662.56,-1387.3 665.1,-1351.12 747,-1269.26 767.93,-1248.34 788.64,-1259.13 803,-1233.26"/>
<path fill="none" stroke="black" d="M803,-1232.26C820.72,-1183.88 813.02,-1165.99 841,-1122.72 866.23,-1083.71 898.44,-1093.54 917,-1050.95"/>
<path fill="none" stroke="black" d="M917,-1048.95C924.96,-1028.17 933.43,-1004.97 940.43,-985.46"/>
<polygon fill="#f91010" stroke="black" points="943.77,-986.51 943.84,-975.92 937.18,-984.15 943.77,-986.51"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_application_handlers_status_update -->
<g id="edge165" 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="M6220,-1962.27C6192.94,-1795.28 6232.73,-1714.31 6110,-1597.88 6074.52,-1564.21 6045.74,-1590.39 6006,-1561.88 5972.4,-1537.77 5985.39,-1507.99 5949,-1488.34 5859.76,-1440.14 5591.89,-1478.88 5494,-1452.34 5421.57,-1432.7 5413.99,-1399.99 5342,-1378.8 5215.71,-1341.63 5176.91,-1369.46 5048,-1342.8 4934.58,-1319.34 4911.41,-1292.75 4798,-1269.26 4537.54,-1215.33 4463.92,-1252.75 4204,-1196.26 4097.89,-1173.2 4076.53,-1148.31 3971,-1122.72 3691.4,-1054.93 3617.93,-1053.07 3333,-1013.18 2886.28,-950.65 2772.74,-949.48 2324,-903.64 2156.99,-886.58 2108.25,-917.66 1948,-867.64 1942.76,-866.01 1937.47,-863.91 1932.29,-861.55"/>
<polygon fill="#f91010" stroke="black" points="1933.66,-858.32 1923.14,-857.06 1930.58,-864.6 1933.66,-858.32"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_application_lock -->
<g id="edge166" 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="M4136.21,-2883.1C3898.62,-2878.16 2761.78,-2852.26 1834,-2792.02"/>
<path fill="none" stroke="black" d="M1834,-2790.02C1525.21,-2769.97 740.79,-2810.13 443,-2726.03 410.26,-2716.78 393.29,-2718.32 376,-2689.03 316.93,-2588.93 327.02,-2532.92 376,-2427.52 489.7,-2182.83 608,-2173.8 840,-2036.03 1374.76,-1718.48 1554.99,-1696.9 2169,-1597.88 2420.8,-1557.27 2725.03,-1536.47 2848.67,-1529.19"/>
<polygon fill="#f91010" stroke="black" points="2848.89,-1532.68 2858.67,-1528.6 2848.48,-1525.69 2848.89,-1532.68"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_alpm_repo -->
<g id="edge167" 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="M5718,-2455.51C5725.49,-2415.32 5703.32,-2401.69 5718,-2363.53"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_auth_auth -->
<g id="edge168" 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="M4225.75,-2883.91C4513.62,-2883.11 6098.98,-2874.91 6296,-2792.02"/>
<path fill="none" stroke="black" d="M6296,-2790.02C6352.03,-2766.45 6318.59,-2709.69 6296,-2653.26"/>
<path fill="none" stroke="black" d="M6296,-2651.26C6223.55,-2534.98 6193.35,-2513 6130,-2391.52 6002.19,-2146.44 6051.73,-2042.53 5892,-1816.96 5880.54,-1800.77 5864.8,-1785.65 5850.31,-1773.5"/>
<polygon fill="#f91010" stroke="black" points="5852.39,-1770.68 5842.43,-1767.07 5847.96,-1776.1 5852.39,-1770.68"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge169" 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="M6296,-2651.26C6267.47,-2570.01 6319.18,-2540.44 6296,-2457.51"/>
<path fill="none" stroke="black" d="M6296,-2455.51C6294.67,-2450.57 5930.64,-1821.34 5928,-1816.96 5867.59,-1716.75 5879.02,-1663.28 5782,-1597.88 5723.36,-1558.35 5690.34,-1593.34 5627,-1561.88 5624.39,-1560.58 5621.8,-1559.1 5619.27,-1557.49"/>
<polygon fill="#f91010" stroke="black" points="5621.09,-1554.49 5610.89,-1551.62 5617.07,-1560.23 5621.09,-1554.49"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge170" 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="M1834,-2790.02C1692.57,-2780.65 1951.39,-2268.16 2031.48,-2115.97"/>
<polygon fill="#f91010" stroke="black" points="2034.69,-2117.37 2036.27,-2106.9 2028.5,-2114.11 2034.69,-2117.37"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_configuration -->
<g id="edge171" 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="M4181,-2855.9C4181,-2847.87 4181,-2838.96 4181,-2830.42"/>
<polygon fill="#f91010" stroke="black" points="4184.5,-2830.26 4181,-2820.26 4177.5,-2830.26 4184.5,-2830.26"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_report_report -->
<g id="edge172" 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="M4542,-2725.03C4509.74,-2654.98 4542,-2628.62 4542,-2551.5 4542,-2551.5 4542,-2551.5 4542,-2361.53 4542,-2153.29 4548.96,-2029.54 4368,-1926.5 4255.9,-1862.67 4202.04,-1932.27 4080,-1890.5 4019.38,-1869.74 4015.41,-1840.96 3956,-1816.96 3891.63,-1790.95 3856.42,-1826.48 3804,-1780.96 3791.11,-1769.76 3804.69,-1753.89 3790,-1745.19"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge173" 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="M4466,-2651.26C4401.43,-2552.82 4436.92,-2507 4414,-2391.52 4403.24,-2337.33 4419.33,-2316.37 4390,-2269.55"/>
<path fill="none" stroke="black" d="M4390,-2267.55C4364.63,-2229.04 4337.06,-2221.41 4342,-2175.57"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_status_watcher -->
<g id="edge174" 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="M6296,-2455.51C6290.83,-2414.96 6303.81,-2403.66 6296,-2363.53"/>
<path fill="none" stroke="black" d="M6296,-2361.53C6290.44,-2332.95 6287.77,-2326.07 6282,-2297.54 6252.12,-2149.87 6245.04,-2112.83 6220,-1964.27"/>
<path fill="none" stroke="black" d="M6220,-1962.27C6143.29,-1659.8 6004.94,-1563.17 5702,-1488.34 5498.41,-1438.05 4967,-1479.09 4759,-1452.34 4497.6,-1418.72 3842.7,-1301.34 3601,-1196.26 3596.22,-1194.18 3591.43,-1191.65 3586.79,-1188.89"/>
<polygon fill="#f91010" stroke="black" points="3588.41,-1185.78 3578.09,-1183.38 3584.67,-1191.69 3588.41,-1185.78"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_upload_upload -->
<g id="edge175" 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="M4542,-2725.03C4522.56,-2682.83 4494.38,-2690.04 4466,-2653.26"/>
<path fill="none" stroke="black" d="M4466,-2651.26C4454.43,-2636.26 4429.67,-2595.78 4420,-2579.49 4322.76,-2415.65 4305.25,-2370.8 4214,-2203.56 4176.11,-2134.1 4132.2,-2053.2 4106.34,-2005.5"/>
<polygon fill="#f91010" stroke="black" points="4109.26,-2003.53 4101.42,-1996.41 4103.1,-2006.87 4109.26,-2003.53"/>
</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="4618" cy="-2550.5" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="4618" y="-2559" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4618" y="-2548" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4618" 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="edge176" 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="M4542,-2790.02C4544.9,-2750.15 4582.87,-2644.42 4604.02,-2588.06"/>
<polygon fill="#f91010" stroke="black" points="4607.38,-2589.06 4607.63,-2578.47 4600.83,-2586.59 4607.38,-2589.06"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_auth_settings -->
<g id="edge177" 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="M4542,-2790.02C4671.8,-2551.47 5631.95,-2715.1 5718,-2457.51"/>
<path fill="none" stroke="black" d="M5718,-2455.51C5726.77,-2406.85 5656.74,-2431.02 5627,-2391.52 5557.44,-2299.13 5597.65,-2246.96 5542,-2145.57 5534.54,-2131.97 5524.49,-2118.32 5514.91,-2106.63"/>
<polygon fill="#f91010" stroke="black" points="5517.5,-2104.28 5508.39,-2098.88 5512.15,-2108.78 5517.5,-2104.28"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_package -->
<g id="edge178" 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="M4225.63,-2881.92C4321.13,-2876.22 4537.08,-2856.26 4542,-2792.02"/>
<path fill="none" stroke="black" d="M4542,-2790.02C4549.16,-2696.51 3796.81,-2702.48 3704,-2689.03 3667.98,-2683.8 3088.46,-2599.42 3058,-2579.49 3032.22,-2562.62 3044.36,-2540.37 3020,-2521.5 3015.64,-2518.13 2714.4,-2416.96 2599.16,-2378.32"/>
<polygon fill="#f91010" stroke="black" points="2600.16,-2374.97 2589.57,-2375.11 2597.94,-2381.61 2600.16,-2374.97"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_report_settings -->
<g id="edge179" 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="M4542,-2790.02C4548.8,-2681.23 4168.26,-2713.32 4062,-2689.03 3694.26,-2604.95 3592.81,-2613.6 3238,-2485.5 3163.76,-2458.7 3082.3,-2416.82 3032.66,-2389.78"/>
<polygon fill="#f91010" stroke="black" points="3034.22,-2386.64 3023.77,-2384.91 3030.86,-2392.78 3034.22,-2386.64"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_sign_settings -->
<g id="edge180" 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="M4542,-2790.02C4547.3,-2703.63 4289.05,-2696.35 4266,-2689.03 3992.86,-2602.26 3684.52,-2447.45 3570,-2387.84"/>
<polygon fill="#f91010" stroke="black" points="3571.62,-2384.74 3561.13,-2383.22 3568.38,-2390.94 3571.62,-2384.74"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_upload_settings -->
<g id="edge181" 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="M4542,-2790.02C4543.74,-2761.63 4558.34,-2749.31 4542,-2726.03"/>
<path fill="none" stroke="black" d="M4542,-2725.03C4517.25,-2689.76 4491.39,-2706.47 4452,-2689.03 4263.06,-2605.37 4199.67,-2608.99 4034,-2485.5 4000.37,-2460.44 3968.69,-2424.32 3947.67,-2397.89"/>
<polygon fill="#f91010" stroke="black" points="3950.42,-2395.73 3941.49,-2390.03 3944.91,-2400.06 3950.42,-2395.73"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_web_views_status_package -->
<g id="edge182" 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="M6296,-2361.53C6274.75,-1960.89 6402.93,-1707.7 6067,-1488.34 5877.61,-1364.67 5791.47,-1424.75 5570,-1378.8 5487.98,-1361.78 5466.71,-1361.25 5385,-1342.8 5257.64,-1314.03 4942.08,-1230.2 4816,-1196.26 4642.15,-1149.47 4584.62,-1171.89 4426,-1086.72 4288.53,-1012.91 4134.44,-915.88 4232,-794.1 4277.84,-736.88 4328.09,-792.2 4393,-758.1 4396.93,-756.04 4400.77,-753.56 4404.47,-750.85"/>
<polygon fill="#f91010" stroke="black" points="4406.65,-753.58 4412.28,-744.61 4402.28,-748.12 4406.65,-753.58"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_web_web -->
<g id="edge183" 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="M6296,-2790.02C6377.57,-2759.8 6436,-2740.24 6436,-2653.26 6436,-2653.26 6436,-2653.26 6436,-2267.55 6436,-2128.59 6512,-2103.23 6512,-1964.27 6512,-1964.27 6512,-1964.27 6512,-1158.49 6512,-800.85 6436.85,-593.77 6103,-465.49 6019.66,-433.47 5754.01,-412.24 5644.2,-404.63"/>
<polygon fill="#f91010" stroke="black" points="5644.29,-401.13 5634.07,-403.94 5643.81,-408.11 5644.29,-401.13"/>
</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="3714" cy="-1634.65" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="3714" y="-1643.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3714" y="-1632.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3714" 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="edge184" 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="M3725.93,-1606.61C3734.57,-1582.38 3741.65,-1547.47 3722,-1526.11"/>
</g>
<!-- ahriman_core_report_email&#45;&gt;ahriman_core_report_report -->
<g id="edge185" 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="M3681.95,-1720.87C3656.7,-1707.16 3624.12,-1688.92 3596,-1671.42 3591.69,-1668.74 3587.24,-1665.85 3582.84,-1662.93"/>
<polygon fill="#7a2828" stroke="black" points="3680.44,-1724.03 3690.9,-1725.71 3683.77,-1717.88 3680.44,-1724.03"/>
<polygon fill="#7a2828" stroke="black" points="3584.74,-1659.99 3574.49,-1657.3 3580.82,-1665.79 3584.74,-1659.99"/>
</g>
<!-- ahriman_core_report_jinja_template&#45;&gt;ahriman_core_report_email -->
<g id="edge187" 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="M3627.82,-1824.75C3646.12,-1809.61 3668.74,-1790.9 3687.44,-1775.43"/>
<polygon fill="#832020" stroke="black" points="3689.72,-1778.08 3695.2,-1769.01 3685.26,-1772.69 3689.72,-1778.08"/>
</g>
<!-- ahriman_core_report_jinja_template&#45;&gt;ahriman_core_report_html -->
<g id="edge188" 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="M3580.55,-1818.05C3568.18,-1787.83 3548.41,-1743.33 3526,-1707.42 3515.12,-1689.99 3503.83,-1690.79 3497,-1671.42 3485.61,-1639.11 3488.8,-1600.29 3494.33,-1570.9"/>
<polygon fill="#832020" stroke="black" points="3497.79,-1571.42 3496.36,-1560.93 3490.93,-1570.03 3497.79,-1571.42"/>
</g>
<!-- ahriman_core_report_report&#45;&gt;ahriman_core_report_html -->
<g id="edge190" 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="M3528.56,-1589.95C3526.21,-1583.31 3523.79,-1576.45 3521.44,-1569.81"/>
<polygon fill="#8b1818" stroke="black" points="3525.34,-1591.36 3531.98,-1599.62 3531.94,-1589.03 3525.34,-1591.36"/>
<polygon fill="#8b1818" stroke="black" points="3524.71,-1568.55 3518.08,-1560.28 3518.11,-1570.88 3524.71,-1568.55"/>
</g>
<!-- ahriman_core_report_report&#45;&gt;ahriman_core_repository_executor -->
<g id="edge191" 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="M3579.4,-1620.38C3637.64,-1597.62 3745.04,-1551.15 3722,-1526.11"/>
<path fill="none" stroke="black" d="M3722,-1524.11C3704.17,-1504.73 3688.53,-1479.84 3676.96,-1458.88"/>
<polygon fill="#8b1818" stroke="black" points="3679.93,-1457.01 3672.1,-1449.87 3673.77,-1460.33 3679.93,-1457.01"/>
</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="2501" cy="-1306.03" rx="42.35" ry="28.98"/>
<text text-anchor="middle" x="2501" y="-1314.53" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2501" y="-1303.53" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2501" 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="edge192" 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="M2461.02,-1295.91C2291.61,-1257.27 1632.75,-1107 1440.15,-1063.08"/>
<polygon fill="#f91010" stroke="black" points="1440.8,-1059.63 1430.27,-1060.82 1439.24,-1066.46 1440.8,-1059.63"/>
</g>
<!-- ahriman_core_repository&#45;&gt;ahriman_core_status_watcher -->
<g id="edge193" 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="M2542.41,-1299.32C2708.29,-1276.44 3324.42,-1191.47 3501.26,-1167.08"/>
<polygon fill="#f91010" stroke="black" points="3501.87,-1170.52 3511.3,-1165.69 3500.92,-1163.59 3501.87,-1170.52"/>
</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="3794" cy="-1525.11" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="3794" y="-1539.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3794" y="-1528.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3794" y="-1517.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="3794" 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="edge194" 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="M3762.34,-1499.44C3742.67,-1484.11 3717.21,-1464.27 3696.13,-1447.84"/>
<polygon fill="#b42d2d" stroke="black" points="3698.03,-1444.89 3687.99,-1441.5 3693.73,-1450.41 3698.03,-1444.89"/>
</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="3778" cy="-1415.57" rx="58.88" ry="36.54"/>
<text text-anchor="middle" x="3778" y="-1429.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3778" y="-1418.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3778" y="-1407.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="3778" 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="edge195" 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="M3788.72,-1488.6C3787.47,-1480.24 3786.13,-1471.22 3784.83,-1462.48"/>
<polygon fill="#b42d2d" stroke="black" points="3788.27,-1461.79 3783.33,-1452.41 3781.34,-1462.82 3788.27,-1461.79"/>
</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="3656" cy="-1306.03" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="3656" y="-1320.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3656" y="-1309.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3656" y="-1298.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="3656" 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="edge196" 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="M3656,-1378.76C3656,-1370.59 3656,-1361.8 3656,-1353.27"/>
<polygon fill="#732626" stroke="black" points="3659.5,-1353.05 3656,-1343.05 3652.5,-1353.05 3659.5,-1353.05"/>
</g>
<!-- ahriman_core_repository_properties&#45;&gt;ahriman_core_repository_cleaner -->
<g id="edge197" 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="M3879.23,-1606.51C3864.38,-1592.5 3846.11,-1575.26 3830.3,-1560.35"/>
<polygon fill="#732626" stroke="black" points="3832.43,-1557.55 3822.76,-1553.24 3827.63,-1562.64 3832.43,-1557.55"/>
</g>
<!-- ahriman_core_repository_repository&#45;&gt;ahriman_application_application -->
<g id="edge198" 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="M3612.7,-1300.18C3331.16,-1268.66 1762.1,-1092.96 1443.46,-1057.27"/>
<polygon fill="#932424" stroke="black" points="1443.42,-1053.75 1433.09,-1056.11 1442.64,-1060.7 1443.42,-1053.75"/>
</g>
<!-- ahriman_core_repository_repository&#45;&gt;ahriman_core_status_watcher -->
<g id="edge199" 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="M3658.93,-1269.31C3659.1,-1257.71 3658.47,-1244.84 3656,-1233.26"/>
</g>
<!-- ahriman_core_repository_update_handler&#45;&gt;ahriman_core_repository_repository -->
<g id="edge200" 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="M3744.66,-1385.18C3728.9,-1371.29 3710.01,-1354.64 3693.72,-1340.28"/>
<polygon fill="#993333" stroke="black" points="3695.78,-1337.43 3685.96,-1333.44 3691.15,-1342.68 3695.78,-1337.43"/>
</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="3590" cy="-2072.8" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="3590" y="-2081.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3590" y="-2070.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3590" 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="edge201" 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="M3616.61,-2051.65C3652.39,-2024.13 3711.81,-1976.79 3714,-1964.27"/>
<path fill="none" stroke="black" d="M3714,-1962.27C3717.56,-1941.88 3676.92,-1909.13 3641.98,-1885.13"/>
<polygon fill="#ce3b3b" stroke="black" points="3643.5,-1881.93 3633.25,-1879.22 3639.58,-1887.73 3643.5,-1881.93"/>
</g>
<!-- ahriman_core_sign&#45;&gt;ahriman_core_repository_properties -->
<g id="edge202" 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="M3714,-1962.27C3733.71,-1849.52 3604.53,-1796.01 3677,-1707.42 3728.1,-1644.94 3780.55,-1702.6 3855,-1671.42 3859.14,-1669.68 3863.3,-1667.6 3867.37,-1665.33"/>
<polygon fill="#ce3b3b" stroke="black" points="3869.3,-1668.25 3876.07,-1660.1 3865.7,-1662.25 3869.3,-1668.25"/>
</g>
<!-- ahriman_core_sign_gpg&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge203" 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="M4358.96,-2048.5C4353.14,-2044.17 4346.97,-2039.83 4341,-2036.03 4252.13,-1979.61 4232.21,-1955.46 4131,-1926.5 3930.01,-1868.98 3862.89,-1948.36 3662,-1890.5 3655.78,-1888.7 3649.47,-1886.3 3643.33,-1883.59"/>
<polygon fill="#932424" stroke="black" points="3644.39,-1880.22 3633.86,-1879.11 3641.4,-1886.55 3644.39,-1880.22"/>
</g>
<!-- ahriman_core_sign_gpg&#45;&gt;ahriman_core_repository_properties -->
<g id="edge204" 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="M4378.43,-2037.05C4367.91,-2004.65 4348.11,-1956.88 4316,-1926.5 4286.5,-1898.58 4267.36,-1910.49 4232,-1890.5 4159.52,-1849.51 4137.89,-1840.81 4080,-1780.96 4066.69,-1767.19 4072.5,-1754.9 4056,-1745.19"/>
<path fill="none" stroke="black" d="M4056,-1743.19C4017.59,-1720.11 3976.57,-1689.81 3947.48,-1667.25"/>
<polygon fill="#932424" stroke="black" points="3949.27,-1664.21 3939.23,-1660.82 3944.96,-1669.73 3949.27,-1664.21"/>
</g>
<!-- ahriman_core_spawn&#45;&gt;ahriman_application_handlers_web -->
<g id="edge205" 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="M3935.17,-2145.29C3935.78,-2103.57 3932.59,-2024.04 3904,-1964.27"/>
<path fill="none" stroke="black" d="M3904,-1962.27C3894.46,-1933.38 3827.26,-1727.02 3804,-1707.42 3743.62,-1656.52 3690.99,-1721.58 3630,-1671.42 3595.91,-1643.38 3581.63,-1521.93 3553,-1488.34 3374.32,-1278.68 3027,-1435.96 3027,-1160.49 3027,-1160.49 3027,-1160.49 3027,-1048.95 3027,-678.84 2974.19,-503.45 2666,-298.5"/>
</g>
<!-- ahriman_core_spawn&#45;&gt;ahriman_web_views_base -->
<g id="edge206" 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="M3904,-1962.27C3857.49,-1855.38 3925.89,-1788.36 3842,-1707.42 3784.86,-1652.28 3726.71,-1723.76 3667,-1671.42 3645.99,-1653 3506.65,-1223.82 3502,-1196.26 3496.56,-1164.03 3479.35,-1146.29 3502,-1122.72 3537.06,-1086.25 4362.84,-1098.69 4412,-1086.72 4486.87,-1068.5 4499.11,-1045.63 4569,-1013.18 4638.22,-981.05 4665.97,-989.79 4725,-941.41"/>
</g>
<!-- ahriman_core_spawn&#45;&gt;ahriman_web_web -->
<g id="edge207" 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="M3954.34,-2149.71C3962.75,-2138.33 3971.56,-2124.06 3976,-2109.57 4014.09,-1985.22 3984.33,-1946.91 3979,-1816.96 3970.94,-1620.51 3994.04,-1560.11 3918,-1378.8 3902.79,-1342.53 3732.16,-1123.42 3718,-1086.72 3677.22,-981.04 3694.05,-943.38 3714,-831.87"/>
<path fill="none" stroke="black" d="M3714,-829.87C3716.68,-778.69 3686.89,-758.05 3714,-714.56"/>
</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="4502" cy="-1853.73" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="4502" y="-1862.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4502" y="-1851.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4502" 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="edge208" 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="M4322,-1743.19C4191.43,-1682.07 4171.18,-1635.44 4032,-1597.88 3908.82,-1564.63 3586.33,-1569.99 3459,-1561.88 3277.15,-1550.3 3061.75,-1536.31 2961.53,-1529.79"/>
<polygon fill="#f91010" stroke="black" points="2961.53,-1526.28 2951.33,-1529.13 2961.08,-1533.27 2961.53,-1526.28"/>
</g>
<!-- ahriman_core_status&#45;&gt;ahriman_core_repository_properties -->
<g id="edge209" 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="M4475.6,-1832.54C4467.64,-1827.02 4458.7,-1821.35 4450,-1816.96 4406.34,-1794.9 4384.74,-1810.81 4346,-1780.96 4330.84,-1769.27 4339.34,-1753.3 4322,-1745.19"/>
<path fill="none" stroke="black" d="M4322,-1743.19C4257.37,-1712.93 4056.43,-1667.49 3960.28,-1646.72"/>
<polygon fill="#f91010" stroke="black" points="3960.99,-1643.29 3950.48,-1644.61 3959.52,-1650.14 3960.99,-1643.29"/>
</g>
<!-- ahriman_core_status&#45;&gt;ahriman_web_views_base -->
<g id="edge210" 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="M4537.27,-1842.47C4571.76,-1831.24 4624.55,-1810.78 4663,-1780.96 4664.28,-1779.97 4952.16,-1418.18 4952,-1416.57"/>
<path fill="none" stroke="black" d="M4952,-1414.57C4946.47,-1377.09 4916.65,-1379.16 4906,-1342.8 4896.81,-1311.43 4892.34,-1298.95 4906,-1269.26 4916.27,-1246.92 4955.67,-1256.62 4948,-1233.26"/>
<path fill="none" stroke="black" d="M4948,-1232.26C4934.27,-1197.5 4895.85,-1225.04 4872,-1196.26 4829.4,-1144.87 4843.73,-1116.99 4834,-1050.95"/>
<path fill="none" stroke="black" d="M4834,-1048.95C4824.93,-1002.03 4853.86,-984.89 4834,-941.41"/>
<path fill="none" stroke="black" d="M4834,-939.41C4825.06,-919.84 4818.59,-896.9 4814.14,-877.25"/>
<polygon fill="#f91010" stroke="black" points="4817.53,-876.35 4812,-867.31 4810.69,-877.82 4817.53,-876.35"/>
</g>
<!-- ahriman_core_status&#45;&gt;ahriman_web_web -->
<g id="edge211" 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="M4476.55,-1831.71C4460.34,-1817.89 4439.23,-1799.08 4422,-1780.96 4292.55,-1644.76 4267.86,-1603.32 4156,-1452.34 4050.71,-1310.22 4078.91,-1222.69 3933,-1122.72 3873.94,-1082.26 3826.95,-1137.01 3776,-1086.72 3693.03,-1004.84 3704,-948.01 3714,-831.87"/>
</g>
<!-- ahriman_core_status_client&#45;&gt;ahriman_application_lock -->
<g id="edge212" 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="M3051.75,-1837.35C3026.15,-1824.72 2991.35,-1805.02 2966,-1780.96 2952.12,-1767.78 2952.61,-1761.12 2942,-1745.19"/>
<path fill="none" stroke="black" d="M2942,-1743.19C2905.93,-1689.01 2901.47,-1610.89 2902.53,-1564.63"/>
<polygon fill="#931a1a" stroke="black" points="2906.04,-1564.54 2902.87,-1554.43 2899.04,-1564.31 2906.04,-1564.54"/>
</g>
<!-- ahriman_core_status_client&#45;&gt;ahriman_core_repository_properties -->
<g id="edge213" 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="M3115.88,-1830.69C3122.96,-1825.89 3130.61,-1821.03 3138,-1816.96 3173.57,-1797.35 3191.55,-1807.84 3222,-1780.96 3250.38,-1755.9 3232.75,-1727.25 3265,-1707.42 3376.89,-1638.61 3730.62,-1713.65 3855,-1671.42 3859.31,-1669.95 3863.61,-1668.04 3867.78,-1665.86"/>
<polygon fill="#931a1a" stroke="black" points="3869.76,-1668.75 3876.66,-1660.72 3866.25,-1662.69 3869.76,-1668.75"/>
</g>
<!-- ahriman_core_status_client&#45;&gt;ahriman_core_status_web_client -->
<g id="edge214" 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="M3124.11,-1824.55C3128.67,-1821.77 3133.36,-1819.17 3138,-1816.96 3189.03,-1792.63 3208.37,-1804 3260,-1780.96 3265.13,-1778.67 3270.36,-1775.99 3275.46,-1773.16"/>
<polygon fill="#931a1a" stroke="black" points="3122.07,-1821.7 3115.55,-1830.04 3125.85,-1827.59 3122.07,-1821.7"/>
<polygon fill="#931a1a" stroke="black" points="3277.58,-1775.98 3284.48,-1767.94 3274.07,-1769.92 3277.58,-1775.98"/>
</g>
<!-- ahriman_core_status_watcher&#45;&gt;ahriman_web_views_base -->
<g id="edge215" 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="M3587.25,-1156.3C3781.69,-1145.12 4651.76,-1094.68 4663,-1086.72 4720.31,-1046.16 4671.22,-986.56 4725,-941.41"/>
</g>
<!-- ahriman_core_status_watcher&#45;&gt;ahriman_web_web -->
<g id="edge216" 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="M3557.48,-1123.29C3569.87,-1073.58 3594.68,-980.32 3624,-903.64 3657.24,-816.71 3684.97,-802.99 3714,-714.56"/>
<path fill="none" stroke="black" d="M3714,-712.56C3716.72,-521 5252.08,-421.6 5547.24,-404.26"/>
<polygon fill="#8b2222" stroke="black" points="5547.83,-407.73 5557.61,-403.65 5547.43,-400.74 5547.83,-407.73"/>
</g>
<!-- ahriman_core_tree&#45;&gt;ahriman_application_application -->
<g id="edge218" 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="M2008.41,-1839.8C1898.52,-1795.18 1559.8,-1638.13 1614,-1416.57"/>
</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="3808" cy="-1634.65" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="3808" y="-1643.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3808" y="-1632.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3808" 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="edge219" 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="M3784.64,-1611.71C3770.95,-1598.14 3753.87,-1579.92 3741,-1561.88 3730.55,-1547.22 3734.19,-1539.36 3722,-1526.11"/>
</g>
<!-- ahriman_core_upload_rsync&#45;&gt;ahriman_core_upload_upload -->
<g id="edge220" 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="M4251.59,-2050.09C4215.14,-2031.42 4162.82,-2004.63 4126.37,-1985.96"/>
<polygon fill="#8a2e2e" stroke="black" points="4250.23,-2053.32 4260.72,-2054.76 4253.42,-2047.09 4250.23,-2053.32"/>
<polygon fill="#8a2e2e" stroke="black" points="4127.96,-1982.85 4117.47,-1981.4 4124.77,-1989.08 4127.96,-1982.85"/>
</g>
<!-- ahriman_core_upload_upload&#45;&gt;ahriman_core_repository_executor -->
<g id="edge222" 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="M4112.39,-1938.38C4125.29,-1925.66 4139.17,-1908.86 4146,-1890.5 4157.4,-1859.86 4153.77,-1848.7 4146,-1816.96 4119.92,-1710.34 4122.15,-1660.49 4032,-1597.88 3924.96,-1523.54 3848.35,-1635.76 3741,-1561.88 3726.17,-1551.67 3734.19,-1539.36 3722,-1526.11"/>
</g>
<!-- ahriman_core_upload_upload&#45;&gt;ahriman_core_upload_s3 -->
<g id="edge224" 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="M4037.48,-1950.5C4004.37,-1942.55 3958.71,-1932.45 3918,-1926.5 3715.97,-1896.92 3662.56,-1916.16 3460,-1890.5 3406.07,-1883.66 3344.69,-1872.43 3303.47,-1864.37"/>
<polygon fill="#8b1818" stroke="black" points="4036.79,-1953.93 4047.34,-1952.89 4038.44,-1947.13 4036.79,-1953.93"/>
<polygon fill="#8b1818" stroke="black" points="3303.92,-1860.89 3293.44,-1862.39 3302.57,-1867.76 3303.92,-1860.89"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_application_application -->
<g id="edge225" 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="M5992,-1743.19C5983.89,-1657.78 5783.76,-1514.35 5702,-1488.34 5502.16,-1424.77 4966.54,-1482.43 4759,-1452.34 4239.7,-1377.05 4133.09,-1243.67 3615,-1160.49"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_alpm_repo -->
<g id="edge226" 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="M4655.98,-2546.22C4834.36,-2530.82 5581.29,-2465.93 5604,-2457.51"/>
<path fill="none" stroke="black" d="M5604,-2455.51C5619.37,-2449.82 5615.11,-2437.64 5628,-2427.52 5666.6,-2397.21 5704.79,-2410.8 5718,-2363.53"/>
<path fill="none" stroke="black" d="M5718,-2361.53C5744.16,-2267.96 5736.43,-2241.48 5752,-2145.57 5753.38,-2137.06 5754.88,-2127.98 5756.34,-2119.25"/>
<polygon fill="#db0505" stroke="black" points="5759.82,-2119.64 5758.01,-2109.2 5752.91,-2118.49 5759.82,-2119.64"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge227" 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="M4586.43,-2533.91C4496.3,-2490.46 4229.01,-2368.9 3991,-2333.54 3819.17,-2308.01 2593.53,-2350.22 2428,-2297.54 2384.07,-2283.56 2381.11,-2263.95 2342,-2239.56 2258.37,-2187.39 2158.08,-2131.02 2100.63,-2099.3"/>
<polygon fill="#db0505" stroke="black" points="2102.23,-2096.19 2091.78,-2094.42 2098.85,-2102.32 2102.23,-2096.19"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_report_email -->
<g id="edge228" 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="M4622.58,-2521.52C4634.61,-2438.1 4658.74,-2187.52 4544,-2036.03 4493.72,-1969.66 4469.64,-1956.58 4392,-1926.5 4261.84,-1876.06 4212.28,-1935.08 4080,-1890.5 4019.28,-1870.03 4015.82,-1839.91 3956,-1816.96 3879.83,-1787.73 3851.15,-1812.72 3776,-1780.96 3771.2,-1778.93 3766.39,-1776.42 3761.74,-1773.68"/>
<polygon fill="#db0505" stroke="black" points="3763.37,-1770.57 3753.04,-1768.19 3759.63,-1776.49 3763.37,-1770.57"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge229" 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="M4428,-2361.53C4384.03,-2304.08 4472.86,-2097.69 4435,-2036.03 4416.48,-2005.89 4395.11,-2016.88 4364,-2000.03 4336.03,-1984.89 4332.74,-1972.45 4302,-1964.27"/>
<path fill="none" stroke="black" d="M4302,-1962.27C4283.59,-1957.03 4294.62,-1935.99 4278,-1926.5 4158.94,-1858.47 3794.11,-1927.24 3662,-1890.5 3655.76,-1888.76 3649.44,-1886.4 3643.29,-1883.7"/>
<polygon fill="#db0505" stroke="black" points="3644.36,-1880.34 3633.82,-1879.25 3641.38,-1886.67 3644.36,-1880.34"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_repository_repository -->
<g id="edge230" 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="M5604,-2455.51C5617.04,-2450.68 5607.42,-2436.55 5618,-2427.52 5658.42,-2393.03 5693.02,-2427.63 5732,-2391.52 5739.1,-2384.95 5990.69,-1754.77 5992,-1745.19"/>
<path fill="none" stroke="black" d="M5992,-1743.19C5992.4,-1718.64 5654.29,-1496.09 5631,-1488.34 5359.96,-1398.11 4624.33,-1516.65 4346,-1452.34 4268.96,-1434.54 4259.98,-1400.7 4184,-1378.8 4015.47,-1330.23 3806.97,-1314.24 3710.13,-1309.21"/>
<polygon fill="#db0505" stroke="black" points="3710.16,-1305.7 3700,-1308.7 3709.81,-1312.7 3710.16,-1305.7"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge231" 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="M4428,-2361.53C4401.58,-2326.06 4408.37,-2309.79 4390,-2269.55"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_status_web_client -->
<g id="edge232" 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="M4580,-2455.51C4481.17,-2287.65 4573.32,-2189.22 4453,-2036.03 4433.55,-2011.28 4417.04,-2019.11 4392,-2000.03 4354.61,-1971.55 4358.71,-1946.12 4316,-1926.5 4158.63,-1854.18 4098.43,-1921.29 3928,-1890.5 3805.19,-1868.31 3778.32,-1846.23 3657,-1816.96 3556.04,-1792.59 3437.08,-1768.45 3370.31,-1755.31"/>
<polygon fill="#db0505" stroke="black" points="3370.94,-1751.87 3360.45,-1753.38 3369.59,-1758.74 3370.94,-1751.87"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_upload_rsync -->
<g id="edge233" 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="M4608.93,-2521.98C4602.19,-2503.18 4592.1,-2478.06 4580,-2457.51"/>
<path fill="none" stroke="black" d="M4580,-2455.51C4547.73,-2400.71 4502.14,-2430.66 4452,-2391.52 4439.08,-2381.44 4437.79,-2376.67 4428,-2363.53"/>
<path fill="none" stroke="black" d="M4428,-2361.53C4368.66,-2281.86 4314.11,-2274.39 4304,-2175.57"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_models_build_status -->
<g id="edge234" 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="M4581.3,-2541.94C4533.34,-2531.58 4447.09,-2511.29 4376,-2485.5 4318.81,-2464.76 4311.07,-2442.07 4252,-2427.52 3911.15,-2343.57 3809.28,-2449.06 3463,-2391.52 3448.25,-2389.07 3432.56,-2385.1 3418.23,-2380.91"/>
<polygon fill="#db0505" stroke="black" points="3419.14,-2377.53 3408.56,-2377.99 3417.12,-2384.23 3419.14,-2377.53"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_models_package -->
<g id="edge235" 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="M4580.49,-2544.7C4531.31,-2538.55 4442.32,-2527.93 4366,-2521.5 3871.82,-2479.9 3744.95,-2511.77 3252,-2457.51"/>
<path fill="none" stroke="black" d="M3252,-2455.51C3247.75,-2455.05 2643.18,-2392.43 2639,-2391.52 2625.47,-2388.6 2611.07,-2384.27 2598.08,-2379.88"/>
<polygon fill="#db0505" stroke="black" points="2599.05,-2376.52 2588.46,-2376.54 2596.75,-2383.13 2599.05,-2376.52"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_models_package_source -->
<g id="edge236" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_models_package_source</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3252,-2455.51C3148.1,-2444.08 2887.41,-2416.84 2786,-2391.52 2779.4,-2389.87 2772.58,-2387.85 2765.86,-2385.65"/>
<polygon fill="#db0505" stroke="black" points="2766.72,-2382.24 2756.12,-2382.32 2764.46,-2388.87 2766.72,-2382.24"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_web_views_index -->
<g id="edge237" 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="M4656.07,-2548.24C4827.77,-2542.41 5525.69,-2516.98 5618,-2485.5 5661.63,-2470.63 5665.71,-2453.19 5704,-2427.52 5727.96,-2411.46 5736.56,-2410.82 5758,-2391.52 5798.34,-2355.2 5803.51,-2341.03 5836,-2297.54 5896.19,-2216.97 5915,-2198.49 5962,-2109.57 6071.16,-1903.06 6176.28,-1811.6 6082,-1597.88 5950.29,-1299.31 5163.25,-895.3 4853,-794.1 4737.07,-756.29 4691.36,-809.98 4581,-758.1 4575.71,-755.62 4570.61,-752.32 4565.85,-748.64"/>
<polygon fill="#db0505" stroke="black" points="4568.09,-745.95 4558.18,-742.18 4563.58,-751.3 4568.09,-745.95"/>
</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="4735" cy="-2362.53" rx="50.75" ry="18"/>
<text text-anchor="middle" x="4735" 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="edge238" 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="M5528,-2267.55C5540.72,-2228.7 5522.53,-2216.08 5528,-2175.57"/>
<path fill="none" stroke="black" d="M5528,-2173.57C5535.32,-2119.41 5449.76,-2157.22 5423,-2109.57 5407,-2081.08 5402.93,-2061.83 5423,-2036.03 5462.98,-1984.65 5514.93,-2041.66 5565,-2000.03 5619.69,-1954.57 5632,-1925.84 5632,-1854.73 5632,-1854.73 5632,-1854.73 5632,-1743.19 5632,-1678.06 5605.61,-1644.59 5651,-1597.88 5686.29,-1561.56 5827.13,-1575.15 5876,-1561.88 6005.36,-1526.75 6050.77,-1534.08 6157,-1452.34 6321.91,-1325.45 6398,-1259.03 6398,-1050.95 6398,-1050.95 6398,-1050.95 6398,-595.24 6398,-509.13 6393.66,-487.5 6398,-401.5"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_application -->
<g id="edge239" 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="M4682,-2071.8C4654.03,-2033.05 4689.94,-2011.4 4682,-1964.27"/>
<path fill="none" stroke="black" d="M4682,-1962.27C4668.8,-1883.95 4644.01,-1861.11 4578,-1816.96 4532.43,-1786.47 4504.05,-1813.61 4460,-1780.96 4444.62,-1769.55 4449.77,-1758.49 4436,-1745.19"/>
<path fill="none" stroke="black" d="M4436,-1743.19C4367.1,-1678.61 4363.91,-1643.07 4281,-1597.88 4188.84,-1547.64 4137.79,-1591.9 4056,-1526.11"/>
<path fill="none" stroke="black" d="M4056,-1524.11C4053.83,-1522.37 3920.35,-1380.28 3918,-1378.8 3874.13,-1351.15 3850.37,-1371.23 3807,-1342.8 3770.52,-1318.88 3774.45,-1298.41 3742,-1269.26 3700.25,-1231.77 3678.16,-1236.44 3639,-1196.26 3625.64,-1182.55 3633.91,-1163.49 3615,-1160.49"/>
<path fill="none" stroke="black" d="M3615,-1158.49C3597.23,-1155.64 3611.34,-1132.15 3596,-1122.72 3552.57,-1096.03 1811.9,-1089.65 1761,-1086.72 1647.88,-1080.21 1516.08,-1066.07 1443.03,-1057.65"/>
<polygon fill="#f91010" stroke="black" points="1443.02,-1054.12 1432.69,-1056.45 1442.22,-1061.08 1443.02,-1054.12"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_handler -->
<g id="edge240" 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="M4056,-1524.11C3997.5,-1475.65 4025.9,-1425.52 3966,-1378.8 3924.44,-1346.39 3897.16,-1371.58 3853,-1342.8 3816.46,-1318.98 3820.96,-1297.84 3788,-1269.26 3743.39,-1230.58 3718.68,-1238.09 3677,-1196.26 3649.45,-1168.61 3662.99,-1141.9 3629,-1122.72 3578.94,-1094.48 2652.4,-1089.77 2595,-1086.72 2137.15,-1062.4 2023.43,-1044.53 1566,-1013.18 1444.02,-1004.83 1133.88,-1013.07 1017,-977.18 1011.07,-975.36 1005.1,-972.87 999.35,-970.03"/>
<polygon fill="#f91010" stroke="black" points="1000.98,-966.94 990.51,-965.35 997.71,-973.13 1000.98,-966.94"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge241" 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="M4682,-1962.27C4672.33,-1894.66 4682.22,-1863.24 4632,-1816.96 4584.44,-1773.12 4537.05,-1826.38 4491,-1780.96 4443.05,-1733.66 4462.11,-1533.35 4412,-1488.34 4335.68,-1419.78 4263.95,-1516.62 4184,-1452.34 4170.7,-1441.64 4184.75,-1425.16 4170,-1416.57"/>
<path fill="none" stroke="black" d="M4170,-1414.57C4142.62,-1398.37 4136.48,-1392.98 4108,-1378.8 4071.27,-1360.51 4058.66,-1363.09 4023,-1342.8 3975.05,-1315.51 3969.9,-1298.31 3923,-1269.26 3862.67,-1231.9 3831.23,-1246.39 3781,-1196.26 3754.96,-1170.27 3773.49,-1143.31 3743,-1122.72 3672.34,-1075.01 3445.71,-1096.39 3361,-1086.72 3116.85,-1058.85 3057.23,-1040.33 2813,-1013.18 2632.08,-993.07 2585.34,-1001.96 2405,-977.18 2142.94,-941.17 2071.28,-950.27 1820,-867.64 1814.04,-865.68 1807.94,-863.34 1801.94,-860.81"/>
<polygon fill="#f91010" stroke="black" points="1803.16,-857.52 1792.6,-856.69 1800.34,-863.93 1803.16,-857.52"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge242" 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="M4436,-1743.19C4399.12,-1708.41 4430.19,-1674.81 4398,-1635.65"/>
<path fill="none" stroke="black" d="M4398,-1633.65C4339.36,-1562.31 4285.14,-1604.1 4203,-1561.88 4134.89,-1526.87 4125.68,-1504.91 4070,-1452.34 4037.63,-1421.78 4039.79,-1402.33 4002,-1378.8 3954.37,-1349.15 3925.81,-1376.56 3881,-1342.8 3850.02,-1319.46 3862.15,-1295.94 3834,-1269.26 3786.18,-1223.95 3750.69,-1243.72 3705,-1196.26 3679.48,-1169.76 3698.09,-1142.39 3667,-1122.72 3617.96,-1091.69 2680.82,-1091.72 2623,-1086.72 2386.51,-1066.26 2329.74,-1040.99 2094,-1013.18 1769.34,-974.88 1668.77,-1006.88 1373,-867.64 1368.95,-865.74 1364.84,-863.57 1360.8,-861.27"/>
<polygon fill="#f91010" stroke="black" points="1362.46,-858.19 1352.08,-856.08 1358.88,-864.2 1362.46,-858.19"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_status -->
<g id="edge243" 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="M4398,-1633.65C4323.28,-1521.94 4260.9,-1536.34 4156,-1452.34 4116.74,-1420.9 4114.75,-1401.75 4070,-1378.8 4010.15,-1348.11 3976.71,-1383.29 3923,-1342.8 3892.95,-1320.14 3908.04,-1295.44 3881,-1269.26 3831.15,-1221 3791.83,-1245.56 3743,-1196.26 3717.11,-1170.12 3736.03,-1142.48 3705,-1122.72 3621.34,-1069.44 2910.12,-1106.9 2813,-1086.72 2724.34,-1068.31 2711.54,-1032.14 2623,-1013.18 2325.33,-949.44 2236.56,-1041.45 1939,-977.18 1851.3,-958.24 1835.27,-934.44 1751,-903.64 1697.39,-884.05 1635.51,-863.21 1592.68,-849.06"/>
<polygon fill="#f91010" stroke="black" points="1593.63,-845.69 1583.03,-845.88 1591.44,-852.34 1593.63,-845.69"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_user -->
<g id="edge244" 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="M4170,-1414.57C4071.25,-1348.23 4077.04,-1291.72 3974,-1232.26 3930.54,-1207.18 3910.64,-1221.02 3867,-1196.26 3823.26,-1171.45 3827.12,-1142.76 3781,-1122.72 3650.14,-1065.86 3594.98,-1138.43 3462,-1086.72 3410.25,-1066.6 3413.16,-1032.23 3361,-1013.18 3254.69,-974.37 2965.05,-993.05 2853,-977.18 2698.2,-955.26 2662.07,-935.48 2509,-903.64 2402.94,-881.59 2278.86,-856.71 2209.04,-842.8"/>
<polygon fill="#f91010" stroke="black" points="2209.64,-839.35 2199.14,-840.83 2208.27,-846.22 2209.64,-839.35"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_lock -->
<g id="edge245" 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="M4246,-1852.73C4219.32,-1839.21 4214.6,-1832.42 4189,-1816.96 4161.72,-1800.49 4150.98,-1801.94 4127,-1780.96 4095.88,-1753.73 4097.76,-1738.07 4070,-1707.42 4054.38,-1690.17 4048.53,-1687.79 4032,-1671.42 3999.72,-1639.45 4002.19,-1617.04 3961,-1597.88 3955.28,-1595.22 3180.22,-1544.17 2961.74,-1529.83"/>
<polygon fill="#f91010" stroke="black" points="2961.66,-1526.32 2951.46,-1529.15 2961.21,-1533.3 2961.66,-1526.32"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_alpm_repo -->
<g id="edge246" 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="M5528,-2267.55C5548.25,-2205.68 5584.8,-2206.65 5642,-2175.57"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_auth_auth -->
<g id="edge247" 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="M5528,-2173.57C5537.76,-2101.33 5625.26,-2158.81 5679,-2109.57 5692.27,-2097.41 5683.19,-2084.04 5698,-2073.8"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge248" 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="M5528,-2173.57C5534.35,-2126.55 5544.43,-2116.06 5566,-2073.8"/>
<path fill="none" stroke="black" d="M5566,-2071.8C5574.18,-2055.77 5572.56,-2049.05 5585,-2036.03 5606.75,-2013.28 5623.11,-2021.64 5646,-2000.03 5659.92,-1986.89 5661.48,-1981.41 5670,-1964.27"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge249" 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="M5518,-1743.19C5513.65,-1692.68 5545.71,-1685.28 5556,-1635.65"/>
<path fill="none" stroke="black" d="M5556,-1633.65C5560.33,-1612.73 5566.16,-1589.8 5571.37,-1570.5"/>
<polygon fill="#f91010" stroke="black" points="5574.77,-1571.34 5574.03,-1560.77 5568.01,-1569.49 5574.77,-1571.34"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge250" 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="M4687.89,-2355.9C4630.07,-2349.25 4528.99,-2338.46 4442,-2333.54 4330.27,-2327.21 2534.72,-2331.2 2428,-2297.54 2384.04,-2283.67 2381.11,-2263.95 2342,-2239.56 2258.37,-2187.39 2158.08,-2131.02 2100.63,-2099.3"/>
<polygon fill="#f91010" stroke="black" points="2102.23,-2096.19 2091.78,-2094.42 2098.85,-2102.32 2102.23,-2096.19"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_report_email -->
<g id="edge251" 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="M4682,-2071.8C4657.46,-2038.49 4566.53,-1983.7 4530,-1964.27"/>
<path fill="none" stroke="black" d="M4530,-1962.27C4513.1,-1953.27 4522.41,-1936.36 4506,-1926.5 4371.97,-1845.94 4304.78,-1938.63 4156,-1890.5 4125.73,-1880.7 4124.18,-1864.79 4094,-1854.73"/>
<path fill="none" stroke="black" d="M4094,-1852.73C4063.82,-1842.67 4062.08,-1827.31 4032,-1816.96 3923.36,-1779.56 3883.08,-1822.63 3776,-1780.96 3771.15,-1779.07 3766.3,-1776.65 3761.63,-1773.96"/>
<polygon fill="#f91010" stroke="black" points="3763.25,-1770.84 3752.91,-1768.52 3759.54,-1776.78 3763.25,-1770.84"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_report_html -->
<g id="edge252" 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="M4530,-1962.27C4501.58,-1947.14 4495.81,-1940.87 4467,-1926.5 4431.02,-1908.54 4419.81,-1908.79 4384,-1890.5 4326.94,-1861.35 4315.69,-1848.64 4260,-1816.96 4230.96,-1800.43 4220.13,-1801.78 4194,-1780.96 4109.03,-1713.24 4128.45,-1647.91 4032,-1597.88 3903.39,-1531.16 3851.41,-1582.52 3708,-1561.88 3654.87,-1554.23 3594.28,-1543.19 3553.43,-1535.4"/>
<polygon fill="#f91010" stroke="black" points="3553.97,-1531.94 3543.49,-1533.49 3552.65,-1538.81 3553.97,-1531.94"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge253" 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="M4682,-2071.8C4669.67,-2057.16 4674.22,-2046.2 4658,-2036.03 4560.64,-1975.03 4513.56,-2027.53 4402,-2000.03 4356.17,-1988.74 4347.61,-1976.41 4302,-1964.27"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_report_report -->
<g id="edge254" 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="M4094,-1852.73C4075.84,-1846.67 4084.82,-1829.07 4070,-1816.96 3971.01,-1736.04 3925.21,-1748.1 3804,-1707.42 3744.32,-1687.39 3727.68,-1688.21 3667,-1671.42 3641.51,-1664.36 3613.17,-1656.15 3590.12,-1649.37"/>
<polygon fill="#f91010" stroke="black" points="3590.84,-1645.93 3580.26,-1646.46 3588.86,-1652.65 3590.84,-1645.93"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_repository_executor -->
<g id="edge255" 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="M4682,-2071.8C4657.33,-2037.62 4641.77,-2036.13 4620,-2000.03 4611.18,-1985.42 4617.32,-1977.04 4606,-1964.27"/>
<path fill="none" stroke="black" d="M4606,-1962.27C4584.91,-1938.45 4573.37,-1938.73 4544,-1926.5 4487.87,-1903.11 4457.23,-1931.14 4412,-1890.5 4399.3,-1879.09 4412.51,-1863.72 4398,-1854.73"/>
<path fill="none" stroke="black" d="M4398,-1852.73C4370.96,-1835.97 4363.74,-1832.52 4336,-1816.96 4306.86,-1800.61 4294.82,-1803.33 4270,-1780.96 4211.77,-1728.46 4226.8,-1689.69 4170,-1635.65"/>
<path fill="none" stroke="black" d="M4170,-1633.65C4135.56,-1608.52 4122.37,-1608.17 4081,-1597.88 4007.27,-1579.54 3803.96,-1604.4 3741,-1561.88 3726.08,-1551.8 3733.9,-1539.62 3722,-1526.11"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_repository_properties -->
<g id="edge256" 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="M4530,-1962.27C4513.1,-1953.27 4521.79,-1937.31 4506,-1926.5 4445.87,-1885.31 4416,-1910.81 4346,-1890.5 4300.67,-1877.34 4288.11,-1876.06 4246,-1854.73"/>
<path fill="none" stroke="black" d="M4246,-1852.73C4219.32,-1839.21 4216.06,-1829.69 4189,-1816.96 4142.83,-1795.24 4120.63,-1811.81 4080,-1780.96 4064.75,-1769.38 4072.4,-1755.06 4056,-1745.19"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_repository_repository -->
<g id="edge257" 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="M4398,-1852.73C4355.35,-1824.47 4342.42,-1818.81 4308,-1780.96 4241.88,-1708.25 4266.16,-1651.8 4184,-1597.88 4115.79,-1553.11 4076.31,-1599.66 4004,-1561.88 3941.72,-1529.34 3933.76,-1507.32 3890,-1452.34 3866.28,-1422.54 3876.35,-1401.82 3846,-1378.8 3797.55,-1342.05 3769.78,-1367.01 3714,-1342.8 3708.85,-1340.56 3703.61,-1337.92 3698.49,-1335.11"/>
<polygon fill="#f91010" stroke="black" points="3699.88,-1331.87 3689.47,-1329.91 3696.38,-1337.93 3699.88,-1331.87"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_repository_update_handler -->
<g id="edge258" 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="M4170,-1633.65C4076.9,-1545.13 3995,-1635.89 3890,-1561.88 3859.05,-1540.07 3869.84,-1518.54 3847,-1488.34 3838.02,-1476.47 3827.27,-1464.46 3816.97,-1453.75"/>
<polygon fill="#f91010" stroke="black" points="3819.42,-1451.26 3809.93,-1446.56 3814.42,-1456.16 3819.42,-1451.26"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge259" 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="M4696.9,-2350.61C4635.09,-2331.03 4512.76,-2284.28 4442,-2203.56 4420.73,-2179.29 4407.02,-2145.47 4398.74,-2118.44"/>
<polygon fill="#f91010" stroke="black" points="4402.1,-2117.43 4395.93,-2108.81 4395.38,-2119.4 4402.1,-2117.43"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_spawn -->
<g id="edge260" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_spawn</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4689.11,-2354.75C4620.58,-2344.31 4487.6,-2322.83 4376,-2297.54 4229.14,-2264.26 4057.99,-2213.57 3978.63,-2189.36"/>
<polygon fill="#f91010" stroke="black" points="3979.54,-2185.98 3968.96,-2186.41 3977.5,-2192.68 3979.54,-2185.98"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_status_client -->
<g id="edge261" 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="M4728.01,-2344.31C4704.04,-2287.84 4619.17,-2107.86 4484,-2036.03 4387.2,-1984.6 4342.2,-2039.67 4240,-2000.03 4185.52,-1978.9 4186.54,-1944.67 4131,-1926.5 3936.13,-1862.72 3411.39,-1923.37 3209,-1890.5 3182.8,-1886.24 3154.3,-1878.18 3131.34,-1870.79"/>
<polygon fill="#f91010" stroke="black" points="3132.12,-1867.36 3121.53,-1867.56 3129.94,-1874.01 3132.12,-1867.36"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_status_watcher -->
<g id="edge262" 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="M4606,-1962.27C4560,-1910.33 4600.39,-1863.56 4549,-1816.96 4505.54,-1777.54 4472.98,-1809.99 4422,-1780.96 4409.16,-1773.64 4242.15,-1604.63 4229,-1597.88 4153.72,-1559.2 4115.98,-1603 4042,-1561.88 4003.09,-1540.25 4006.74,-1518.5 3974,-1488.34 3954.9,-1470.75 3945.67,-1471.35 3928,-1452.34 3914.97,-1438.32 3917.01,-1430.62 3904,-1416.57"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_status_web_client -->
<g id="edge263" 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="M4682,-2071.8C4634.33,-2007.09 4587.6,-2036.56 4516,-2000.03 4458.92,-1970.92 4452.72,-1946.96 4392,-1926.5 4259.72,-1881.91 4217.22,-1916.07 4080,-1890.5 4017.71,-1878.89 4004.36,-1865.92 3942,-1854.73"/>
<path fill="none" stroke="black" d="M3942,-1852.73C3730.42,-1815.36 3478.2,-1772.37 3370.71,-1754.12"/>
<polygon fill="#f91010" stroke="black" points="3371.21,-1750.65 3360.77,-1752.43 3370.04,-1757.56 3371.21,-1750.65"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_tree -->
<g id="edge264" 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="M4687.89,-2355.92C4630.07,-2349.29 4528.98,-2338.53 4442,-2333.54 4338.43,-2327.6 2671.64,-2335.25 2575,-2297.54 2343.27,-2207.12 2355.02,-2075.71 2156,-1926.5 2131.88,-1908.41 2103.15,-1890.35 2080.57,-1876.86"/>
<polygon fill="#f91010" stroke="black" points="2082.31,-1873.83 2071.92,-1871.75 2078.75,-1879.85 2082.31,-1873.83"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_upload_rsync -->
<g id="edge265" 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="M4685.69,-2358.35C4631.34,-2352.87 4543.14,-2337.97 4479,-2297.54 4405.19,-2251.02 4346.61,-2165.11 4316.41,-2114.35"/>
<polygon fill="#f91010" stroke="black" points="4319.36,-2112.46 4311.28,-2105.61 4313.32,-2116 4319.36,-2112.46"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_upload_s3 -->
<g id="edge266" 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="M4737.21,-2344.21C4742.43,-2295.4 4750.37,-2155.01 4682,-2073.8"/>
<path fill="none" stroke="black" d="M4682,-2071.8C4670.65,-2056.39 4674.44,-2045.85 4658,-2036.03 4516.15,-1951.31 4429.31,-2085.65 4288,-2000.03 4254.62,-1979.81 4273.88,-1945.87 4240,-1926.5 4164.68,-1883.44 3546.24,-1900.01 3460,-1890.5 3405.97,-1884.54 3344.6,-1873.14 3303.41,-1864.81"/>
<polygon fill="#f91010" stroke="black" points="3303.89,-1861.33 3293.39,-1862.76 3302.49,-1868.19 3303.89,-1861.33"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_upload_upload -->
<g id="edge267" 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="M4720.37,-2345.07C4662.74,-2280.3 4453.66,-2046.06 4435,-2036.03 4346.57,-1988.51 4310.06,-2021.58 4212,-2000.03 4184.47,-1993.99 4154.06,-1985.56 4129.8,-1978.41"/>
<polygon fill="#f91010" stroke="black" points="4130.72,-1975.04 4120.14,-1975.54 4128.73,-1981.74 4130.72,-1975.04"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge268" 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="M5594,-1633.65C5606.24,-1618.92 5602.59,-1609.24 5618,-1597.88 5799.47,-1464.06 5924.53,-1588.84 6104,-1452.34 6211,-1370.95 6219.45,-1322.75 6265,-1196.26 6287.07,-1134.98 6265.26,-1113.33 6284,-1050.95"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_base -->
<g id="edge269" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4986,-1852.73C4953.69,-1660.99 4967.53,-1610.38 4952,-1416.57"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_index -->
<g id="edge270" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4758,-1852.73C4748.03,-1838.87 4751.23,-1832.42 4744,-1816.96 4592.41,-1492.51 4609.41,-1352.82 4335,-1122.72 4302.3,-1095.31 4269.85,-1122.1 4246,-1086.72 4209.9,-1033.17 4231.34,-1004.31 4246,-941.41"/>
<path fill="none" stroke="black" d="M4246,-939.41C4246.44,-891.62 4220.18,-872.1 4246,-831.87"/>
</g>
<!-- ahriman_web_views_service_add -->
<g id="node87" class="node">
<title>ahriman_web_views_service_add</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="5728" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="5728" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5728" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5728" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5728" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="5728" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">add</text>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_service_add -->
<g id="edge271" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_service_add</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5528,-2267.55C5553.76,-2188.86 5419.14,-2239.06 5366,-2175.57"/>
<path fill="none" stroke="black" d="M5366,-2173.57C5346.5,-2150.27 5347.42,-2139.46 5342,-2109.57 5336.17,-2077.41 5330.9,-2066.78 5342,-2036.03 5363.5,-1976.51 5388.42,-1971.43 5433,-1926.5 5467.82,-1891.39 5502.6,-1901.71 5518,-1854.73"/>
<path fill="none" stroke="black" d="M5518,-1852.73C5529.24,-1809.17 5438.27,-1715.21 5428,-1671.42 5409.42,-1592.2 5383.98,-1556.77 5428,-1488.34 5448.87,-1455.89 5473.68,-1471.79 5507,-1452.34 5554.95,-1424.34 5558.43,-1403.83 5608,-1378.8 5655.43,-1354.85 5679.83,-1375.12 5722,-1342.8 5752.79,-1319.2 5743.16,-1298.19 5769,-1269.26 5803.31,-1230.85 5823.63,-1233.7 5859,-1196.26 5886.66,-1166.97 5881.62,-1149.18 5912,-1122.72 5937.79,-1100.26 5962.36,-1116.02 5980,-1086.72 6052.59,-966.16 5970.84,-879.52 5859,-794.1 5826.72,-769.45 5809.06,-780.23 5775,-758.1 5771.28,-755.69 5767.58,-752.97 5763.98,-750.09"/>
<polygon fill="#f91010" stroke="black" points="5766.2,-747.39 5756.29,-743.63 5761.69,-752.74 5766.2,-747.39"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge272" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_service_reload_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4785.62,-2360.7C4956.81,-2357.24 5504.73,-2340.64 5528,-2269.55"/>
<path fill="none" stroke="black" d="M5528,-2267.55C5549.27,-2202.56 5291.38,-2226.61 5227,-2203.56 5201.55,-2194.44 5192.79,-2193.98 5173,-2175.57"/>
<path fill="none" stroke="black" d="M5173,-2173.57C5137.85,-2140.88 5119.2,-2144.24 5086,-2109.57 5072.76,-2095.75 5072.51,-2089.8 5062,-2073.8"/>
<path fill="none" stroke="black" d="M5062,-2071.8C5005.86,-1986.38 5004.51,-1955.26 4986,-1854.73"/>
<path fill="none" stroke="black" d="M4986,-1852.73C4971.37,-1803.7 4930.95,-1818.32 4896,-1780.96 4855.52,-1737.69 4846.85,-1724.24 4820,-1671.42 4796.65,-1625.48 4798.82,-1610.59 4782,-1561.88 4766.6,-1517.3 4676.82,-1194.36 4644,-1160.49"/>
<path fill="none" stroke="black" d="M4644,-1158.49C4630.48,-1144.23 4631.86,-1136.65 4618,-1122.72 4598.94,-1103.56 4581.2,-1110.83 4569,-1086.72 4507.25,-964.73 4562.01,-885.18 4664,-794.1 4700.8,-761.24 4725.5,-781.38 4769,-758.1 4773.55,-755.67 4778.12,-752.88 4782.59,-749.92"/>
<polygon fill="#f91010" stroke="black" points="4784.8,-752.64 4791.01,-744.05 4780.8,-746.9 4784.8,-752.64"/>
</g>
<!-- ahriman_web_views_service_remove -->
<g id="node89" class="node">
<title>ahriman_web_views_service_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="5118" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="5118" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5118" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5118" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5118" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="5118" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">remove</text>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_service_remove -->
<g id="edge273" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_service_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5062,-2071.8C5012.27,-1987.1 5172.98,-1293.86 5184,-1196.26 5194.97,-1099.15 5198.77,-1074.83 5203,-977.18 5206.54,-895.41 5217.33,-868.41 5183,-794.1 5175.75,-778.42 5164.68,-763.21 5153.72,-750.37"/>
<polygon fill="#f91010" stroke="black" points="5156.18,-747.87 5146.94,-742.69 5150.93,-752.5 5156.18,-747.87"/>
</g>
<!-- ahriman_web_views_service_request -->
<g id="node90" class="node">
<title>ahriman_web_views_service_request</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="5822" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="5822" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5822" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5822" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5822" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="5822" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">request</text>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_service_request -->
<g id="edge274" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_service_request</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5518,-1852.73C5532.56,-1807.2 5522.1,-1792.81 5518,-1745.19"/>
<path fill="none" stroke="black" d="M5518,-1743.19C5508.26,-1630.03 5462.63,-1574.18 5537,-1488.34 5585.58,-1432.27 5629.81,-1476.39 5700,-1452.34 5875.75,-1392.12 5959.86,-1392.23 6056,-1233.26"/>
</g>
<!-- ahriman_web_views_service_search -->
<g id="node91" class="node">
<title>ahriman_web_views_service_search</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="5476" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="5476" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5476" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5476" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5476" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="5476" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">search</text>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_service_search -->
<g id="edge275" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_service_search</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5173,-2173.57C5172.15,-2172.69 5317.47,-1489.44 5318,-1488.34 5345.3,-1431.55 5362.26,-1422.13 5408,-1378.8 5427.62,-1360.22 5437.67,-1361.69 5457,-1342.8 5515.83,-1285.33 5543.47,-1274.11 5570,-1196.26 5601.62,-1103.48 5603.17,-1012.24 5525,-794.1 5520.38,-781.21 5513.47,-768.16 5506.29,-756.47"/>
<polygon fill="#f91010" stroke="black" points="5509.1,-754.37 5500.78,-747.81 5503.2,-758.13 5509.1,-754.37"/>
</g>
<!-- ahriman_web_views_status_ahriman -->
<g id="node93" class="node">
<title>ahriman_web_views_status_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="5024" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="5024" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5024" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5024" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5024" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="5024" 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="edge276" 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="M4986,-1852.73C4970.55,-1780.34 5092.12,-1269.95 5099,-1196.26 5102.04,-1163.72 5101.97,-1155.27 5099,-1122.72 5098.19,-1113.87 5054.04,-876.02 5033.87,-767.56"/>
<polygon fill="#f91010" stroke="black" points="5037.26,-766.67 5031.99,-757.48 5030.38,-767.96 5037.26,-766.67"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_status_package -->
<g id="edge277" 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="M4682,-2071.8C4651.48,-2030.8 4786.75,-1896.98 4758,-1854.73"/>
<path fill="none" stroke="black" d="M4758,-1852.73C4753.55,-1836.24 4757.05,-1827.96 4744,-1816.96 4683.28,-1765.78 4627.26,-1834.91 4569,-1780.96 4519.36,-1734.99 4535.48,-1533.38 4485,-1488.34 4412.71,-1423.83 4348.94,-1508.51 4270,-1452.34 4251.11,-1438.9 4181.82,-1289.2 4170,-1269.26 4120.87,-1186.36 4082.4,-1178.49 4053,-1086.72 4013.29,-962.78 3954.8,-890.71 4042,-794.1 4094.54,-735.9 4321.56,-790.42 4393,-758.1 4397.1,-756.25 4401.08,-753.89 4404.87,-751.24"/>
<polygon fill="#f91010" stroke="black" points="4407.11,-753.94 4412.86,-745.04 4402.81,-748.41 4407.11,-753.94"/>
</g>
<!-- ahriman_web_views_status_packages -->
<g id="node95" class="node">
<title>ahriman_web_views_status_packages</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="5254" cy="-713.56" rx="41.94" ry="44.6"/>
<text text-anchor="middle" x="5254" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5254" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5254" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5254" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="5254" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">packages</text>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_status_packages -->
<g id="edge278" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_status_packages</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5173,-2173.57C5148.72,-2150.98 5240.47,-1468.55 5266,-1233.26 5287.13,-1038.49 5358.25,-982.35 5304,-794.1 5300.26,-781.11 5293.7,-768.2 5286.54,-756.67"/>
<polygon fill="#f91010" stroke="black" points="5289.37,-754.61 5280.98,-748.15 5283.51,-758.43 5289.37,-754.61"/>
</g>
<!-- ahriman_web_views_status_status -->
<g id="node96" class="node">
<title>ahriman_web_views_status_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="4722" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="4722" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4722" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4722" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4722" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="4722" 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="edge279" 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="M4682,-2071.8C4643.83,-2018.92 4777.03,-2056.31 4810,-2000.03 4826.52,-1971.83 4815.43,-1958.73 4810,-1926.5 4801.44,-1875.68 4790.88,-1864.9 4772,-1816.96 4648.39,-1503.05 4686.4,-1377.28 4465,-1122.72 4445.09,-1099.83 4422.56,-1112.77 4407,-1086.72 4373.81,-1031.18 4389.65,-1005.58 4398,-941.41"/>
<path fill="none" stroke="black" d="M4398,-939.41C4392.24,-891.97 4362.56,-863.95 4398,-831.87"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_user_login -->
<g id="edge280" 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="M5366,-2173.57C5325.97,-2126.16 5347.63,-2081.36 5390,-2036.03 5435.93,-1986.9 5488.21,-2046.33 5537,-2000.03 5573.88,-1965.04 5560.23,-1940.39 5570,-1890.5 5580.92,-1834.67 5561.32,-1682.21 5594,-1635.65"/>
<path fill="none" stroke="black" d="M5594,-1633.65C5608.9,-1616.04 5684.52,-1472.88 5695,-1452.34 5799.8,-1247.04 5839.97,-1165.01 5784,-941.41"/>
<path fill="none" stroke="black" d="M5784,-939.41C5760.4,-856.65 5731.41,-835.59 5656,-794.1 5566.5,-744.87 5520.88,-802.75 5429,-758.1 5424.95,-756.14 5421.01,-753.7 5417.24,-751"/>
<polygon fill="#f91010" stroke="black" points="5419.31,-748.17 5409.29,-744.73 5414.97,-753.67 5419.31,-748.17"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge281" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_user_logout</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4986,-1852.73C4977.51,-1820.32 4972.38,-1813.11 4963,-1780.96 4911.22,-1603.52 4938.96,-1544.48 4857,-1378.8 4848.01,-1360.63 4838.48,-1360.72 4829,-1342.8 4749.15,-1191.87 4737.54,-1145.86 4711,-977.18 4697.92,-894.09 4695.83,-849.65 4759,-794.1 4801.78,-756.49 4832.31,-785.95 4882,-758.1 4886.14,-755.79 4890.21,-753.05 4894.14,-750.1"/>
<polygon fill="#f91010" stroke="black" points="4896.36,-752.8 4901.95,-743.8 4891.97,-747.35 4896.36,-752.8"/>
</g>
<!-- ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_auth -->
<g id="edge282" 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="M5528.97,-2056.09C5587.37,-2035.19 5683.31,-2000.79 5684,-2000.03 5740.75,-1937.95 5688.18,-1888.76 5732,-1816.96 5742.42,-1799.89 5758.13,-1784.54 5772.88,-1772.45"/>
<polygon fill="#c82323" stroke="black" points="5775.26,-1775.03 5780.94,-1766.08 5770.92,-1769.54 5775.26,-1775.03"/>
</g>
<!-- ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge283" 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="M5521.1,-2051.47C5530.99,-2046.19 5541.8,-2040.69 5552,-2036.03 5592.7,-2017.46 5611.01,-2027.91 5646,-2000.03 5660.97,-1988.1 5661.48,-1981.41 5670,-1964.27"/>
<path fill="none" stroke="black" d="M5670,-1962.27C5691.26,-1919.46 5670,-1902.52 5670,-1854.73"/>
</g>
<!-- ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge284" 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="M5466.69,-2045.59C5447.66,-2014.79 5423.78,-1963.22 5448,-1926.5 5470.36,-1892.59 5500.74,-1916.42 5532,-1890.5 5546.74,-1878.27 5549.26,-1872.64 5556,-1854.73"/>
<path fill="none" stroke="black" d="M5556,-1852.73C5588.28,-1761.81 5535.79,-1729.99 5556,-1635.65"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_application_ahriman -->
<g id="edge285" 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="M3410,-2267.55C3423.68,-2214.94 3413.33,-2198.52 3401,-2145.57 3393.2,-2112.07 3381.95,-2106.74 3372,-2073.8"/>
<path fill="none" stroke="black" d="M3372,-2071.8C3364.13,-2015.24 3377.47,-1859.16 3339,-1816.96 3289.9,-1763.09 3235.03,-1827.58 3179,-1780.96 3079.94,-1698.53 2731.92,-843.11 2723,-714.56"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_application_handlers_status -->
<g id="edge286" 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="M3383.34,-2334.89C3393.25,-2317.11 3404.93,-2292.8 3410,-2269.55"/>
<path fill="none" stroke="black" d="M3410,-2267.55C3425.74,-2195.33 3374.51,-2181.62 3358,-2109.57 3354.34,-2093.59 3330.7,-1828.44 3319,-1816.96 3218.43,-1718.25 3105.23,-1878.98 3004,-1780.96 2909.57,-1689.51 3047.64,-1587.2 2961,-1488.34 2805.36,-1310.75 2667.95,-1433.69 2450,-1342.8 2114.36,-1202.83 1980.16,-1211.82 1737,-941.41"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_application_lock -->
<g id="edge287" 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="M3361.09,-2333.68C3351.43,-2287.36 3332.1,-2191.45 3320,-2109.57 3312.84,-2061.13 3311.34,-2048.9 3308,-2000.03 3307.31,-1989.88 3309.9,-1824.43 3303,-1816.96 3251.89,-1761.64 3030.48,-1819.88 2966,-1780.96 2949.61,-1771.06 2954.94,-1759.3 2942,-1745.19"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_core_status_client -->
<g id="edge288" 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="M3319.23,-2356.39C3281.64,-2349.62 3231.34,-2333.91 3205,-2297.54 3185.16,-2270.14 3203.06,-2178.66 3196,-2145.57 3176.34,-2053.49 3132.41,-1951.88 3106.41,-1896.47"/>
<polygon fill="#e50505" stroke="black" points="3109.52,-1894.86 3102.08,-1887.32 3103.19,-1897.86 3109.52,-1894.86"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_core_status_watcher -->
<g id="edge289" 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="M3486,-2173.57C3490.45,-1966.43 3510.69,-1913.35 3488,-1707.42 3477.24,-1609.79 3430.84,-1582.43 3459,-1488.34 3492.4,-1376.71 3521.24,-1352.27 3603,-1269.26 3622.98,-1248.97 3661.93,-1261.11 3656,-1233.26"/>
<path fill="none" stroke="black" d="M3656,-1232.26C3643.38,-1205.91 3625.26,-1212.54 3601,-1196.26 3596.79,-1193.43 3592.4,-1190.46 3588.03,-1187.48"/>
<polygon fill="#e50505" stroke="black" points="3589.95,-1184.55 3579.72,-1181.79 3585.99,-1190.33 3589.95,-1184.55"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_core_status_web_client -->
<g id="edge290" 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="M3405.85,-2344.42C3425.65,-2333.74 3448.36,-2318.08 3462,-2297.54 3492.56,-2251.51 3495.82,-2229.94 3486,-2175.57"/>
<path fill="none" stroke="black" d="M3486,-2173.57C3482.5,-2144.66 3475.13,-2138.52 3472,-2109.57 3468.49,-2077.08 3471.82,-2068.72 3472,-2036.03 3472.44,-1955.45 3498.54,-1931.49 3474,-1854.73"/>
<path fill="none" stroke="black" d="M3474,-1852.73C3458.03,-1806.43 3407.87,-1777.61 3368.69,-1761.6"/>
<polygon fill="#e50505" stroke="black" points="3369.58,-1758.19 3359,-1757.8 3367.03,-1764.71 3369.58,-1758.19"/>
</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="2733" cy="-2268.55" rx="38.78" ry="28.98"/>
<text text-anchor="middle" x="2733" y="-2277.05" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2733" y="-2266.05" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2733" 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="edge291" 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="M3319.86,-2354.69C3202.73,-2337.7 2899.37,-2293.68 2781.15,-2276.53"/>
<polygon fill="#e50505" stroke="black" points="2781.37,-2273.03 2770.97,-2275.06 2780.36,-2279.96 2781.37,-2273.03"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_web_views_status_ahriman -->
<g id="edge292" 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="M3474,-1852.73C3368.18,-1545.98 3262,-1357.49 3486,-1122.72 3521.95,-1085.05 4362.58,-993.6 4412,-977.18 4577.48,-922.22 4593.73,-849.71 4759,-794.1 4852.07,-762.79 4888.81,-801.3 4977,-758.1 4980.88,-756.21 4984.66,-753.88 4988.29,-751.3"/>
<polygon fill="#e50505" stroke="black" points="4990.73,-753.84 4996.44,-744.91 4986.41,-748.33 4990.73,-753.84"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_web_views_status_package -->
<g id="edge293" 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="M3372,-2071.8C3348.75,-1959.53 3486.17,-1904.38 3412,-1816.96 3348.47,-1742.07 3257.53,-1855.84 3194,-1780.96 3172.86,-1756.03 3188.66,-1739.66 3194,-1707.42 3238.82,-1436.6 3241.74,-1351.79 3393,-1122.72 3473.31,-1001.1 3510.08,-975.29 3637,-903.64 3673.32,-883.14 3955.07,-802.12 3996,-794.1 4169.87,-760.07 4231.15,-830.16 4393,-758.1 4397.11,-756.27 4401.1,-753.93 4404.9,-751.29"/>
<polygon fill="#e50505" stroke="black" points="4407.12,-753.99 4412.89,-745.1 4402.84,-748.46 4407.12,-753.99"/>
</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="2869" cy="-2174.57" rx="56.64" ry="28.98"/>
<text text-anchor="middle" x="2869" y="-2183.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2869" y="-2172.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2869" 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="edge294" 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="M2761.18,-2248.49C2780.27,-2235.57 2805.84,-2218.29 2827.28,-2203.78"/>
<polygon fill="#b42d2d" stroke="black" points="2829.25,-2206.67 2835.58,-2198.17 2825.33,-2200.88 2829.25,-2206.67"/>
</g>
<!-- ahriman_models_counters&#45;&gt;ahriman_web_views_status_status -->
<g id="edge295" 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="M2723.94,-2240.26C2689.11,-2129.62 2575.51,-1709.86 2777,-1488.34 2801.61,-1461.28 2818.9,-1469.86 2851,-1452.34 3098.48,-1317.27 3137.12,-1241.1 3393,-1122.72 3498.29,-1074.02 4270.83,-819.61 4384,-794.1 4511.13,-765.46 4556.83,-813.04 4675,-758.1 4679.08,-756.21 4683.05,-753.82 4686.83,-751.15"/>
<polygon fill="#b42d2d" stroke="black" points="4689.08,-753.83 4694.8,-744.92 4684.77,-748.32 4689.08,-753.83"/>
</g>
<!-- ahriman_models_internal_status&#45;&gt;ahriman_core_status_client -->
<g id="edge296" 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="M2944,-1962.27C2950.39,-1951.24 3007.38,-1909.86 3047.19,-1881.76"/>
<polygon fill="#c82323" stroke="black" points="3049.24,-1884.6 3055.4,-1875.98 3045.21,-1878.88 3049.24,-1884.6"/>
</g>
<!-- ahriman_models_internal_status&#45;&gt;ahriman_core_status_web_client -->
<g id="edge297" 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="M2914,-2071.8C2911.04,-2022.27 2919.12,-2007.2 2944,-1964.27"/>
<path fill="none" stroke="black" d="M2944,-1962.27C2982.68,-1895.5 2975.01,-1860.08 3039,-1816.96 3107.74,-1770.63 3142.23,-1803.5 3222,-1780.96 3237.58,-1776.55 3254.23,-1770.76 3269.2,-1765.11"/>
<polygon fill="#c82323" stroke="black" points="3270.69,-1768.29 3278.78,-1761.45 3268.19,-1761.76 3270.69,-1768.29"/>
</g>
<!-- ahriman_models_internal_status&#45;&gt;ahriman_web_views_status_status -->
<g id="edge298" 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="M2889.05,-2147.45C2901.78,-2128.09 2915.6,-2100.55 2914,-2073.8"/>
<path fill="none" stroke="black" d="M2914,-2071.8C2902.4,-1877.41 2776.44,-1861.92 2736,-1671.42 2706.63,-1533.08 2754.13,-1471.43 2861,-1378.8 3105.43,-1166.94 3878.09,-863.62 4194,-794.1 4298.68,-771.07 4576.74,-800.93 4675,-758.1 4679.13,-756.31 4683.12,-753.99 4686.93,-751.36"/>
<polygon fill="#c82323" stroke="black" points="4689.14,-754.07 4694.93,-745.19 4684.87,-748.53 4689.14,-754.07"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_application_application -->
<g id="edge299" 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="M2184,-2071.8C2186.58,-1955.26 2178.31,-1919.02 2122,-1816.96 2039.57,-1667.54 1732.35,-1364.28 1623,-1233.26"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge300" 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="M2260,-1962.27C2302.68,-1651.13 2259.54,-1551.59 2122,-1269.26 2038.05,-1096.93 1869.41,-937.76 1789.68,-868.43"/>
<polygon fill="#950303" stroke="black" points="1791.64,-865.5 1781.78,-861.61 1787.06,-870.79 1791.64,-865.5"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_application_handlers_status -->
<g id="edge301" 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="M2184,-2071.8C2184.68,-2013.28 2250.73,-2022.05 2260,-1964.27"/>
<path fill="none" stroke="black" d="M2260,-1962.27C2293.27,-1754.9 1972.36,-1273.34 1826,-1122.72 1802.99,-1099.04 1780.04,-1113.71 1761,-1086.72 1723.27,-1033.23 1779.1,-991.54 1737,-941.41"/>
<path fill="none" stroke="black" d="M1737,-939.41C1697.76,-895.78 1636.51,-866.26 1592.72,-849.36"/>
<polygon fill="#950303" stroke="black" points="1593.7,-845.99 1583.1,-845.74 1591.23,-852.54 1593.7,-845.99"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge302" 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="M2506.87,-2357.67C2418.25,-2347.97 2228.77,-2314.7 2124,-2203.56 2100.6,-2178.73 2082.59,-2144.59 2070.7,-2117.55"/>
<polygon fill="#950303" stroke="black" points="2506.6,-2361.16 2516.91,-2358.72 2507.32,-2354.2 2506.6,-2361.16"/>
<polygon fill="#950303" stroke="black" points="2073.9,-2116.13 2066.75,-2108.31 2067.47,-2118.88 2073.9,-2116.13"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_report_email -->
<g id="edge303" 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="M2994,-2267.55C3191.05,-2165.53 3030.31,-1948.51 3209,-1816.96 3246.31,-1789.49 3554.89,-1759.93 3675.73,-1749.29"/>
<polygon fill="#950303" stroke="black" points="3676.15,-1752.77 3685.81,-1748.41 3675.54,-1745.79 3676.15,-1752.77"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_report_html -->
<g id="edge304" 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="M2632,-2173.57C2637.37,-2137.31 2663.61,-2140.02 2684,-2109.57 2766.36,-1986.59 2734.02,-1917.11 2843,-1816.96 3031.88,-1643.37 3340.98,-1561.71 3458.57,-1535.72"/>
<polygon fill="#950303" stroke="black" points="3459.66,-1539.07 3468.69,-1533.52 3458.17,-1532.23 3459.66,-1539.07"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge305" 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="M2588.38,-2348.14C2603.57,-2342.64 2621.94,-2336.8 2639,-2333.54 2778.47,-2306.86 3150.42,-2361.91 3277,-2297.54 3362.34,-2254.15 3507.9,-2050.25 3550,-1964.27"/>
<path fill="none" stroke="black" d="M3550,-1962.27C3558.56,-1941.53 3567.99,-1918.52 3575.92,-1899.12"/>
<polygon fill="#950303" stroke="black" points="3579.25,-1900.2 3579.79,-1889.62 3572.77,-1897.56 3579.25,-1900.2"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_report_report -->
<g id="edge306" 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="M2666,-2267.55C2700.3,-2216.34 2698.3,-2197.18 2732,-2145.57 2743.08,-2128.6 2748.97,-2126.58 2760,-2109.57 2840.2,-1985.93 2795.89,-1902.37 2916,-1816.96 3000.32,-1757 3048.43,-1815.39 3146,-1780.96 3176,-1770.37 3178.02,-1755.83 3208,-1745.19"/>
<path fill="none" stroke="black" d="M3208,-1743.19C3223.99,-1737.22 3208.84,-1718.29 3222,-1707.42 3289.6,-1651.56 3330.58,-1691.24 3416,-1671.42 3443.46,-1665.05 3473.86,-1656.61 3498.14,-1649.53"/>
<polygon fill="#950303" stroke="black" points="3499.2,-1652.87 3507.81,-1646.69 3497.23,-1646.15 3499.2,-1652.87"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_repository_executor -->
<g id="edge307" 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="M2556.21,-2333.22C2558.44,-2291.62 2564.51,-2211.72 2580,-2145.57 2588.84,-2107.8 2785.25,-1511.99 2816,-1488.34 2847.26,-1464.29 3421.48,-1429.86 3602.09,-1419.58"/>
<polygon fill="#950303" stroke="black" points="3602.37,-1423.07 3612.16,-1419 3601.98,-1416.08 3602.37,-1423.07"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_repository_repository -->
<g id="edge308" 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="M2290,-2267.55C2283.51,-2252.5 2301.26,-2249.87 2314,-2239.56 2339.97,-2218.53 2358.03,-2228.73 2380,-2203.56 2535.18,-2025.8 2443.32,-1907.12 2569,-1707.42 2640.51,-1593.79 2659.65,-1553.58 2777,-1488.34 2922.15,-1407.65 3435.01,-1335.63 3602.59,-1313.78"/>
<polygon fill="#950303" stroke="black" points="3603.19,-1317.24 3612.66,-1312.48 3602.29,-1310.29 3603.19,-1317.24"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_repository_update_handler -->
<g id="edge309" 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="M2585.28,-2344.41C2604.32,-2332.74 2628.67,-2316.08 2647,-2297.54 2657.57,-2286.85 2657.47,-2281.93 2666,-2269.55"/>
<path fill="none" stroke="black" d="M2666,-2267.55C2690.72,-2231.65 2628.85,-2219.04 2632,-2175.57"/>
<path fill="none" stroke="black" d="M2632,-2173.57C2634.88,-2133.74 2817.28,-1512.6 2849,-1488.34 2924.96,-1430.23 3616.58,-1476.93 3709,-1452.34 3715.08,-1450.72 3721.23,-1448.51 3727.22,-1445.97"/>
<polygon fill="#950303" stroke="black" points="3728.83,-1449.08 3736.48,-1441.75 3725.93,-1442.71 3728.83,-1449.08"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_status_client -->
<g id="edge310" 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="M2589,-2348.97C2604.16,-2343.69 2622.32,-2337.8 2639,-2333.54 2794.34,-2293.88 2854.74,-2348.98 2994,-2269.55"/>
<path fill="none" stroke="black" d="M2994,-2267.55C3038.89,-2241.94 2993.02,-2082.32 3016,-2036.03 3036.95,-1993.84 3083.36,-2010.16 3094,-1964.27"/>
<path fill="none" stroke="black" d="M3094,-1962.27C3096.41,-1941.94 3095.31,-1919.35 3093.24,-1900.15"/>
<polygon fill="#950303" stroke="black" points="3096.71,-1899.68 3092.06,-1890.16 3089.76,-1900.5 3096.71,-1899.68"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_status_watcher -->
<g id="edge311" 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="M2290,-2267.55C2273.77,-2237.93 2511.21,-1737.77 2526,-1707.42 2550.41,-1657.32 2556.82,-1644.72 2587,-1597.88 2619.8,-1546.98 2617.64,-1521.96 2668,-1488.34 2723.22,-1451.47 2758.88,-1490.81 2813,-1452.34 2844.81,-1429.73 2829.8,-1402.25 2861,-1378.8 3083.16,-1211.87 3196.77,-1288.22 3459,-1196.26 3473.95,-1191.02 3490.1,-1184.79 3504.52,-1179.01"/>
<polygon fill="#950303" stroke="black" points="3506.24,-1182.09 3514.2,-1175.09 3503.62,-1175.6 3506.24,-1182.09"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_status_web_client -->
<g id="edge312" 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="M2666,-2267.55C2675.03,-2255.53 2675.34,-2251.08 2685,-2239.56 2699.74,-2221.97 2706.07,-2220.07 2722,-2203.56 2801.86,-2120.73 2823.53,-2099.13 2882,-2000.03 2928.27,-1921.6 2900.13,-1870.21 2974,-1816.96 3064.35,-1751.82 3114.1,-1808.56 3222,-1780.96 3237.83,-1776.91 3254.66,-1771.16 3269.74,-1765.45"/>
<polygon fill="#950303" stroke="black" points="3271.3,-1768.6 3279.37,-1761.72 3268.78,-1762.07 3271.3,-1768.6"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_tree -->
<g id="edge313" 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="M2517.15,-2358.47C2467.22,-2352.94 2378.15,-2337.83 2314,-2297.54 2300.12,-2288.82 2296.73,-2284.49 2290,-2269.55"/>
<path fill="none" stroke="black" d="M2290,-2267.55C2269.86,-2222.79 2225.14,-2245.71 2200,-2203.56 2170.24,-2153.65 2181.72,-2131.86 2184,-2073.8"/>
<path fill="none" stroke="black" d="M2184,-2071.8C2181.68,-1993.15 2116.37,-1920.73 2075.14,-1882.68"/>
<polygon fill="#950303" stroke="black" points="2077.26,-1879.88 2067.49,-1875.76 2072.56,-1885.07 2077.26,-1879.88"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_upload_rsync -->
<g id="edge314" 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="M3448,-2267.55C3684.27,-2234.38 3750.2,-2264.02 3981,-2203.56 4081.74,-2177.16 4192.83,-2125.23 4251.78,-2095.69"/>
<polygon fill="#950303" stroke="black" points="4253.43,-2098.78 4260.78,-2091.15 4250.28,-2092.53 4253.43,-2098.78"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_upload_s3 -->
<g id="edge315" 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="M2994,-2267.55C3123.93,-2201.98 3265.94,-2219.13 3258,-2073.8"/>
<path fill="none" stroke="black" d="M3258,-2071.8C3256.66,-2012.85 3256.21,-1944.88 3256.07,-1900.93"/>
<polygon fill="#950303" stroke="black" points="3259.57,-1900.83 3256.04,-1890.84 3252.57,-1900.85 3259.57,-1900.83"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_upload_upload -->
<g id="edge316" 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="M2588.36,-2348.06C2603.55,-2342.54 2621.92,-2336.71 2639,-2333.54 2724.84,-2317.59 3345.53,-2335.83 3424,-2297.54 3438.73,-2290.35 3431.8,-2272.02 3448,-2269.55"/>
<path fill="none" stroke="black" d="M3448,-2267.55C3493.3,-2260.64 3787.84,-2129.73 3829,-2109.57 3906.76,-2071.49 3993.64,-2019.94 4043.27,-1989.58"/>
<polygon fill="#950303" stroke="black" points="4045.4,-1992.38 4052.1,-1984.17 4041.74,-1986.42 4045.4,-1992.38"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_models_counters -->
<g id="edge317" 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="M2586.14,-2345.73C2611.46,-2332.85 2648.1,-2314.13 2680,-2297.54 2684.22,-2295.34 2688.62,-2293.04 2693.01,-2290.74"/>
<polygon fill="#950303" stroke="black" points="2694.71,-2293.8 2701.93,-2286.04 2691.45,-2287.6 2694.71,-2293.8"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_web_views_status_package -->
<g id="edge318" 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="M2290,-2267.55C2259.88,-2220.14 2416.33,-1314.22 2450,-1269.26 2632.87,-1025.06 3436.59,-841.25 3738,-794.1 3882.02,-771.58 4258.79,-815.02 4393,-758.1 4397.14,-756.35 4401.15,-754.06 4404.97,-751.45"/>
<polygon fill="#950303" stroke="black" points="4407.17,-754.17 4412.97,-745.3 4402.91,-748.61 4407.17,-754.17"/>
</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="2271" cy="-2456.51" rx="74.91" ry="28.98"/>
<text text-anchor="middle" x="2271" y="-2465.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2271" y="-2454.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2271" 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="edge319" 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="M2327.45,-2437.23C2381.17,-2419.83 2460.95,-2393.99 2510.37,-2377.99"/>
<polygon fill="#c04040" stroke="black" points="2511.7,-2381.23 2520.13,-2374.82 2509.54,-2374.58 2511.7,-2381.23"/>
</g>
<!-- ahriman_models_package_source&#45;&gt;ahriman_application_ahriman -->
<g id="edge320" class="edge">
<title>ahriman_models_package_source&#45;&gt;ahriman_application_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2328,-2267.55C2312.72,-2244.26 2413.26,-1295.36 2423,-1269.26 2477.98,-1121.85 2550.05,-1116.58 2623,-977.18 2651.95,-921.85 2723,-777.01 2723,-714.56"/>
<path fill="none" stroke="black" d="M2723,-712.56C2717.14,-616.26 2723,-591.96 2723,-495.48 2723,-495.48 2723,-495.48 2723,-399.5 2723,-307.13 2900.89,-292.44 2837,-225.74"/>
<path fill="none" stroke="black" d="M2837,-223.74C2688.57,-68.91 1983.27,-37.28 1776.87,-31.3"/>
<polygon fill="#c82323" stroke="black" points="1776.94,-27.8 1766.85,-31.02 1776.74,-34.8 1776.94,-27.8"/>
</g>
<!-- ahriman_models_package_source&#45;&gt;ahriman_application_application -->
<g id="edge321" class="edge">
<title>ahriman_models_package_source&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2657.82,-2346.7C2640.19,-2342.04 2620.34,-2337.17 2602,-2333.54 2487.57,-2310.87 2436.79,-2365.54 2342,-2297.54 2330.7,-2289.43 2337.63,-2279.59 2328,-2269.55"/>
<path fill="none" stroke="black" d="M2328,-2267.55C2221.77,-2156.79 2337.67,-2066.13 2274,-1926.5 2140.8,-1634.38 2020.63,-1614.84 1803,-1378.8 1692.2,-1258.62 1674.99,-1213.43 1539,-1122.72 1506.55,-1101.08 1466.54,-1082.47 1435.72,-1069.63"/>
<polygon fill="#c82323" stroke="black" points="1437.05,-1066.39 1426.47,-1065.83 1434.39,-1072.86 1437.05,-1066.39"/>
</g>
<!-- ahriman_models_package_source&#45;&gt;ahriman_core_spawn -->
<g id="edge322" class="edge">
<title>ahriman_models_package_source&#45;&gt;ahriman_core_spawn</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2755.16,-2342.34C2765.15,-2338.82 2775.8,-2335.61 2786,-2333.54 3113.91,-2266.94 3208.41,-2355.24 3538,-2297.54 3669.97,-2274.44 3819.51,-2220.39 3891.21,-2192.65"/>
<polygon fill="#c82323" stroke="black" points="3892.75,-2195.81 3900.8,-2188.92 3890.21,-2189.29 3892.75,-2195.81"/>
</g>
<!-- ahriman_models_report_settings&#45;&gt;ahriman_core_report_report -->
<g id="edge323" 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="M2997.29,-2333.94C3001.36,-2322.82 3005.55,-2309.75 3008,-2297.54 3050.06,-2087.68 2901.78,-1981.22 3039,-1816.96 3081.57,-1766 3129.64,-1819.08 3184,-1780.96 3199.67,-1769.96 3189.9,-1751.42 3208,-1745.19"/>
</g>
<!-- ahriman_models_repository_paths -->
<g id="node70" class="node">
<title>ahriman_models_repository_paths</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="2077" cy="-2456.51" rx="62.87" ry="28.98"/>
<text text-anchor="middle" x="2077" y="-2465.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2077" y="-2454.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2077" 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="edge324" 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="M2028.45,-2437.75C1909.95,-2393.13 1599,-2268.5 1372,-2109.57 1314.44,-2069.27 1294,-2060.37 1258,-2000.03 1167.27,-1847.99 1155.1,-1370.93 1045,-1232.26 1004.45,-1181.18 951.69,-1215.72 917,-1160.49"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge325" 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="M2055.28,-2428.88C2042.79,-2411.48 2028.67,-2387.6 2024,-2363.53"/>
<path fill="none" stroke="black" d="M2024,-2361.53C1952.52,-1992.83 1598.58,-2105.74 1410,-1780.96 1374.37,-1719.6 1259,-1231.44 1259,-1160.49 1259,-1160.49 1259,-1160.49 1259,-1048.95 1259,-986.87 1281.75,-918.18 1299,-875.03"/>
<polygon fill="#f91010" stroke="black" points="1302.27,-876.27 1302.81,-865.69 1295.79,-873.63 1302.27,-876.27"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_core_alpm_repo -->
<g id="edge326" 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="M2129.18,-2440.09C2147.33,-2435.3 2167.92,-2430.5 2187,-2427.52 2448.32,-2386.73 2523.43,-2451.6 2781,-2391.52 2845.79,-2376.41 2853.95,-2347.47 2919,-2333.54 3080.39,-2298.97 4239.26,-2307.64 4404,-2297.54 4955.85,-2263.71 5156.2,-2439.54 5642,-2175.57"/>
<path fill="none" stroke="black" d="M5642,-2173.57C5675.44,-2156.89 5707.92,-2129.61 5730.95,-2107.8"/>
<polygon fill="#f91010" stroke="black" points="5733.61,-2110.09 5738.38,-2100.63 5728.75,-2105.05 5733.61,-2110.09"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge327" 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="M2024,-2361.53C2018.9,-2320.97 2019.93,-2310.23 2024,-2269.55"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_core_repository_properties -->
<g id="edge328" 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="M2024,-2361.53C2009.51,-2246.32 2808.55,-1860.98 2916,-1816.96 2981.04,-1790.31 3003.86,-1804.75 3070,-1780.96 3139.11,-1756.09 3147,-1726.22 3218,-1707.42 3492.12,-1634.85 3586.29,-1761.98 3855,-1671.42 3859.32,-1669.96 3863.61,-1668.05 3867.78,-1665.88"/>
<polygon fill="#f91010" stroke="black" points="3869.76,-1668.78 3876.67,-1660.75 3866.26,-1662.71 3869.76,-1668.78"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_models_package -->
<g id="edge329" 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="M2123.79,-2436.9C2133.66,-2433.43 2144.09,-2430.09 2154,-2427.52 2279.31,-2395.06 2431.15,-2376.25 2507,-2368.2"/>
<polygon fill="#f91010" stroke="black" points="2507.61,-2371.66 2517.19,-2367.14 2506.88,-2364.69 2507.61,-2371.66"/>
</g>
<!-- ahriman_models_sign_settings&#45;&gt;ahriman_application_ahriman -->
<g id="edge330" 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="M3478.93,-2347.62C3462.11,-2342.74 3442.78,-2337.5 3425,-2333.54 3328.29,-2312.03 3285.61,-2355.14 3205,-2297.54 3105.41,-2226.38 2723,-1429.43 2723,-1307.03 2723,-1307.03 2723,-1307.03 2723,-939.41 2723,-839.48 2723.28,-814.49 2723,-714.56"/>
</g>
<!-- ahriman_models_sign_settings&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge331" 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="M3521.11,-2333.47C3519.93,-2315.1 3519.69,-2290.67 3524,-2269.55"/>
</g>
<!-- ahriman_models_sign_settings&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge332" 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="M3574.35,-2354.25C3614.99,-2348.45 3673.64,-2340.21 3725,-2333.54 3857.73,-2316.31 3896.15,-2337.16 4024,-2297.54 4110.2,-2270.83 4126.65,-2250.05 4204,-2203.56 4256.57,-2171.96 4313.83,-2130.34 4350.27,-2102.87"/>
<polygon fill="#c82323" stroke="black" points="4352.76,-2105.37 4358.62,-2096.54 4348.54,-2099.79 4352.76,-2105.37"/>
</g>
<!-- ahriman_models_smtp_ssl_settings -->
<g id="node72" class="node">
<title>ahriman_models_smtp_ssl_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c24747" stroke="black" cx="3752" cy="-2072.8" rx="67.76" ry="28.98"/>
<text text-anchor="middle" x="3752" y="-2081.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3752" y="-2070.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="3752" 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="edge333" 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="M3748.87,-2043.63C3747.19,-2021.74 3746.45,-1990.76 3752,-1964.27"/>
</g>
<!-- ahriman_models_upload_settings&#45;&gt;ahriman_core_upload_upload -->
<g id="edge334" 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="M3955.28,-2338C3975.49,-2321.49 3999.39,-2297.43 4010,-2269.55"/>
<path fill="none" stroke="black" d="M4010,-2267.55C4043.72,-2178.97 4065.9,-2069.88 4076.58,-2009.64"/>
<polygon fill="#b03a3a" stroke="black" points="4080.04,-2010.14 4078.31,-1999.69 4073.14,-2008.94 4080.04,-2010.14"/>
</g>
<!-- ahriman_models_user -->
<g id="node74" class="node">
<title>ahriman_models_user</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#af1313" stroke="black" cx="5632" cy="-2072.8" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="5632" y="-2081.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5632" y="-2070.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="5632" y="-2059.3" 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="edge335" 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="M5746,-1962.27C5757.16,-1915.79 5739.03,-1902.01 5746,-1854.73"/>
<path fill="none" stroke="black" d="M5746,-1852.73C5770.76,-1684.72 5787.2,-1555 5631,-1488.34 5452.62,-1412.22 4947.53,-1497.83 4759,-1452.34 4692.98,-1436.41 4254.29,-1241.9 4204,-1196.26 4175.96,-1170.82 4192.19,-1144.18 4161,-1122.72 4080.1,-1067.06 4036.42,-1116.98 3943,-1086.72 3769.59,-1030.56 3752.31,-949.9 3576,-903.64 3311.53,-834.26 2442.24,-831.2 2210.95,-831.65"/>
<polygon fill="#af1313" stroke="black" points="2210.73,-828.15 2200.74,-831.67 2210.75,-835.15 2210.73,-828.15"/>
</g>
<!-- ahriman_models_user&#45;&gt;ahriman_core_auth_auth -->
<g id="edge336" 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="M5746,-1852.73C5749.94,-1825.99 5765.41,-1800.05 5780.38,-1780.34"/>
<polygon fill="#af1313" stroke="black" points="5783.29,-1782.31 5786.74,-1772.29 5777.79,-1777.98 5783.29,-1782.31"/>
</g>
<!-- ahriman_models_user&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge337" 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="M5659,-2052.02C5690.95,-2027.74 5740.54,-1987.02 5746,-1964.27"/>
<path fill="none" stroke="black" d="M5746,-1962.27C5759.67,-1905.36 5670,-1913.25 5670,-1854.73"/>
</g>
<!-- ahriman_models_user&#45;&gt;ahriman_core_status_web_client -->
<g id="edge338" 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="M5601,-2055.62C5585.26,-2048.23 5565.59,-2040.2 5547,-2036.03 5364.47,-1995.11 4880.05,-2068.57 4706,-2000.03 4659.21,-1981.61 4666.47,-1945.73 4620,-1926.5 4524.44,-1886.94 4258.66,-1903.03 4156,-1890.5 4060.28,-1878.81 4036.89,-1871.89 3942,-1854.73"/>
</g>
<!-- ahriman_models_user_access -->
<g id="node75" class="node">
<title>ahriman_models_user_access</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="5287" cy="-2174.57" rx="50.82" ry="28.98"/>
<text text-anchor="middle" x="5287" y="-2183.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5287" y="-2172.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="5287" y="-2161.07" 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="edge339" 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="M5480,-1743.19C5508.83,-1630.76 5451.24,-1566.54 5537,-1488.34 5583.36,-1446.07 5757.45,-1472.06 5817,-1452.34 6089.16,-1362.19 6322,-1337.66 6322,-1050.95 6322,-1050.95 6322,-1050.95 6322,-939.41 6322,-726.98 6347.49,-674.75 6384,-465.49 6389,-436.81 6392.44,-430.07 6398,-401.5"/>
<path fill="none" stroke="black" d="M6398,-399.5C6399.43,-371.09 6391.47,-363.18 6398,-335.5"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_application_handlers_user -->
<g id="edge340" 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="M5249.28,-2154.87C5224.34,-2142.36 5191.02,-2125.36 5162,-2109.57 5134.05,-2094.37 5127.38,-2090 5100,-2073.8"/>
<path fill="none" stroke="black" d="M5100,-2071.8C5083.52,-2062.06 5089.99,-2049.1 5076,-2036.03 4933.55,-1902.95 4877.6,-1887.84 4696,-1816.96 4628.1,-1790.45 4589.18,-1830.81 4536,-1780.96 4437.11,-1688.25 4551.52,-1578.16 4450,-1488.34 4376.45,-1423.27 4311.59,-1509.86 4232,-1452.34 4157.53,-1398.53 4202.57,-1332.58 4136,-1269.26 4079.77,-1215.77 3891.48,-1150.45 3819,-1122.72 3663.99,-1063.42 3623.5,-1051.42 3462,-1013.18 2985.75,-900.44 2394.21,-849.65 2210.85,-835.89"/>
<polygon fill="#f91010" stroke="black" points="2210.87,-832.38 2200.63,-835.13 2210.35,-839.36 2210.87,-832.38"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_core_auth_auth -->
<g id="edge341" 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="M5324.82,-2155.05C5333.58,-2151.39 5342.97,-2147.96 5352,-2145.57 5422.68,-2126.91 5618.5,-2150.62 5679,-2109.57 5693.9,-2099.47 5683.22,-2084.08 5698,-2073.8"/>
<path fill="none" stroke="black" d="M5698,-2071.8C5712.78,-2061.53 5705.67,-2050.02 5717,-2036.03 5732.69,-2016.67 5742.51,-2017.79 5760,-2000.03 5763.65,-1996.33 5878.41,-1859.91 5878,-1854.73"/>
<path fill="none" stroke="black" d="M5878,-1852.73C5875.81,-1825.47 5860.07,-1799.24 5844.51,-1779.5"/>
<polygon fill="#f91010" stroke="black" points="5847.18,-1777.23 5838.13,-1771.72 5841.77,-1781.67 5847.18,-1777.23"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge342" 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="M5306.24,-2147.51C5330.3,-2116.68 5374.29,-2065.8 5423,-2036.03 5468.34,-2008.33 5492.2,-2028.61 5537,-2000.03 5610.81,-1952.96 5670,-1942.28 5670,-1854.73"/>
<path fill="none" stroke="black" d="M5670,-1852.73C5670.27,-1792.92 5680.79,-1724.61 5688.86,-1680.85"/>
<polygon fill="#f91010" stroke="black" points="5692.34,-1681.29 5690.74,-1670.81 5685.46,-1679.99 5692.34,-1681.29"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_models_user -->
<g id="edge343" 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="M5325.26,-2155.21C5333.9,-2151.6 5343.15,-2148.13 5352,-2145.57 5450.55,-2117.06 5484.71,-2147.59 5580,-2109.57 5586.08,-2107.15 5592.15,-2103.91 5597.89,-2100.37"/>
<polygon fill="#f91010" stroke="black" points="5600.17,-2103.06 5606.58,-2094.62 5596.31,-2097.21 5600.17,-2103.06"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge344" 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="M5442,-1524.11C5454.48,-1509.59 5449.84,-1498.61 5466,-1488.34 5554.8,-1431.89 5599.41,-1483.21 5700,-1452.34 5882.7,-1396.28 5931.34,-1364.78 6070,-1233.26 6117.42,-1188.28 6117.02,-1164.85 6167,-1122.72 6213.64,-1083.4 6264.74,-1108.83 6284,-1050.95"/>
<path fill="none" stroke="black" d="M6284,-1048.95C6297.75,-1003.18 6294.63,-988.01 6284,-941.41"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_base -->
<g id="edge345" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5214,-1852.73C5154.84,-1610.87 5070.64,-1575.48 4982,-1342.8 4963.85,-1295.16 4964.3,-1281.56 4948,-1233.26"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_index -->
<g id="edge346" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5266.63,-2147.67C5257.69,-2136.13 5247.16,-2122.29 5238,-2109.57 5145.91,-1981.77 5138.63,-1938.15 5038,-1816.96 4936.2,-1694.35 4892.79,-1680.17 4786,-1561.88 4616.5,-1374.13 4638.91,-1256.12 4424,-1122.72 4364.28,-1085.65 4318.04,-1138.04 4270,-1086.72 4225.27,-1038.94 4230.45,-1005 4246,-941.41"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_service_add -->
<g id="edge347" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_service_add</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5328,-1633.65C5324.5,-1594.61 5397.66,-1513.16 5428,-1488.34 5443.94,-1475.3 5751.82,-1354.17 5769,-1342.8 5886.73,-1264.92 5882.67,-1204.12 5998,-1122.72 6027.23,-1102.09 6051.19,-1117.16 6070,-1086.72 6134.85,-981.79 5994.59,-827.05 5950,-794.1 5886.13,-746.92 5845.61,-794.43 5775,-758.1 5771.16,-756.13 5767.41,-753.75 5763.8,-751.14"/>
<polygon fill="#f91010" stroke="black" points="5765.68,-748.17 5755.67,-744.7 5761.33,-753.65 5765.68,-748.17"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge348" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_service_reload_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5214,-1852.73C5200.93,-1815.84 5185.39,-1813.05 5163,-1780.96 5061.73,-1635.78 5026.42,-1605.68 4938,-1452.34 4821.09,-1249.59 4786.02,-1198.87 4711,-977.18 4684.71,-899.5 4643.31,-862.87 4688,-794.1 4709.47,-761.07 4735.12,-778.2 4769,-758.1 4773.44,-755.47 4777.93,-752.55 4782.35,-749.5"/>
<polygon fill="#f91010" stroke="black" points="4784.61,-752.19 4790.71,-743.53 4780.54,-746.49 4784.61,-752.19"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_service_remove -->
<g id="edge349" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_service_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5252,-2071.8C5239.36,-1996.18 5299.91,-1988.51 5345,-1926.5 5369.28,-1893.1 5388.34,-1892.93 5404,-1854.73"/>
<path fill="none" stroke="black" d="M5404,-1852.73C5411.63,-1831.57 5322.7,-1692.16 5314,-1671.42 5294.06,-1623.9 5284.56,-1612.69 5276,-1561.88 5262.52,-1481.88 5333.91,-900.09 5290,-831.87"/>
<path fill="none" stroke="black" d="M5290,-829.87C5252.93,-775.74 5215.21,-795.06 5161,-758.1 5158.28,-756.25 5155.59,-754.21 5152.95,-752.04"/>
<polygon fill="#f91010" stroke="black" points="5155.1,-749.27 5145.28,-745.29 5150.47,-754.52 5155.1,-749.27"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_service_request -->
<g id="edge350" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_service_request</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5404,-1852.73C5426.02,-1798.5 5467.38,-1802.34 5480,-1745.19"/>
<path fill="none" stroke="black" d="M5480,-1743.19C5488.5,-1704.72 5440.78,-1708.68 5428,-1671.42 5406.94,-1610.05 5396.4,-1572.26 5442,-1526.11"/>
<path fill="none" stroke="black" d="M5442,-1524.11C5454.57,-1509.67 5450.33,-1499.34 5466,-1488.34 5519.98,-1450.42 5548.05,-1475.01 5610,-1452.34 5622.96,-1447.6 6050.9,-1246.09 6056,-1233.26"/>
<path fill="none" stroke="black" d="M6056,-1232.26C6095.04,-1141.64 6099.15,-1111.6 6092,-1013.18 6088.44,-964.11 6094.34,-949.3 6076,-903.64 6053.73,-848.18 6044.16,-832.07 5998,-794.1 5959.61,-762.53 5906.66,-740.85 5868.88,-728.19"/>
<polygon fill="#f91010" stroke="black" points="5869.74,-724.79 5859.14,-725.01 5867.57,-731.44 5869.74,-724.79"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_service_search -->
<g id="edge351" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_service_search</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5708,-1305.03C5759.05,-1244.66 5859.81,-1139.9 5884,-1122.72 5914.8,-1100.85 5940.72,-1118.59 5961,-1086.72 5978.55,-1059.15 5971.28,-1044.21 5961,-1013.18 5922.84,-897.98 5902.66,-855.55 5798,-794.1 5692.08,-731.92 5635.45,-809.72 5524,-758.1 5519.81,-756.16 5515.73,-753.73 5511.83,-751"/>
<polygon fill="#f91010" stroke="black" points="5513.67,-748 5503.61,-744.65 5509.39,-753.54 5513.67,-748"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_status_ahriman -->
<g id="edge352" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_status_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5138,-1414.57C5116.11,-1335.83 5147.79,-1312.74 5162,-1232.26 5164.85,-1216.12 5168.21,-1212.55 5170,-1196.26 5173.57,-1163.77 5170.89,-1155.39 5170,-1122.72 5166,-976.51 5235.03,-914.53 5152,-794.1 5129.64,-761.67 5103.89,-779.79 5071,-758.1 5067.3,-755.66 5063.6,-752.92 5060.01,-750.04"/>
<polygon fill="#f91010" stroke="black" points="5062.24,-747.34 5052.34,-743.56 5057.72,-752.69 5062.24,-747.34"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_status_package -->
<g id="edge353" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5100,-2071.8C5057.54,-2028.24 5040.66,-1862.21 5000,-1816.96 4976.88,-1791.23 4959.18,-1801.02 4931,-1780.96 4873.24,-1739.82 4866.02,-1720.67 4815,-1671.42 4765.13,-1623.28 4752.45,-1611.45 4704,-1561.88 4610.25,-1465.96 4407.01,-1188.27 4290,-1122.72 4221.86,-1084.55 4174.11,-1141.05 4118,-1086.72 4034.25,-1005.64 4007.34,-937.8 4056,-831.87"/>
<path fill="none" stroke="black" d="M4056,-829.87C4074.09,-794.46 4099.74,-804.93 4138,-794.1 4248.13,-762.94 4289.63,-807.25 4393,-758.1 4397.07,-756.17 4401.02,-753.76 4404.8,-751.07"/>
<polygon fill="#f91010" stroke="black" points="4407.05,-753.75 4412.76,-744.82 4402.73,-748.25 4407.05,-753.75"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_status_packages -->
<g id="edge354" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_status_packages</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5404,-1852.73C5429.65,-1792.51 5406.23,-1767.39 5380,-1707.42 5364.21,-1671.33 5333.35,-1674.67 5328,-1635.65"/>
<path fill="none" stroke="black" d="M5328,-1633.65C5320.98,-1568.57 5313.35,-1541.16 5352,-1488.34 5378.21,-1452.52 5685.79,-1345.47 5708,-1307.03"/>
<path fill="none" stroke="black" d="M5708,-1305.03C5736,-1259.34 5677.58,-1245.31 5656,-1196.26 5578.41,-1019.88 5640.73,-919.01 5494,-794.1 5438.83,-747.14 5402.86,-783.49 5335,-758.1 5322.96,-753.6 5310.49,-747.63 5299.04,-741.55"/>
<polygon fill="#f91010" stroke="black" points="5300.57,-738.39 5290.11,-736.68 5297.22,-744.54 5300.57,-738.39"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_status_status -->
<g id="edge355" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_status_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5273.92,-2146.38C5265.36,-2126.75 5255.19,-2099.3 5252,-2073.8"/>
<path fill="none" stroke="black" d="M5252,-2071.8C5239.82,-1974.62 5244.31,-1947.86 5214,-1854.73"/>
<path fill="none" stroke="black" d="M5214,-1852.73C5190.14,-1800.27 5150.54,-1817.53 5106,-1780.96 5017.33,-1708.15 5007.51,-1676.55 4924,-1597.88 4852.83,-1530.83 4819.75,-1528.96 4759,-1452.34 4733.17,-1419.77 4612.66,-1150.8 4582,-1122.72 4552.04,-1095.29 4529.42,-1112.47 4498,-1086.72 4437.36,-1037.03 4384.97,-1018.72 4398,-941.41"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_user_login -->
<g id="edge356" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5708,-1305.03C5781.43,-1210.73 5633.1,-869.06 5540,-794.1 5499.6,-761.58 5473.74,-784.34 5429,-758.1 5425.17,-755.86 5421.4,-753.26 5417.75,-750.46"/>
<polygon fill="#f91010" stroke="black" points="5419.95,-747.74 5410,-744.1 5415.51,-753.15 5419.95,-747.74"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge357" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_user_logout</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5214,-1852.73C5196.65,-1789.89 5204.61,-1771.74 5194,-1707.42 5172.57,-1577.53 5174.51,-1543.04 5138,-1416.57"/>
<path fill="none" stroke="black" d="M5138,-1414.57C5087.77,-1294.95 5161.55,-1249.05 5132,-1122.72 5098.47,-979.39 5006.87,-828.65 4959.4,-757.09"/>
<polygon fill="#f91010" stroke="black" points="4962.3,-755.13 4953.83,-748.76 4956.48,-759.02 4962.3,-755.13"/>
</g>
<!-- ahriman_models_user_identity -->
<g id="node76" class="node">
<title>ahriman_models_user_identity</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#ce3b3b" stroke="black" cx="5901" cy="-1049.95" rx="50.82" ry="28.98"/>
<text text-anchor="middle" x="5901" y="-1058.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5901" y="-1047.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="5901" 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="edge358" 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="M5943.17,-1033.7C5984.89,-1018.04 6045.16,-993.68 6064,-977.18 6134.06,-915.84 6182.92,-816.18 6206.95,-758.89"/>
<polygon fill="#ce3b3b" stroke="black" points="6210.29,-759.97 6210.87,-749.39 6203.82,-757.3 6210.29,-759.97"/>
</g>
<!-- ahriman_models_user_identity&#45;&gt;ahriman_web_views_user_login -->
<g id="edge359" 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="M5863.5,-1030.09C5833.26,-1012.18 5794.15,-981.96 5784,-941.41"/>
</g>
<!-- ahriman_version -->
<g id="node77" class="node">
<title>ahriman_version</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#e72222" stroke="black" cx="4616" cy="-1744.19" rx="38.37" ry="21.43"/>
<text text-anchor="middle" x="4616" y="-1747.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4616" 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="edge360" 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="M4614.18,-1722.71C4609.66,-1681.78 4594.83,-1588.48 4550,-1526.11"/>
<path fill="none" stroke="black" d="M4550,-1524.11C4536.19,-1506.28 4533.22,-1500.14 4514,-1488.34 4470.52,-1461.65 4449.11,-1477.97 4405,-1452.34 4278.16,-1378.63 4275.63,-1321.24 4159,-1232.26 4066.97,-1162.05 4034.71,-1157.35 3943,-1086.72 3884.47,-1041.65 3872.85,-1026.66 3818,-977.18 3750.95,-916.7 3676,-922.17 3676,-831.87 3676,-831.87 3676,-831.87 3676,-595.24 3676,-401.82 4739.94,-419.01 5549,-371.5 5596.13,-368.74 6399.47,-382.69 6398,-335.5"/>
<path fill="none" stroke="black" d="M6398,-334.5C6390.23,-136.73 2780.86,-415.53 2837,-225.74"/>
</g>
<!-- ahriman_version&#45;&gt;ahriman_application_lock -->
<g id="edge361" 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="M4598.69,-1725.28C4565.87,-1692.72 4490.82,-1624.73 4412,-1597.88 4311.7,-1563.71 3564.83,-1567.29 3459,-1561.88 3277.02,-1552.57 3061.68,-1537.5 2961.5,-1530.26"/>
<polygon fill="#e72222" stroke="black" points="2961.53,-1526.75 2951.3,-1529.52 2961.03,-1533.73 2961.53,-1526.75"/>
</g>
<!-- ahriman_version&#45;&gt;ahriman_web_views_index -->
<g id="edge362" 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="M4550,-1524.11C4538.89,-1508.52 4540.14,-1501.24 4526,-1488.34 4501.32,-1465.82 4483.35,-1476.24 4460,-1452.34 4344.8,-1334.44 4421.17,-1222.54 4290,-1122.72 4227.85,-1075.43 4167.24,-1147.34 4118,-1086.72 4097.39,-1061.35 4108.02,-1044.31 4118,-1013.18 4142.27,-937.48 4176.74,-933 4222,-867.64 4232.9,-851.91 4234.91,-847.48 4246,-831.87"/>
<path fill="none" stroke="black" d="M4246,-829.87C4306.37,-735.83 4389.92,-813.48 4487,-758.1 4491.83,-755.35 4496.57,-752.01 4501.06,-748.42"/>
<polygon fill="#e72222" stroke="black" points="4503.53,-750.91 4508.86,-741.75 4498.99,-745.59 4503.53,-750.91"/>
</g>
<!-- ahriman_version&#45;&gt;ahriman_web_views_status_status -->
<g id="edge363" 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="M4550,-1524.11C4444.87,-1369.49 4561.05,-1249.92 4424,-1122.72 4372.48,-1074.91 4313.68,-1141.79 4270,-1086.72 4194.64,-991.71 4360.08,-870.31 4398,-831.87"/>
<path fill="none" stroke="black" d="M4398,-829.87C4492.29,-744.53 4561.84,-816.15 4675,-758.1 4678.84,-756.13 4682.6,-753.76 4686.21,-751.15"/>
<polygon fill="#e72222" stroke="black" points="4688.67,-753.66 4694.33,-744.71 4684.32,-748.18 4688.67,-753.66"/>
</g>
<!-- ahriman_web -->
<g id="node78" class="node">
<title>ahriman_web</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="2539" cy="-400.5" rx="41.59" ry="18"/>
<text text-anchor="middle" x="2539" 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="edge364" 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="M2552.73,-383.36C2565.83,-368.91 2586.81,-348.11 2609,-335.5"/>
</g>
<!-- ahriman_web_middlewares -->
<g id="node79" class="node">
<title>ahriman_web_middlewares</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="5740" cy="-494.48" rx="50.41" ry="28.98"/>
<text text-anchor="middle" x="5740" y="-502.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5740" y="-491.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5740" 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="edge365" 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="M5706.96,-472.38C5685.12,-458.42 5656.43,-440.09 5633.69,-425.57"/>
<polygon fill="#c82323" stroke="black" points="5635.29,-422.44 5624.98,-420.01 5631.53,-428.34 5635.29,-422.44"/>
</g>
<!-- ahriman_web_middlewares_auth_handler&#45;&gt;ahriman_web_web -->
<g id="edge366" 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="M6224,-676.72C6224,-653.95 6224,-623.87 6224,-597.24"/>
</g>
<!-- ahriman_web_middlewares_exception_handler -->
<g id="node81" class="node">
<title>ahriman_web_middlewares_exception_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="5795" cy="-596.24" rx="67.35" ry="36.54"/>
<text text-anchor="middle" x="5795" y="-610.24" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5795" y="-599.24" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5795" y="-588.24" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">middlewares.</text>
<text text-anchor="middle" x="5795" 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="edge367" 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="M5742.71,-572.78C5712.21,-556.41 5676.89,-530.86 5662,-495.48"/>
</g>
<!-- ahriman_web_routes -->
<g id="node82" class="node">
<title>ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="5596" cy="-494.48" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="5596" y="-502.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5596" y="-491.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5596" 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="edge368" 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="M5596,-465.38C5596,-457.34 5596,-448.44 5596,-439.9"/>
<polygon fill="#732626" stroke="black" points="5599.5,-439.74 5596,-429.74 5592.5,-439.74 5599.5,-439.74"/>
</g>
<!-- ahriman_web_views -->
<g id="node83" class="node">
<title>ahriman_web_views</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="4864" cy="-596.24" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="4864" y="-604.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4864" y="-593.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4864" 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="edge369" 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="M4889.01,-574.24C4897.14,-568.5 4906.52,-562.91 4916,-559.47 5032.51,-517.18 5412.2,-501.29 5547.54,-496.88"/>
<polygon fill="#f91010" stroke="black" points="5547.73,-500.37 5557.61,-496.56 5547.5,-493.38 5547.73,-500.37"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_index -->
<g id="edge370" 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="M4768.49,-823.16C4722.08,-813.7 4641.74,-793.53 4581,-758.1 4576.2,-755.3 4571.48,-751.93 4566.99,-748.33"/>
<polygon fill="#950303" stroke="black" points="4569.07,-745.5 4559.2,-741.65 4564.51,-750.81 4569.07,-745.5"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_add -->
<g id="edge371" 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="M4844.27,-828.55C4987.24,-823.31 5489.67,-802.11 5643,-758.1 5657.5,-753.94 5672.44,-747.24 5685.66,-740.32"/>
<polygon fill="#950303" stroke="black" points="5687.39,-743.37 5694.52,-735.53 5684.06,-737.21 5687.39,-743.37"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge372" 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="M4812.16,-794.33C4813.61,-785.97 4815.19,-776.87 4816.75,-767.91"/>
<polygon fill="#950303" stroke="black" points="4820.22,-768.35 4818.48,-757.9 4813.33,-767.16 4820.22,-768.35"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_remove -->
<g id="edge373" 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="M4844.14,-825.4C4897.66,-817.86 4996.78,-799.22 5071,-758.1 5074.88,-755.95 5078.69,-753.42 5082.37,-750.67"/>
<polygon fill="#950303" stroke="black" points="5084.58,-753.38 5090.15,-744.37 5080.18,-747.94 5084.58,-753.38"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_request -->
<g id="edge374" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_service_request</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4844.14,-827.76C5018.32,-817.99 5731.57,-777.01 5775,-758.1 5779.13,-756.31 5783.12,-753.99 5786.93,-751.36"/>
<polygon fill="#950303" stroke="black" points="5789.15,-754.07 5794.93,-745.19 5784.87,-748.53 5789.15,-754.07"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_search -->
<g id="edge375" 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="M4844.33,-828.56C4963.17,-824.02 5323.78,-806.49 5429,-758.1 5433.09,-756.22 5437.06,-753.85 5440.85,-751.18"/>
<polygon fill="#950303" stroke="black" points="5443.09,-753.88 5448.82,-744.97 5438.79,-748.36 5443.09,-753.88"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_status_ahriman -->
<g id="edge376" 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="M4842.17,-818.82C4878.07,-806.93 4933.83,-785.92 4977,-758.1 4980.73,-755.7 4984.44,-752.99 4988.04,-750.12"/>
<polygon fill="#950303" stroke="black" points="4990.33,-752.78 4995.73,-743.66 4985.82,-747.42 4990.33,-752.78"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_status_package -->
<g id="edge377" 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="M4767.95,-827.7C4705.82,-822.79 4580.19,-807.13 4487,-758.1 4483.07,-756.04 4479.23,-753.56 4475.54,-750.85"/>
<polygon fill="#950303" stroke="black" points="4477.72,-748.11 4467.72,-744.6 4473.35,-753.58 4477.72,-748.11"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_status_packages -->
<g id="edge378" 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="M4844.04,-825.54C4910.51,-817.26 5051.51,-796.5 5165,-758.1 5179.43,-753.22 5194.53,-746.51 5208.11,-739.81"/>
<polygon fill="#950303" stroke="black" points="5209.89,-742.83 5217.23,-735.2 5206.73,-736.58 5209.89,-742.83"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_status_status -->
<g id="edge379" 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="M4784.37,-800.18C4774.7,-786.9 4763.12,-771.01 4752.59,-756.55"/>
<polygon fill="#950303" stroke="black" points="4755.24,-754.25 4746.53,-748.23 4749.59,-758.37 4755.24,-754.25"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_user_login -->
<g id="edge380" 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="M4843.71,-824.21C4891.31,-817.08 4975.7,-804.51 5048,-794.1 5162.16,-777.67 5195.77,-795.14 5305,-758.1 5317.05,-754.02 5329.37,-748.02 5340.51,-741.77"/>
<polygon fill="#950303" stroke="black" points="5342.29,-744.78 5349.17,-736.73 5338.77,-738.73 5342.29,-744.78"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge381" 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="M4833.21,-804.57C4850.71,-788.3 4873.67,-766.94 4892.84,-749.12"/>
<polygon fill="#950303" stroke="black" points="4895.31,-751.6 4900.25,-742.23 4890.54,-746.47 4895.31,-751.6"/>
</g>
<!-- ahriman_web_views_index&#45;&gt;ahriman_web_routes -->
<g id="edge382" 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="M4558.12,-684.8C4564.9,-678.62 4572.7,-672.79 4581,-669.01 4715.23,-607.78 4788.87,-715.78 4911,-633.01 4925.9,-622.91 4915.24,-607.55 4930,-597.24"/>
</g>
<!-- ahriman_web_views_service -->
<g id="node86" class="node">
<title>ahriman_web_views_service</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c24747" stroke="black" cx="4628" cy="-713.56" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4628" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4628" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4628" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4628" 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="edge383" 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="M4652.24,-685.04C4659.01,-678.86 4666.78,-672.97 4675,-669.01 4770.57,-622.92 4824.46,-694.39 4911,-633.01 4925.68,-622.59 4915.24,-607.55 4930,-597.24"/>
</g>
<!-- ahriman_web_views_service_add&#45;&gt;ahriman_web_routes -->
<g id="edge384" 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="M5706.2,-676.71C5681.42,-635.96 5641.26,-569.91 5616.87,-529.8"/>
<polygon fill="#8a2e2e" stroke="black" points="5619.81,-527.89 5611.62,-521.17 5613.82,-531.53 5619.81,-527.89"/>
</g>
<!-- ahriman_web_views_service_reload_auth&#45;&gt;ahriman_web_routes -->
<g id="edge385" 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="M4861.67,-683.91C4877.96,-669.7 4896.75,-651.63 4911,-633.01 4921.94,-618.72 4915.24,-607.55 4930,-597.24"/>
</g>
<!-- ahriman_web_views_service_remove&#45;&gt;ahriman_web_routes -->
<g id="edge386" 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="M5089.48,-683.82C5083.61,-678.59 5077.3,-673.4 5071,-669.01 5013.33,-628.78 4872.35,-637.5 4930,-597.24"/>
</g>
<!-- ahriman_web_views_service_request&#45;&gt;ahriman_web_routes -->
<g id="edge387" class="edge">
<title>ahriman_web_views_service_request&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5793.11,-684.32C5787.28,-679.04 5781.07,-673.71 5775,-669.01 5751.61,-650.88 5740.09,-653.76 5719,-633.01 5691,-605.47 5695.98,-588.93 5670,-559.47 5658.18,-546.07 5643.59,-532.88 5630.49,-521.99"/>
<polygon fill="#8a2e2e" stroke="black" points="5632.53,-519.14 5622.56,-515.53 5628.1,-524.56 5632.53,-519.14"/>
</g>
<!-- ahriman_web_views_service_search&#45;&gt;ahriman_web_routes -->
<g id="edge388" 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="M5448.75,-682.31C5442.73,-677.14 5436.03,-672.36 5429,-669.01 5327.88,-620.78 4838.15,-661.38 4930,-597.24"/>
</g>
<!-- ahriman_web_views_status -->
<g id="node92" class="node">
<title>ahriman_web_views_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c24747" stroke="black" cx="4346" cy="-713.56" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4346" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4346" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4346" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4346" 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="edge389" 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="M4370.02,-684.57C4376.8,-678.4 4384.63,-672.63 4393,-669.01 4498.9,-623.19 4814.23,-695.85 4911,-633.01 4926.1,-623.21 4915.24,-607.55 4930,-597.24"/>
</g>
<!-- ahriman_web_views_status_ahriman&#45;&gt;ahriman_web_routes -->
<g id="edge390" 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="M4995.44,-683.53C4964.63,-651.46 4921.08,-603.47 4930,-597.24"/>
</g>
<!-- ahriman_web_views_status_package&#45;&gt;ahriman_web_routes -->
<g id="edge391" 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="M4467.1,-681.98C4473.14,-676.84 4479.88,-672.16 4487,-669.01 4573.5,-630.8 4832.09,-685.12 4911,-633.01 4926.02,-623.09 4915.24,-607.55 4930,-597.24"/>
</g>
<!-- ahriman_web_views_status_packages&#45;&gt;ahriman_web_routes -->
<g id="edge392" 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="M5222.31,-684.42C5214.72,-678.71 5206.38,-673.18 5198,-669.01 5142.79,-641.57 4879.45,-632.54 4930,-597.24"/>
</g>
<!-- ahriman_web_views_status_status&#45;&gt;ahriman_web_routes -->
<g id="edge393" 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="M4749.95,-683.13C4756.14,-677.83 4762.96,-672.79 4770,-669.01 4826.96,-638.38 4860.15,-672.98 4911,-633.01 4925.15,-621.88 4915.24,-607.55 4930,-597.24"/>
</g>
<!-- ahriman_web_views_user -->
<g id="node97" class="node">
<title>ahriman_web_views_user</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c24747" stroke="black" cx="4252" cy="-713.56" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4252" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4252" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4252" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4252" 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="edge394" 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="M4275.99,-684.51C4282.77,-678.34 4290.61,-672.59 4299,-669.01 4424.32,-615.58 4796.35,-706.6 4911,-633.01 4926.15,-623.29 4915.24,-607.55 4930,-597.24"/>
<path fill="none" stroke="black" d="M4930,-595.24C5030.31,-525.19 5411.77,-503 5547.61,-497.23"/>
<polygon fill="#c24747" stroke="black" points="5547.87,-500.73 5557.71,-496.82 5547.58,-493.73 5547.87,-500.73"/>
</g>
<!-- ahriman_web_views_user_login&#45;&gt;ahriman_web_routes -->
<g id="edge395" 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="M5349.03,-690.78C5335.81,-682.89 5320.14,-674.57 5305,-669.01 5225.35,-639.76 4860.44,-645.82 4930,-597.24"/>
</g>
<!-- ahriman_web_views_user_logout&#45;&gt;ahriman_web_routes -->
<g id="edge396" 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="M4915.63,-672.01C4909.13,-645.57 4907.27,-613.12 4930,-597.24"/>
</g>
<!-- ahriman_web_web&#45;&gt;ahriman_application_handlers_web -->
<g id="edge397" 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="M5557.68,-398.53C5312.67,-392.24 3940.38,-355.7 2823,-298.5 2421.9,-277.97 1939.46,-242.38 1776.72,-230.07"/>
<polygon fill="#732626" stroke="black" points="1776.71,-226.56 1766.47,-229.29 1776.18,-233.54 1776.71,-226.56"/>
</g>
<!-- aioauthclient -->
<g id="node101" class="node">
<title>aioauthclient</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#b67b53" stroke="black" points="5527.5,-1981.27 5524.5,-1985.27 5503.5,-1985.27 5500.5,-1981.27 5456.5,-1981.27 5456.5,-1945.27 5527.5,-1945.27 5527.5,-1981.27"/>
<text text-anchor="middle" x="5492" y="-1960.77" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aioauthclient</text>
</g>
<!-- aioauthclient&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge398" 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="M5504.93,-1944.99C5519.6,-1924.53 5543.15,-1888.89 5556,-1854.73"/>
</g>
<!-- aiohttp -->
<g id="node102" class="node">
<title>aiohttp</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#f9c806" stroke="black" points="5448,-1324.03 5445,-1328.03 5424,-1328.03 5421,-1324.03 5394,-1324.03 5394,-1288.03 5448,-1288.03 5448,-1324.03"/>
<text text-anchor="middle" x="5421" 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="edge399" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_middlewares</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5433.57,-1287.71C5438.96,-1281.23 5445.7,-1274.24 5453,-1269.26 5529.79,-1216.87 5563.2,-1232.02 5649,-1196.26 5720.87,-1166.31 5734.4,-1148.11 5808,-1122.72 5874.04,-1099.94 5917.63,-1141.48 5961,-1086.72 6108.6,-900.37 6017.89,-746.39 5871,-559.47 5852.13,-535.45 5821.94,-519.86 5795.29,-510.08"/>
<polygon fill="#f9c806" stroke="black" points="5796.26,-506.71 5785.66,-506.74 5793.96,-513.33 5796.26,-506.71"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge400" 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="M5448.12,-1291.63C5464.08,-1284.18 5484.83,-1275.24 5504,-1269.26 5724.44,-1200.55 5812.97,-1277.54 6012,-1160.49"/>
<path fill="none" stroke="black" d="M6012,-1158.49C6069.64,-1123.26 6092.28,-1127.69 6146,-1086.72 6216.82,-1032.72 6295.3,-1029.76 6284,-941.41"/>
<path fill="none" stroke="black" d="M6284,-939.41C6273.62,-875.84 6252.89,-804.23 6238.74,-759.26"/>
<polygon fill="#f9c806" stroke="black" points="6242.01,-758 6235.65,-749.53 6235.34,-760.12 6242.01,-758"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_middlewares_exception_handler -->
<g id="edge401" 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="M5480,-1232.26C5510.27,-1201.61 5532.24,-1217.01 5570,-1196.26 5700.65,-1124.46 5755.66,-1109.68 5824,-977.18 5887.45,-854.16 5922.95,-796.48 5869,-669.01 5863.22,-655.35 5853.43,-643.01 5842.82,-632.57"/>
<polygon fill="#f9c806" stroke="black" points="5845.1,-629.91 5835.39,-625.66 5840.33,-635.03 5845.1,-629.91"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_routes -->
<g id="edge402" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5442,-1158.49C5373.25,-999.55 5427.65,-915.35 5304,-794.1 5269.97,-760.74 5237.71,-790.76 5203,-758.1 5171.65,-728.6 5197.02,-697.78 5165,-669.01 5124.38,-632.51 4885.23,-628.5 4930,-597.24"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_base -->
<g id="edge403" 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="M5393.99,-1293.79C5360.55,-1279.83 5301.91,-1255.17 5252,-1233.26"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_add -->
<g id="edge404" 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="M5556,-1158.49C5634.69,-1026.29 5689.88,-851.65 5714.14,-766.17"/>
<polygon fill="#f9c806" stroke="black" points="5717.54,-767.02 5716.88,-756.44 5710.8,-765.12 5717.54,-767.02"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge405" 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="M5393.77,-1288.94C5363.61,-1271.92 5313.02,-1245.7 5266,-1232.26 5200.59,-1213.57 5013,-1241.28 4962,-1196.26 4899.47,-1141.06 4900.9,-910.12 4872,-831.87"/>
<path fill="none" stroke="black" d="M4872,-829.87C4863.19,-808.65 4853.74,-785.1 4845.71,-764.85"/>
<polygon fill="#f9c806" stroke="black" points="4848.95,-763.51 4842.01,-755.5 4842.44,-766.08 4848.95,-763.51"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_remove -->
<g id="edge406" 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="M5328,-939.41C5324.31,-888.86 5317.44,-874.5 5290,-831.87"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_request -->
<g id="edge407" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_service_request</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5556,-1158.49C5633.09,-1048.4 5732.45,-1094.51 5798,-977.18 5834.37,-912.09 5834.18,-823.52 5829.22,-767.7"/>
<polygon fill="#f9c806" stroke="black" points="5832.7,-767.28 5828.25,-757.67 5825.73,-767.96 5832.7,-767.28"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_search -->
<g id="edge408" 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="M5518,-939.41C5528.21,-878.85 5510.75,-809.4 5495.33,-763.9"/>
<polygon fill="#f9c806" stroke="black" points="5498.58,-762.58 5491.99,-754.29 5491.97,-764.88 5498.58,-762.58"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_status_ahriman -->
<g id="edge409" 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="M5433.77,-1287.76C5445.2,-1272.74 5462.77,-1250.71 5480,-1233.26"/>
<path fill="none" stroke="black" d="M5480,-1232.26C5505.36,-1206.58 5460.63,-1191.4 5442,-1160.49"/>
<path fill="none" stroke="black" d="M5442,-1158.49C5385.74,-1065.16 5335.94,-1050.1 5328,-941.41"/>
<path fill="none" stroke="black" d="M5328,-939.41C5310.54,-898.44 5227.91,-817.48 5190,-794.1 5142.96,-765.11 5118.94,-785.59 5071,-758.1 5067.15,-755.9 5063.36,-753.32 5059.7,-750.54"/>
<polygon fill="#f9c806" stroke="black" points="5061.9,-747.82 5051.94,-744.21 5057.47,-753.24 5061.9,-747.82"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_status_package -->
<g id="edge410" 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="M5393.77,-1295.69C5348.88,-1280.61 5256.32,-1250.81 5176,-1233.26"/>
<path fill="none" stroke="black" d="M5176,-1232.26C4938.41,-1180.36 4863.42,-1264.52 4630,-1196.26 4436.2,-1139.59 4399.03,-1090.64 4232,-977.18 4148.09,-920.19 4016.76,-925.41 4056,-831.87"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_status_packages -->
<g id="edge411" 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="M5480,-1232.26C5512.64,-1199.2 5535.4,-1202.13 5556,-1160.49"/>
<path fill="none" stroke="black" d="M5556,-1158.49C5570.41,-1129.36 5547.76,-1118.71 5542,-1086.72 5530.4,-1022.3 5513.7,-1006.73 5518,-941.41"/>
<path fill="none" stroke="black" d="M5518,-939.41C5509.46,-889.45 5510.23,-872.56 5480,-831.87"/>
<path fill="none" stroke="black" d="M5480,-829.87C5437.12,-772.15 5398.9,-791.08 5335,-758.1 5323.58,-752.21 5311.34,-745.72 5299.91,-739.59"/>
<polygon fill="#f9c806" stroke="black" points="5301.42,-736.43 5290.96,-734.77 5298.1,-742.59 5301.42,-736.43"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_status_status -->
<g id="edge412" 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="M5176,-1232.26C5053.45,-1205.37 5003.22,-1261.42 4896,-1196.26 4747.82,-1106.21 4724.43,-873.84 4721.69,-768.23"/>
<polygon fill="#f9c806" stroke="black" points="4725.19,-768.03 4721.48,-758.11 4718.19,-768.18 4725.19,-768.03"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_user_login -->
<g id="edge413" 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="M5480,-829.87C5460.1,-803.09 5435.82,-774.49 5416.4,-752.48"/>
<polygon fill="#f9c806" stroke="black" points="5419.01,-750.14 5409.76,-744.98 5413.77,-754.78 5419.01,-750.14"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge414" 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="M5408,-1287.84C5393.84,-1270.56 5369.52,-1244.73 5342,-1232.26 5273.4,-1201.18 5063.47,-1243.73 5005,-1196.26 4965.27,-1164.01 4944.05,-1027.36 4934,-977.18 4924.41,-929.29 4927,-916.45 4925,-867.64 4923.66,-834.99 4923.97,-826.77 4925,-794.1 4925.26,-785.75 4925.68,-776.92 4926.16,-768.29"/>
<polygon fill="#f9c806" stroke="black" points="4929.66,-768.49 4926.76,-758.3 4922.67,-768.07 4929.66,-768.49"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_web -->
<g id="edge415" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5432.7,-1288.03C5438.15,-1281.28 5445.16,-1274.01 5453,-1269.26 5509.67,-1234.97 5679.26,-1217.51 5742,-1196.26 5858.83,-1156.69 5910.14,-1174.3 5997,-1086.72 6137.68,-944.89 6060.65,-840.57 6163,-669.01 6184.45,-633.06 6224,-639.1 6224,-597.24"/>
<path fill="none" stroke="black" d="M6224,-595.24C6224.34,-473.93 5790.81,-420.47 5643.96,-405.85"/>
<polygon fill="#f9c806" stroke="black" points="5644.19,-402.35 5633.89,-404.86 5643.5,-409.32 5644.19,-402.35"/>
</g>
<!-- aiohttpjinja2 -->
<g id="node104" class="node">
<title>aiohttpjinja2</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#69b03a" stroke="black" points="4281,-1177.49 4278,-1181.49 4257,-1181.49 4254,-1177.49 4213,-1177.49 4213,-1141.49 4281,-1141.49 4281,-1177.49"/>
<text text-anchor="middle" x="4247" y="-1156.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aiohttpjinja2</text>
</g>
<!-- aiohttp&#45;&gt;aiohttpjinja2 -->
<g id="edge416" class="edge">
<title>aiohttp&#45;&gt;aiohttpjinja2</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5393.87,-1302.09C5240.38,-1285.45 4485.85,-1203.55 4437,-1196.26 4386.72,-1188.76 4329.42,-1177.61 4291.02,-1169.76"/>
<polygon fill="#f9c806" stroke="black" points="4291.69,-1166.33 4281.19,-1167.74 4290.28,-1173.18 4291.69,-1166.33"/>
</g>
<!-- aiohttpsession -->
<g id="node106" class="node">
<title>aiohttpsession</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#3db86e" stroke="black" points="6256,-1177.49 6253,-1181.49 6232,-1181.49 6229,-1177.49 6176,-1177.49 6176,-1141.49 6256,-1141.49 6256,-1177.49"/>
<text text-anchor="middle" x="6216" y="-1156.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aiohttpsession</text>
</g>
<!-- aiohttp&#45;&gt;aiohttpsession -->
<g id="edge417" class="edge">
<title>aiohttp&#45;&gt;aiohttpsession</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5448.09,-1301.16C5497.09,-1294.24 5603.76,-1279.49 5694,-1269.26 5860.81,-1250.35 5908.61,-1279.48 6070,-1233.26 6109.8,-1221.86 6151.75,-1199.75 6180.42,-1182.88"/>
<polygon fill="#f9c806" stroke="black" points="6182.45,-1185.75 6189.24,-1177.61 6178.86,-1179.74 6182.45,-1185.75"/>
</g>
<!-- aiohttpdebugtoolbar -->
<g id="node103" class="node">
<title>aiohttpdebugtoolbar</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#a2b653" stroke="black" points="5633.5,-731.56 5630.5,-735.56 5609.5,-735.56 5606.5,-731.56 5532.5,-731.56 5532.5,-695.56 5633.5,-695.56 5633.5,-731.56"/>
<text text-anchor="middle" x="5583" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aiohttpdebugtoolbar</text>
</g>
<!-- aiohttpdebugtoolbar&#45;&gt;ahriman_web_web -->
<g id="edge418" class="edge">
<title>aiohttpdebugtoolbar&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5590.83,-695.25C5612.33,-647.26 5670.13,-514.79 5662,-495.48"/>
<path fill="none" stroke="black" d="M5662,-493.48C5651.19,-472.07 5635.69,-450.17 5622.43,-433.11"/>
<polygon fill="#a2b653" stroke="black" points="5625.08,-430.82 5616.13,-425.15 5619.59,-435.16 5625.08,-430.82"/>
</g>
<!-- aiohttpjinja2&#45;&gt;ahriman_web_views_index -->
<g id="edge419" 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="M4227,-1141.15C4218.76,-1134.67 4208.84,-1127.68 4199,-1122.72 4149.66,-1097.84 4112.93,-1131.09 4080,-1086.72 4030.47,-1019.99 4073.18,-973.62 4118,-903.64 4155.9,-844.47 4168.82,-824.85 4232,-794.1 4334.92,-744.03 4383.63,-807.25 4487,-758.1 4492.28,-755.6 4497.37,-752.28 4502.13,-748.6"/>
<polygon fill="#69b03a" stroke="black" points="4504.41,-751.26 4509.79,-742.14 4499.89,-745.91 4504.41,-751.26"/>
</g>
<!-- aiohttpjinja2&#45;&gt;ahriman_web_web -->
<g id="edge420" class="edge">
<title>aiohttpjinja2&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4227.6,-1141.25C4219.28,-1134.63 4209.15,-1127.51 4199,-1122.72 4138.56,-1094.19 4110.43,-1120.9 4053,-1086.72 3956.87,-1029.51 3686.59,-823.02 3714,-714.56"/>
</g>
<!-- aiohttpsecurity -->
<g id="node105" class="node">
<title>aiohttpsecurity</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#3bce3b" stroke="black" points="4848,-1433.57 4845,-1437.57 4824,-1437.57 4821,-1433.57 4768,-1433.57 4768,-1397.57 4848,-1397.57 4848,-1433.57"/>
<text text-anchor="middle" x="4808" 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="edge421" 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="M4720,-1232.26C4703.06,-1178.85 4668.72,-1123.91 4644.13,-1088.71"/>
<polygon fill="#3bce3b" stroke="black" points="4646.74,-1086.34 4638.11,-1080.2 4641.03,-1090.39 4646.74,-1086.34"/>
</g>
<!-- aiohttpsecurity&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge422" 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="M4848.4,-1409.93C4908.48,-1403.05 5024.95,-1389.76 5124,-1378.8 5271.96,-1362.43 5311.49,-1374.2 5457,-1342.8 5488.72,-1335.95 5983.61,-1176.22 6012,-1160.49"/>
</g>
<!-- aiohttpsecurity&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge423" 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="M4792.4,-1397.43C4780.48,-1383.56 4764.37,-1363.07 4754,-1342.8 4730.78,-1297.42 4739.27,-1280.46 4720,-1233.26"/>
<path fill="none" stroke="black" d="M4720,-1232.26C4707.38,-1207.14 4687.73,-1216.28 4668,-1196.26 4654.56,-1182.63 4657.32,-1174.24 4644,-1160.49"/>
</g>
<!-- aiohttpsession&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge424" 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="M6230.72,-1141.23C6246.96,-1121.05 6272.35,-1085.95 6284,-1050.95"/>
</g>
<!-- aur -->
<g id="node107" class="node">
<title>aur</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#33ccae" stroke="black" points="5869,-2670.26 5866,-2674.26 5845,-2674.26 5842,-2670.26 5815,-2670.26 5815,-2634.26 5869,-2634.26 5869,-2670.26"/>
<text text-anchor="middle" x="5842" 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="edge425" 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="M5869.03,-2650C5960.4,-2644.3 6250.41,-2613.87 6220,-2457.51"/>
<path fill="none" stroke="black" d="M6220,-2455.51C6215.53,-2263.69 6205.31,-1769.75 6120,-1597.88 6088.76,-1534.94 6069.9,-1517.57 6006,-1488.34 5848.51,-1416.3 5782.72,-1505.82 5618,-1452.34 5557.06,-1432.55 5554.97,-1398.51 5494,-1378.8 5409.5,-1351.48 5172.11,-1388.56 5096,-1342.8 5062.55,-1322.69 5081.49,-1289.31 5048,-1269.26 4967.24,-1220.92 4297.11,-1210.1 4204,-1196.26 4048.07,-1173.08 4012.84,-1146.5 3857,-1122.72 3558.46,-1077.17 1445.13,-936.14 1151,-867.64 1136.35,-864.23 1120.92,-859.07 1106.89,-853.72"/>
<polygon fill="#33ccae" stroke="black" points="1108.02,-850.4 1097.43,-850 1105.46,-856.91 1108.02,-850.4"/>
</g>
<!-- aur&#45;&gt;ahriman_models_package -->
<g id="edge426" class="edge">
<title>aur&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5814.66,-2650.54C5673.95,-2646.83 5017.35,-2629.56 4480,-2615.49 4403.39,-2613.48 3169,-2614.84 3101,-2579.49 3072.53,-2564.69 3080.91,-2543.96 3058,-2521.5 3022.95,-2487.15 3013.28,-2476.46 2968,-2457.51"/>
<path fill="none" stroke="black" d="M2968,-2455.51C2830.72,-2397.69 2783.74,-2426.76 2639,-2391.52 2625.67,-2388.28 2611.42,-2383.89 2598.52,-2379.56"/>
<polygon fill="#33ccae" stroke="black" points="2599.55,-2376.21 2588.96,-2376.27 2597.28,-2382.83 2599.55,-2376.21"/>
</g>
<!-- aur&#45;&gt;ahriman_web_views_service_search -->
<g id="edge427" 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="M6220,-2455.51C6281.73,-2075.1 6441.34,-1971.8 6348,-1597.88 6322.68,-1496.45 5950.57,-844.53 5859,-794.1 5727.82,-721.88 5660.61,-819.43 5524,-758.1 5519.79,-756.21 5515.69,-753.81 5511.78,-751.1"/>
<polygon fill="#33ccae" stroke="black" points="5513.62,-748.1 5503.55,-744.79 5509.35,-753.65 5513.62,-748.1"/>
</g>
<!-- boto3 -->
<g id="node108" class="node">
<title>boto3</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#40a6c0" stroke="black" points="3268,-2286.55 3265,-2290.55 3244,-2290.55 3241,-2286.55 3214,-2286.55 3214,-2250.55 3268,-2250.55 3268,-2286.55"/>
<text text-anchor="middle" x="3241" 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="edge428" 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="M3259.48,-2250.35C3275.87,-2233.1 3297.07,-2204.94 3296,-2175.57"/>
<path fill="none" stroke="black" d="M3296,-2173.57C3294.28,-2126.15 3260.59,-2121.18 3258,-2073.8"/>
</g>
<!-- cryptography -->
<g id="node109" class="node">
<title>cryptography</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#196be6" stroke="black" points="6129,-2903 6126,-2907 6105,-2907 6102,-2903 6055,-2903 6055,-2867 6129,-2867 6129,-2903"/>
<text text-anchor="middle" x="6092" 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="edge429" 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="M6436,-2790.02C6480,-2744.81 6474,-2716.34 6474,-2653.26 6474,-2653.26 6474,-2653.26 6474,-1232.26 6474,-1193.66 6292.59,-979.05 6284,-941.41"/>
</g>
<!-- cryptography&#45;&gt;aiohttpsession -->
<g id="edge430" class="edge">
<title>cryptography&#45;&gt;aiohttpsession</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6129.1,-2879.74C6210.1,-2869.59 6398.53,-2841.09 6436,-2792.02"/>
<path fill="none" stroke="black" d="M6436,-2790.02C6474.28,-2739.88 6398,-2716.34 6398,-2653.26 6398,-2653.26 6398,-2653.26 6398,-2267.55 6398,-1969.87 6443.48,-1889.96 6386,-1597.88 6353.84,-1434.45 6264.62,-1253.1 6229.99,-1186.68"/>
<polygon fill="#196be6" stroke="black" points="6233.04,-1184.96 6225.29,-1177.73 6226.84,-1188.21 6233.04,-1184.96"/>
</g>
<!-- requests -->
<g id="node113" class="node">
<title>requests</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#dd18b5" stroke="black" points="5814,-2809.02 5811,-2813.02 5790,-2813.02 5787,-2809.02 5760,-2809.02 5760,-2773.02 5814,-2773.02 5814,-2809.02"/>
<text text-anchor="middle" x="5787" y="-2788.52" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">requests</text>
</g>
<!-- cryptography&#45;&gt;requests -->
<g id="edge431" class="edge">
<title>cryptography&#45;&gt;requests</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6054.91,-2872.81C5996.23,-2855.12 5882.65,-2820.86 5824.02,-2803.18"/>
<polygon fill="#196be6" stroke="black" points="5825,-2799.82 5814.42,-2800.29 5822.98,-2806.52 5825,-2799.82"/>
</g>
<!-- jinja2 -->
<g id="node110" class="node">
<title>jinja2</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#3b3bce" stroke="black" points="2638,-2286.55 2635,-2290.55 2614,-2290.55 2611,-2286.55 2584,-2286.55 2584,-2250.55 2638,-2250.55 2638,-2286.55"/>
<text text-anchor="middle" x="2611" 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="edge432" 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="M2632.06,-2250.39C2638.17,-2246.21 2645.07,-2242.19 2652,-2239.56 2770.54,-2194.56 2814.12,-2241.83 2935,-2203.56 3181.67,-2125.44 3444.89,-1956.65 3548.44,-1886.4"/>
<polygon fill="#3b3bce" stroke="black" points="3550.5,-1889.24 3556.79,-1880.72 3546.56,-1883.45 3550.5,-1889.24"/>
</g>
<!-- jinja2&#45;&gt;ahriman_web_web -->
<g id="edge433" class="edge">
<title>jinja2&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2607.96,-2250.23C2604.68,-2231.71 2599.21,-2201.52 2594,-2175.57"/>
<path fill="none" stroke="black" d="M2594,-2173.57C2588.28,-2145.11 2584.17,-2138.42 2581,-2109.57 2576.42,-2067.84 2578.28,-1834.44 2579,-1816.96 2581,-1768.15 2579.46,-1755.51 2588,-1707.42 2637.15,-1430.61 2711.01,-641.91 2951,-495.48"/>
<path fill="none" stroke="black" d="M2951,-493.48C3063.24,-418.52 5198.25,-403.67 5547.79,-401.74"/>
<polygon fill="#3b3bce" stroke="black" points="5547.86,-405.24 5557.84,-401.68 5547.82,-398.24 5547.86,-405.24"/>
</g>
<!-- jinja2&#45;&gt;aiohttpjinja2 -->
<g id="edge434" class="edge">
<title>jinja2&#45;&gt;aiohttpjinja2</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2594,-2173.57C2586.92,-2094.62 2578.11,-1895.59 2588,-1816.96 2594.27,-1767.1 2594.51,-1752.84 2616,-1707.42 2667.69,-1598.2 2677.15,-1556.38 2777,-1488.34 2855.47,-1434.87 3510.2,-1289.36 3603,-1269.26 3826.65,-1220.82 4097.92,-1181.16 4202.72,-1166.54"/>
<polygon fill="#3b3bce" stroke="black" points="4203.5,-1169.96 4212.92,-1165.12 4202.54,-1163.03 4203.5,-1169.96"/>
</g>
<!-- passlib -->
<g id="node111" class="node">
<title>passlib</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#763bce" stroke="black" points="5690,-2380.53 5687,-2384.53 5666,-2384.53 5663,-2380.53 5636,-2380.53 5636,-2344.53 5690,-2344.53 5690,-2380.53"/>
<text text-anchor="middle" x="5663" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">passlib</text>
</g>
<!-- passlib&#45;&gt;ahriman_models_user -->
<g id="edge435" class="edge">
<title>passlib&#45;&gt;ahriman_models_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5661.15,-2344.39C5656.26,-2299.01 5642.89,-2174.88 5636.09,-2111.75"/>
<polygon fill="#763bce" stroke="black" points="5639.57,-2111.37 5635.02,-2101.8 5632.61,-2112.12 5639.57,-2111.37"/>
</g>
<!-- pyalpm -->
<g id="node112" class="node">
<title>pyalpm</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#b13bce" stroke="black" points="408,-2985.99 405,-2989.99 384,-2989.99 381,-2985.99 354,-2985.99 354,-2949.99 408,-2949.99 408,-2985.99"/>
<text text-anchor="middle" x="381" 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="edge436" 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="M381,-2884C366.52,-2809.56 380.91,-2768.57 443,-2725.03 510.38,-2677.77 1842.05,-2696.65 1924,-2689.03 1984.05,-2683.44 2052.53,-2671.4 2096.91,-2662.83"/>
<polygon fill="#b13bce" stroke="black" points="2097.69,-2666.25 2106.83,-2660.9 2096.35,-2659.38 2097.69,-2666.25"/>
</g>
<!-- pyalpm&#45;&gt;ahriman_models_package -->
<g id="edge437" class="edge">
<title>pyalpm&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M305,-2790.02C243.74,-2579.36 2078.24,-2666.61 2265,-2551.5"/>
<path fill="none" stroke="black" d="M2265,-2549.5C2321.72,-2525.41 2335.64,-2517.99 2388,-2485.5 2436.09,-2455.67 2488.28,-2416.33 2521.28,-2390.5"/>
<polygon fill="#b13bce" stroke="black" points="2523.55,-2393.17 2529.25,-2384.24 2519.22,-2387.67 2523.55,-2393.17"/>
</g>
<!-- pyalpm&#45;&gt;ahriman_models_package_description -->
<g id="edge438" 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="M382.69,-2949.78C383.91,-2933.29 384.76,-2907.75 381,-2886"/>
<path fill="none" stroke="black" d="M381,-2884C379.87,-2877.47 308.46,-2797.67 305,-2792.02"/>
<path fill="none" stroke="black" d="M305,-2790.02C128.37,-2500.9 1481.31,-2638.09 1815,-2579.49 1956.2,-2554.69 2117.37,-2506.82 2205.27,-2479"/>
<polygon fill="#b13bce" stroke="black" points="2206.37,-2482.32 2214.84,-2475.95 2204.25,-2475.65 2206.37,-2482.32"/>
</g>
<!-- requests&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge439" 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="M5792.33,-2772.91C5795.58,-2758.81 5797.36,-2739.08 5787,-2726.03"/>
<path fill="none" stroke="black" d="M5787,-2725.03C5466.37,-2320.77 5165.87,-2550.48 4675,-2391.52 4554.12,-2352.38 4501.61,-2380.06 4405,-2297.54 4394.27,-2288.37 4395.86,-2282.39 4390,-2269.55"/>
</g>
<!-- requests&#45;&gt;ahriman_core_status_web_client -->
<g id="edge440" 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="M5787,-2725.03C5783.14,-2570.71 5858.25,-2543.73 5884,-2391.52 5906.22,-2260.17 5824.91,-2048.1 5811,-2036.03 5749.76,-1982.92 5528.62,-2008.48 5448,-2000.03 5006.41,-1953.78 4893.38,-1960.95 4455,-1890.5 4299.35,-1865.48 4263.97,-1839.9 4108,-1816.96 3917.82,-1788.98 3868.42,-1798.49 3677,-1780.96 3568.58,-1771.03 3441.88,-1758.09 3371.71,-1750.81"/>
<polygon fill="#dd18b5" stroke="black" points="3371.67,-1747.29 3361.36,-1749.73 3370.94,-1754.25 3371.67,-1747.29"/>
</g>
<!-- requests&#45;&gt;ahriman_core_util -->
<g id="edge441" class="edge">
<title>requests&#45;&gt;ahriman_core_util</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5759.58,-2789.49C5617.27,-2786.39 4962.27,-2768 4778,-2689.03 4723.22,-2665.55 4673.44,-2616.36 4644.43,-2583.62"/>
<polygon fill="#dd18b5" stroke="black" points="4646.72,-2580.92 4637.51,-2575.68 4641.44,-2585.52 4646.72,-2580.92"/>
</g>
<!-- requests&#45;&gt;aur -->
<g id="edge442" class="edge">
<title>requests&#45;&gt;aur</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5787,-2725.03C5780,-2716.2 5798.13,-2694.72 5815.42,-2677.54"/>
<polygon fill="#dd18b5" stroke="black" points="5817.95,-2679.96 5822.7,-2670.49 5813.08,-2674.94 5817.95,-2679.96"/>
</g>
<!-- srcinfo -->
<g id="node114" class="node">
<title>srcinfo</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#b6537b" stroke="black" points="2292,-2670.26 2289,-2674.26 2268,-2674.26 2265,-2670.26 2238,-2670.26 2238,-2634.26 2292,-2634.26 2292,-2670.26"/>
<text text-anchor="middle" x="2265" 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="edge443" class="edge">
<title>srcinfo&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2257.84,-2634.03C2249.12,-2610.06 2238.61,-2567.76 2265,-2551.5"/>
</g>
</g>
</svg>