ahriman/docs/ahriman-architecture.svg

3360 lines
300 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (0)
-->
<!-- Title: G Pages: 1 -->
<svg width="5802pt" height="2972pt"
viewBox="0.00 0.00 5801.67 2972.01" 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 2968.01)">
<title>G</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-2968.01 5797.67,-2968.01 5797.67,4 -4,4"/>
<!-- ahriman_application_ahriman -->
<g id="node1" class="node">
<title>ahriman_application_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#813737" stroke="black" cx="2201.67" cy="-28.99" rx="46.84" ry="28.98"/>
<text text-anchor="middle" x="2201.67" y="-37.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2201.67" y="-26.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="2201.67" 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="1714.67" cy="-1049.95" rx="46.84" ry="28.98"/>
<text text-anchor="middle" x="1714.67" y="-1058.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1714.67" y="-1047.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1714.67" 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="952.67" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="952.67" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="952.67" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="952.67" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="952.67" 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="M1669.28,-1043.14C1600.95,-1033.64 1468.11,-1012.25 1359.67,-977.18 1284.43,-952.85 1273.05,-927.52 1197.67,-903.64 1115.73,-877.7 1087.42,-899.68 1007.67,-867.64 1003.45,-865.95 999.22,-863.92 995.06,-861.69"/>
<polygon fill="#950303" stroke="black" points="996.57,-858.52 986.16,-856.56 993.08,-864.58 996.57,-858.52"/>
</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="1174.67" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1174.67" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1174.67" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1174.67" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1174.67" 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="M1675.35,-1034.15C1657.26,-1027.49 1635.46,-1019.69 1615.67,-1013.18 1509.09,-978.16 1468.8,-1000.88 1373.67,-941.41"/>
<path fill="none" stroke="black" d="M1373.67,-939.41C1323.67,-908.16 1263.87,-876.57 1222.96,-855.8"/>
<polygon fill="#950303" stroke="black" points="1224.52,-852.66 1214.01,-851.27 1221.36,-858.91 1224.52,-852.66"/>
</g>
<!-- ahriman_application_handlers_init -->
<g id="node9" class="node">
<title>ahriman_application_handlers_init</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="2110.67" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="2110.67" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2110.67" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="2110.67" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="2110.67" 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="M1761.39,-1047.74C1823.49,-1044.01 1934.23,-1029.81 2010.67,-977.18 2047.4,-951.89 2074.7,-908.36 2091.42,-875.51"/>
<polygon fill="#950303" stroke="black" points="2094.76,-876.64 2096.05,-866.13 2088.49,-873.54 2094.76,-876.64"/>
</g>
<!-- ahriman_application_handlers_key_import -->
<g id="node10" class="node">
<title>ahriman_application_handlers_key_import</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="1999.67" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1999.67" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1999.67" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1999.67" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1999.67" 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="M1996.67,-939.41C2004.3,-920.13 2005.87,-897.34 2005.21,-877.72"/>
<polygon fill="#950303" stroke="black" points="2008.69,-877.28 2004.66,-867.48 2001.7,-877.65 2008.69,-877.28"/>
</g>
<!-- ahriman_application_handlers_rebuild -->
<g id="node11" class="node">
<title>ahriman_application_handlers_rebuild</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="157.67" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="157.67" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="157.67" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="157.67" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="157.67" 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="M1668,-1048.47C1464.27,-1046.03 658.81,-1032.93 561.67,-977.18 545.06,-967.65 555.99,-946.97 537.67,-941.41"/>
<path fill="none" stroke="black" d="M537.67,-939.41C396.53,-896.59 349.9,-924.15 213.67,-867.64 209.24,-865.81 204.77,-863.62 200.4,-861.25"/>
<polygon fill="#950303" stroke="black" points="202,-858.14 191.58,-856.18 198.51,-864.2 202,-858.14"/>
</g>
<!-- ahriman_application_handlers_remove -->
<g id="node12" class="node">
<title>ahriman_application_handlers_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="397.67" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="397.67" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="397.67" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="397.67" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="397.67" 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="M537.67,-939.41C495.89,-926.74 457.26,-894.88 431.21,-869.1"/>
<polygon fill="#950303" stroke="black" points="433.39,-866.33 423.88,-861.67 428.41,-871.25 433.39,-866.33"/>
</g>
<!-- ahriman_application_handlers_remove_unknown -->
<g id="node13" class="node">
<title>ahriman_application_handlers_remove_unknown</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="1758.67" cy="-830.87" rx="65.11" ry="36.54"/>
<text text-anchor="middle" x="1758.67" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1758.67" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1758.67" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1758.67" 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="M1705.22,-1021.15C1699.21,-998.93 1694.17,-967.32 1703.67,-941.41"/>
</g>
<!-- ahriman_application_handlers_report -->
<g id="node14" class="node">
<title>ahriman_application_handlers_report</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="730.67" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="730.67" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="730.67" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="730.67" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="730.67" 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="M1667.9,-1047.14C1557.45,-1042.12 1284.01,-1025.07 1207.67,-977.18 1191.45,-967.01 1202.28,-945.89 1183.67,-941.41"/>
<path fill="none" stroke="black" d="M1183.67,-939.41C1139.81,-928.86 1132.5,-914.33 1088.67,-903.64 956.92,-871.52 913.18,-913.82 785.67,-867.64 781.4,-866.1 777.12,-864.16 772.95,-862"/>
<polygon fill="#950303" stroke="black" points="774.44,-858.82 764.01,-856.97 771,-864.92 774.44,-858.82"/>
</g>
<!-- ahriman_application_handlers_setup -->
<g id="node16" class="node">
<title>ahriman_application_handlers_setup</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="1362.67" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1362.67" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1362.67" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1362.67" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1362.67" 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="M1373.67,-939.41C1353.64,-926.89 1350.65,-900.68 1352.78,-877.28"/>
<polygon fill="#950303" stroke="black" points="1356.28,-877.48 1354.02,-867.12 1349.33,-876.62 1356.28,-877.48"/>
</g>
<!-- ahriman_application_handlers_sign -->
<g id="node17" class="node">
<title>ahriman_application_handlers_sign</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="508.67" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="508.67" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="508.67" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="508.67" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="508.67" 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="M537.67,-939.41C525.02,-935.58 517.61,-905.17 513.45,-877.66"/>
<polygon fill="#950303" stroke="black" points="516.91,-877.14 512.06,-867.72 509.98,-878.1 516.91,-877.14"/>
</g>
<!-- ahriman_application_handlers_status -->
<g id="node18" class="node">
<title>ahriman_application_handlers_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#7a2828" stroke="black" cx="1888.67" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1888.67" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1888.67" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1888.67" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1888.67" 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="M1761.49,-1049.47C1832.1,-1047.26 1961.35,-1030.7 1996.67,-941.41"/>
<path fill="none" stroke="black" d="M1996.67,-939.41C2004.03,-920.81 1965.03,-886.68 1931.86,-861.84"/>
<polygon fill="#950303" stroke="black" points="1933.71,-858.86 1923.58,-855.74 1929.55,-864.49 1933.71,-858.86"/>
</g>
<!-- ahriman_application_handlers_status_update -->
<g id="node19" class="node">
<title>ahriman_application_handlers_status_update</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="277.67" cy="-830.87" rx="55.31" ry="36.54"/>
<text text-anchor="middle" x="277.67" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="277.67" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="277.67" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="277.67" 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="M537.67,-939.41C448.9,-912.48 425.98,-906.34 341.67,-867.64 337.02,-865.51 332.25,-863.16 327.51,-860.72"/>
<polygon fill="#950303" stroke="black" points="328.96,-857.53 318.48,-855.95 325.69,-863.72 328.96,-857.53"/>
</g>
<!-- ahriman_application_handlers_sync -->
<g id="node20" class="node">
<title>ahriman_application_handlers_sync</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="841.67" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="841.67" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="841.67" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="841.67" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="841.67" 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="M1183.67,-939.41C1139.81,-928.86 1132.12,-915.8 1088.67,-903.64 1005.06,-880.26 977.26,-899.93 896.67,-867.64 892.45,-865.95 888.21,-863.92 884.06,-861.7"/>
<polygon fill="#950303" stroke="black" points="885.57,-858.53 875.16,-856.57 882.08,-864.59 885.57,-858.53"/>
</g>
<!-- ahriman_application_handlers_update -->
<g id="node21" class="node">
<title>ahriman_application_handlers_update</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="619.67" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="619.67" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="619.67" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="619.67" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="619.67" 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="M1667.87,-1048.91C1460.07,-1048.17 628.75,-1039.09 575.67,-941.41"/>
</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="2201.67" cy="-122.97" rx="46.84" ry="28.98"/>
<text text-anchor="middle" x="2201.67" y="-131.47" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2201.67" y="-120.47" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="2201.67" 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="edge15" 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="M2201.67,-93.88C2201.67,-85.84 2201.67,-76.94 2201.67,-68.39"/>
<polygon fill="#950303" stroke="black" points="2205.17,-68.23 2201.67,-58.23 2198.17,-68.23 2205.17,-68.23"/>
</g>
<!-- ahriman_application_handlers_add&#45;&gt;ahriman_application_handlers -->
<g id="edge16" 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="M917.89,-806.27C911.27,-802.06 904.33,-797.83 897.67,-794.1 825.94,-753.93 670.4,-770.48 730.67,-714.56"/>
</g>
<!-- ahriman_application_handlers_clean&#45;&gt;ahriman_application_handlers -->
<g id="edge17" 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="M1141.14,-805.27C1134.29,-801.06 1126.94,-797.09 1119.67,-794.1 956.4,-727.15 601.31,-834.58 730.67,-714.56"/>
</g>
<!-- ahriman_application_handlers_create_user -->
<g id="node6" class="node">
<title>ahriman_application_handlers_create_user</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="1475.67" cy="-830.87" rx="48.17" ry="36.54"/>
<text text-anchor="middle" x="1475.67" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1475.67" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1475.67" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1475.67" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">create_user</text>
</g>
<!-- ahriman_application_handlers_create_user&#45;&gt;ahriman_application_handlers -->
<g id="edge18" class="edge">
<title>ahriman_application_handlers_create_user&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1512.47,-807.21C1520.63,-802.6 1529.33,-797.97 1537.67,-794.1 1632.37,-750.17 1709.31,-806.54 1758.67,-714.56"/>
<path fill="none" stroke="black" d="M1758.67,-712.56C1769.12,-693.08 1770.83,-687.67 1782.67,-669.01 1803.77,-635.75 1831.59,-636.51 1834.67,-597.24"/>
<path fill="none" stroke="black" d="M1834.67,-595.24C1843.69,-480.15 1726.32,-375.33 1834.67,-335.5"/>
</g>
<!-- ahriman_application_handlers_dump -->
<g id="node7" class="node">
<title>ahriman_application_handlers_dump</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#993333" stroke="black" cx="46.67" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="46.67" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="46.67" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="46.67" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="46.67" 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="M80.02,-804.83C86.89,-800.65 94.29,-796.81 101.67,-794.1 233.96,-745.63 627.39,-810.39 730.67,-714.56"/>
<path fill="none" stroke="black" d="M730.67,-712.56C949.13,-509.86 1077.24,-567.59 1324.67,-401.5"/>
<path fill="none" stroke="black" d="M1324.67,-399.5C1515.19,-273.44 1619.52,-412.29 1834.67,-335.5"/>
<path fill="none" stroke="black" d="M1834.67,-334.5C1869.87,-321.94 1895.28,-332.57 1910.67,-298.5"/>
<path fill="none" stroke="black" d="M1910.67,-297.5C1953.63,-202.41 2076.8,-155.78 2148.37,-136.11"/>
<polygon fill="#993333" stroke="black" points="2149.36,-139.47 2158.12,-133.51 2147.55,-132.71 2149.36,-139.47"/>
</g>
<!-- ahriman_application_handlers_handler -->
<g id="node8" class="node">
<title>ahriman_application_handlers_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b30404" stroke="black" cx="1032.67" cy="-940.41" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1032.67" y="-954.41" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1032.67" y="-943.41" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1032.67" y="-932.41" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1032.67" 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="M1068.28,-916.35C1076.41,-911.71 1085.17,-907.18 1093.67,-903.64 1151.81,-879.5 1186.37,-912.37 1230.67,-867.64 1290.7,-807.04 1272.6,-563.05 1324.67,-495.48"/>
<path fill="none" stroke="black" d="M1324.67,-493.48C1348.9,-460.55 1290.57,-424.05 1324.67,-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="M1009.53,-908.31C1000.91,-896.72 991,-883.4 981.9,-871.17"/>
<polygon fill="#b30404" stroke="black" points="984.53,-868.84 975.76,-862.91 978.92,-873.02 984.53,-868.84"/>
</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="M1065.96,-914.2C1086.17,-898.9 1112.12,-879.25 1133.59,-862.98"/>
<polygon fill="#b30404" stroke="black" points="1135.73,-865.76 1141.58,-856.93 1131.5,-860.18 1135.73,-865.76"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_create_user -->
<g id="edge23" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_create_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1076.19,-926.72C1102.97,-919.24 1138.11,-910.03 1169.67,-903.64 1279.27,-881.49 1313.71,-906.2 1418.67,-867.64 1423.23,-865.97 1427.81,-863.9 1432.28,-861.6"/>
<polygon fill="#b30404" stroke="black" points="1434.23,-864.52 1441.28,-856.62 1430.84,-858.4 1434.23,-864.52"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_dump -->
<g id="edge24" 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="M986.13,-935.98C799.18,-922.17 112.28,-871.24 101.67,-867.64 97.19,-866.12 92.71,-864.16 88.35,-861.92"/>
<polygon fill="#b30404" stroke="black" points="90.06,-858.87 79.62,-857.03 86.63,-864.97 90.06,-858.87"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_init -->
<g id="edge25" 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="M1075.67,-925.64C1102.42,-917.72 1137.7,-908.41 1169.67,-903.64 1364.57,-874.59 1867.93,-927.5 2055.67,-867.64 2060.06,-866.24 2064.44,-864.39 2068.7,-862.27"/>
<polygon fill="#b30404" stroke="black" points="2070.73,-865.15 2077.79,-857.25 2067.34,-859.02 2070.73,-865.15"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_key_import -->
<g id="edge26" 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="M1075.68,-925.71C1102.44,-917.81 1137.71,-908.5 1169.67,-903.64 1340.12,-877.73 1780.56,-920.49 1944.67,-867.64 1949.18,-866.19 1953.67,-864.27 1958.03,-862.07"/>
<polygon fill="#b30404" stroke="black" points="1959.73,-865.13 1966.78,-857.21 1956.33,-859.01 1959.73,-865.13"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_rebuild -->
<g id="edge27" 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="M986.32,-935.97C818.51,-923.41 250.49,-880.17 213.67,-867.64 209.06,-866.08 204.46,-864.06 199.98,-861.77"/>
<polygon fill="#b30404" stroke="black" points="201.43,-858.58 190.99,-856.78 198.03,-864.7 201.43,-858.58"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_remove -->
<g id="edge28" 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="M986.17,-936.37C866.58,-928.11 550.84,-903.47 452.67,-867.64 448.4,-866.09 444.13,-864.15 439.95,-861.98"/>
<polygon fill="#b30404" stroke="black" points="441.45,-858.8 431.02,-856.94 438.01,-864.9 441.45,-858.8"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge29" 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="M1075.78,-926.3C1102.57,-918.62 1137.85,-909.34 1169.67,-903.64 1329.26,-875.08 1371.87,-888.32 1532.67,-867.64 1584.39,-860.99 1642.5,-851.76 1686.84,-844.34"/>
<polygon fill="#b30404" stroke="black" points="1687.66,-847.75 1696.94,-842.64 1686.5,-840.84 1687.66,-847.75"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_report -->
<g id="edge30" 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="M987.54,-930.49C936.91,-919.53 853.06,-898.53 785.67,-867.64 781.6,-865.78 777.48,-863.64 773.43,-861.36"/>
<polygon fill="#b30404" stroke="black" points="775.08,-858.28 764.7,-856.19 771.52,-864.3 775.08,-858.28"/>
</g>
<!-- ahriman_application_handlers_search -->
<g id="node15" class="node">
<title>ahriman_application_handlers_search</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="1063.67" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1063.67" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1063.67" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1063.67" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1063.67" 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="edge31" 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="M1042.73,-904.5C1045.28,-895.67 1048.05,-886.07 1050.71,-876.82"/>
<polygon fill="#b30404" stroke="black" points="1054.14,-877.56 1053.55,-866.98 1047.42,-875.62 1054.14,-877.56"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge32" 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="M1074.32,-923.52C1091.91,-917.03 1112.68,-909.65 1131.67,-903.64 1189.64,-885.3 1205.69,-885.99 1263.67,-867.64 1279.25,-862.71 1296.02,-856.86 1311.25,-851.34"/>
<polygon fill="#b30404" stroke="black" points="1312.83,-854.49 1321.01,-847.77 1310.42,-847.92 1312.83,-854.49"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_sign -->
<g id="edge33" 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="M985.75,-938.72C899.39,-936.06 710.68,-923.69 563.67,-867.64 559.42,-866.03 555.17,-864.04 551,-861.85"/>
<polygon fill="#b30404" stroke="black" points="552.5,-858.67 542.08,-856.77 549.04,-864.76 552.5,-858.67"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_status -->
<g id="edge34" 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="M1075.7,-925.8C1102.45,-917.93 1137.73,-908.63 1169.67,-903.64 1315.45,-880.89 1692.21,-912.84 1832.67,-867.64 1837.3,-866.15 1841.92,-864.18 1846.42,-861.93"/>
<polygon fill="#b30404" stroke="black" points="1848.34,-864.87 1855.42,-856.98 1844.97,-858.74 1848.34,-864.87"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_status_update -->
<g id="edge35" 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="M985.93,-937.02C850.96,-929.73 462.55,-905.91 341.67,-867.64 336.44,-865.99 331.15,-863.87 325.98,-861.5"/>
<polygon fill="#b30404" stroke="black" points="327.34,-858.28 316.82,-857.01 324.25,-864.56 327.34,-858.28"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_sync -->
<g id="edge36" 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="M993.76,-920.07C966.28,-906.12 928.78,-886.51 896.67,-867.64 893.02,-865.5 889.28,-863.23 885.54,-860.91"/>
<polygon fill="#b30404" stroke="black" points="887.2,-857.82 876.88,-855.45 883.47,-863.74 887.2,-857.82"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_update -->
<g id="edge37" 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="M986.14,-935.73C916.25,-928.96 781.06,-911.03 674.67,-867.64 670.46,-865.93 666.23,-863.88 662.08,-861.64"/>
<polygon fill="#b30404" stroke="black" points="663.6,-858.47 653.19,-856.5 660.09,-864.53 663.6,-858.47"/>
</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="2201.67" cy="-224.74" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="2201.67" y="-238.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2201.67" y="-227.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="2201.67" y="-216.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="2201.67" 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="M1324.67,-493.48C1337.43,-448.11 2097.33,-280.02 2140.67,-261.5 2146.09,-259.19 2151.63,-256.48 2157.05,-253.61"/>
<polygon fill="#b30404" stroke="black" points="2158.94,-256.56 2166.01,-248.67 2155.56,-250.43 2158.94,-256.56"/>
</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="M2079.42,-803.11C2023.17,-753.66 1910.67,-648.37 1910.67,-597.24 1910.67,-597.24 1910.67,-597.24 1910.67,-399.5 1910.67,-354.61 1893.22,-339.86 1910.67,-298.5"/>
</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="M1964.48,-806.38C1911.91,-768.04 1820.46,-687.23 1834.67,-597.24"/>
</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="M191.43,-805.18C198.5,-800.92 206.11,-796.95 213.67,-794.1 431.2,-712.09 560.25,-872.68 730.67,-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="M431.69,-805.53C438.44,-801.35 445.62,-797.32 452.67,-794.1 569.61,-740.8 636.46,-801.97 730.67,-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="M1750.3,-794.22C1746.62,-770.28 1745.65,-738.81 1758.67,-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="M718.8,-795.31C712.26,-769.15 709.24,-734.44 730.67,-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="M1029.65,-805.53C1022.9,-801.35 1015.72,-797.32 1008.67,-794.1 891.73,-740.8 636.46,-801.97 730.67,-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="M1362.08,-794C1360.62,-728.46 1355.59,-585.07 1338.67,-465.49 1334.59,-436.66 1300.98,-418.42 1324.67,-401.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="M543.45,-806.27C550.07,-802.06 557.01,-797.83 563.67,-794.1 635.4,-753.93 670.4,-770.48 730.67,-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="M1854.94,-805.26C1814.39,-774.96 1752.48,-726.09 1758.67,-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="M317.39,-805.21C325.24,-801.06 333.56,-797.12 341.67,-794.1 507.09,-732.65 601.31,-834.58 730.67,-714.56"/>
</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="M807.32,-805.52C768.63,-776.74 713.25,-730.72 730.67,-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="M646.17,-800.56C668.13,-776.7 700.52,-742.53 730.67,-714.56"/>
</g>
<!-- ahriman_application_handlers_web&#45;&gt;ahriman_application_handlers -->
<g id="edge52" 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="M2201.67,-187.72C2201.67,-179.48 2201.67,-170.69 2201.67,-162.35"/>
<polygon fill="#822b2b" stroke="black" points="2205.17,-162.11 2201.67,-152.11 2198.17,-162.11 2205.17,-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="3475.67" cy="-1525.11" rx="46.84" ry="28.98"/>
<text text-anchor="middle" x="3475.67" y="-1533.61" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3475.67" y="-1522.61" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="3475.67" 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="edge53" 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="M3473.14,-1496.03C3468.5,-1462.38 3455.41,-1407.03 3418.67,-1378.8 3400.9,-1365.15 1837.58,-1200.97 1815.67,-1196.26 1532.28,-1135.36 1206.61,-1011.06 1083.41,-961.99"/>
<polygon fill="#822b2b" stroke="black" points="1084.44,-958.64 1073.85,-958.18 1081.84,-965.14 1084.44,-958.64"/>
</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="1984.67" cy="-2550.5" rx="42.94" ry="18"/>
<text text-anchor="middle" x="1984.67" 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="edge54" 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="M1399.67,-1852.73C1464.68,-1738.5 1475.84,-1706.61 1549.67,-1597.88 1561.06,-1581.11 1565.9,-1578.38 1577.67,-1561.88 1600.34,-1530.1 1603.55,-1520.49 1625.67,-1488.34 1648,-1455.89 1669.17,-1455.03 1677.67,-1416.57"/>
<path fill="none" stroke="black" d="M1677.67,-1414.57C1688.6,-1365.07 1639.7,-1357.72 1639.67,-1307.03"/>
<path fill="none" stroke="black" d="M1639.67,-1305.03C1639.65,-1283.16 1681.08,-1153.49 1702.36,-1088.31"/>
<polygon fill="#f91010" stroke="black" points="1705.69,-1089.4 1705.47,-1078.81 1699.03,-1087.22 1705.69,-1089.4"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_add -->
<g id="edge55" 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="M1132.67,-2173.57C1092.51,-2036.97 1048.41,-2016.79 982.67,-1890.5 957.42,-1842 948.53,-1831.07 926.67,-1780.96 905.95,-1733.45 900.48,-1721.37 886.67,-1671.42 860.51,-1576.81 863.14,-1550.4 858.67,-1452.34 847.56,-1208.73 740.71,-1117.08 858.67,-903.64 864.85,-892.46 887.24,-875.18 908.62,-860.38"/>
<polygon fill="#f91010" stroke="black" points="910.75,-863.17 917.04,-854.64 906.81,-857.38 910.75,-863.17"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_clean -->
<g id="edge56" 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="M1069.67,-1962.27C1045.02,-1921.32 1082.31,-1900.82 1069.67,-1854.73"/>
<path fill="none" stroke="black" d="M1069.67,-1852.73C1042.51,-1753.74 917.67,-1519.21 917.67,-1416.57 917.67,-1416.57 917.67,-1416.57 917.67,-1305.03 917.67,-1240.79 902.45,-1222.9 917.67,-1160.49"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_create_user -->
<g id="edge57" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_create_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1171.67,-2071.8C1170.39,-2039.33 1180.06,-2032.05 1185.67,-2000.03 1202.66,-1902.98 1205.19,-1878.42 1219.67,-1780.96 1231.75,-1699.66 1214.88,-1674.08 1245.67,-1597.88 1260.43,-1561.36 1292.32,-1565.13 1297.67,-1526.11"/>
<path fill="none" stroke="black" d="M1297.67,-1524.11C1300.61,-1491.74 1286.79,-1484.69 1283.67,-1452.34 1280.53,-1419.81 1283,-1411.48 1283.67,-1378.8 1288.04,-1164.98 1236.03,-1078.15 1359.67,-903.64 1377.43,-878.58 1392.55,-883.81 1418.67,-867.64 1422.46,-865.3 1426.39,-862.86 1430.33,-860.4"/>
<polygon fill="#f91010" stroke="black" points="1432.29,-863.3 1438.92,-855.03 1428.58,-857.36 1432.29,-863.3"/>
</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="M1941.7,-2549.02C1690.55,-2545.65 423.67,-2520.89 423.67,-2363.53 423.67,-2363.53 423.67,-2363.53 423.67,-2267.55 423.67,-2212.3 414.97,-2198.66 399.67,-2145.57 366.04,-2028.87 338.22,-2006.31 301.67,-1890.5 256.37,-1746.94 246.82,-1709.94 219.67,-1561.88 193.15,-1417.21 191.35,-1379.95 180.67,-1233.26 179.34,-1214.99 181.42,-919.15 171.67,-903.64 153.04,-874.03 131.93,-885.2 101.67,-867.64 97.85,-865.43 93.93,-863.07 90.03,-860.65"/>
<polygon fill="#f91010" stroke="black" points="91.87,-857.68 81.55,-855.31 88.15,-863.6 91.87,-857.68"/>
</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="M1069.67,-1852.73C1059.01,-1809.15 1020.56,-1497.11 1017.67,-1452.34 1011.36,-1354.73 987.5,-1325.31 1017.67,-1232.26 1029.82,-1194.79 1068.86,-1199.87 1069.67,-1160.49"/>
<path fill="none" stroke="black" d="M1069.67,-1158.49C1067.62,-1098.41 1054.13,-1030.23 1044.02,-986.57"/>
<polygon fill="#f91010" stroke="black" points="1047.43,-985.77 1041.73,-976.83 1040.62,-987.37 1047.43,-985.77"/>
</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="M1399.67,-2173.57C1401.57,-2167.49 1559.98,-1750.38 1563.67,-1745.19"/>
<path fill="none" stroke="black" d="M1563.67,-1743.19C1782.12,-1419.5 1985.5,-1441.96 2147.67,-1086.72 2182.04,-1011.44 2213.13,-980.19 2181.67,-903.64 2175.32,-888.21 2163.87,-874.32 2151.99,-862.97"/>
<polygon fill="#f91010" stroke="black" points="2154.34,-860.37 2144.58,-856.24 2149.63,-865.56 2154.34,-860.37"/>
</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="M1301.67,-2361.53C1358.89,-2287.68 1381.83,-2267.27 1399.67,-2175.57"/>
<path fill="none" stroke="black" d="M1399.67,-2173.57C1410.38,-2112.45 1408.12,-2096.1 1423.67,-2036.03 1449.5,-1936.26 1461.34,-1912.62 1499.67,-1816.96 1519.57,-1767.28 1523.2,-1753.93 1549.67,-1707.42 1608.28,-1604.42 1626.65,-1580.08 1701.67,-1488.34 1895.32,-1251.51 2071.3,-1269.15 2162.67,-977.18 2172.43,-945.99 2181.78,-930.16 2162.67,-903.64 2133.08,-862.6 2100.25,-889.61 2054.67,-867.64 2050.64,-865.7 2046.54,-863.51 2042.51,-861.19"/>
<polygon fill="#f91010" stroke="black" points="2044.18,-858.11 2033.8,-855.97 2040.58,-864.12 2044.18,-858.11"/>
</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="M1941.56,-2549.95C1770.86,-2551.27 1142.46,-2551.45 956.67,-2485.5 595.84,-2357.44 482.42,-2243.3 333.67,-1890.5 269.85,-1739.12 271.67,-1690.39 271.67,-1526.11 271.67,-1526.11 271.67,-1526.11 271.67,-1414.57 271.67,-1300.39 233.67,-1274.67 233.67,-1160.49 233.67,-1160.49 233.67,-1160.49 233.67,-1048.95 233.67,-983.5 234.88,-964.05 209.67,-903.64 204.71,-891.77 197.44,-879.99 189.9,-869.51"/>
<polygon fill="#f91010" stroke="black" points="192.63,-867.32 183.84,-861.42 187.03,-871.52 192.63,-867.32"/>
</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="M1941.92,-2548.31C1777.59,-2543.47 1192.17,-2523.68 1118.67,-2485.5 1070.75,-2460.61 1074.01,-2434.77 1041.67,-2391.52 1011.4,-2351.05 1005.49,-2339.73 977.67,-2297.54 974.91,-2293.36 884.7,-2148.55 880.67,-2145.57 832.45,-2109.94 800.47,-2142.95 750.67,-2109.57 699.48,-2075.26 699.65,-2051.44 665.67,-2000.03 485.79,-1727.87 423.67,-1633.27 423.67,-1307.03 423.67,-1307.03 423.67,-1307.03 423.67,-1048.95 423.67,-989.39 413.9,-921.29 406.34,-877.49"/>
<polygon fill="#f91010" stroke="black" points="409.75,-876.68 404.57,-867.44 402.86,-877.9 409.75,-876.68"/>
</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="M1411.67,-1743.19C1422.3,-1667.97 1453.7,-1656.78 1501.67,-1597.88 1516.36,-1579.84 1527.29,-1581.58 1539.67,-1561.88 1566.85,-1518.6 1562.07,-1501.87 1574.67,-1452.34 1623.67,-1259.76 1585.97,-1198.13 1658.67,-1013.18 1672.44,-978.14 1690.71,-976.76 1703.67,-941.41"/>
<path fill="none" stroke="black" d="M1703.67,-939.41C1711.42,-917.38 1722.84,-894.17 1733.26,-874.97"/>
<polygon fill="#f91010" stroke="black" points="1736.35,-876.62 1738.12,-866.17 1730.22,-873.23 1736.35,-876.62"/>
</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="M841.67,-2071.8C772.39,-1978.05 809.52,-1929.64 779.67,-1816.96 758.2,-1735.92 727.67,-1719.48 727.67,-1635.65 727.67,-1635.65 727.67,-1635.65 727.67,-1524.11 727.67,-1359.01 651.67,-1325.59 651.67,-1160.49 651.67,-1160.49 651.67,-1160.49 651.67,-1048.95 651.67,-984.69 682.62,-915.82 705.78,-873.3"/>
<polygon fill="#f91010" stroke="black" points="708.94,-874.81 710.73,-864.37 702.82,-871.41 708.94,-874.81"/>
</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="M1132.67,-2455.51C1082,-2386.62 1248.96,-2430.87 1301.67,-2363.53"/>
<path fill="none" stroke="black" d="M1301.67,-2361.53C1314.7,-2344.89 1203.65,-2223.13 1195.67,-2203.56 1173.54,-2149.25 1178.82,-2132.01 1171.67,-2073.8"/>
<path fill="none" stroke="black" d="M1171.67,-2071.8C1165.34,-2039.82 1082.58,-1985.72 1069.67,-1964.27"/>
<path fill="none" stroke="black" d="M1069.67,-1962.27C895.94,-1673.64 846.29,-1568.58 865.67,-1232.26 874.13,-1085.48 811.47,-1018.17 903.67,-903.64 934.61,-865.22 964.32,-889.26 1008.67,-867.64 1012.64,-865.71 1016.66,-863.54 1020.64,-861.26"/>
<polygon fill="#f91010" stroke="black" points="1022.44,-864.26 1029.22,-856.11 1018.84,-858.25 1022.44,-864.26"/>
</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="M1107.67,-1524.11C1102.35,-1508.78 1134.77,-953.43 1145.67,-941.41"/>
</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="M1941.74,-2548.46C1775.53,-2543.98 1181.15,-2523.43 1132.67,-2457.51"/>
<path fill="none" stroke="black" d="M1132.67,-2455.51C1051.74,-2345.47 1033.23,-2316.68 956.67,-2203.56 939.4,-2178.04 942.56,-2165.04 918.67,-2145.57 884.95,-2118.1 863.53,-2134.18 827.67,-2109.57 773.06,-2072.11 767.76,-2051.96 726.67,-2000.03 656.12,-1910.9 633.32,-1887.86 594.67,-1780.96 561.91,-1690.37 499.67,-1492.58 499.67,-1307.03 499.67,-1307.03 499.67,-1307.03 499.67,-1048.95 499.67,-989.94 503.03,-921.98 505.64,-878.05"/>
<polygon fill="#f91010" stroke="black" points="509.14,-878.15 506.26,-867.96 502.16,-877.73 509.14,-878.15"/>
</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="M1677.67,-1414.57C1717.11,-1236.02 1827.12,-1239.69 1967.67,-1122.72 2011.12,-1086.56 2051.97,-1103.55 2072.67,-1050.95"/>
<path fill="none" stroke="black" d="M2072.67,-1048.95C2094.05,-982.07 2058.04,-955.47 2010.67,-903.64 1987.86,-878.69 1972.75,-884.87 1943.67,-867.64 1940.03,-865.49 1936.29,-863.21 1932.56,-860.88"/>
<polygon fill="#f91010" stroke="black" points="1934.22,-857.79 1923.9,-855.41 1930.48,-863.71 1934.22,-857.79"/>
</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="M1941.88,-2548.16C1770.97,-2542.58 1142.53,-2519.91 1060.67,-2485.5 855.42,-2399.25 385.67,-1967.82 385.67,-1745.19 385.67,-1745.19 385.67,-1745.19 385.67,-1524.11 385.67,-1260.22 241.27,-1203.54 271.67,-941.41"/>
</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="M1132.67,-2361.53C1116.89,-2280.4 1161.19,-2253.14 1132.67,-2175.57"/>
<path fill="none" stroke="black" d="M1132.67,-2173.57C1117.88,-2135.82 1093.09,-2141.16 1067.67,-2109.57 964.05,-1980.83 946.27,-1937.62 893.67,-1780.96 807.55,-1524.46 769.82,-1199.78 751.67,-977.18 749.01,-944.61 737.49,-933.09 751.67,-903.64 756.97,-892.65 777.7,-875.8 797.94,-861.19"/>
<polygon fill="#f91010" stroke="black" points="800.1,-863.95 806.23,-855.3 796.05,-858.24 800.1,-863.95"/>
</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="M1132.67,-2455.51C1108.45,-2422.58 1140.1,-2403.73 1132.67,-2363.53"/>
<path fill="none" stroke="black" d="M1132.67,-2361.53C1110.15,-2239.78 1049.56,-2227.45 956.67,-2145.57 911.47,-2105.74 881.23,-2119.24 841.67,-2073.8"/>
<path fill="none" stroke="black" d="M841.67,-2071.8C728.54,-1946.89 575.67,-1712.25 575.67,-1635.65 575.67,-1635.65 575.67,-1635.65 575.67,-1414.57 575.67,-1362 600.77,-987.6 575.67,-941.41"/>
<path fill="none" stroke="black" d="M575.67,-939.41C563.51,-917.17 573.89,-890.84 587.62,-869.81"/>
<polygon fill="#f91010" stroke="black" points="590.6,-871.65 593.43,-861.44 584.85,-867.66 590.6,-871.65"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_web -->
<g id="edge73" 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="M1171.67,-2071.8C1124.25,-1832.26 1186.76,-1757.14 1107.67,-1526.11"/>
<path fill="none" stroke="black" d="M1107.67,-1524.11C1087.79,-1458.04 1087.98,-957.04 1131.67,-903.64 1169.36,-857.58 1213,-903.29 1260.67,-867.64 1291.55,-844.56 1275.99,-817.45 1306.67,-794.1 1406.67,-718.03 1743.07,-701.11 1848.67,-633.01 2002.12,-534.05 2126.74,-349.31 2177.32,-267.07"/>
<polygon fill="#f91010" stroke="black" points="2180.33,-268.85 2182.55,-258.49 2174.36,-265.21 2180.33,-268.85"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_lock -->
<g id="edge74" 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="M1946.48,-2542.12C1880.34,-2527.05 1746.16,-2485.85 1689.67,-2391.52 1676.43,-2369.41 1683.64,-2358.59 1689.67,-2333.54 1733.77,-2150.29 1999.93,-1713.3 2171.67,-1635.65"/>
</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="4424.67" cy="-2362.53" rx="53.07" ry="28.98"/>
<text text-anchor="middle" x="4424.67" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4424.67" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="4424.67" y="-2349.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth_settings</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_models_auth_settings -->
<g id="edge75" 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="M2026.92,-2546.65C2142.47,-2538.71 2473.42,-2514.98 2747.67,-2485.5 2944.66,-2464.33 2992.22,-2443.93 3189.67,-2427.52 3639.96,-2390.1 3755.32,-2428.2 4205.67,-2391.52 4259.36,-2387.15 4320.11,-2379.14 4363.98,-2372.81"/>
<polygon fill="#f91010" stroke="black" points="4364.53,-2376.26 4373.92,-2371.36 4363.52,-2369.34 4364.53,-2376.26"/>
</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="4147.67" cy="-2362.53" rx="48.58" ry="28.98"/>
<text text-anchor="middle" x="4147.67" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4147.67" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="4147.67" 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="edge76" 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="M2026.44,-2546.04C2141.46,-2536.52 2472.51,-2509.03 2747.67,-2485.5 3268.33,-2440.99 3897.75,-2385.58 4089.49,-2368.67"/>
<polygon fill="#f91010" stroke="black" points="4089.97,-2372.14 4099.62,-2367.77 4089.35,-2365.17 4089.97,-2372.14"/>
</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="3735.67" cy="-2362.53" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="3735.67" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3735.67" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="3735.67" 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="edge77" 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="M2024.83,-2543.8C2159.42,-2524.87 2607.01,-2463.24 2978.67,-2427.52 3207.95,-2405.49 3266.33,-2412.87 3495.67,-2391.52 3562.41,-2385.31 3639.33,-2375.95 3687.72,-2369.79"/>
<polygon fill="#f91010" stroke="black" points="3688.42,-2373.23 3697.9,-2368.49 3687.54,-2366.28 3688.42,-2373.23"/>
</g>
<!-- ahriman_models_report_settings -->
<g id="node68" class="node">
<title>ahriman_models_report_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b03a3a" stroke="black" cx="2507.67" cy="-2362.53" rx="57.97" ry="28.98"/>
<text text-anchor="middle" x="2507.67" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2507.67" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2507.67" 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="edge78" 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="M2022.69,-2541.94C2072.38,-2531.58 2161.79,-2511.27 2235.67,-2485.5 2315.88,-2457.53 2405.06,-2415.28 2458.72,-2388.57"/>
<polygon fill="#f91010" stroke="black" points="2460.62,-2391.53 2468,-2383.93 2457.49,-2385.27 2460.62,-2391.53"/>
</g>
<!-- ahriman_models_sign_settings -->
<g id="node70" class="node">
<title>ahriman_models_sign_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="2341.67" cy="-2362.53" rx="52.15" ry="28.98"/>
<text text-anchor="middle" x="2341.67" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2341.67" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2341.67" 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="edge79" 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="M2021.48,-2541.15C2061.58,-2531.2 2126.93,-2512.47 2178.67,-2485.5 2226.92,-2460.35 2276.09,-2421.34 2307.62,-2394.23"/>
<polygon fill="#f91010" stroke="black" points="2309.99,-2396.81 2315.24,-2387.61 2305.4,-2391.53 2309.99,-2396.81"/>
</g>
<!-- ahriman_models_upload_settings -->
<g id="node72" class="node">
<title>ahriman_models_upload_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b03a3a" stroke="black" cx="2850.67" cy="-2362.53" rx="60.21" ry="28.98"/>
<text text-anchor="middle" x="2850.67" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2850.67" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2850.67" 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="edge80" 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="M2023.35,-2542.48C2085.37,-2531.14 2210.83,-2507.78 2316.67,-2485.5 2487.38,-2449.57 2687.65,-2402.5 2787.45,-2378.71"/>
<polygon fill="#f91010" stroke="black" points="2788.45,-2382.07 2797.37,-2376.34 2786.83,-2375.26 2788.45,-2382.07"/>
</g>
<!-- ahriman_web_middlewares_auth_handler -->
<g id="node79" class="node">
<title>ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="5264.67" cy="-713.56" rx="52.15" ry="36.54"/>
<text text-anchor="middle" x="5264.67" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5264.67" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5264.67" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">middlewares.</text>
<text text-anchor="middle" x="5264.67" 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="edge81" 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="M1301.67,-2361.53C1360.48,-2296.78 1419.84,-2336.89 1475.67,-2269.55"/>
<path fill="none" stroke="black" d="M1475.67,-2267.55C1510.93,-2225.02 1483.35,-2198.36 1499.67,-2145.57 1530.96,-2044.35 1539.61,-2017.62 1593.67,-1926.5 1690.83,-1762.73 2071.3,-1436.8 2252.67,-1378.8 2359.2,-1344.73 3160.77,-1396.89 3258.67,-1342.8 3293.26,-1323.69 3274.69,-1289.45 3308.67,-1269.26 3378.55,-1227.74 3591.99,-1243.14 3672.67,-1233.26 3785.47,-1219.44 3815.27,-1223.22 3925.67,-1196.26 4022.55,-1172.6 4040.32,-1144.4 4137.67,-1122.72 4287.72,-1089.31 4332.33,-1123.19 4481.67,-1086.72 4519.25,-1077.55 5097.42,-853.24 5129.67,-831.87"/>
<path fill="none" stroke="black" d="M5129.67,-829.87C5164.12,-805.47 5200.36,-774.16 5226.6,-750.33"/>
<polygon fill="#f91010" stroke="black" points="5229.05,-752.84 5234.07,-743.51 5224.33,-747.67 5229.05,-752.84"/>
</g>
<!-- ahriman_web_views_base -->
<g id="node83" class="node">
<title>ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#a90404" stroke="black" cx="4489.67" cy="-830.87" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4489.67" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4489.67" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4489.67" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4489.67" 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="edge82" 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="M1475.67,-2267.55C1588.08,-2141.91 1541.15,-2061.83 1641.67,-1926.5 1655.54,-1907.82 1663.66,-1907.37 1679.67,-1890.5 1753.24,-1812.94 1761.22,-1784.13 1835.67,-1707.42 1886.19,-1655.36 1902.03,-1645.6 1956.67,-1597.88 2013.57,-1548.18 2026.15,-1533.56 2086.67,-1488.34 2157.48,-1435.43 2169.81,-1409.57 2252.67,-1378.8 2931.49,-1126.71 3163.48,-1347.29 3871.67,-1196.26 3971.67,-1174.93 3992.77,-1155.37 4089.67,-1122.72 4137.22,-1106.7 4153.32,-1111.99 4196.67,-1086.72 4238.96,-1062.07 4236.33,-1037.76 4278.67,-1013.18 4366.16,-962.4 4458.32,-1035.82 4494.67,-941.41"/>
<path fill="none" stroke="black" d="M4494.67,-939.41C4502.69,-920 4502.7,-896.9 4500.19,-877.09"/>
<polygon fill="#f91010" stroke="black" points="4503.63,-876.44 4498.68,-867.07 4496.71,-877.48 4503.63,-876.44"/>
</g>
<!-- ahriman_web_views_index -->
<g id="node84" class="node">
<title>ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#7a2828" stroke="black" cx="4301.67" cy="-713.56" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4301.67" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4301.67" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4301.67" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4301.67" 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="edge83" 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="M1285.67,-2267.55C1258.62,-2079.14 1314.82,-2025.11 1399.67,-1854.73"/>
<path fill="none" stroke="black" d="M1399.67,-1852.73C1418.34,-1808.41 1406.86,-1793.04 1411.67,-1745.19"/>
<path fill="none" stroke="black" d="M1411.67,-1743.19C1418.19,-1678.2 1406.89,-1657.45 1433.67,-1597.88 1442.21,-1578.88 1453.77,-1580.21 1463.67,-1561.88 1536.2,-1427.54 1563.67,-1385.93 1563.67,-1233.26 1563.67,-1233.26 1563.67,-1233.26 1563.67,-1158.49 1563.67,-1115.83 1650.25,-819.31 1684.67,-794.1 1799.87,-709.74 4122.1,-811.16 4254.67,-758.1 4260.09,-755.93 4265.27,-752.82 4270.08,-749.24"/>
<polygon fill="#f91010" stroke="black" points="4272.31,-751.94 4277.78,-742.87 4267.85,-746.54 4272.31,-751.94"/>
</g>
<!-- ahriman_web_views_status_package -->
<g id="node91" class="node">
<title>ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="4395.67" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="4395.67" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4395.67" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4395.67" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4395.67" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="4395.67" 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="edge84" 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="M1563.67,-1743.19C1579.95,-1719.5 1753.59,-1613.58 1777.67,-1597.88 2025.84,-1436.03 2070.37,-1341.66 2357.67,-1269.26 2437.55,-1249.13 3770.64,-1242.72 3838.67,-1196.26 3868.25,-1176.06 3843.03,-1144.25 3871.67,-1122.72 3963.16,-1053.95 4035.18,-1155.5 4126.67,-1086.72 4155.3,-1065.2 4139.79,-1042.99 4159.67,-1013.18 4196.75,-957.59 4211.83,-947.02 4262.67,-903.64 4284.33,-885.16 4295.59,-887.84 4315.67,-867.64 4329.17,-854.07 4330.37,-848.61 4339.67,-831.87"/>
<path fill="none" stroke="black" d="M4339.67,-829.87C4349.72,-806.97 4361.74,-781.96 4372.06,-761.1"/>
<polygon fill="#f91010" stroke="black" points="4375.2,-762.64 4376.52,-752.13 4368.93,-759.53 4375.2,-762.64"/>
</g>
<!-- ahriman_web_views_user_login -->
<g id="node95" class="node">
<title>ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="4113.67" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="4113.67" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4113.67" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4113.67" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4113.67" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user.</text>
<text text-anchor="middle" x="4113.67" 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="edge85" 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="M1297.67,-1524.11C1350.87,-1289.9 1368.93,-1229.31 1473.67,-1013.18 1475.24,-1009.93 1610.51,-795.86 1613.67,-794.1 1732.72,-727.76 3940.15,-808.78 4066.67,-758.1 4070.85,-756.43 4074.88,-754.2 4078.71,-751.62"/>
<polygon fill="#f91010" stroke="black" points="4080.89,-754.36 4086.74,-745.53 4076.66,-748.79 4080.89,-754.36"/>
</g>
<!-- ahriman_web_views_user_logout -->
<g id="node96" class="node">
<title>ahriman_web_views_user_logout</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="4207.67" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="4207.67" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4207.67" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4207.67" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4207.67" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user.</text>
<text text-anchor="middle" x="4207.67" 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="edge86" 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="M1301.67,-2361.53C1329.57,-2330.81 1296.99,-2309.47 1285.67,-2269.55"/>
<path fill="none" stroke="black" d="M1285.67,-2267.55C1235.57,-2090.96 1257.34,-2033.8 1297.67,-1854.73"/>
<path fill="none" stroke="black" d="M1297.67,-1852.73C1329.79,-1740.67 1308.98,-1702.85 1359.67,-1597.88 1368.48,-1579.63 1378.42,-1579.91 1387.67,-1561.88 1503.75,-1335.65 1459.76,-1251.03 1549.67,-1013.18 1559.16,-988.07 1629.13,-808.7 1651.67,-794.1 1768.68,-718.33 4031.25,-809.92 4160.67,-758.1 4164.85,-756.43 4168.88,-754.2 4172.71,-751.63"/>
<polygon fill="#f91010" stroke="black" points="4174.89,-754.37 4180.74,-745.53 4170.66,-748.79 4174.89,-754.37"/>
</g>
<!-- ahriman_web_web -->
<g id="node97" class="node">
<title>ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="4977.67" cy="-400.5" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="4977.67" y="-409" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4977.67" y="-398" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4977.67" 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="edge87" 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="M1297.67,-1852.73C1308,-1788.67 1303.87,-1771.83 1311.67,-1707.42 1317.59,-1658.57 1318.45,-1646.21 1327.67,-1597.88 1387.08,-1286.45 1328.36,-1175.39 1491.67,-903.64 1504.16,-882.86 1518.26,-887.15 1532.67,-867.64 1553.95,-838.82 1537.16,-815.8 1565.67,-794.1 1577.64,-784.99 3691.69,-466.86 3706.67,-465.49 3969.25,-441.44 4632.98,-475.2 4892.67,-429.49 4906.57,-427.04 4921.31,-422.81 4934.54,-418.36"/>
<polygon fill="#f91010" stroke="black" points="4936.04,-421.54 4944.33,-414.94 4933.73,-414.93 4936.04,-421.54"/>
</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="4571.67" cy="-2550.5" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="4571.67" y="-2559" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4571.67" y="-2548" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4571.67" 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="3361.67" cy="-1634.65" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="3361.67" y="-1648.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3361.67" y="-1637.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3361.67" y="-1626.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="3361.67" 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="edge88" 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="M4542.9,-2531.25C4535.58,-2527.39 4527.54,-2523.8 4519.67,-2521.5 4307.44,-2459.76 4227.41,-2571.2 4023.67,-2485.5 3948.21,-2453.77 3885.67,-2445.39 3885.67,-2363.53 3885.67,-2363.53 3885.67,-2363.53 3885.67,-2267.55 3885.67,-2158.39 3875.2,-2118.49 3803.67,-2036.03 3659.64,-1869.99 3506.41,-1939.51 3403.67,-1745.19"/>
</g>
<!-- ahriman_core_alpm&#45;&gt;ahriman_models_package -->
<g id="edge89" 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="M4542.93,-2531.13C4535.61,-2527.28 4527.57,-2523.72 4519.67,-2521.5 4372.67,-2480.33 3970.64,-2552.9 3833.67,-2485.5 3818.96,-2478.27 3823.92,-2465.6 3809.67,-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="4911.67" cy="-2652.26" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4911.67" y="-2666.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4911.67" y="-2655.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4911.67" y="-2644.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">alpm.</text>
<text text-anchor="middle" x="4911.67" 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="edge90" 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="M4944.6,-2633.19C4988.22,-2607.15 5063.18,-2554.5 5093.67,-2485.5 5144.04,-2371.49 5132.8,-2017.54 5047.67,-1926.5 5021.03,-1898.01 4418.94,-1714.93 4380.67,-1707.42 4193.1,-1670.6 3598.89,-1644.9 3415.86,-1637.7"/>
<polygon fill="#b42d2d" stroke="black" points="3415.81,-1634.19 3405.68,-1637.3 3415.53,-1641.19 3415.81,-1634.19"/>
</g>
<!-- ahriman_core_alpm_pacman&#45;&gt;ahriman_models_package -->
<g id="edge91" 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="M4882.87,-2627.62C4875.68,-2622.83 4867.71,-2618.38 4859.67,-2615.49 4689.22,-2554.14 4614.75,-2662.37 4453.67,-2579.49 4439.1,-2571.99 4445.71,-2554.86 4429.67,-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="3457.67" cy="-2072.8" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3457.67" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3457.67" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3457.67" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">alpm.</text>
<text text-anchor="middle" x="3457.67" 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="edge92" 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="M3447.79,-2036.95C3431.92,-1980.33 3402.62,-1872.85 3403.67,-1854.73"/>
</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="3791.67" cy="-1159.49" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="3791.67" y="-1167.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3791.67" y="-1156.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3791.67" 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="edge93" 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="M3829.23,-1153.48C3882.95,-1146.37 3984.81,-1133.05 4071.67,-1122.72 4216.86,-1105.46 4259.66,-1132.05 4398.67,-1086.72 4491.71,-1056.39 4508.04,-1031.15 4589.67,-977.18 4702.17,-902.8 4708.23,-848.44 4831.67,-794.1 4897.42,-765.16 5100.1,-735.83 5203.15,-722.29"/>
<polygon fill="#f91010" stroke="black" points="5203.64,-725.75 5213.1,-720.99 5202.73,-718.81 5203.64,-725.75"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_base -->
<g id="edge94" 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="M3823.96,-1143.54C3840.84,-1136.27 3862.02,-1127.99 3881.67,-1122.72 3987.97,-1094.21 4024.42,-1127.44 4126.67,-1086.72 4162.63,-1072.4 4366,-923.38 4451.65,-860.08"/>
<polygon fill="#f91010" stroke="black" points="4453.85,-862.8 4459.8,-854.04 4449.68,-857.18 4453.85,-862.8"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_index -->
<g id="edge95" 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="M3937.67,-939.41C3992.16,-902.19 4010.3,-900.27 4067.67,-867.64 4151.39,-820.02 4177.33,-815.52 4254.67,-758.1 4259.02,-754.87 4263.42,-751.29 4267.69,-747.61"/>
<polygon fill="#f91010" stroke="black" points="4270.05,-750.2 4275.2,-740.94 4265.4,-744.97 4270.05,-750.2"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_user_login -->
<g id="edge96" 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="M3747.67,-1048.95C3760.97,-969.68 3851.88,-1028.59 3913.67,-977.18 3928.39,-964.94 3922.54,-953.14 3937.67,-941.41"/>
<path fill="none" stroke="black" d="M3937.67,-939.41C3993.17,-896.4 3952.3,-845.93 3999.67,-794.1 4022.48,-769.15 4039.16,-777.75 4066.67,-758.1 4070.28,-755.53 4073.91,-752.69 4077.46,-749.75"/>
<polygon fill="#f91010" stroke="black" points="4079.79,-752.36 4085.07,-743.18 4075.21,-747.06 4079.79,-752.36"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge97" 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="M3937.67,-939.41C4014.53,-884 4016.63,-849.27 4093.67,-794.1 4121.15,-774.42 4133.16,-777.75 4160.67,-758.1 4164.28,-755.53 4167.91,-752.69 4171.46,-749.75"/>
<polygon fill="#f91010" stroke="black" points="4173.79,-752.36 4179.07,-743.18 4169.21,-747.06 4173.79,-752.36"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_web -->
<g id="edge98" 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="M3772.71,-1133.8C3758.63,-1112.59 3742.66,-1080.79 3747.67,-1050.95"/>
<path fill="none" stroke="black" d="M3747.67,-1048.95C3755.58,-1001.82 3761.04,-987.3 3747.67,-941.41"/>
</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="#8a0f0f" stroke="black" cx="4805.67" cy="-2072.8" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4805.67" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4805.67" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4805.67" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth.</text>
<text text-anchor="middle" x="4805.67" y="-2053.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth</text>
</g>
<!-- ahriman_core_auth_mapping -->
<g id="node31" class="node">
<title>ahriman_core_auth_mapping</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8b2222" stroke="black" cx="4739.67" cy="-1963.27" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4739.67" y="-1977.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4739.67" y="-1966.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4739.67" y="-1955.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth.</text>
<text text-anchor="middle" x="4739.67" y="-1944.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">mapping</text>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge99" 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="M4781.29,-2032.08C4775.64,-2022.88 4769.64,-2013.09 4763.99,-2003.9"/>
<polygon fill="#8a0f0f" stroke="black" points="4778.37,-2034.01 4786.58,-2040.7 4784.33,-2030.35 4778.37,-2034.01"/>
<polygon fill="#8a0f0f" stroke="black" points="4766.93,-2001.99 4758.72,-1995.3 4760.96,-2005.65 4766.93,-2001.99"/>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge100" 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="M4832.32,-2046.17C4924.14,-1954.99 5221.67,-1634.26 5221.67,-1307.03 5221.67,-1307.03 5221.67,-1307.03 5221.67,-1232.26 5221.67,-1182.85 5230.99,-1171.18 5240.67,-1122.72 5256.84,-1041.7 5287.06,-1023.85 5281.67,-941.41"/>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_web_views_base -->
<g id="edge101" 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="M4817.75,-2037.77C4839.08,-1973.16 4879.22,-1828.36 4857.67,-1707.42 4841.76,-1618.13 4630.92,-1013.34 4575.67,-941.41"/>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_web_web -->
<g id="edge102" 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="M4841.69,-2060.57C4975.13,-2016.5 5433.67,-1842.07 5433.67,-1526.11 5433.67,-1526.11 5433.67,-1526.11 5433.67,-1414.57 5433.67,-1235.86 5432.16,-1190.47 5409.67,-1013.18 5405.58,-980.94 5391.93,-973.7 5395.67,-941.41"/>
</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="4079.67" cy="-1049.95" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4079.67" y="-1063.95" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4079.67" y="-1052.95" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4079.67" y="-1041.95" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth.</text>
<text text-anchor="middle" x="4079.67" 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="edge103" 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="M4107.67,-939.41C4116.64,-922.5 4116.9,-915.82 4131.67,-903.64 4194.94,-851.46 4276.23,-909.84 4301.67,-831.87"/>
<path fill="none" stroke="black" d="M4301.67,-829.87C4308.9,-807.71 4309.55,-781.85 4308.12,-760.24"/>
<polygon fill="#d92626" stroke="black" points="4311.58,-759.69 4307.26,-750.01 4304.61,-760.27 4311.58,-759.69"/>
</g>
<!-- ahriman_core_auth_helpers&#45;&gt;ahriman_web_views_user_login -->
<g id="edge104" 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="M4084.71,-1013.04C4088.78,-991.38 4095.83,-963.74 4107.67,-941.41"/>
<path fill="none" stroke="black" d="M4107.67,-939.41C4130.06,-897.19 4097.6,-878.6 4107.67,-831.87"/>
<path fill="none" stroke="black" d="M4107.67,-829.87C4111.93,-810.11 4113.76,-788.01 4114.42,-768.49"/>
<polygon fill="#d92626" stroke="black" points="4117.93,-768.33 4114.67,-758.25 4110.93,-768.16 4117.93,-768.33"/>
</g>
<!-- ahriman_core_auth_helpers&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge105" 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="M4107.67,-829.87C4111.76,-810.87 4144.01,-775.78 4170.79,-749.28"/>
<polygon fill="#d92626" stroke="black" points="4173.47,-751.54 4178.17,-742.05 4168.58,-746.54 4173.47,-751.54"/>
</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="4412.67" cy="-1853.73" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4412.67" y="-1867.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4412.67" y="-1856.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4412.67" y="-1845.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth.</text>
<text text-anchor="middle" x="4412.67" y="-1834.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">oauth</text>
</g>
<!-- ahriman_core_auth_mapping&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge107" 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="M4703.74,-1950.45C4643.93,-1930.78 4524.05,-1891.35 4458.33,-1869.74"/>
<polygon fill="#8b2222" stroke="black" points="4459.25,-1866.36 4448.66,-1866.56 4457.06,-1873.01 4459.25,-1866.36"/>
</g>
<!-- ahriman_core_auth_oauth&#45;&gt;ahriman_core_auth_auth -->
<g id="edge108" 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="M4448.81,-1865.65C4475.41,-1873.39 4512.55,-1883.59 4545.67,-1890.5 4598.68,-1901.55 4748.73,-1887.86 4786.67,-1926.5 4812,-1952.3 4815.06,-1994.23 4812.77,-2026.44"/>
<polygon fill="#8b2222" stroke="black" points="4809.28,-2026.25 4811.86,-2036.52 4816.25,-2026.88 4809.28,-2026.25"/>
</g>
<!-- ahriman_core_auth_oauth&#45;&gt;ahriman_web_views_user_login -->
<g id="edge109" 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="M4421.25,-1817.78C4452.57,-1686.47 4554.09,-1224.82 4459.67,-1122.72 4390.05,-1047.44 4069.29,-1162 3999.67,-1086.72 3955.62,-1039.09 3997.44,-1004.23 4013.67,-941.41"/>
<path fill="none" stroke="black" d="M4013.67,-939.41C4028.47,-873.71 4062.96,-803.66 4087.28,-759.53"/>
<polygon fill="#8b2222" stroke="black" points="4090.34,-761.23 4092.15,-750.79 4084.23,-757.82 4090.34,-761.23"/>
</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="2587.67" cy="-2550.5" rx="44.6" ry="28.98"/>
<text text-anchor="middle" x="2587.67" y="-2559" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2587.67" y="-2548" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2587.67" 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="edge110" 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="M2543.26,-2547.16C2380.83,-2538.48 1824.4,-2507.43 1747.67,-2485.5 1634.9,-2453.29 1513.67,-2480.81 1513.67,-2363.53 1513.67,-2363.53 1513.67,-2363.53 1513.67,-2173.57 1513.67,-1993.72 1568.62,-1955.58 1611.67,-1780.96 1629.66,-1707.98 1682.72,-1526.96 1691.67,-1452.34 1695.56,-1419.89 1701.75,-1409.89 1691.67,-1378.8 1679.52,-1341.33 1644.62,-1346.11 1639.67,-1307.03"/>
</g>
<!-- ahriman_core_repository_executor -->
<g id="node44" class="node">
<title>ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="2875.67" cy="-1415.57" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="2875.67" y="-1429.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2875.67" y="-1418.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2875.67" y="-1407.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="2875.67" 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="edge111" 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="M2543.32,-2547.74C2443.48,-2543.13 2193.86,-2527.98 1989.67,-2485.5 1852.87,-2457.05 1805.47,-2469.7 1689.67,-2391.52 1631.57,-2352.3 1589.67,-2339.65 1589.67,-2269.55 1589.67,-2269.55 1589.67,-2269.55 1589.67,-2173.57 1589.67,-2111.52 1588.54,-2092.77 1613.67,-2036.03 1621.88,-2017.5 1629.9,-2016.54 1641.67,-2000.03 1664.34,-1968.26 1661,-1952.98 1689.67,-1926.5 1714.21,-1903.82 1731.13,-1913.17 1755.67,-1890.5 1784.34,-1864.01 1778.03,-1846.38 1803.67,-1816.96 1863.53,-1748.25 2141.52,-1509.2 2190.67,-1488.34 2304.36,-1440.09 2680.62,-1422.98 2821.65,-1418.17"/>
<polygon fill="#e72222" stroke="black" points="2821.91,-1421.66 2831.79,-1417.83 2821.68,-1414.66 2821.91,-1421.66"/>
</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="2541.67" cy="-1853.73" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="2541.67" y="-1862.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2541.67" y="-1851.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2541.67" 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="edge112" 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="M2552.44,-2532.71C2544.62,-2529.01 2536.37,-2525.11 2528.67,-2521.5 2381.06,-2452.35 2197.67,-2526.54 2197.67,-2363.53 2197.67,-2363.53 2197.67,-2363.53 2197.67,-2267.55 2197.67,-2197.45 2239.77,-2185.09 2297.67,-2145.57 2340.51,-2116.34 2365.05,-2137.63 2408.67,-2109.57 2427.08,-2097.73 2544.43,-1985.98 2541.67,-1964.27"/>
<path fill="none" stroke="black" d="M2541.67,-1962.27C2539.4,-1939.48 2539.31,-1913.85 2539.82,-1893.33"/>
<polygon fill="#e72222" stroke="black" points="2543.33,-1893.21 2540.14,-1883.1 2536.33,-1892.99 2543.33,-1893.21"/>
</g>
<!-- ahriman_core_build_tools&#45;&gt;ahriman_models_package -->
<g id="edge113" 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="M2621.23,-2531.21C2629.36,-2527.45 2638.16,-2523.91 2646.67,-2521.5 2789.49,-2481.13 2832.87,-2513.26 2978.67,-2485.5 3074.21,-2467.32 3094.21,-2446.12 3189.67,-2427.52 3192.73,-2426.93 3555.02,-2384.62 3687.69,-2369.13"/>
<polygon fill="#e72222" stroke="black" points="3688.43,-2372.57 3697.95,-2367.93 3687.62,-2365.62 3688.43,-2372.57"/>
</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="2730.67" cy="-2072.8" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="2730.67" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2730.67" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2730.67" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">build_tools.</text>
<text text-anchor="middle" x="2730.67" 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="edge114" 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="M2722.92,-2036.2C2720.77,-2024.72 2718.73,-2011.89 2717.67,-2000.03 2714.74,-1967.48 2716.76,-1959.17 2717.67,-1926.5 2718.56,-1894.56 2722.14,-1886.67 2721.67,-1854.73"/>
<path fill="none" stroke="black" d="M2721.67,-1852.73C2710.71,-1759.69 2578.43,-1551.96 2509.67,-1488.34 2263.39,-1260.49 2084.32,-1378.94 1829.67,-1160.49"/>
</g>
<!-- ahriman_core_build_tools_task&#45;&gt;ahriman_core_repository_executor -->
<g id="edge115" 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="M2721.67,-1852.73C2699.05,-1727.11 2907.83,-1763.27 2909.67,-1635.65"/>
<path fill="none" stroke="black" d="M2909.67,-1633.65C2900.58,-1584.35 2862.14,-1574.37 2875.67,-1526.11"/>
</g>
<!-- ahriman_core_build_tools_task&#45;&gt;ahriman_core_tree -->
<g id="edge116" 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="M2693.64,-2049.94C2685.74,-2045.32 2677.44,-2040.49 2669.67,-2036.03 2613.09,-2003.59 2552.42,-2028.59 2541.67,-1964.27"/>
</g>
<!-- ahriman_core_configuration -->
<g id="node35" class="node">
<title>ahriman_core_configuration</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="5038.67" cy="-2791.02" rx="50.82" ry="28.98"/>
<text text-anchor="middle" x="5038.67" y="-2799.52" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5038.67" y="-2788.52" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="5038.67" 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="edge118" 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="M980.67,-2455.51C980.67,-2404.93 1135.53,-2081.52 1157.67,-2036.03 1360.87,-1618.6 1418.99,-1516.66 1664.67,-1122.72 1672.49,-1110.18 1681.6,-1096.79 1689.88,-1085.02"/>
<polygon fill="#f91010" stroke="black" points="1692.8,-1086.95 1695.73,-1076.77 1687.09,-1082.9 1692.8,-1086.95"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_add -->
<g id="edge119" 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="M651.67,-2361.53C627.25,-2236.01 660.17,-2201.4 651.67,-2073.8"/>
<path fill="none" stroke="black" d="M651.67,-2071.8C648.06,-2013.39 599.98,-2017.5 575.67,-1964.27"/>
<path fill="none" stroke="black" d="M575.67,-1962.27C514.96,-1829.33 613.67,-1781.79 613.67,-1635.65 613.67,-1635.65 613.67,-1635.65 613.67,-1305.03 613.67,-1106.31 665.73,-1039.6 810.67,-903.64 841.19,-875.01 860.64,-887.13 897.67,-867.64 901.57,-865.59 905.56,-863.34 909.5,-860.99"/>
<polygon fill="#f91010" stroke="black" points="911.34,-863.97 918.04,-855.76 907.69,-858 911.34,-863.97"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_clean -->
<g id="edge120" 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="M651.67,-2071.8C638.44,-1877.67 689.67,-1830.23 689.67,-1635.65 689.67,-1635.65 689.67,-1635.65 689.67,-1524.11 689.67,-1333.36 870.02,-1345.19 917.67,-1160.49"/>
<path fill="none" stroke="black" d="M917.67,-1158.49C931.27,-1043.03 895.25,-986.64 976.67,-903.64 1022.57,-856.86 1059.6,-893.87 1119.67,-867.64 1123.77,-865.85 1127.91,-863.77 1131.98,-861.52"/>
<polygon fill="#f91010" stroke="black" points="1133.87,-864.47 1140.73,-856.4 1130.34,-858.43 1133.87,-864.47"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_create_user -->
<g id="edge121" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_create_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M866.67,-2173.57C863.42,-2016.49 988.18,-1636.42 1040.67,-1488.34 1136.3,-1218.55 1097.37,-1094.52 1310.67,-903.64 1348.37,-869.9 1372.92,-889.24 1418.67,-867.64 1422.93,-865.63 1427.27,-863.36 1431.55,-860.97"/>
<polygon fill="#f91010" stroke="black" points="1433.34,-863.98 1440.22,-855.93 1429.82,-857.93 1433.34,-863.98"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_dump -->
<g id="edge122" 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="M4997.03,-2774.2C4958.3,-2759.98 4898.75,-2739.32 4845.67,-2726.03"/>
<path fill="none" stroke="black" d="M4845.67,-2725.03C4693.65,-2686.95 3592.23,-2696.14 3435.67,-2689.03 3192.29,-2677.97 3130.74,-2680.74 2888.67,-2653.26"/>
<path fill="none" stroke="black" d="M2888.67,-2651.26C2044.93,-2555.48 1803.51,-2761.26 980.67,-2551.5"/>
<path fill="none" stroke="black" d="M980.67,-2549.5C773.4,-2496.66 692.66,-2585.68 503.67,-2485.5 373.44,-2416.48 428.46,-2316.61 385.67,-2175.57"/>
<path fill="none" stroke="black" d="M385.67,-2173.57C345.48,-2075.56 290.74,-2068.46 271.67,-1964.27"/>
<path fill="none" stroke="black" d="M271.67,-1962.27C248.73,-1908.42 221.65,-1907.17 195.67,-1854.73"/>
<path fill="none" stroke="black" d="M195.67,-1852.73C130.79,-1721.77 159.79,-1672.24 157.67,-1526.11"/>
<path fill="none" stroke="black" d="M157.67,-1524.11C118.53,-1268.11 172.01,-1199.99 157.67,-941.41"/>
<path fill="none" stroke="black" d="M157.67,-939.41C152.92,-920.29 117.08,-887.71 87.39,-863.41"/>
<polygon fill="#f91010" stroke="black" points="89.58,-860.68 79.61,-857.11 85.18,-866.12 89.58,-860.68"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_handler -->
<g id="edge123" 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="M651.67,-2071.8C651.67,-1994.72 879.67,-1493.66 879.67,-1416.57 879.67,-1416.57 879.67,-1416.57 879.67,-1305.03 879.67,-1251.45 910.23,-1245.37 931.67,-1196.26 963.6,-1123.12 997.04,-1036.45 1016.31,-985.36"/>
<polygon fill="#f91010" stroke="black" points="1019.6,-986.53 1019.85,-975.93 1013.05,-984.06 1019.6,-986.53"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_init -->
<g id="edge124" 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="M5076.84,-2771.76C5123.1,-2749.12 5197.61,-2710.86 5219.67,-2689.03 5365.65,-2544.52 5413.67,-2474.96 5413.67,-2269.55 5413.67,-2269.55 5413.67,-2269.55 5413.67,-2173.57 5413.67,-2059.58 5268.37,-1798.37 5199.67,-1707.42 5156.93,-1650.84 5140.71,-1640 5083.67,-1597.88 4978.07,-1519.91 4931.21,-1531.72 4826.67,-1452.34 4698.25,-1354.83 4683.19,-1310.78 4569.67,-1196.26 4537.47,-1163.78 4539.17,-1141.96 4497.67,-1122.72 4296.34,-1029.39 4209.68,-1158.41 3999.67,-1086.72 3860.36,-1039.17 3863.62,-949.26 3723.67,-903.64 3573.51,-854.7 2437.69,-836.31 2167.99,-832.61"/>
<polygon fill="#f91010" stroke="black" points="2167.69,-829.1 2157.65,-832.47 2167.6,-836.1 2167.69,-829.1"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_key_import -->
<g id="edge125" 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="M5375.67,-2361.53C5369.88,-2254.77 5322.99,-2238.25 5269.67,-2145.57 5211.32,-2044.15 5196.36,-2018.19 5123.67,-1926.5 5047.64,-1830.6 4481.11,-1175.44 4370.67,-1122.72 4271.34,-1075.3 3981.12,-1121.43 3876.67,-1086.72 3819.1,-1067.59 3819.12,-1032.67 3761.67,-1013.18 3671.53,-982.61 2144.68,-898.56 2054.67,-867.64 2050.19,-866.11 2045.72,-864.12 2041.37,-861.88"/>
<polygon fill="#f91010" stroke="black" points="2043.07,-858.83 2032.64,-856.98 2039.64,-864.93 2043.07,-858.83"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_rebuild -->
<g id="edge126" 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="M157.67,-939.41C156.55,-919.28 156.38,-897 156.55,-877.96"/>
<polygon fill="#f91010" stroke="black" points="160.05,-877.79 156.68,-867.75 153.05,-877.7 160.05,-877.79"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_remove -->
<g id="edge127" 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="M195.67,-1852.73C171.46,-1805.1 331.31,-953.44 350.67,-903.64 355.05,-892.37 361.39,-881.02 368,-870.78"/>
<polygon fill="#f91010" stroke="black" points="370.91,-872.72 373.57,-862.46 365.1,-868.82 370.91,-872.72"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge128" 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="M980.67,-2549.5C941.12,-2539.16 983.48,-2498.3 980.67,-2457.51"/>
<path fill="none" stroke="black" d="M980.67,-2455.51C958.93,-2139.75 1031.67,-2061.7 1031.67,-1745.19 1031.67,-1745.19 1031.67,-1745.19 1031.67,-1633.65 1031.67,-1448.86 1333.71,-1175.05 1386.67,-1122.72 1492.37,-1018.28 1634.89,-915.92 1709.09,-865.06"/>
<polygon fill="#f91010" stroke="black" points="1711.08,-867.94 1717.36,-859.41 1707.13,-862.16 1711.08,-867.94"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_report -->
<g id="edge129" 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="M980.67,-2549.5C833.54,-2511.99 775.54,-2545.31 651.67,-2457.51"/>
<path fill="none" stroke="black" d="M651.67,-2455.51C634.76,-2443.53 423.67,-1765.91 423.67,-1745.19 423.67,-1745.19 423.67,-1745.19 423.67,-1633.65 423.67,-1487.51 461.67,-1453.17 461.67,-1307.03 461.67,-1307.03 461.67,-1307.03 461.67,-1048.95 461.67,-978.74 469.97,-948.88 523.67,-903.64 576.77,-858.92 611.85,-894.97 675.67,-867.64 679.79,-865.88 683.93,-863.82 688.01,-861.58"/>
<polygon fill="#f91010" stroke="black" points="689.89,-864.54 696.77,-856.48 686.37,-858.49 689.89,-864.54"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_search -->
<g id="edge130" 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="M575.67,-1962.27C543.86,-1884.7 609.25,-1862.74 627.67,-1780.96 642.05,-1717.1 651.67,-1701.1 651.67,-1635.65 651.67,-1635.65 651.67,-1635.65 651.67,-1414.57 651.67,-1353.32 812.25,-943.6 858.67,-903.64 910.63,-858.92 945.68,-894.73 1008.67,-867.64 1012.78,-865.87 1016.93,-863.81 1021,-861.57"/>
<polygon fill="#f91010" stroke="black" points="1022.89,-864.52 1029.76,-856.46 1019.36,-858.48 1022.89,-864.52"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge131" 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="M980.67,-2549.5C812.57,-2505.55 871.47,-2349.24 866.67,-2175.57"/>
<path fill="none" stroke="black" d="M866.67,-2173.57C862.79,-2140.49 836.67,-2141.64 827.67,-2109.57 818.84,-2078.11 824.34,-2068.55 827.67,-2036.03 856.26,-1756.36 955.67,-1697.7 955.67,-1416.57 955.67,-1416.57 955.67,-1416.57 955.67,-1305.03 955.67,-1122.69 1011.18,-1064.55 1145.67,-941.41"/>
<path fill="none" stroke="black" d="M1145.67,-939.41C1159.41,-926.08 1154.12,-914.81 1169.67,-903.64 1219.05,-868.16 1245.62,-891.23 1301.67,-867.64 1307.11,-865.36 1312.65,-862.67 1318.07,-859.81"/>
<polygon fill="#f91010" stroke="black" points="1319.96,-862.76 1327.04,-854.88 1316.59,-856.63 1319.96,-862.76"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_sign -->
<g id="edge132" 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="M271.67,-1962.27C239.33,-1770.39 309.67,-1720.69 309.67,-1526.11 309.67,-1526.11 309.67,-1526.11 309.67,-1414.57 309.67,-1300.39 347.67,-1274.67 347.67,-1160.49 347.67,-1160.49 347.67,-1160.49 347.67,-1048.95 347.67,-980.94 353.58,-957.07 395.67,-903.64 414.44,-879.81 428.06,-883.92 453.67,-867.64 457.24,-865.38 460.93,-863.01 464.63,-860.63"/>
<polygon fill="#f91010" stroke="black" points="466.73,-863.44 473.24,-855.07 462.94,-857.56 466.73,-863.44"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_status -->
<g id="edge133" 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="M980.67,-2455.51C971.43,-2341.55 1012.19,-2316.05 1032.67,-2203.56 1054.8,-2081.99 1024.08,-2045.95 1055.67,-1926.5 1124.27,-1667.09 1158.56,-1600.53 1309.67,-1378.8 1436.18,-1193.17 1483.75,-1154.13 1658.67,-1013.18 1682.59,-993.91 1692.78,-995.18 1717.67,-977.18 1765.89,-942.31 1817.45,-897.32 1851.19,-866.7"/>
<polygon fill="#f91010" stroke="black" points="1853.92,-868.95 1858.95,-859.62 1849.21,-863.77 1853.92,-868.95"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_status_update -->
<g id="edge134" 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="M157.67,-1524.11C152.22,-1260.28 219.66,-1200.12 271.67,-941.41"/>
<path fill="none" stroke="black" d="M271.67,-939.41C273.41,-919.29 274.75,-897.01 275.72,-877.97"/>
<polygon fill="#f91010" stroke="black" points="279.23,-877.92 276.22,-867.76 272.23,-877.58 279.23,-877.92"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_sync -->
<g id="edge135" 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="M651.67,-2455.51C618.32,-2431.87 660.2,-2403.51 651.67,-2363.53"/>
<path fill="none" stroke="black" d="M651.67,-2361.53C617.13,-2199.6 588.54,-2163.41 561.67,-2000.03 548.45,-1919.65 551.55,-1898.42 552.67,-1816.96 554.67,-1670.86 547.15,-1633.72 561.67,-1488.34 571.49,-1390.01 575.78,-1365.15 599.67,-1269.26 641.81,-1100.11 632.49,-1039.54 741.67,-903.64 746.16,-898.05 773.47,-878.57 798.41,-861.31"/>
<polygon fill="#f91010" stroke="black" points="800.5,-864.13 806.75,-855.57 796.53,-858.36 800.5,-864.13"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_update -->
<g id="edge136" 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="M385.67,-2173.57C337.4,-1988.62 347.67,-1936.33 347.67,-1745.19 347.67,-1745.19 347.67,-1745.19 347.67,-1524.11 347.67,-1393.74 385.67,-1363.63 385.67,-1233.26 385.67,-1233.26 385.67,-1233.26 385.67,-1048.95 385.67,-975.23 409.67,-951.6 465.67,-903.64 501.23,-873.19 522.77,-888.54 564.67,-867.64 568.62,-865.67 572.63,-863.48 576.6,-861.18"/>
<polygon fill="#f91010" stroke="black" points="578.41,-864.17 585.17,-856.01 574.8,-858.18 578.41,-864.17"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_web -->
<g id="edge137" 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="M5076.96,-2771.79C5085.61,-2768.17 5094.84,-2764.67 5103.67,-2762.03 5281.38,-2708.76 5355.06,-2783.6 5514.67,-2689.03 5772.97,-2535.98 5793.67,-2374.04 5793.67,-2073.8 5793.67,-2073.8 5793.67,-2073.8 5793.67,-1232.26 5793.67,-851.64 5528.01,-777.73 5585.67,-401.5"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_lock -->
<g id="edge138" 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="M2888.67,-2651.26C2753.39,-2634.49 1769.78,-2501.81 1689.67,-2391.52 1656.89,-2346.4 1523.1,-2237.2 1727.67,-1926.5 1746.04,-1898.59 1766.29,-1909.65 1793.67,-1890.5 1894.57,-1819.89 1897.37,-1772.9 2001.67,-1707.42 2071.13,-1663.81 2093.68,-1661.03 2171.67,-1635.65"/>
<path fill="none" stroke="black" d="M2171.67,-1633.65C2263.12,-1603.06 2289.72,-1607.53 2385.67,-1597.88 2613.33,-1574.97 3194.94,-1625.7 3414.67,-1561.88 3422.21,-1559.69 3429.8,-1556.36 3436.93,-1552.59"/>
<polygon fill="#f91010" stroke="black" points="3438.7,-1555.61 3445.68,-1547.65 3435.25,-1549.52 3438.7,-1555.61"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_alpm_pacman -->
<g id="edge139" 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="M4845.67,-2725.03C4834.46,-2722.01 4854.21,-2701.62 4874.96,-2683.35"/>
<polygon fill="#f91010" stroke="black" points="4877.32,-2685.93 4882.59,-2676.74 4872.74,-2680.64 4877.32,-2685.93"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_auth_auth -->
<g id="edge140" 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="M4845.67,-2651.26C4830.36,-2566.52 4842.47,-2543.56 4845.67,-2457.51"/>
<path fill="none" stroke="black" d="M4845.67,-2455.51C4848.73,-2414.4 4843.89,-2403.47 4833.67,-2363.53"/>
<path fill="none" stroke="black" d="M4833.67,-2361.53C4823.53,-2321.93 4831.95,-2310.39 4833.67,-2269.55"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge141" 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="M4769.67,-2549.5C4727.74,-2477.34 4816.37,-2444.38 4795.67,-2363.53"/>
<path fill="none" stroke="black" d="M4795.67,-2361.53C4770.4,-2268.32 4796.97,-2238.77 4771.67,-2145.57 4762.52,-2111.87 4742.72,-2108.6 4739.67,-2073.8"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge142" 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="M4845.67,-2725.03C4814.87,-2716.73 4851.81,-2684.56 4845.67,-2653.26"/>
<path fill="none" stroke="black" d="M4845.67,-2651.26C4837.56,-2609.89 4807.06,-2614.56 4783.67,-2579.49 4775.95,-2567.92 4776.47,-2563.63 4769.67,-2551.5"/>
<path fill="none" stroke="black" d="M4769.67,-2549.5C4619.4,-2281.2 4631.06,-2187.63 4468.67,-1926.5 4461.08,-1914.29 4451.82,-1901.7 4443.03,-1890.54"/>
<polygon fill="#f91010" stroke="black" points="4445.72,-1888.31 4436.74,-1882.69 4440.26,-1892.69 4445.72,-1888.31"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge143" 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="M2660.67,-2549.5C2627.5,-2535.73 2687.94,-2426.79 2694.67,-2391.52 2712.91,-2295.94 2741.34,-2272.28 2730.67,-2175.57"/>
<path fill="none" stroke="black" d="M2730.67,-2173.57C2728.23,-2156.24 2727.72,-2137.05 2727.99,-2120.17"/>
<polygon fill="#f91010" stroke="black" points="2731.49,-2120.08 2728.25,-2109.99 2724.49,-2119.9 2731.49,-2120.08"/>
</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="2427.67" cy="-1744.19" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="2427.67" y="-1758.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2427.67" y="-1747.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2427.67" y="-1736.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report.</text>
<text text-anchor="middle" x="2427.67" 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="edge144" 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="M1969.67,-2173.57C1956.55,-2123.31 2364.86,-2010.93 2387.67,-1964.27"/>
<path fill="none" stroke="black" d="M2387.67,-1962.27C2406.3,-1904.58 2417.18,-1835.31 2422.77,-1790.78"/>
<polygon fill="#f91010" stroke="black" points="2426.25,-1791.2 2423.98,-1780.85 2419.3,-1790.35 2426.25,-1791.2"/>
</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="2432.67" cy="-1525.11" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="2432.67" y="-1539.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2432.67" y="-1528.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2432.67" y="-1517.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report.</text>
<text text-anchor="middle" x="2432.67" 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="edge145" 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="M980.67,-2549.5C905.16,-2529.26 1403.23,-2087.96 1461.67,-2036.03 1734.9,-1793.23 1812.36,-1717.75 2157.67,-1597.88 2236,-1570.69 2329.99,-1548.27 2385.33,-1536.07"/>
<polygon fill="#f91010" stroke="black" points="2386.17,-1539.47 2395.2,-1533.92 2384.68,-1532.63 2386.17,-1539.47"/>
</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="2885.67" cy="-1853.73" rx="54.39" ry="36.54"/>
<text text-anchor="middle" x="2885.67" y="-1867.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2885.67" y="-1856.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2885.67" y="-1845.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report.</text>
<text text-anchor="middle" x="2885.67" 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="edge146" 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="M2660.67,-2549.5C2646.8,-2543.7 2653.55,-2530.72 2641.67,-2521.5 2506.96,-2416.95 2378.72,-2531.04 2280.67,-2391.52 2265.85,-2370.44 2272.11,-2357.85 2280.67,-2333.54 2323.08,-2213.08 2381.55,-2209.82 2460.67,-2109.57 2486.29,-2077.11 2485.92,-2062.53 2517.67,-2036.03 2570.74,-1991.74 2597.7,-2001.93 2655.67,-1964.27"/>
<path fill="none" stroke="black" d="M2655.67,-1962.27C2682.59,-1945.31 2689.21,-1940.72 2717.67,-1926.5 2754.21,-1908.23 2796.5,-1890.18 2829.51,-1876.75"/>
<polygon fill="#f91010" stroke="black" points="2831.04,-1879.91 2839,-1872.91 2828.42,-1873.42 2831.04,-1879.91"/>
</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="2432.67" cy="-1634.65" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="2432.67" y="-1648.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2432.67" y="-1637.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2432.67" y="-1626.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report.</text>
<text text-anchor="middle" x="2432.67" 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="edge147" 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="M2888.67,-2651.26C2778.9,-2637.65 2763.89,-2591.23 2660.67,-2551.5"/>
<path fill="none" stroke="black" d="M2660.67,-2549.5C2646.64,-2544.1 2654.74,-2528.93 2641.67,-2521.5 2524.19,-2454.73 2137,-2573.75 2034.67,-2485.5 1928.08,-2393.58 1946.16,-2314.34 1969.67,-2175.57"/>
<path fill="none" stroke="black" d="M1969.67,-2173.57C1981.67,-2125.97 1902.17,-2153.19 1879.67,-2109.57 1864.68,-2080.53 1865.42,-2065.45 1879.67,-2036.03 1970.53,-1848.41 2080.9,-1870.28 2247.67,-1745.19"/>
<path fill="none" stroke="black" d="M2247.67,-1743.19C2263.62,-1731.7 2258.43,-1719.82 2273.67,-1707.42 2307.23,-1680.1 2352.87,-1660.92 2386.64,-1649.3"/>
<polygon fill="#f91010" stroke="black" points="2387.9,-1652.57 2396.27,-1646.08 2385.68,-1645.93 2387.9,-1652.57"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_repository_properties -->
<g id="edge148" 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="M3002.67,-2549.5C3030.82,-2500.03 3016.8,-2478.71 3041.67,-2427.52 3072.16,-2364.77 3096.33,-2358.82 3129.67,-2297.54 3190.01,-2186.63 3155.01,-2128.79 3240.67,-2036.03 3264.14,-2010.62 3284.1,-2023.33 3309.67,-2000.03 3366.53,-1948.24 3394.07,-1931.04 3403.67,-1854.73"/>
</g>
<!-- ahriman_core_sign_gpg -->
<g id="node49" class="node">
<title>ahriman_core_sign_gpg</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#932424" stroke="black" cx="3117.67" cy="-2072.8" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3117.67" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3117.67" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3117.67" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">sign.</text>
<text text-anchor="middle" x="3117.67" 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="edge149" 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="M2888.67,-2651.26C2821.85,-2642.97 2975.59,-2613.14 3002.67,-2551.5"/>
<path fill="none" stroke="black" d="M3002.67,-2549.5C3014.38,-2522.84 2991.8,-2514.45 2988.67,-2485.5 2985.9,-2459.88 2980.23,-2451.87 2988.67,-2427.52 3006.07,-2377.29 3026.1,-2372.13 3062.67,-2333.54 3079.35,-2315.94 3091.57,-2318.56 3103.67,-2297.54 3131.23,-2249.65 3134.06,-2230.44 3127.67,-2175.57"/>
</g>
<!-- ahriman_core_spawn -->
<g id="node50" class="node">
<title>ahriman_core_spawn</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="5537.67" cy="-1159.49" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="5537.67" y="-1167.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5537.67" y="-1156.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="5537.67" y="-1145.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">spawn</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_spawn -->
<g id="edge150" 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="M5077.87,-2772.15C5086.3,-2768.59 5095.22,-2765.03 5103.67,-2762.03 5160.69,-2741.8 5176.22,-2740.64 5234.67,-2725.03 5297.99,-2708.12 5317.77,-2715.62 5377.67,-2689.03 5457.78,-2653.47 5490.55,-2650.69 5541.67,-2579.49 5650.56,-2427.8 5641.67,-1931.91 5641.67,-1745.19 5641.67,-1745.19 5641.67,-1745.19 5641.67,-1633.65 5641.67,-1467.29 5579.59,-1275.55 5551.35,-1196.95"/>
<polygon fill="#f91010" stroke="black" points="5554.63,-1195.71 5547.93,-1187.5 5548.05,-1198.09 5554.63,-1195.71"/>
</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="3791.67" cy="-1853.73" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3791.67" y="-1867.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3791.67" y="-1856.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3791.67" y="-1845.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="3791.67" 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="edge151" 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="M4845.67,-2725.03C4727.92,-2693.32 4693.86,-2709.6 4573.67,-2689.03 4140.77,-2614.93 3883.4,-2826.55 3606.67,-2485.5 3565.77,-2435.1 3537.87,-2332.3 3737.67,-2036.03 3765.12,-1995.32 3822.94,-2013.35 3821.67,-1964.27"/>
<path fill="none" stroke="black" d="M3821.67,-1962.27C3821.08,-1940.65 3815.31,-1917.45 3808.98,-1898.16"/>
<polygon fill="#f91010" stroke="black" points="3812.21,-1896.77 3805.65,-1888.45 3805.59,-1899.05 3812.21,-1896.77"/>
</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="4227.67" cy="-1159.49" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4227.67" y="-1173.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4227.67" y="-1162.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4227.67" y="-1151.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="4227.67" 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="edge152" 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="M4845.67,-2725.03C4770.69,-2706.23 5133.13,-2739.51 5191.67,-2689.03 5249.88,-2638.83 5198.5,-2589.33 5234.67,-2521.5 5278.96,-2438.47 5368.45,-2457.36 5375.67,-2363.53"/>
<path fill="none" stroke="black" d="M5375.67,-2361.53C5370.38,-2282.22 5257.08,-2360.58 5208.67,-2297.54 5167.31,-2243.68 5207.45,-2211.86 5192.67,-2145.57 5181.45,-2095.28 5179.49,-2081.19 5154.67,-2036.03 5094.78,-1927.07 5070.91,-1902.5 4980.67,-1816.96 4838.62,-1682.3 4768.84,-1690.91 4621.67,-1561.88 4588.29,-1532.61 4383.72,-1297.74 4349.67,-1269.26 4326.97,-1250.28 4310.69,-1257.46 4293.67,-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="4327.67" cy="-1744.19" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="4327.67" y="-1758.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4327.67" y="-1747.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4327.67" y="-1736.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="4327.67" 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="edge153" 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="M4845.67,-2455.51C4858.45,-2283.97 4970.82,-2234.59 4909.67,-2073.8"/>
<path fill="none" stroke="black" d="M4909.67,-2071.8C4894.3,-2035.54 4879.36,-2032.92 4857.67,-2000.03 4836.7,-1968.24 4845.31,-1947.69 4813.67,-1926.5 4724.06,-1866.46 4674.58,-1928.58 4573.67,-1890.5 4517.26,-1869.21 4511.52,-1847.72 4459.67,-1816.96 4431.5,-1800.24 4399.2,-1782.66 4373.61,-1769.08"/>
<polygon fill="#f91010" stroke="black" points="4374.98,-1765.84 4364.5,-1764.26 4371.7,-1772.03 4374.98,-1765.84"/>
</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="3287.67" cy="-2072.8" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3287.67" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3287.67" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3287.67" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload.</text>
<text text-anchor="middle" x="3287.67" 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="edge154" 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="M3002.67,-2549.5C3071.69,-2419.47 3146.47,-2426.39 3217.67,-2297.54 3249.49,-2239.96 3269.03,-2165.89 3279.12,-2119.12"/>
<polygon fill="#f91010" stroke="black" points="3282.55,-2119.79 3281.19,-2109.28 3275.7,-2118.35 3282.55,-2119.79"/>
</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="3071.67" cy="-1853.73" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3071.67" y="-1867.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3071.67" y="-1856.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3071.67" y="-1845.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload.</text>
<text text-anchor="middle" x="3071.67" 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="edge155" 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="M2888.67,-2651.26C2844.67,-2645.8 2896.22,-2595.19 2888.67,-2551.5"/>
<path fill="none" stroke="black" d="M2888.67,-2549.5C2886.3,-2535.79 2881.85,-2533.42 2874.67,-2521.5 2838,-2460.67 2811.35,-2456.06 2781.67,-2391.52 2758.34,-2340.8 2719.91,-2315.46 2751.67,-2269.55"/>
</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="3185.67" cy="-1963.27" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3185.67" y="-1977.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3185.67" y="-1966.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3185.67" y="-1955.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload.</text>
<text text-anchor="middle" x="3185.67" 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="edge156" 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="M2888.67,-2549.5C2865.96,-2432.77 2947.98,-2412.42 2978.67,-2297.54 2989.62,-2256.53 2988.97,-2245.47 2995.67,-2203.56 3004.85,-2146.07 2981.77,-2122.51 3013.67,-2073.8"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_web_web -->
<g id="edge157" 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="M5077.39,-2771.91C5085.93,-2768.32 5095.01,-2764.81 5103.67,-2762.03 5176.87,-2738.49 5197.37,-2740.59 5272.67,-2725.03 5354.7,-2708.07 5383.5,-2727.95 5457.67,-2689.03 5519.32,-2656.67 5531.44,-2637.68 5569.67,-2579.49 5637.88,-2475.64 5755.67,-2368.08 5755.67,-2073.8 5755.67,-2073.8 5755.67,-2073.8 5755.67,-1962.27 5755.67,-1816.12 5717.67,-1781.79 5717.67,-1635.65 5717.67,-1635.65 5717.67,-1635.65 5717.67,-1232.26 5717.67,-887.03 5609.78,-811.88 5471.67,-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="3489.67" cy="-2652.26" rx="44.6" ry="28.98"/>
<text text-anchor="middle" x="3489.67" y="-2660.76" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3489.67" y="-2649.76" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3489.67" y="-2638.76" 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="edge158" 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="M3355.67,-2455.51C3406.97,-2408.87 3453.24,-2426.77 3481.67,-2363.53"/>
<path fill="none" stroke="black" d="M3481.67,-2361.53C3545.08,-2220.48 3424.77,-2175.85 3358.67,-2036.03 3244.37,-1794.27 3012.19,-1427.74 2928.67,-1378.8 2841.92,-1327.97 2577.52,-1354.52 2477.67,-1342.8 2055.98,-1293.31 1945.94,-1297.77 1533.67,-1196.26 1387.3,-1160.22 1344.67,-1159.52 1212.67,-1086.72 1157.9,-1056.52 1103.16,-1009.29 1068.68,-976.93"/>
<polygon fill="#f91010" stroke="black" points="1070.88,-974.19 1061.21,-969.86 1066.06,-979.27 1070.88,-974.19"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_application_lock -->
<g id="edge159" 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="M3355.67,-2455.51C3408,-2411.45 3449.31,-2441.83 3495.67,-2391.52 3525.77,-2358.86 3522,-2341.29 3529.67,-2297.54 3578.51,-2018.95 3510.39,-1676.45 3484.74,-1563.9"/>
<polygon fill="#f91010" stroke="black" points="3488.13,-1562.99 3482.47,-1554.04 3481.3,-1564.57 3488.13,-1562.99"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_alpm_repo -->
<g id="edge160" 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="M3481.67,-2361.53C3514.28,-2284.71 3538.28,-2253.2 3507.67,-2175.57"/>
<path fill="none" stroke="black" d="M3507.67,-2173.57C3499.42,-2153.77 3488.96,-2132.44 3479.73,-2114.6"/>
<polygon fill="#f91010" stroke="black" points="3482.77,-2112.86 3475.04,-2105.62 3476.57,-2116.11 3482.77,-2112.86"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_auth_auth -->
<g id="edge161" 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="M4731.67,-2549.5C4760.42,-2489.85 4821.03,-2334.54 4833.67,-2269.55"/>
<path fill="none" stroke="black" d="M4833.67,-2267.55C4837.48,-2216.1 4826.93,-2157.55 4817.71,-2118.41"/>
<polygon fill="#f91010" stroke="black" points="4821.1,-2117.54 4815.34,-2108.64 4814.29,-2119.19 4821.1,-2117.54"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge162" 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="M4605.67,-2455.51C4583.21,-2421.35 4605.67,-2404.41 4605.67,-2363.53"/>
<path fill="none" stroke="black" d="M4605.67,-2361.53C4605.67,-2349.23 4476.88,-2018.84 4429.71,-1898.25"/>
<polygon fill="#f91010" stroke="black" points="4432.84,-1896.62 4425.93,-1888.59 4426.32,-1899.18 4432.84,-1896.62"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge163" 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="M3203.67,-2549.5C3180.04,-2516.14 3220.35,-2494.84 3203.67,-2457.51"/>
<path fill="none" stroke="black" d="M3203.67,-2455.51C3165.93,-2371.08 3088.83,-2431.99 3005.67,-2391.52 2964.22,-2371.35 2961.11,-2353.73 2919.67,-2333.54 2873.05,-2310.82 2850.14,-2328.68 2808.67,-2297.54 2796.65,-2288.51 2801.27,-2279.12 2789.67,-2269.55"/>
<path fill="none" stroke="black" d="M2789.67,-2267.55C2752.54,-2236.24 2736,-2223.84 2730.67,-2175.57"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_report_report -->
<g id="edge164" 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="M3355.67,-2455.51C3425.6,-2393.7 3368.68,-2122.95 3334.67,-2036.03 3323.11,-2006.5 3178.53,-1833.83 3151.67,-1816.96 3093.4,-1780.34 2630.81,-1678.39 2480.01,-1645.8"/>
<polygon fill="#f91010" stroke="black" points="2480.63,-1642.36 2470.12,-1643.67 2479.16,-1649.2 2480.63,-1642.36"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge165" 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="M3203.67,-2455.51C3169.76,-2380.14 3245.28,-2340.96 3203.67,-2269.55"/>
<path fill="none" stroke="black" d="M3203.67,-2267.55C3176.76,-2221.85 3133.8,-2228.24 3127.67,-2175.57"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_status_watcher -->
<g id="edge166" 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="M4605.67,-2361.53C4616.61,-2217.27 4628.9,-2178.13 4601.67,-2036.03 4565.71,-1848.38 4402.48,-1390.33 4293.67,-1233.26"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_upload_upload -->
<g id="edge167" 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="M3203.67,-2549.5C3158.03,-2485.06 3300.86,-2514.35 3355.67,-2457.51"/>
<path fill="none" stroke="black" d="M3355.67,-2455.51C3363.84,-2447.04 3245.78,-2126.1 3201.81,-2007.62"/>
<polygon fill="#f91010" stroke="black" points="3205.05,-2006.28 3198.29,-1998.12 3198.49,-2008.72 3205.05,-2006.28"/>
</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="4665.67" cy="-2550.5" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="4665.67" y="-2559" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4665.67" y="-2548" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4665.67" 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="edge168" 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="M3534.34,-2651.2C3717.46,-2650.56 4410.89,-2643.83 4618.67,-2579.49 4622.19,-2578.4 4625.72,-2577 4629.18,-2575.4"/>
<polygon fill="#f91010" stroke="black" points="4630.81,-2578.5 4638.11,-2570.81 4627.61,-2572.27 4630.81,-2578.5"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_auth_settings -->
<g id="edge169" 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="M3534.2,-2650.96C3741.77,-2649.25 4608.58,-2638.61 4712.67,-2579.49 4725.74,-2572.06 4725.14,-2565.04 4731.67,-2551.5"/>
<path fill="none" stroke="black" d="M4731.67,-2549.5C4738.2,-2535.95 4723.6,-2531.83 4712.67,-2521.5 4672.38,-2483.46 4636.11,-2503.81 4605.67,-2457.51"/>
<path fill="none" stroke="black" d="M4605.67,-2455.51C4578.06,-2413.52 4525.07,-2389.77 4483.52,-2376.97"/>
<polygon fill="#f91010" stroke="black" points="4484.35,-2373.57 4473.77,-2374.1 4482.38,-2380.28 4484.35,-2373.57"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_package -->
<g id="edge170" 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="M3489.52,-2623.24C3490.8,-2576.54 3500.11,-2482.51 3551.67,-2427.52 3570.73,-2407.19 3641.48,-2386.52 3689.49,-2374.37"/>
<polygon fill="#f91010" stroke="black" points="3690.51,-2377.73 3699.36,-2371.91 3688.81,-2370.93 3690.51,-2377.73"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_report_settings -->
<g id="edge171" 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="M3447.68,-2642.24C3389.44,-2629.49 3280.98,-2604.92 3189.67,-2579.49 2975.33,-2519.79 2926.39,-2489.4 2712.67,-2427.52 2651.78,-2409.9 2634.73,-2411.79 2574.67,-2391.52 2569.79,-2389.88 2564.77,-2388.04 2559.76,-2386.13"/>
<polygon fill="#f91010" stroke="black" points="2560.8,-2382.77 2550.22,-2382.36 2558.23,-2389.28 2560.8,-2382.77"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_sign_settings -->
<g id="edge172" 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="M3445.42,-2647.4C3358.65,-2639.27 3160.45,-2617.89 2997.67,-2579.49 2867.86,-2548.86 2835.8,-2536.77 2712.67,-2485.5 2660.19,-2463.66 2652.12,-2446.87 2598.67,-2427.52 2530.95,-2403.01 2510.46,-2409.33 2440.67,-2391.52 2426.47,-2387.9 2411.2,-2383.72 2397,-2379.72"/>
<polygon fill="#f91010" stroke="black" points="2397.95,-2376.35 2387.37,-2376.98 2396.04,-2383.08 2397.95,-2376.35"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_upload_settings -->
<g id="edge173" 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="M3446.5,-2644.73C3386.85,-2633.95 3278.17,-2607.74 3203.67,-2551.5"/>
<path fill="none" stroke="black" d="M3203.67,-2549.5C3106.98,-2476.5 2977.64,-2416.45 2905.4,-2385.72"/>
<polygon fill="#f91010" stroke="black" points="2906.59,-2382.43 2896.02,-2381.76 2903.87,-2388.87 2906.59,-2382.43"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_web_views_status_package -->
<g id="edge174" 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="M4605.67,-2361.53C4608.29,-2331.71 4620.64,-2326.86 4626.67,-2297.54 4660.03,-2135.38 4610.87,-2084.7 4659.67,-1926.5 4730.82,-1695.8 4863.82,-1685.96 4924.67,-1452.34 4986.15,-1216.31 4978.45,-1139.06 4914.67,-903.64 4900.42,-851.06 4904.76,-824.67 4859.67,-794.1 4782.68,-741.91 4527.72,-795.75 4442.67,-758.1 4438.55,-756.28 4434.56,-753.95 4430.76,-751.31"/>
<polygon fill="#f91010" stroke="black" points="4432.82,-748.48 4422.77,-745.13 4428.54,-754.01 4432.82,-748.48"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_web_web -->
<g id="edge175" 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="M4605.67,-2455.51C4588.42,-2429.28 4726.36,-2234.09 4733.67,-2203.56 4739.67,-2178.5 4737.2,-2171.1 4733.67,-2145.57 4729.07,-2112.29 4697.27,-2033.32 4692.67,-2000.03 4688.2,-1967.66 4681.09,-1957.06 4692.67,-1926.5 4769.42,-1723.89 5233.2,-1385.51 5338.67,-1196.26 5395.17,-1094.88 5372.25,-1055.09 5395.67,-941.41"/>
</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="2805.67" cy="-1634.65" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="2805.67" y="-1643.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2805.67" y="-1632.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2805.67" 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="edge176" 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="M2827.09,-1610.15C2844.17,-1589.67 2866.65,-1558.28 2875.67,-1526.11"/>
</g>
<!-- ahriman_core_report_email&#45;&gt;ahriman_core_report_report -->
<g id="edge177" 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="M2429.81,-1697.17C2430.04,-1692.1 2430.28,-1686.95 2430.52,-1681.88"/>
<polygon fill="#7a2828" stroke="black" points="2426.3,-1697.23 2429.33,-1707.38 2433.29,-1697.55 2426.3,-1697.23"/>
<polygon fill="#7a2828" stroke="black" points="2434.03,-1681.82 2430.99,-1671.67 2427.03,-1681.49 2434.03,-1681.82"/>
</g>
<!-- ahriman_core_report_jinja_template&#45;&gt;ahriman_core_report_email -->
<g id="edge179" 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="M2835.24,-1839.44C2806.25,-1832.13 2769.08,-1823.27 2735.67,-1816.96 2622.77,-1795.61 2586.74,-1822.63 2479.67,-1780.96 2474.82,-1779.07 2469.97,-1776.65 2465.3,-1773.96"/>
<polygon fill="#832020" stroke="black" points="2466.91,-1770.84 2456.58,-1768.52 2463.21,-1776.78 2466.91,-1770.84"/>
</g>
<!-- ahriman_core_report_jinja_template&#45;&gt;ahriman_core_report_html -->
<g id="edge180" 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="M2848.98,-1826.27C2764.59,-1765.43 2557.34,-1616 2471.2,-1553.89"/>
<polygon fill="#832020" stroke="black" points="2473.16,-1550.99 2463,-1547.98 2469.07,-1556.67 2473.16,-1550.99"/>
</g>
<!-- ahriman_core_report_report&#45;&gt;ahriman_core_report_html -->
<g id="edge182" 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="M2432.67,-1587.63C2432.67,-1582.56 2432.67,-1577.41 2432.67,-1572.34"/>
<polygon fill="#8b1818" stroke="black" points="2429.17,-1587.84 2432.67,-1597.84 2436.17,-1587.84 2429.17,-1587.84"/>
<polygon fill="#8b1818" stroke="black" points="2436.17,-1572.13 2432.67,-1562.13 2429.17,-1572.13 2436.17,-1572.13"/>
</g>
<!-- ahriman_core_report_report&#45;&gt;ahriman_core_repository_executor -->
<g id="edge183" 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="M2466.33,-1617.15C2544.73,-1578.74 2739.61,-1483.24 2829.24,-1439.32"/>
<polygon fill="#8b1818" stroke="black" points="2830.91,-1442.4 2838.34,-1434.86 2827.82,-1436.12 2830.91,-1442.4"/>
</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="3207.67" cy="-1306.03" rx="42.35" ry="28.98"/>
<text text-anchor="middle" x="3207.67" y="-1314.53" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3207.67" y="-1303.53" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3207.67" 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="edge184" 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="M3180.28,-1283.74C3171.58,-1278.06 3161.63,-1272.58 3151.67,-1269.26 3048.18,-1234.8 2279.77,-1216.95 2172.67,-1196.26 2019.19,-1166.61 1845.01,-1102.52 1762.66,-1070.28"/>
<polygon fill="#f91010" stroke="black" points="1763.67,-1066.92 1753.08,-1066.52 1761.11,-1073.43 1763.67,-1066.92"/>
</g>
<!-- ahriman_core_repository&#45;&gt;ahriman_core_status_watcher -->
<g id="edge185" 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="M3247.31,-1295.56C3281.64,-1287.63 3332.7,-1276.49 3377.67,-1269.26 3519.85,-1246.41 3556.77,-1251.09 3699.67,-1233.26 3877.12,-1211.12 4087.55,-1180.94 4180.04,-1167.47"/>
<polygon fill="#f91010" stroke="black" points="4180.55,-1170.94 4189.94,-1166.03 4179.54,-1164.01 4180.55,-1170.94"/>
</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="3361.67" cy="-1525.11" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="3361.67" y="-1539.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3361.67" y="-1528.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3361.67" y="-1517.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="3361.67" 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="edge186" 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="M3319.39,-1514.75C3230.51,-1495.09 3024.52,-1449.51 2927.71,-1428.08"/>
<polygon fill="#b42d2d" stroke="black" points="2928.37,-1424.65 2917.85,-1425.9 2926.86,-1431.48 2928.37,-1424.65"/>
</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="3350.67" cy="-1415.57" rx="58.88" ry="36.54"/>
<text text-anchor="middle" x="3350.67" y="-1429.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3350.67" y="-1418.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3350.67" y="-1407.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="3350.67" 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="edge187" 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="M3358.01,-1488.3C3357.17,-1480.13 3356.27,-1471.34 3355.4,-1462.81"/>
<polygon fill="#b42d2d" stroke="black" points="3358.85,-1462.18 3354.35,-1452.59 3351.89,-1462.89 3358.85,-1462.18"/>
</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="3463.67" cy="-1306.03" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="3463.67" y="-1320.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3463.67" y="-1309.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3463.67" y="-1298.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="3463.67" 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="edge188" 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="M2918.57,-1407.66C2994.12,-1395.39 3155.77,-1368.65 3291.67,-1342.8 3331.86,-1335.16 3377.15,-1325.7 3411.16,-1318.44"/>
<polygon fill="#732626" stroke="black" points="3412.29,-1321.77 3421.34,-1316.25 3410.83,-1314.93 3412.29,-1321.77"/>
</g>
<!-- ahriman_core_repository_properties&#45;&gt;ahriman_core_repository_cleaner -->
<g id="edge189" 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="M3361.67,-1597.84C3361.67,-1589.67 3361.67,-1580.88 3361.67,-1572.35"/>
<polygon fill="#732626" stroke="black" points="3365.17,-1572.13 3361.67,-1562.13 3358.17,-1572.13 3365.17,-1572.13"/>
</g>
<!-- ahriman_core_repository_repository&#45;&gt;ahriman_application_application -->
<g id="edge190" 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="M3420.94,-1297.16C3379.52,-1289.62 3314.88,-1278.12 3258.67,-1269.26 3029.01,-1233.05 2970.88,-1228.78 2740.67,-1196.26 2369.98,-1143.89 1924,-1080.65 1770.07,-1058.81"/>
<polygon fill="#932424" stroke="black" points="1770.32,-1055.31 1759.92,-1057.37 1769.33,-1062.24 1770.32,-1055.31"/>
</g>
<!-- ahriman_core_repository_repository&#45;&gt;ahriman_core_status_watcher -->
<g id="edge191" 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="M3507.37,-1301.41C3598.05,-1293.38 3812.93,-1271.7 3989.67,-1233.26"/>
</g>
<!-- ahriman_core_repository_update_handler&#45;&gt;ahriman_core_repository_repository -->
<g id="edge192" 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="M3382.45,-1384.33C3396.57,-1370.89 3413.25,-1355.01 3427.82,-1341.15"/>
<polygon fill="#993333" stroke="black" points="3430.38,-1343.54 3435.21,-1334.11 3425.56,-1338.47 3430.38,-1343.54"/>
</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="2871.67" cy="-2072.8" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="2871.67" y="-2081.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2871.67" y="-2070.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2871.67" 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="edge193" 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="M2839.95,-2056.08C2795.92,-2033.14 2722.6,-1990.4 2731.67,-1964.27"/>
</g>
<!-- ahriman_core_sign&#45;&gt;ahriman_core_repository_properties -->
<g id="edge194" 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="M2887.47,-2046.06C2908.95,-2010.99 2948.51,-1946.17 2981.67,-1890.5 3001.04,-1857.97 2997.43,-1843.25 3024.67,-1816.96 3110.16,-1734.45 3240.67,-1678.73 3311.58,-1652.65"/>
<polygon fill="#ce3b3b" stroke="black" points="3312.97,-1655.86 3321.18,-1649.16 3310.58,-1649.28 3312.97,-1655.86"/>
</g>
<!-- ahriman_core_sign_gpg&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge195" 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="M3090.6,-2046.48C3049.61,-2008.13 2971.6,-1935.13 2924.55,-1891.11"/>
<polygon fill="#932424" stroke="black" points="2926.68,-1888.31 2916.99,-1884.03 2921.9,-1893.42 2926.68,-1888.31"/>
</g>
<!-- ahriman_core_sign_gpg&#45;&gt;ahriman_core_repository_properties -->
<g id="edge196" 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="M3150.99,-2054.35C3224.62,-2014.74 3395.34,-1916.66 3403.67,-1854.73"/>
<path fill="none" stroke="black" d="M3403.67,-1852.73C3409.63,-1805.3 3426.01,-1787.44 3403.67,-1745.19"/>
<path fill="none" stroke="black" d="M3403.67,-1743.19C3393.04,-1723.09 3383.59,-1699.68 3376.35,-1679.85"/>
<polygon fill="#932424" stroke="black" points="3379.64,-1678.67 3372.98,-1670.44 3373.05,-1681.03 3379.64,-1678.67"/>
</g>
<!-- ahriman_core_spawn&#45;&gt;ahriman_application_handlers_web -->
<g id="edge197" 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="M5527.67,-1048.95C5513.26,-920.09 5489.65,-587.45 5533.67,-465.49 5546.11,-431.02 5578.67,-437.47 5585.67,-401.5"/>
<path fill="none" stroke="black" d="M5585.67,-399.5C5589.98,-371.38 5577.81,-362.84 5585.67,-335.5"/>
</g>
<!-- ahriman_core_spawn&#45;&gt;ahriman_web_views_base -->
<g id="edge198" 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="M5502.27,-1148.09C5329.36,-1097.26 4580.93,-877.11 4557.67,-867.64 4548.96,-864.1 4539.89,-859.8 4531.32,-855.42"/>
<polygon fill="#c82323" stroke="black" points="4532.74,-852.21 4522.25,-850.67 4529.49,-858.41 4532.74,-852.21"/>
</g>
<!-- ahriman_core_spawn&#45;&gt;ahriman_web_web -->
<g id="edge199" 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="M5536.89,-1130.36C5535.85,-1108.5 5533.4,-1077.53 5527.67,-1050.95"/>
<path fill="none" stroke="black" d="M5527.67,-1048.95C5495.89,-901.65 5457.11,-864.54 5471.67,-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="3659.67" cy="-1853.73" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="3659.67" y="-1862.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3659.67" y="-1851.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3659.67" 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="edge200" 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="M3649.94,-1825.56C3641.62,-1803.42 3628.78,-1771.61 3614.67,-1745.19"/>
<path fill="none" stroke="black" d="M3614.67,-1743.19C3582.81,-1683.56 3608.37,-1653.31 3569.67,-1597.88 3556.44,-1578.93 3536.66,-1562.76 3518.66,-1550.6"/>
<polygon fill="#f91010" stroke="black" points="3520.29,-1547.49 3510,-1544.96 3516.47,-1553.35 3520.29,-1547.49"/>
</g>
<!-- ahriman_core_status&#45;&gt;ahriman_core_repository_properties -->
<g id="edge201" 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="M3629.54,-1835.83C3593.38,-1815.31 3531.16,-1779.19 3479.67,-1745.19"/>
<path fill="none" stroke="black" d="M3479.67,-1743.19C3448.71,-1722.74 3417.86,-1694.27 3395.47,-1671.76"/>
<polygon fill="#f91010" stroke="black" points="3397.72,-1669.06 3388.22,-1664.38 3392.73,-1673.96 3397.72,-1669.06"/>
</g>
<!-- ahriman_core_status&#45;&gt;ahriman_web_views_base -->
<g id="edge202" 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="M3682.12,-1829.96C3688.31,-1824.89 3695.35,-1820.09 3702.67,-1816.96 3766,-1789.8 3959.66,-1827.28 4010.67,-1780.96 4096.45,-1703.06 4065.67,-1641.98 4065.67,-1526.11 4065.67,-1526.11 4065.67,-1526.11 4065.67,-1305.03 4065.67,-1209.23 4099.44,-1173.52 4180.67,-1122.72 4242.65,-1083.96 4458.89,-1141.17 4507.67,-1086.72 4529.48,-1062.38 4510.59,-1045.74 4507.67,-1013.18 4504.77,-980.9 4483.72,-971.92 4494.67,-941.41"/>
</g>
<!-- ahriman_core_status&#45;&gt;ahriman_web_web -->
<g id="edge203" 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="M3659.01,-1824.71C3657.3,-1740.48 3654.16,-1482.17 3673.67,-1269.26 3684.19,-1154.48 3681.17,-1123.47 3714.67,-1013.18 3724.87,-979.59 3757.49,-975.12 3747.67,-941.41"/>
<path fill="none" stroke="black" d="M3747.67,-939.41C3741.4,-921.32 3734.89,-919.16 3723.67,-903.64 3711.79,-887.22 3703.72,-886.25 3695.67,-867.64 3668.33,-804.43 3671.67,-783.43 3671.67,-714.56 3671.67,-714.56 3671.67,-714.56 3671.67,-595.24 3671.67,-314.15 4655.25,-506.19 4925.67,-429.49 4930.35,-428.16 4935.09,-426.36 4939.7,-424.31"/>
<polygon fill="#f91010" stroke="black" points="4941.46,-427.35 4948.92,-419.82 4938.4,-421.05 4941.46,-427.35"/>
</g>
<!-- ahriman_core_status_client&#45;&gt;ahriman_application_lock -->
<g id="edge204" 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="M3757.38,-1836.68C3710.75,-1814.11 3631.23,-1772.67 3614.67,-1745.19"/>
</g>
<!-- ahriman_core_status_client&#45;&gt;ahriman_core_repository_properties -->
<g id="edge205" 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="M3757.22,-1837.38C3741.87,-1830.76 3723.5,-1823.14 3706.67,-1816.96 3607.36,-1780.45 3567.97,-1803.49 3479.67,-1745.19"/>
</g>
<!-- ahriman_core_status_client&#45;&gt;ahriman_core_status_web_client -->
<g id="edge206" 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="M3838.76,-1843.28C3938.56,-1823.25 4170.76,-1776.67 4275.17,-1755.72"/>
<polygon fill="#931a1a" stroke="black" points="3838.05,-1839.85 3828.93,-1845.25 3839.43,-1846.71 3838.05,-1839.85"/>
<polygon fill="#931a1a" stroke="black" points="4276.05,-1759.11 4285.16,-1753.72 4274.67,-1752.25 4276.05,-1759.11"/>
</g>
<!-- ahriman_core_status_watcher&#45;&gt;ahriman_web_views_base -->
<g id="edge207" 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="M4265.77,-1155.01C4341.47,-1147.29 4506.86,-1126.25 4545.67,-1086.72 4591.87,-1039.67 4615.89,-993.67 4575.67,-941.41"/>
<path fill="none" stroke="black" d="M4575.67,-939.41C4557.28,-915.48 4536.12,-889 4519.38,-868.31"/>
<polygon fill="#8b2222" stroke="black" points="4521.99,-865.96 4512.97,-860.39 4516.55,-870.36 4521.99,-865.96"/>
</g>
<!-- ahriman_core_status_watcher&#45;&gt;ahriman_web_web -->
<g id="edge208" 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="M4189.47,-1154.98C4104.72,-1146.62 3904,-1123.41 3847.67,-1086.72 3781.98,-1043.93 3766.74,-1017.46 3747.67,-941.41"/>
</g>
<!-- ahriman_core_tree&#45;&gt;ahriman_application_application -->
<g id="edge210" 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="M2541.17,-1824.68C2539.17,-1747.28 2529.17,-1533.45 2479.67,-1488.34 2401.59,-1417.19 2099.13,-1501.58 2005.67,-1452.34 1895.17,-1394.12 1829.67,-1358.16 1829.67,-1233.26"/>
</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="2711.67" cy="-1634.65" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="2711.67" y="-1643.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2711.67" y="-1632.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2711.67" 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="edge211" 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="M2737.68,-1613.12C2744.42,-1608.01 2751.73,-1602.63 2758.67,-1597.88 2809,-1563.41 2859.2,-1584.85 2875.67,-1526.11"/>
<path fill="none" stroke="black" d="M2875.67,-1524.11C2881.18,-1504.45 2881.98,-1481.97 2881.1,-1462.66"/>
<polygon fill="#e72222" stroke="black" points="2884.58,-1462.35 2880.47,-1452.59 2877.6,-1462.79 2884.58,-1462.35"/>
</g>
<!-- ahriman_core_upload_rsync&#45;&gt;ahriman_core_upload_upload -->
<g id="edge212" 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="M3255,-2037.36C3243.25,-2024.98 3230.01,-2011.01 3218.26,-1998.63"/>
<polygon fill="#8a2e2e" stroke="black" points="3252.77,-2040.1 3262.19,-2044.95 3257.85,-2035.28 3252.77,-2040.1"/>
<polygon fill="#8a2e2e" stroke="black" points="3220.59,-1996 3211.17,-1991.15 3215.52,-2000.82 3220.59,-1996"/>
</g>
<!-- ahriman_core_upload_upload&#45;&gt;ahriman_core_repository_executor -->
<g id="edge214" 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="M3184.09,-1926.43C3181.21,-1895.27 3173.28,-1850.03 3151.67,-1816.96 3078.15,-1704.46 2882.43,-1767.25 2909.67,-1635.65"/>
</g>
<!-- ahriman_core_upload_upload&#45;&gt;ahriman_core_upload_s3 -->
<g id="edge216" 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="M3151.14,-1929.69C3136.88,-1916.24 3120.4,-1900.69 3106.15,-1887.25"/>
<polygon fill="#8b1818" stroke="black" points="3148.98,-1932.46 3158.65,-1936.78 3153.78,-1927.37 3148.98,-1932.46"/>
<polygon fill="#8b1818" stroke="black" points="3108.17,-1884.34 3098.49,-1880.03 3103.36,-1889.44 3108.17,-1884.34"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_application_application -->
<g id="edge217" 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="M4694.52,-2531.5C4701.84,-2527.64 4709.85,-2523.98 4717.67,-2521.5 4782.33,-2501.08 4966.42,-2526.18 5020.67,-2485.5 5120.63,-2410.56 5142.62,-2034.99 5080.67,-1926.5 5065.06,-1899.16 5045.44,-1908.57 5019.67,-1890.5 4831.87,-1758.77 4776.95,-1730.72 4621.67,-1561.88 4541.45,-1474.65 4535.84,-1441.11 4469.67,-1342.8 4447.88,-1310.42 4448.8,-1297.32 4421.67,-1269.26 4382.42,-1228.66 4355.91,-1237.81 4317.67,-1196.26 4292.03,-1168.4 4307.36,-1141.83 4274.67,-1122.72 4221.52,-1091.65 2120.12,-1090.41 2058.67,-1086.72 1956.62,-1080.6 1838.15,-1066.8 1770.24,-1058.24"/>
<polygon fill="#db0505" stroke="black" points="1770.55,-1054.75 1760.19,-1056.97 1769.67,-1061.7 1770.55,-1054.75"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_alpm_repo -->
<g id="edge218" 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="M3847.67,-2455.51C3820.48,-2447.95 3816.69,-2438.46 3790.67,-2427.52 3746.35,-2408.89 3728.57,-2418.34 3688.67,-2391.52 3595.93,-2329.18 3584.31,-2296.1 3521.67,-2203.56 3513.87,-2192.04 3514.35,-2187.77 3507.67,-2175.57"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge219" 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="M4638.41,-2530.15C4632.19,-2526.63 4625.42,-2523.47 4618.67,-2521.5 4352.47,-2444.09 3642.74,-2543.62 3371.67,-2485.5 3285.56,-2467.04 3090.13,-2358.48 3005.67,-2333.54 2920.31,-2308.33 2883.24,-2346.14 2808.67,-2297.54 2796.07,-2289.33 2801.5,-2278.83 2789.67,-2269.55"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_report_email -->
<g id="edge220" 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="M4638.03,-2530.41C4631.89,-2526.93 4625.24,-2523.71 4618.67,-2521.5 4495.51,-2480.22 4093.74,-2574.68 4037.67,-2457.51"/>
<path fill="none" stroke="black" d="M4037.67,-2455.51C3975.18,-2324.95 4019.25,-2265.13 3937.67,-2145.57 3843.97,-2008.26 3427.29,-1855.84 3265.67,-1816.96 3113.88,-1780.44 2630.98,-1754.85 2476.02,-1747.41"/>
<polygon fill="#db0505" stroke="black" points="2476.03,-1743.91 2465.87,-1746.93 2475.69,-1750.9 2476.03,-1743.91"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge221" 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="M4638.11,-2530.16C4631.96,-2526.7 4625.29,-2523.55 4618.67,-2521.5 4492.07,-2482.51 4140.48,-2547.96 4023.67,-2485.5 3856.41,-2396.07 3907.98,-2270.96 3765.67,-2145.57 3617.66,-2015.17 3567.81,-1985.8 3379.67,-1926.5 3228.42,-1878.82 3180.79,-1918.34 3024.67,-1890.5 2998.26,-1885.79 2969.48,-1878.71 2944.99,-1872.09"/>
<polygon fill="#db0505" stroke="black" points="2945.7,-1868.66 2935.13,-1869.39 2943.85,-1875.41 2945.7,-1868.66"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_repository_repository -->
<g id="edge222" 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="M5033.67,-2173.57C5029.5,-2111.8 5038.13,-2092 5011.67,-2036.03 4983.87,-1977.25 4966.28,-1966.06 4914.67,-1926.5 4827.98,-1860.05 4793.21,-1864.07 4694.67,-1816.96 4343.97,-1649.28 4243.34,-1633.99 3899.67,-1452.34 3843.7,-1422.75 3836.38,-1402.49 3777.67,-1378.8 3689.86,-1343.36 3580.84,-1323.41 3517.08,-1313.95"/>
<polygon fill="#db0505" stroke="black" points="3517.27,-1310.44 3506.87,-1312.47 3516.26,-1317.37 3517.27,-1310.44"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge223" 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="M4638.4,-2530.18C4632.18,-2526.67 4625.41,-2523.49 4618.67,-2521.5 4406.23,-2458.89 3838.97,-2533.12 3622.67,-2485.5 3418.07,-2440.46 3309.96,-2450.08 3203.67,-2269.55"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_status_web_client -->
<g id="edge224" 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="M4694.82,-2531.44C4702.06,-2527.63 4709.97,-2524.01 4717.67,-2521.5 4774.61,-2503.02 4941.86,-2527.35 4984.67,-2485.5 5084.4,-2388.02 5041.99,-2314.78 5033.67,-2175.57"/>
<path fill="none" stroke="black" d="M5033.67,-2173.57C5008.66,-2041.08 4964.18,-2009.15 4857.67,-1926.5 4804.23,-1885.02 4637.75,-1838.62 4573.67,-1816.96 4507.23,-1794.5 4429.34,-1772.48 4379.29,-1758.88"/>
<polygon fill="#db0505" stroke="black" points="4379.92,-1755.43 4369.35,-1756.2 4378.09,-1762.19 4379.92,-1755.43"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_upload_rsync -->
<g id="edge225" 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="M4638.13,-2530.11C4631.98,-2526.65 4625.3,-2523.51 4618.67,-2521.5 4316.68,-2430.09 4216.34,-2559.71 3909.67,-2485.5 3880.28,-2478.39 3876.84,-2465.46 3847.67,-2457.51"/>
<path fill="none" stroke="black" d="M3847.67,-2455.51C3820.44,-2448.1 3817.39,-2436.6 3790.67,-2427.52 3713.83,-2401.42 3683.38,-2429.5 3611.67,-2391.52 3479.47,-2321.51 3365.13,-2180.57 3314.89,-2112.43"/>
<polygon fill="#db0505" stroke="black" points="3317.53,-2110.11 3308.8,-2104.1 3311.88,-2114.24 3317.53,-2110.11"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_models_build_status -->
<g id="edge226" 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="M4037.67,-2455.51C4021.88,-2422.53 4060.42,-2397.12 4096.14,-2381.44"/>
<polygon fill="#db0505" stroke="black" points="4097.74,-2384.57 4105.61,-2377.48 4095.03,-2378.11 4097.74,-2384.57"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_models_package -->
<g id="edge227" 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="M3847.67,-2455.51C3831.88,-2451.12 3835.71,-2438.64 3823.67,-2427.52 3807.95,-2413.01 3788.91,-2398.82 3772.57,-2387.5"/>
<polygon fill="#db0505" stroke="black" points="3774.54,-2384.6 3764.31,-2381.85 3770.59,-2390.38 3774.54,-2384.6"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_web_views_index -->
<g id="edge228" 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="M4694.5,-2531.43C4701.82,-2527.57 4709.83,-2523.93 4717.67,-2521.5 4862,-2476.87 4914.75,-2539.97 5055.67,-2485.5 5179.67,-2437.58 5489.67,-2206.74 5489.67,-2073.8 5489.67,-2073.8 5489.67,-2073.8 5489.67,-1852.73 5489.67,-1782.51 5456.58,-1771.4 5427.67,-1707.42 5421.88,-1694.61 5003.34,-801.93 4991.67,-794.1 4872.8,-714.4 4480.39,-814.05 4348.67,-758.1 4343.29,-755.82 4338.14,-752.64 4333.35,-749.03"/>
<polygon fill="#db0505" stroke="black" points="4335.58,-746.33 4325.66,-742.62 4331.1,-751.71 4335.58,-746.33"/>
</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="2634.67" cy="-2362.53" rx="50.75" ry="18"/>
<text text-anchor="middle" x="2634.67" 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="edge229" 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="M2678.23,-2353.27C2752.05,-2339.04 2895.69,-2310.18 2915.67,-2297.54 2929.04,-2289.08 2929.14,-2282.88 2937.67,-2269.55"/>
<path fill="none" stroke="black" d="M2937.67,-2267.55C2961.3,-2230.58 2941.98,-2101.91 2975.67,-2073.8"/>
<path fill="none" stroke="black" d="M2975.67,-2071.8C2986.01,-2055.69 2988.26,-2051.41 2999.67,-2036.03 3060,-1954.7 3103.96,-1950.22 3137.67,-1854.73"/>
<path fill="none" stroke="black" d="M3137.67,-1852.73C3149.27,-1812.2 3100.28,-1815.18 3075.67,-1780.96 3065.7,-1767.1 3070.97,-1759.5 3061.67,-1745.19"/>
<path fill="none" stroke="black" d="M3061.67,-1743.19C2967.75,-1598.61 3014.12,-1528.53 2928.67,-1378.8 2650.17,-890.79 2126.67,-963.38 2126.67,-401.5 2126.67,-401.5 2126.67,-401.5 2126.67,-334.5 2126.67,-286.16 2097.35,-264.17 2126.67,-225.74"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_application -->
<g id="edge230" 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="M2159.67,-2267.55C2085.69,-2232.5 2094.05,-2183.81 2021.67,-2145.57 1964.1,-2115.16 1922.1,-2158.96 1879.67,-2109.57 1831.85,-2053.92 1819.23,-1525.62 1815.67,-1452.34 1811.72,-1371.07 1800.67,-1349.23 1815.67,-1269.26 1818.83,-1252.39 1828.28,-1250.37 1829.67,-1233.26"/>
<path fill="none" stroke="black" d="M1829.67,-1232.26C1830.1,-1200.37 1850.32,-1184.8 1829.67,-1160.49"/>
<path fill="none" stroke="black" d="M1829.67,-1158.49C1805.34,-1129.86 1773.98,-1100.97 1750.16,-1080.35"/>
<polygon fill="#f91010" stroke="black" points="1752.26,-1077.54 1742.39,-1073.69 1747.7,-1082.86 1752.26,-1077.54"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_create_user -->
<g id="edge231" class="edge">
<title>ahriman_models&#45;&gt;ahriman_application_handlers_create_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2608.17,-2347.06C2597.96,-2342.05 2586.03,-2336.87 2574.67,-2333.54 2459.77,-2299.84 2420.18,-2338.51 2307.67,-2297.54 2189.04,-2254.34 2179.78,-2203.63 2067.67,-2145.57 1993.39,-2107.11 1939.32,-2143.9 1893.67,-2073.8"/>
<path fill="none" stroke="black" d="M1893.67,-2071.8C1860.45,-2011.36 1856.94,-1521.23 1853.67,-1452.34 1851.93,-1415.74 1854.81,-1157.63 1843.67,-1122.72 1796.82,-976.02 1618.38,-887.35 1528.32,-851.02"/>
<polygon fill="#f91010" stroke="black" points="1529.42,-847.69 1518.84,-847.26 1526.84,-854.2 1529.42,-847.69"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_handler -->
<g id="edge232" 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="M2608.84,-2347.04C2598.52,-2341.91 2586.33,-2336.64 2574.67,-2333.54 2389.77,-2284.33 2330,-2348.86 2145.67,-2297.54 1964.15,-2247 1897.43,-2244.27 1765.67,-2109.57 1627.7,-1968.53 1687.92,-1871.04 1577.67,-1707.42 1566.08,-1690.22 1071.44,-1181.15 1069.67,-1160.49"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge233" 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="M1893.67,-2071.8C1878.04,-2041.33 1987.74,-1814.27 1995.67,-1780.96 2044.86,-1574.3 2057.67,-1519.46 2057.67,-1307.03 2057.67,-1307.03 2057.67,-1307.03 2057.67,-1232.26 2057.67,-1073.85 2031.97,-1015.36 1919.67,-903.64 1890,-874.13 1870.86,-884.76 1832.67,-867.64 1827.33,-865.25 1821.8,-862.71 1816.29,-860.12"/>
<polygon fill="#f91010" stroke="black" points="1817.58,-856.86 1807.04,-855.75 1814.59,-863.19 1817.58,-856.86"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge234" 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="M2608.53,-2346.97C2598.27,-2341.89 2586.2,-2336.68 2574.67,-2333.54 2411.83,-2289.22 2353.93,-2358.77 2196.67,-2297.54 2177.45,-2290.06 2178.56,-2277.81 2159.67,-2269.55"/>
<path fill="none" stroke="black" d="M2159.67,-2267.55C2097.73,-2240.45 2072.83,-2247.75 2021.67,-2203.56 1998.35,-2183.42 2008.58,-2163.71 1983.67,-2145.57 1934.86,-2110.03 1892.59,-2154.88 1852.67,-2109.57 1646.99,-1876.13 1753.67,-1727.7 1753.67,-1416.57 1753.67,-1416.57 1753.67,-1416.57 1753.67,-1305.03 1753.67,-1083.52 1547.58,-1112.66 1349.67,-1013.18 1302.2,-989.32 1274.48,-1013.47 1235.67,-977.18 1223.2,-965.52 1223.74,-958.36 1221.67,-941.41"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_status -->
<g id="edge235" 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="M2607.81,-2347.11C2597.66,-2342.18 2585.86,-2337.03 2574.67,-2333.54 2483,-2304.99 2443.44,-2347.85 2361.67,-2297.54 2290.21,-2253.57 2318.87,-2193.01 2249.67,-2145.57 2199.51,-2111.19 2158.79,-2154.37 2117.67,-2109.57 2051.44,-2037.41 2096.68,-1988.4 2093.67,-1890.5 2093.31,-1878.84 2068.71,-1061.92 2072.67,-1050.95"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_lock -->
<g id="edge236" 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="M2501.67,-2267.55C2489.68,-2228.47 2517.64,-2213.2 2501.67,-2175.57"/>
<path fill="none" stroke="black" d="M2501.67,-2173.57C2457.37,-2069.17 2326.27,-2197.51 2254.67,-2109.57 2234.03,-2084.23 2248.72,-2068.17 2254.67,-2036.03 2258.23,-2016.81 2364.99,-1719.1 2380.67,-1707.42 2422.84,-1675.99 2800.55,-1678.46 2852.67,-1671.42 2978.76,-1654.38 3295.65,-1606.87 3414.67,-1561.88 3421.7,-1559.22 3428.85,-1555.79 3435.66,-1552.11"/>
<polygon fill="#f91010" stroke="black" points="3437.74,-1554.96 3444.71,-1546.98 3434.28,-1548.87 3437.74,-1554.96"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_alpm_repo -->
<g id="edge237" 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="M2676.61,-2352.32C2705.91,-2346.19 2746.02,-2338.39 2781.67,-2333.54 2878,-2320.43 3128.76,-2336.86 3217.67,-2297.54 3310.64,-2256.43 3390.61,-2163.91 3430.54,-2111.64"/>
<polygon fill="#f91010" stroke="black" points="3433.37,-2113.7 3436.6,-2103.61 3427.78,-2109.48 3433.37,-2113.7"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_auth_auth -->
<g id="edge238" 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="M2675.58,-2351.84C2704.93,-2345.36 2745.5,-2337.35 2781.67,-2333.54 2964.37,-2314.29 4257.97,-2347.8 4434.67,-2297.54 4505.87,-2277.29 4686.9,-2155.92 4766.78,-2100.89"/>
<polygon fill="#f91010" stroke="black" points="4768.86,-2103.71 4775.1,-2095.15 4764.88,-2097.95 4768.86,-2103.71"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge239" 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="M2937.67,-2267.55C2944.76,-2255.58 2945.04,-2251.79 2951.67,-2239.56 2951.67,-2239.56 3070.67,-2036.03 3070.67,-2036.03 3129.8,-2000.96 4239.02,-2003.87 4307.67,-2000.03 4447.18,-1992.23 4611.55,-1976.93 4691.35,-1969.12"/>
<polygon fill="#f91010" stroke="black" points="4691.97,-1972.57 4701.58,-1968.11 4691.28,-1965.61 4691.97,-1972.57"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge240" 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="M3119.67,-1962.27C3136.19,-1955.13 3123.48,-1936.16 3138.67,-1926.5 3204.36,-1884.67 3760.91,-1894.92 3838.67,-1890.5 4033.43,-1879.42 4265.25,-1864.41 4364.12,-1857.93"/>
<polygon fill="#f91010" stroke="black" points="4364.64,-1861.4 4374.39,-1857.26 4364.18,-1854.42 4364.64,-1861.4"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge241" 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="M2655.67,-2173.57C2667.77,-2151.92 2684.05,-2129.68 2698.34,-2111.71"/>
<polygon fill="#f91010" stroke="black" points="2701.19,-2113.76 2704.75,-2103.78 2695.75,-2109.36 2701.19,-2113.76"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_report_email -->
<g id="edge242" 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="M2501.67,-2173.57C2491.1,-2149.29 2375.88,-1987.98 2387.67,-1964.27"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_report_html -->
<g id="edge243" 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="M2606.54,-2347.45C2569.68,-2328.2 2508.85,-2293.33 2501.67,-2269.55"/>
<path fill="none" stroke="black" d="M2501.67,-2267.55C2482.14,-2202.82 2414.83,-2247.75 2363.67,-2203.56 2340.35,-2183.42 2350.34,-2164.03 2325.67,-2145.57 2281.42,-2112.48 2239.6,-2153.94 2206.67,-2109.57 2183.43,-2078.27 2148.81,-1880.02 2233.67,-1707.42 2268.61,-1636.34 2344.49,-1579.92 2391.8,-1549.89"/>
<polygon fill="#f91010" stroke="black" points="2393.65,-1552.86 2400.28,-1544.6 2389.94,-1546.92 2393.65,-1552.86"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge244" 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="M2655.67,-2071.8C2657.21,-2053.87 2664.81,-2051.09 2674.67,-2036.03 2696.98,-2001.96 2718.31,-2002.75 2731.67,-1964.27"/>
<path fill="none" stroke="black" d="M2731.67,-1962.27C2746.56,-1919.38 2790.79,-1891.34 2828.05,-1874.68"/>
<polygon fill="#f91010" stroke="black" points="2829.54,-1877.84 2837.35,-1870.68 2826.78,-1871.41 2829.54,-1877.84"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_report_report -->
<g id="edge245" 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="M2501.67,-2267.55C2478.81,-2188.95 2436.05,-2183.81 2363.67,-2145.57 2306.1,-2115.16 2261.65,-2160.96 2221.67,-2109.57 2201.6,-2083.78 2215.72,-2068.17 2221.67,-2036.03 2228.79,-1997.58 2325.02,-1739.29 2347.67,-1707.42 2359.96,-1690.12 2377.35,-1674.46 2393.21,-1662.2"/>
<polygon fill="#f91010" stroke="black" points="2395.42,-1664.92 2401.32,-1656.12 2391.22,-1659.32 2395.42,-1664.92"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_repository_executor -->
<g id="edge246" 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="M2311.67,-2173.57C2298.53,-2163.77 2301.26,-2154.74 2287.67,-2145.57 2246.07,-2117.52 2211.05,-2149.5 2180.67,-2109.57 2146.2,-2064.28 2127.37,-1646.05 2157.67,-1597.88 2229.6,-1483.52 2667.36,-1434.73 2821.79,-1420.93"/>
<polygon fill="#f91010" stroke="black" points="2822.33,-1424.39 2831.98,-1420.03 2821.71,-1417.42 2822.33,-1424.39"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_repository_properties -->
<g id="edge247" 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="M2655.67,-2173.57C2677.31,-2134.86 2651.87,-2117.98 2655.67,-2073.8"/>
<path fill="none" stroke="black" d="M2655.67,-2071.8C2658.46,-2039.43 2644.79,-2032.38 2641.67,-2000.03 2638.53,-1967.5 2632.92,-1957.99 2641.67,-1926.5 2645.47,-1912.81 2696.53,-1825.78 2707.67,-1816.96 2769.88,-1767.66 2971.13,-1728.45 3047.67,-1707.42 3138.84,-1682.36 3246.56,-1659.1 3309.19,-1646.18"/>
<polygon fill="#f91010" stroke="black" points="3310.13,-1649.56 3319.22,-1644.13 3308.72,-1642.71 3310.13,-1649.56"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_repository_repository -->
<g id="edge248" 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="M2605.49,-2347.6C2595.73,-2343.03 2584.77,-2337.98 2574.67,-2333.54 2536.37,-2316.69 2525.18,-2316.08 2487.67,-2297.54 2413.05,-2260.66 2382.68,-2264.21 2325.67,-2203.56 2316.14,-2193.42 2322.66,-2184.09 2311.67,-2175.57"/>
<path fill="none" stroke="black" d="M2311.67,-2173.57C2297.76,-2164.9 2301.51,-2154.35 2287.67,-2145.57 2236.68,-2113.24 2195.84,-2155.53 2156.67,-2109.57 2066.98,-2004.35 2081.2,-1572.79 2190.67,-1488.34 2386.07,-1337.59 3047.32,-1377.44 3291.67,-1342.8 3332.31,-1337.04 3377.75,-1327.45 3411.72,-1319.65"/>
<polygon fill="#f91010" stroke="black" points="3412.93,-1322.96 3421.88,-1317.29 3411.34,-1316.14 3412.93,-1322.96"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_repository_update_handler -->
<g id="edge249" 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="M2645.67,-1852.73C2654.02,-1837.84 2650.06,-1831.07 2659.67,-1816.96 2699.94,-1757.81 2714.7,-1741.41 2777.67,-1707.42 2836.48,-1675.67 2861.85,-1696.82 2923.67,-1671.42 3071.68,-1610.59 3229.21,-1504.24 3304.88,-1450.18"/>
<polygon fill="#f91010" stroke="black" points="3307.17,-1452.84 3313.26,-1444.17 3303.09,-1447.16 3307.17,-1452.84"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge250" 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="M2678.05,-2353.07C2707.3,-2347.42 2746.78,-2339.88 2781.67,-2333.54 2919.23,-2308.54 2975.45,-2350.17 3089.67,-2269.55"/>
<path fill="none" stroke="black" d="M3089.67,-2267.55C3107.74,-2254.79 3130.23,-2197.53 3127.67,-2175.57"/>
<path fill="none" stroke="black" d="M3127.67,-2173.57C3125.63,-2156.1 3123.65,-2136.88 3121.99,-2120.01"/>
<polygon fill="#f91010" stroke="black" points="3125.45,-2119.47 3121,-2109.85 3118.49,-2120.14 3125.45,-2119.47"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_status_client -->
<g id="edge251" 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="M3119.67,-1962.27C3136.19,-1955.13 3123.53,-1936.23 3138.67,-1926.5 3251.23,-1854.16 3613.14,-1934 3739.67,-1890.5 3744.66,-1888.78 3749.61,-1886.45 3754.36,-1883.78"/>
<polygon fill="#f91010" stroke="black" points="3756.52,-1886.56 3763.21,-1878.34 3752.86,-1880.6 3756.52,-1886.56"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_status_watcher -->
<g id="edge252" 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="M2975.67,-2071.8C2990.37,-2059.54 2985.78,-2049.22 2999.67,-2036.03 3005.3,-2030.69 3112.54,-1967.35 3119.67,-1964.27"/>
<path fill="none" stroke="black" d="M3119.67,-1962.27C3136.19,-1955.13 3129.75,-1942.13 3138.67,-1926.5 3176.25,-1860.64 3202.21,-1852.38 3227.67,-1780.96 3288.24,-1611.03 3173.06,-1522.08 3282.67,-1378.8 3307.6,-1346.22 3336.86,-1369.89 3367.67,-1342.8 3396.1,-1317.8 3378.43,-1289.11 3410.67,-1269.26 3520.44,-1201.67 3863.7,-1260.66 3989.67,-1233.26"/>
<path fill="none" stroke="black" d="M3989.67,-1232.26C4071.95,-1214.38 4098.01,-1228.81 4175.67,-1196.26 4180.47,-1194.25 4185.28,-1191.75 4189.94,-1189.01"/>
<polygon fill="#f91010" stroke="black" points="4192.05,-1191.82 4198.64,-1183.53 4188.32,-1185.9 4192.05,-1191.82"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_status_web_client -->
<g id="edge253" 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="M3119.67,-1962.27C3136.19,-1955.13 3123.54,-1936.25 3138.67,-1926.5 3244.95,-1857.94 3600.78,-1959.66 3706.67,-1890.5 3737.47,-1870.38 3714.31,-1837.73 3744.67,-1816.96 3806.82,-1774.42 4006.95,-1790.38 4081.67,-1780.96 4148.37,-1772.55 4224.98,-1761.13 4274.74,-1753.48"/>
<polygon fill="#f91010" stroke="black" points="4275.28,-1756.93 4284.63,-1751.95 4274.21,-1750.02 4275.28,-1756.93"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_tree -->
<g id="edge254" 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="M2501.67,-2173.57C2465.81,-2085.91 2557.28,-2057.68 2541.67,-1964.27"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_upload_rsync -->
<g id="edge255" 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="M3089.67,-2267.55C3155.93,-2220.78 3220.81,-2151.56 3257.38,-2109.76"/>
<polygon fill="#f91010" stroke="black" points="3260.17,-2111.88 3264.09,-2102.03 3254.89,-2107.29 3260.17,-2111.88"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_upload_s3 -->
<g id="edge256" 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="M2661.27,-2347.06C2687.83,-2331.32 2728,-2303.76 2751.67,-2269.55"/>
<path fill="none" stroke="black" d="M2751.67,-2267.55C2781.21,-2224.85 2796.38,-2219.73 2823.67,-2175.57"/>
<path fill="none" stroke="black" d="M2823.67,-2173.57C2832.28,-2159.62 2834.78,-2155.69 2847.67,-2145.57 2875.5,-2123.72 2892.91,-2133.83 2918.67,-2109.57 2946.23,-2083.61 2942.29,-2068.56 2961.67,-2036.03 2990.76,-1987.19 3024.78,-1931.31 3047.2,-1894.64"/>
<polygon fill="#f91010" stroke="black" points="3050.4,-1896.11 3052.63,-1885.75 3044.43,-1892.46 3050.4,-1896.11"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_upload_upload -->
<g id="edge257" 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="M2975.67,-2071.8C2990.37,-2059.54 2984.1,-2047.18 2999.67,-2036.03 3049.82,-2000.15 3077.68,-2025.88 3133.67,-2000.03 3138.34,-1997.88 3143.04,-1995.31 3147.61,-1992.56"/>
<polygon fill="#f91010" stroke="black" points="3149.64,-1995.42 3156.19,-1987.09 3145.87,-1989.51 3149.64,-1995.42"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge258" 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="M3137.67,-1852.73C3151.3,-1819.53 3163.49,-1815.06 3174.67,-1780.96 3202.87,-1694.97 3184.78,-1451.5 3238.67,-1378.8 3260.45,-1349.42 3284.48,-1366.1 3312.67,-1342.8 3344.13,-1316.8 3332.08,-1289.24 3367.67,-1269.26 3442.61,-1227.19 4065.23,-1242.5 4137.67,-1196.26 4169.58,-1175.89 4148.38,-1142.49 4180.67,-1122.72 4300.45,-1049.39 4680.54,-1137.03 4811.67,-1086.72 4980.77,-1021.85 4979.79,-933.57 5129.67,-831.87"/>
</g>
<!-- ahriman_web_views_status_ahriman -->
<g id="node90" class="node">
<title>ahriman_web_views_status_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="4779.67" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="4779.67" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4779.67" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4779.67" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4779.67" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="4779.67" 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="edge259" 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="M3137.67,-1852.73C3211.58,-1653.11 3094.52,-1559.71 3206.67,-1378.8 3221.48,-1354.91 3236.66,-1360.29 3258.67,-1342.8 3296.74,-1312.55 3295.48,-1289.55 3339.67,-1269.26 3578.17,-1159.72 3669.65,-1254.03 3925.67,-1196.26 4027.06,-1173.39 4046.09,-1144.76 4147.67,-1122.72 4293.58,-1091.07 4347.22,-1151.65 4481.67,-1086.72 4623.02,-1018.46 4718.48,-847.1 4758.47,-762.85"/>
<polygon fill="#f91010" stroke="black" points="4761.66,-764.29 4762.74,-753.75 4755.32,-761.32 4761.66,-764.29"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_status_package -->
<g id="edge260" 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="M3061.67,-1743.19C3006.15,-1651.24 3077.16,-1341.48 3156.67,-1269.26 3274.9,-1161.88 3725.8,-1261.31 3871.67,-1196.26 3916.08,-1176.46 3908.99,-1144.08 3952.67,-1122.72 4036.56,-1081.71 4080.66,-1136.49 4159.67,-1086.72 4277,-1012.82 4269.32,-951.37 4339.67,-831.87"/>
</g>
<!-- ahriman_web_views_status_status -->
<g id="node93" class="node">
<title>ahriman_web_views_status_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#7a2828" stroke="black" cx="4019.67" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="4019.67" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4019.67" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4019.67" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4019.67" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="4019.67" 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="edge261" 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="M2501.67,-2267.55C2468.91,-2160.78 2658.63,-2274.77 2744.67,-2203.56 2808.23,-2150.95 2780.96,-2106.01 2824.67,-2036.03 2857.61,-1983.31 2869.97,-1972.61 2911.67,-1926.5 2927.06,-1909.48 2937.65,-1910.62 2948.67,-1890.5 2988.38,-1817.99 3023.67,-1608.78 3023.67,-1526.11 3023.67,-1526.11 3023.67,-1526.11 3023.67,-1414.57 3023.67,-1068.08 3559.32,-974.17 3709.67,-831.87"/>
<path fill="none" stroke="black" d="M3709.67,-829.87C3724.33,-817.56 3717.5,-804.35 3733.67,-794.1 3824.41,-736.62 3875.87,-804.67 3972.67,-758.1 3976.73,-756.15 3980.67,-753.73 3984.45,-751.03"/>
<polygon fill="#f91010" stroke="black" points="3986.71,-753.71 3992.4,-744.77 3982.38,-748.21 3986.71,-753.71"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_user_login -->
<g id="edge262" 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="M2501.67,-2267.55C2478,-2191.42 2616.76,-2245.15 2655.67,-2175.57"/>
<path fill="none" stroke="black" d="M2655.67,-2173.57C2669.88,-2148.15 2645.98,-2138.37 2641.67,-2109.57 2624.89,-1997.54 2595.56,-1956.32 2645.67,-1854.73"/>
<path fill="none" stroke="black" d="M2645.67,-1852.73C2674.91,-1760.78 2645.67,-1732.13 2645.67,-1635.65 2645.67,-1635.65 2645.67,-1635.65 2645.67,-1305.03 2645.67,-1147.55 3820.22,-849.4 3967.67,-794.1 4011.51,-777.66 4026.71,-782.5 4066.67,-758.1 4070.46,-755.79 4074.2,-753.14 4077.83,-750.32"/>
<polygon fill="#f91010" stroke="black" points="4080.09,-752.99 4085.56,-743.92 4075.63,-747.6 4080.09,-752.99"/>
</g>
<!-- ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_auth -->
<g id="edge263" 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="M4719.67,-2173.57C4735.02,-2150.14 4755.37,-2126.29 4772.42,-2107.78"/>
<polygon fill="#c82323" stroke="black" points="4775.24,-2109.9 4779.51,-2100.2 4770.12,-2105.12 4775.24,-2109.9"/>
</g>
<!-- ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge264" 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="M4470.25,-2347.52C4502.67,-2336.49 4546.53,-2319.35 4581.67,-2297.54 4651.22,-2254.38 4674.8,-2244.03 4719.67,-2175.57"/>
<path fill="none" stroke="black" d="M4719.67,-2173.57C4746.61,-2137.24 4743.62,-2118.85 4739.67,-2073.8"/>
<path fill="none" stroke="black" d="M4739.67,-2071.8C4737.91,-2051.72 4737.63,-2029.44 4737.9,-2010.39"/>
<polygon fill="#c82323" stroke="black" points="4741.4,-2010.25 4738.1,-2000.18 4734.41,-2010.11 4741.4,-2010.25"/>
</g>
<!-- ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge265" 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="M4387.54,-2341.63C4371.53,-2330.89 4354.48,-2316.02 4345.67,-2297.54 4334.58,-2274.28 4337.05,-2263.84 4345.67,-2239.56 4357.93,-2205.02 4390.35,-2211.47 4397.67,-2175.57"/>
<path fill="none" stroke="black" d="M4397.67,-2173.57C4415.61,-2065.22 4379.5,-2035.4 4393.67,-1926.5 4394.84,-1917.49 4396.81,-1908 4399.04,-1898.98"/>
<polygon fill="#c82323" stroke="black" points="4402.5,-1899.61 4401.65,-1889.04 4395.73,-1897.83 4402.5,-1899.61"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_application_ahriman -->
<g id="edge266" 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="M4587.67,-2071.8C4616.41,-1778.35 5453.9,-1460.54 5584.67,-1196.26 5728.79,-904.99 5569.22,-787.94 5609.67,-465.49 5613.29,-436.6 5618.11,-430.07 5623.67,-401.5"/>
<path fill="none" stroke="black" d="M5623.67,-399.5C5625.69,-354.66 5637.76,-341.12 5623.67,-298.5"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_application_handlers_status -->
<g id="edge267" 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="M4186.66,-2344.87C4210.41,-2333.59 4240.53,-2317.19 4263.67,-2297.54 4289.96,-2275.21 4357.2,-2209.97 4359.67,-2175.57"/>
<path fill="none" stroke="black" d="M4359.67,-2173.57C4362.21,-2129.73 3992.64,-1522.99 3965.67,-1488.34 3922.71,-1433.14 3908.46,-1420.99 3852.67,-1378.8 3749.03,-1300.41 3720.95,-1278.92 3599.67,-1232.26 3382.08,-1148.55 3315.13,-1169.19 3086.67,-1122.72 2670.58,-1038.09 2491.06,-1192.53 2148.67,-941.41"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_application_lock -->
<g id="edge268" 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="M4139.69,-2333.74C4136.87,-2322.59 4134.06,-2309.55 4132.67,-2297.54 4124.91,-2230.45 4121.02,-2212.1 4132.67,-2145.57 4135.6,-2128.82 4142.74,-2126.33 4145.67,-2109.57 4151.3,-2077.38 4158.58,-2066.06 4145.67,-2036.03 4083.81,-1892.12 3655.91,-1631.76 3518.24,-1550.81"/>
<polygon fill="#e50505" stroke="black" points="3519.61,-1547.56 3509.21,-1545.52 3516.07,-1553.59 3519.61,-1547.56"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_core_status_client -->
<g id="edge269" 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="M4124.4,-2336.81C4050.2,-2257.52 3823.88,-2011.95 3821.67,-1964.27"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_core_status_watcher -->
<g id="edge270" 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="M4195.68,-2357.29C4268.7,-2349.82 4402.6,-2331.76 4434.67,-2297.54 4472.19,-2257.51 4458.88,-2230.18 4453.67,-2175.57"/>
<path fill="none" stroke="black" d="M4453.67,-2173.57C4471.3,-2043 4385.45,-2020.75 4365.67,-1890.5 4360.76,-1858.18 4359.26,-1849.01 4365.67,-1816.96 4369.07,-1799.96 4377.27,-1797.95 4380.67,-1780.96 4387.08,-1748.91 4385.6,-1739.73 4380.67,-1707.42 4352.57,-1523.13 4182.01,-1478.28 4255.67,-1307.03"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_core_status_web_client -->
<g id="edge271" 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="M4359.67,-2173.57C4362.84,-2129.34 4367.56,-2117.44 4359.67,-2073.8"/>
</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="4180.67" cy="-2268.55" rx="38.78" ry="28.98"/>
<text text-anchor="middle" x="4180.67" y="-2277.05" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4180.67" y="-2266.05" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="4180.67" 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="edge272" 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="M4157.57,-2333.93C4160.67,-2325.31 4164.13,-2315.64 4167.42,-2306.48"/>
<polygon fill="#e50505" stroke="black" points="4170.81,-2307.4 4170.89,-2296.81 4164.22,-2305.04 4170.81,-2307.4"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_web_views_status_ahriman -->
<g id="edge273" 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="M4195.72,-2356.59C4272.61,-2347.9 4418.93,-2327.85 4460.67,-2297.54 4553.19,-2230.35 4572.41,-2187.12 4587.67,-2073.8"/>
<path fill="none" stroke="black" d="M4587.67,-2071.8C4587.52,-2039.02 4574.47,-2032.59 4570.67,-2000.03 4566.88,-1967.57 4559.68,-1957.28 4570.67,-1926.5 4699.63,-1565.27 4959.4,-1595.78 5084.67,-1233.26 5132.82,-1093.93 5172.12,-1042.16 5121.67,-903.64 5099.91,-843.91 5084.08,-826.98 5029.67,-794.1 4965.43,-755.29 4935.33,-783.43 4864.67,-758.1 4850.47,-753.01 4835.62,-746.04 4822.38,-739.16"/>
<polygon fill="#e50505" stroke="black" points="4823.98,-736.05 4813.5,-734.44 4820.69,-742.23 4823.98,-736.05"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_web_views_status_package -->
<g id="edge274" 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="M4453.67,-2173.57C4476.61,-2014.92 4478.48,-1974.58 4507.67,-1816.96 4546.95,-1604.82 4575.96,-1555.57 4611.67,-1342.8 4630.63,-1229.79 4634.99,-1201.12 4641.67,-1086.72 4643.57,-1054.09 4647.7,-1045.31 4641.67,-1013.18 4638.5,-996.31 4633.87,-993.19 4627.67,-977.18 4627.28,-976.17 4572.42,-832.65 4571.67,-831.87"/>
<path fill="none" stroke="black" d="M4571.67,-829.87C4556.2,-813.89 4555.26,-806.31 4536.67,-794.1 4499.27,-769.55 4480.66,-781.74 4442.67,-758.1 4438.9,-755.76 4435.17,-753.09 4431.55,-750.25"/>
<polygon fill="#e50505" stroke="black" points="4433.76,-747.54 4423.83,-743.83 4429.28,-752.92 4433.76,-747.54"/>
</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="4198.67" cy="-2174.57" rx="56.64" ry="28.98"/>
<text text-anchor="middle" x="4198.67" y="-2183.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4198.67" y="-2172.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="4198.67" 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="edge275" 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="M4186.17,-2239.45C4187.77,-2231.25 4189.55,-2222.15 4191.26,-2213.44"/>
<polygon fill="#b42d2d" stroke="black" points="4194.72,-2213.98 4193.2,-2203.49 4187.85,-2212.63 4194.72,-2213.98"/>
</g>
<!-- ahriman_models_counters&#45;&gt;ahriman_web_views_status_status -->
<g id="edge276" 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="M4210.07,-2249.16C4231.78,-2234.89 4258.57,-2215.57 4264.67,-2203.56 4289.64,-2154.4 4270.59,-1762.4 4274.67,-1707.42 4290.42,-1495.09 4357.66,-1444.04 4335.67,-1232.26 4330.53,-1182.78 4349.57,-1156.09 4312.67,-1122.72 4256.8,-1072.21 4037.93,-1129.1 3975.67,-1086.72 3960.61,-1076.47 3899.24,-959.63 3899.67,-941.41"/>
</g>
<!-- ahriman_models_internal_status&#45;&gt;ahriman_core_status_client -->
<g id="edge277" 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="M4168.41,-2149.86C4095.36,-2092.63 3909.47,-1947.01 3829.35,-1884.25"/>
<polygon fill="#c82323" stroke="black" points="3831.06,-1881.14 3821.03,-1877.72 3826.74,-1886.65 3831.06,-1881.14"/>
</g>
<!-- ahriman_models_internal_status&#45;&gt;ahriman_core_status_web_client -->
<g id="edge278" 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="M4221.44,-2147.7C4252.31,-2109.64 4302.61,-2035.33 4293.67,-1964.27"/>
<path fill="none" stroke="black" d="M4293.67,-1962.27C4288.23,-1902.17 4302.49,-1833.46 4314.19,-1789.73"/>
<polygon fill="#c82323" stroke="black" points="4317.59,-1790.55 4316.86,-1779.98 4310.84,-1788.7 4317.59,-1790.55"/>
</g>
<!-- ahriman_models_internal_status&#45;&gt;ahriman_web_views_status_status -->
<g id="edge279" 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="M4200.36,-2145.58C4205.01,-2065.89 4217.67,-1830.95 4217.67,-1635.65 4217.67,-1635.65 4217.67,-1635.65 4217.67,-1524.11 4217.67,-1343.92 4413.61,-1237.44 4274.67,-1122.72 4214.21,-1072.8 3980.79,-1140.44 3923.67,-1086.72 3875.98,-1041.88 3899.67,-1006.87 3899.67,-941.41"/>
<path fill="none" stroke="black" d="M3899.67,-939.41C3891.85,-865.68 3945.68,-792.13 3983.81,-750.12"/>
<polygon fill="#c82323" stroke="black" points="3986.5,-752.36 3990.72,-742.65 3981.36,-747.61 3986.5,-752.36"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_application_application -->
<g id="edge280" 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="M3923.67,-2173.57C3944.76,-2144.28 3961.92,-2143.7 3973.67,-2109.57 3984.31,-2078.67 3976.9,-2068.56 3973.67,-2036.03 3963.5,-1933.77 3946.75,-1908.31 3899.67,-1816.96 3882.94,-1784.5 3876.7,-1777.49 3859.67,-1745.19"/>
<path fill="none" stroke="black" d="M3859.67,-1743.19C3855.15,-1732.8 3563.23,-1295.92 3516.67,-1269.26 3373.66,-1187.37 2940.81,-1225.76 2778.67,-1196.26 2654.2,-1173.62 2628.34,-1144.25 2503.67,-1122.72 2308.14,-1088.95 2256.25,-1104.98 2058.67,-1086.72 1957.01,-1077.33 1838.65,-1064.63 1770.61,-1057.17"/>
<polygon fill="#950303" stroke="black" points="1770.86,-1053.67 1760.54,-1056.06 1770.1,-1060.63 1770.86,-1053.67"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge281" 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="M3859.67,-1743.19C3832.45,-1679.2 3834.68,-1659.08 3801.67,-1597.88 3787.57,-1571.75 3666.41,-1402.61 3648.67,-1378.8 3611.52,-1328.95 3613.93,-1302.93 3561.67,-1269.26 3504.67,-1232.54 3480.69,-1242.53 3413.67,-1232.26 3146.54,-1191.31 3068.19,-1264.41 2806.67,-1196.26 2734.05,-1177.34 2727.12,-1142.3 2654.67,-1122.72 2554.62,-1095.68 2283.57,-1130.58 2189.67,-1086.72 2086.56,-1038.56 2110.64,-958.01 2010.67,-903.64 1939.76,-865.08 1909.16,-893.41 1832.67,-867.64 1826.72,-865.64 1820.64,-863.27 1814.63,-860.72"/>
<polygon fill="#950303" stroke="black" points="1815.86,-857.43 1805.3,-856.59 1813.03,-863.84 1815.86,-857.43"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_application_handlers_status -->
<g id="edge282" 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="M3847.67,-2267.55C3882.06,-2232.53 3904.97,-2240.16 3937.67,-2203.56 3969.47,-2167.95 3977.73,-2155.8 3989.67,-2109.57 4010.08,-2030.53 3995.27,-2005.49 3974.67,-1926.5 3961.47,-1875.89 3951.28,-1865.44 3931.67,-1816.96 3925.17,-1800.89 3922,-1797.45 3916.67,-1780.96 3890.95,-1701.43 3899.8,-1677.27 3873.67,-1597.88 3857.1,-1547.56 3863.52,-1526.39 3826.67,-1488.34 3800.39,-1461.2 3778.2,-1477.1 3749.67,-1452.34 3720.2,-1426.75 3724.34,-1410.57 3701.67,-1378.8 3689.9,-1362.3 3685.44,-1359.3 3673.67,-1342.8 3651,-1311.03 3650.85,-1299.08 3625.67,-1269.26 3610.04,-1250.76 3607.55,-1242.64 3585.67,-1232.26 3575.8,-1227.58 2817.54,-1123.84 2806.67,-1122.72 2744.86,-1116.39 2302.7,-1117.39 2248.67,-1086.72 2180.49,-1048.02 2209.56,-990.8 2148.67,-941.41"/>
<path fill="none" stroke="black" d="M2148.67,-939.41C2123.02,-920.6 2116.15,-915.59 2086.67,-903.64 2025.93,-879.03 2003.73,-893.87 1943.67,-867.64 1939.57,-865.85 1935.42,-863.77 1931.36,-861.52"/>
<polygon fill="#950303" stroke="black" points="1933,-858.43 1922.6,-856.4 1929.47,-864.47 1933,-858.43"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge283" 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="M3689.51,-2350.91C3585.93,-2326.82 3327.3,-2265.35 3113.67,-2203.56 2983.92,-2166.03 2952.05,-2154.49 2824.67,-2109.57 2810.62,-2104.62 2795.5,-2099 2781.57,-2093.7"/>
<polygon fill="#950303" stroke="black" points="3688.8,-2354.33 3699.34,-2353.19 3690.39,-2347.52 3688.8,-2354.33"/>
<polygon fill="#950303" stroke="black" points="2782.74,-2090.4 2772.15,-2090.09 2780.24,-2096.94 2782.74,-2090.4"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_report_email -->
<g id="edge284" 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="M3735.67,-2267.55C3725.96,-2227.2 3755.58,-2216.88 3751.67,-2175.57"/>
<path fill="none" stroke="black" d="M3751.67,-2173.57C3743.58,-2088.1 3529.38,-1968.79 3454.67,-1926.5 3412.47,-1902.61 3397.32,-1906.86 3351.67,-1890.5 3262.52,-1858.53 3243.98,-1838.14 3151.67,-1816.96 2901.91,-1759.64 2593.31,-1748.09 2475.99,-1745.77"/>
<polygon fill="#950303" stroke="black" points="2475.96,-1742.27 2465.9,-1745.59 2475.83,-1749.27 2475.96,-1742.27"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_report_html -->
<g id="edge285" 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="M3751.67,-2071.8C3728.89,-2021.15 3612.67,-1935.17 3579.67,-1890.5 3490.96,-1770.41 3541.07,-1677.34 3414.67,-1597.88 3362.54,-1565.11 2923.07,-1566.44 2861.67,-1561.88 2723.47,-1551.62 2560.4,-1537.46 2481,-1530.43"/>
<polygon fill="#950303" stroke="black" points="2481.09,-1526.92 2470.82,-1529.52 2480.47,-1533.89 2481.09,-1526.92"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge286" 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="M3365.67,-1962.27C3219.56,-1910.9 3176.09,-1923.03 3024.67,-1890.5 2998.55,-1884.88 2969.92,-1877.7 2945.47,-1871.24"/>
<polygon fill="#950303" stroke="black" points="2946.19,-1867.81 2935.62,-1868.62 2944.39,-1874.57 2946.19,-1867.81"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_report_report -->
<g id="edge287" 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="M3751.67,-2173.57C3747.21,-2129.45 3769.56,-2114.37 3751.67,-2073.8"/>
<path fill="none" stroke="black" d="M3751.67,-2071.8C3745.7,-2058.28 3542.2,-1932.46 3528.67,-1926.5 3470.28,-1900.74 3448.59,-1915.02 3389.67,-1890.5 3330.51,-1865.88 3320.98,-1849.3 3265.67,-1816.96 3181.53,-1767.75 3168.64,-1736.7 3075.67,-1707.42 2900.78,-1652.32 2846.71,-1693.4 2664.67,-1671.42 2600.72,-1663.7 2527.31,-1651.88 2480.49,-1643.96"/>
<polygon fill="#950303" stroke="black" points="2480.78,-1640.46 2470.34,-1642.23 2479.61,-1647.36 2480.78,-1640.46"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_repository_executor -->
<g id="edge288" 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="M3762.84,-2341.83C3786.41,-2324.15 3820.87,-2296.84 3847.67,-2269.55"/>
<path fill="none" stroke="black" d="M3847.67,-2267.55C3876.31,-2238.38 3852.86,-2216.12 3847.67,-2175.57"/>
<path fill="none" stroke="black" d="M3847.67,-2173.57C3841.15,-2122.69 3808.27,-2121.6 3789.67,-2073.8"/>
<path fill="none" stroke="black" d="M3789.67,-2071.8C3770.48,-2022.52 3691.08,-1947.56 3666.67,-1926.5 3644.83,-1907.65 3631.81,-1912.08 3612.67,-1890.5 3515.97,-1781.46 3579.38,-1687.77 3464.67,-1597.88 3408.66,-1553.99 3377.15,-1581.22 3308.67,-1561.88 3167.98,-1522.14 3005.36,-1464.27 2925.36,-1435"/>
<polygon fill="#950303" stroke="black" points="2926.15,-1431.56 2915.56,-1431.41 2923.74,-1438.14 2926.15,-1431.56"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_repository_repository -->
<g id="edge289" 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="M3847.67,-2267.55C3884.83,-2229.71 3894.1,-2219.58 3923.67,-2175.57"/>
<path fill="none" stroke="black" d="M3923.67,-2173.57C4013.1,-2040.45 3933.63,-1963.58 3868.67,-1816.96 3856.54,-1789.58 3586.97,-1458.11 3494.49,-1344.75"/>
<polygon fill="#950303" stroke="black" points="3497.17,-1342.51 3488.14,-1336.98 3491.75,-1346.94 3497.17,-1342.51"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_repository_update_handler -->
<g id="edge290" 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="M3847.67,-2173.57C3832.31,-2015.77 3928.43,-1947.64 3838.67,-1816.96 3814.98,-1782.46 3785.01,-1806.24 3751.67,-1780.96 3653.03,-1706.16 3651.79,-1662.49 3579.67,-1561.88 3556.93,-1530.16 3561.89,-1513.03 3531.67,-1488.34 3497.91,-1460.76 3452.22,-1442.75 3415.2,-1431.67"/>
<polygon fill="#950303" stroke="black" points="3416.07,-1428.28 3405.49,-1428.86 3414.13,-1435.01 3416.07,-1428.28"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_status_client -->
<g id="edge291" 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="M3789.67,-2071.8C3771.58,-2025.33 3823.98,-2014.08 3821.67,-1964.27"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_status_watcher -->
<g id="edge292" 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="M4131.67,-2071.8C4139.91,-1974.64 4179.67,-1733.16 4179.67,-1635.65 4179.67,-1635.65 4179.67,-1635.65 4179.67,-1524.11 4179.67,-1458.65 4178.46,-1439.21 4203.67,-1378.8 4218.84,-1342.45 4239.24,-1342.83 4255.67,-1307.03"/>
<path fill="none" stroke="black" d="M4255.67,-1305.03C4259.22,-1296.73 4298.81,-1240.68 4293.67,-1233.26"/>
<path fill="none" stroke="black" d="M4293.67,-1232.26C4284.26,-1218.68 4272.43,-1205.02 4261.39,-1193.32"/>
<polygon fill="#950303" stroke="black" points="4263.74,-1190.71 4254.29,-1185.93 4258.7,-1195.56 4263.74,-1190.71"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_status_web_client -->
<g id="edge293" 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="M3773.53,-2358.34C3882.17,-2348.95 4189.6,-2320.6 4228.67,-2297.54 4234.25,-2294.25 4294.34,-2209.11 4297.67,-2203.56 4330.5,-2148.72 4371.04,-2136.7 4359.67,-2073.8"/>
<path fill="none" stroke="black" d="M4359.67,-2071.8C4349.95,-2016.57 4296.94,-2020.25 4293.67,-1964.27"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_tree -->
<g id="edge294" 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="M3735.67,-2267.55C3707.04,-2155.41 3652.62,-2145.38 3561.67,-2073.8"/>
<path fill="none" stroke="black" d="M3561.67,-2071.8C3546.77,-2060.57 3554.86,-2046.88 3539.67,-2036.03 3480.36,-1993.66 3434.97,-2047.52 3379.67,-2000.03 3366.72,-1988.91 3381.77,-1969.93 3365.67,-1964.27"/>
<path fill="none" stroke="black" d="M3365.67,-1962.27C3136.01,-1881.53 3064.71,-1916.52 2822.67,-1890.5 2740.5,-1881.66 2645.13,-1869.01 2589.29,-1861.36"/>
<polygon fill="#950303" stroke="black" points="2589.72,-1857.89 2579.34,-1860 2588.77,-1864.83 2589.72,-1857.89"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_upload_rsync -->
<g id="edge295" 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="M3714.29,-2338.1C3673.41,-2294.54 3579.66,-2200.56 3483.67,-2145.57 3435.59,-2118.03 3375.03,-2097.79 3334.05,-2085.95"/>
<polygon fill="#950303" stroke="black" points="3334.9,-2082.55 3324.32,-2083.19 3332.99,-2089.29 3334.9,-2082.55"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_upload_s3 -->
<g id="edge296" 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="M3561.67,-2071.8C3547.01,-2060.25 3552.54,-2049.55 3539.67,-2036.03 3480.24,-1973.62 3460.02,-1957.66 3379.67,-1926.5 3272.55,-1884.95 3230.74,-1932.16 3123.67,-1890.5 3118.82,-1888.61 3113.97,-1886.19 3109.3,-1883.5"/>
<polygon fill="#950303" stroke="black" points="3110.91,-1880.38 3100.58,-1878.06 3107.21,-1886.32 3110.91,-1880.38"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_upload_upload -->
<g id="edge297" 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="M3739.95,-2333.51C3741.76,-2314.94 3742.16,-2290.27 3735.67,-2269.55"/>
<path fill="none" stroke="black" d="M3735.67,-2267.55C3733.63,-2261.04 3552.07,-2114.79 3547.67,-2109.57 3523.26,-2080.63 3535.23,-2058.39 3504.67,-2036.03 3499.13,-2031.99 3320,-1993.11 3232.65,-1974.33"/>
<polygon fill="#950303" stroke="black" points="3233.23,-1970.88 3222.72,-1972.2 3231.76,-1977.72 3233.23,-1970.88"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_models_counters -->
<g id="edge298" 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="M3772.46,-2353.93C3852.97,-2337.28 4044.63,-2297.67 4133.69,-2279.26"/>
<polygon fill="#950303" stroke="black" points="4134.43,-2282.68 4143.52,-2277.23 4133.02,-2275.82 4134.43,-2282.68"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_web_views_status_package -->
<g id="edge299" 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="M3771.87,-2353.07C3866,-2328.67 4112.48,-2248.45 4131.67,-2073.8"/>
<path fill="none" stroke="black" d="M4131.67,-2071.8C4146.95,-1825.38 4027.67,-1773.01 4027.67,-1526.11 4027.67,-1526.11 4027.67,-1526.11 4027.67,-1305.03 4027.67,-1219.45 4022.91,-1176.27 4089.67,-1122.72 4147.04,-1076.71 4369.57,-1141.48 4418.67,-1086.72 4440.49,-1062.39 4425.34,-1045.18 4418.67,-1013.18 4409.7,-970.16 4317.15,-869.61 4339.67,-831.87"/>
</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="3706.67" cy="-2456.51" rx="74.91" ry="28.98"/>
<text text-anchor="middle" x="3706.67" y="-2465.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3706.67" y="-2454.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="3706.67" 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="edge300" 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="M3715.53,-2427.42C3718.19,-2418.97 3721.15,-2409.57 3723.97,-2400.64"/>
<polygon fill="#c04040" stroke="black" points="3727.39,-2401.41 3727.06,-2390.83 3720.72,-2399.31 3727.39,-2401.41"/>
</g>
<!-- ahriman_models_report_settings&#45;&gt;ahriman_core_report_report -->
<g id="edge301" 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="M2458.55,-2347.12C2441.03,-2342.32 2421.07,-2337.27 2402.67,-2333.54 2346.15,-2322.09 2183.51,-2341.05 2145.67,-2297.54 2063.76,-2203.35 2149.51,-1822.29 2247.67,-1745.19"/>
</g>
<!-- ahriman_models_repository_paths -->
<g id="node69" class="node">
<title>ahriman_models_repository_paths</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="2106.67" cy="-2456.51" rx="62.87" ry="28.98"/>
<text text-anchor="middle" x="2106.67" y="-2465.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2106.67" y="-2454.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2106.67" 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="edge302" 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="M2050,-2443.76C1971.75,-2427.27 1826.37,-2395.67 1703.67,-2363.53"/>
<path fill="none" stroke="black" d="M1703.67,-2361.53C1580.18,-2329.19 1520.84,-2380.32 1423.67,-2297.54 1322.95,-2211.73 1064.86,-1292.72 1069.67,-1160.49"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge303" 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="M1703.67,-2361.53C1554.23,-2319.39 1526.01,-2250.88 1461.67,-2109.57 1387.31,-1946.25 1449.02,-1885.34 1425.67,-1707.42 1412.81,-1609.44 1410.51,-1584.49 1387.67,-1488.34 1328.96,-1241.19 1233.19,-1195.18 1221.67,-941.41"/>
<path fill="none" stroke="black" d="M1221.67,-939.41C1222.43,-920.28 1231.86,-916.9 1245.67,-903.64 1251.73,-897.82 1286.64,-876.62 1316.77,-858.76"/>
<polygon fill="#f91010" stroke="black" points="1318.69,-861.69 1325.51,-853.59 1315.13,-855.67 1318.69,-861.69"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_core_alpm_repo -->
<g id="edge304" 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="M2162.33,-2442.89C2183.96,-2438.03 2208.96,-2432.46 2231.67,-2427.52 2307.57,-2411.04 2338.53,-2435.32 2402.67,-2391.52 2428.11,-2374.15 2414.13,-2349.2 2440.67,-2333.54 2531.84,-2279.74 2812.69,-2322.04 2915.67,-2297.54 2967.26,-2285.27 3293.91,-2144.76 3413.7,-2092.89"/>
<polygon fill="#f91010" stroke="black" points="3415.18,-2096.06 3422.97,-2088.88 3412.4,-2089.64 3415.18,-2096.06"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge305" 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="M2133.67,-2361.53C2260.23,-2130.73 2436.78,-2232.27 2669.67,-2109.57 2674.82,-2106.86 2680.15,-2103.93 2685.43,-2100.95"/>
<polygon fill="#f91010" stroke="black" points="2687.27,-2103.92 2694.2,-2095.91 2683.78,-2097.85 2687.27,-2103.92"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_core_repository_properties -->
<g id="edge306" 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="M2119.07,-2427.95C2126.06,-2409.99 2133.45,-2385.83 2133.67,-2363.53"/>
<path fill="none" stroke="black" d="M2133.67,-2361.53C2133.96,-2331.99 2119.71,-2326.81 2115.67,-2297.54 2112.15,-2272.01 2111.26,-2264.95 2115.67,-2239.56 2160.83,-1979.24 2150.56,-1837.25 2380.67,-1707.42 2433.33,-1677.71 2863.37,-1675.88 2923.67,-1671.42 3062.3,-1661.16 3225.48,-1647.38 3308.03,-1640.29"/>
<polygon fill="#f91010" stroke="black" points="3308.51,-1643.77 3318.17,-1639.42 3307.91,-1636.79 3308.51,-1643.77"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_models_package -->
<g id="edge307" 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="M2169.41,-2454.19C2365.58,-2449.71 2984.68,-2433.04 3495.67,-2391.52 3562.67,-2386.08 3639.83,-2376.48 3688.17,-2370.07"/>
<polygon fill="#f91010" stroke="black" points="3688.89,-2373.5 3698.34,-2368.71 3687.96,-2366.56 3688.89,-2373.5"/>
</g>
<!-- ahriman_models_sign_settings&#45;&gt;ahriman_application_ahriman -->
<g id="edge308" 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="M2291.54,-2354.02C2187.38,-2335.23 1951.3,-2275.19 1879.67,-2109.57 1847.23,-2034.57 1880.95,-2006.69 1896.67,-1926.5 1954.4,-1631.88 1964.92,-1556.37 2052.67,-1269.26 2093.21,-1136.61 2135.34,-1113.18 2162.67,-977.18 2178.71,-897.39 2174.67,-875.1 2166.67,-794.1 2141.77,-542.1 1958.44,-415.02 2126.67,-225.74"/>
<path fill="none" stroke="black" d="M2126.67,-223.74C2137.59,-209.42 2131.86,-199.52 2145.67,-187.97 2185.77,-154.41 2215.82,-183.3 2257.67,-151.97 2269.7,-142.95 2289.76,-131.37 2276.67,-123.97"/>
<path fill="none" stroke="black" d="M2276.67,-121.97C2263.58,-114.58 2266.86,-105.88 2257.67,-93.98 2249.48,-83.38 2240.06,-72.25 2231.31,-62.31"/>
<polygon fill="#c82323" stroke="black" points="2233.74,-59.77 2224.48,-54.62 2228.5,-64.42 2233.74,-59.77"/>
</g>
<!-- ahriman_models_sign_settings&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge309" 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="M2357.95,-2334.69C2383.7,-2292.92 2436.18,-2210.44 2487.67,-2145.57 2504.74,-2124.06 2633.81,-1980.9 2655.67,-1964.27"/>
</g>
<!-- ahriman_models_sign_settings&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge310" 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="M2380.04,-2342.79C2388.93,-2339.15 2398.48,-2335.77 2407.67,-2333.54 2510.1,-2308.63 2788.38,-2348.48 2880.67,-2297.54 2908.76,-2282.04 2901.78,-2263.01 2923.67,-2239.56 2973.16,-2186.53 3038.69,-2133.54 3079.51,-2102.22"/>
<polygon fill="#c82323" stroke="black" points="3081.75,-2104.91 3087.58,-2096.06 3077.51,-2099.35 3081.75,-2104.91"/>
</g>
<!-- ahriman_models_smtp_ssl_settings -->
<g id="node71" class="node">
<title>ahriman_models_smtp_ssl_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c24747" stroke="black" cx="2331.67" cy="-2072.8" rx="67.76" ry="28.98"/>
<text text-anchor="middle" x="2331.67" y="-2081.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2331.67" y="-2070.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2331.67" 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="edge311" 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="M2346.46,-2044.1C2357.92,-2022.47 2374.08,-1991.6 2387.67,-1964.27"/>
</g>
<!-- ahriman_models_upload_settings&#45;&gt;ahriman_core_upload_upload -->
<g id="edge312" 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="M2894.87,-2342.67C2914.86,-2332.09 2937.2,-2317.05 2951.67,-2297.54 3013.14,-2214.66 2948.74,-2154 3013.67,-2073.8"/>
<path fill="none" stroke="black" d="M3013.67,-2071.8C3024.16,-2055.79 3022.65,-2047.91 3037.67,-2036.03 3073.41,-2007.76 3093.26,-2021.1 3133.67,-2000.03 3138.23,-1997.66 3142.86,-1994.95 3147.39,-1992.11"/>
<polygon fill="#b03a3a" stroke="black" points="3149.46,-1994.94 3155.93,-1986.55 3145.64,-1989.08 3149.46,-1994.94"/>
</g>
<!-- ahriman_models_user -->
<g id="node73" class="node">
<title>ahriman_models_user</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#af1313" stroke="black" cx="4937.67" cy="-2362.53" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="4937.67" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4937.67" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="4937.67" y="-2349.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user</text>
</g>
<!-- ahriman_models_user&#45;&gt;ahriman_application_handlers_create_user -->
<g id="edge313" class="edge">
<title>ahriman_models_user&#45;&gt;ahriman_application_handlers_create_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4947.67,-2173.57C4954.37,-2111.88 4946.1,-2093.89 4923.67,-2036.03 4833.33,-1803.09 4745.5,-1778.88 4621.67,-1561.88 4576.43,-1482.61 4573.7,-1458.18 4528.67,-1378.8 4500.28,-1328.76 4495.83,-1314.02 4459.67,-1269.26 4401.1,-1196.77 4394.66,-1160.96 4309.67,-1122.72 4208.08,-1077.01 3920.64,-1096.44 3809.67,-1086.72 3691.44,-1076.37 1802.25,-883.75 1684.67,-867.64 1632.78,-860.54 1574.02,-850.28 1532.04,-842.57"/>
<polygon fill="#af1313" stroke="black" points="1532.49,-839.1 1522.02,-840.72 1531.22,-845.98 1532.49,-839.1"/>
</g>
<!-- ahriman_models_user&#45;&gt;ahriman_core_auth_auth -->
<g id="edge314" 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="M4942.92,-2333.65C4945.6,-2315.36 4947.71,-2290.95 4944.67,-2269.55"/>
<path fill="none" stroke="black" d="M4944.67,-2267.55C4937.33,-2215.88 4896.09,-2221.69 4871.67,-2175.57"/>
<path fill="none" stroke="black" d="M4871.67,-2173.57C4860.48,-2152.43 4846,-2130.12 4833.46,-2111.98"/>
<polygon fill="#af1313" stroke="black" points="4836.08,-2109.61 4827.48,-2103.42 4830.34,-2113.63 4836.08,-2109.61"/>
</g>
<!-- ahriman_models_user&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge315" 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="M4871.67,-2173.57C4842.79,-2119.03 4886.03,-2087.95 4852.67,-2036.03 4836.7,-2011.18 4808.72,-1993.31 4784.61,-1981.62"/>
<polygon fill="#af1313" stroke="black" points="4785.79,-1978.31 4775.24,-1977.29 4782.85,-1984.66 4785.79,-1978.31"/>
</g>
<!-- ahriman_models_user&#45;&gt;ahriman_core_status_web_client -->
<g id="edge316" 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="M4944.67,-2267.55C4938.92,-2227.05 4943.25,-2216.23 4947.67,-2175.57"/>
<path fill="none" stroke="black" d="M4947.67,-2173.57C4952.79,-2126.4 4926.54,-2118.15 4909.67,-2073.8"/>
</g>
<!-- ahriman_models_user_access -->
<g id="node74" class="node">
<title>ahriman_models_user_access</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f31616" stroke="black" cx="4924.67" cy="-2456.51" rx="50.82" ry="28.98"/>
<text text-anchor="middle" x="4924.67" y="-2465.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4924.67" y="-2454.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="4924.67" y="-2443.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user_access</text>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_application_ahriman -->
<g id="edge317" 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="M4971.88,-2445.19C5017.37,-2434.47 5087.66,-2415.86 5145.67,-2391.52 5296.01,-2328.45 5345.44,-2318.89 5460.67,-2203.56 5661.7,-2002.35 5755.67,-1920.07 5755.67,-1635.65 5755.67,-1635.65 5755.67,-1635.65 5755.67,-1232.26 5755.67,-858.4 5589.78,-773.82 5623.67,-401.5"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_core_auth_auth -->
<g id="edge318" 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="M4890.35,-2434.74C4867.95,-2418.65 4841.47,-2394 4833.67,-2363.53"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge319" 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="M4887.83,-2436.33C4851.7,-2416.41 4801.21,-2385.18 4795.67,-2363.53"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_models_user -->
<g id="edge320" 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="M4928.64,-2427.42C4929.8,-2419.21 4931.09,-2410.11 4932.32,-2401.41"/>
<polygon fill="#f31616" stroke="black" points="4935.79,-2401.85 4933.72,-2391.46 4928.86,-2400.87 4935.79,-2401.85"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge321" 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="M4963.77,-2437.74C5016.52,-2413.8 5113.49,-2370.01 5196.67,-2333.54 5233.87,-2317.23 5253.84,-2328.03 5280.67,-2297.54 5369.94,-2196.08 5452.43,-1840.28 5427.67,-1707.42 5411.85,-1622.5 5357.67,-1612.49 5357.67,-1526.11 5357.67,-1526.11 5357.67,-1526.11 5357.67,-1232.26 5357.67,-1151.68 5369.93,-1130.6 5357.67,-1050.95"/>
</g>
<!-- ahriman_models_user_identity -->
<g id="node75" class="node">
<title>ahriman_models_user_identity</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#ce3b3b" stroke="black" cx="4338.67" cy="-1049.95" rx="50.82" ry="28.98"/>
<text text-anchor="middle" x="4338.67" y="-1058.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4338.67" y="-1047.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="4338.67" 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="edge322" 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="M4380.87,-1033.59C4423.94,-1017.48 4487.38,-992.43 4508.67,-977.18 4597.25,-913.76 4575.24,-844.81 4671.67,-794.1 4785.45,-734.28 4831.25,-775.16 4958.67,-758.1 5043.69,-746.72 5141.84,-732.58 5203.58,-723.56"/>
<polygon fill="#ce3b3b" stroke="black" points="5204.15,-727.01 5213.54,-722.1 5203.14,-720.08 5204.15,-727.01"/>
</g>
<!-- ahriman_models_user_identity&#45;&gt;ahriman_web_views_user_login -->
<g id="edge323" 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="M4318.05,-1023.08C4307.5,-1009.59 4294.62,-992.71 4283.67,-977.18 4230.85,-902.28 4173.81,-812.02 4141.05,-759.19"/>
<polygon fill="#ce3b3b" stroke="black" points="4143.85,-757.07 4135.61,-750.41 4137.9,-760.75 4143.85,-757.07"/>
</g>
<!-- ahriman_version -->
<g id="node76" class="node">
<title>ahriman_version</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#e72222" stroke="black" cx="3963.67" cy="-1744.19" rx="38.37" ry="21.43"/>
<text text-anchor="middle" x="3963.67" y="-1747.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3963.67" 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="edge324" 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="M3966.65,-1722.84C3971.58,-1683.32 3978.41,-1594.07 3951.67,-1526.11"/>
<path fill="none" stroke="black" d="M3951.67,-1524.11C3914.81,-1449.01 3836.28,-1512.03 3777.67,-1452.34 3765.71,-1440.16 3775.45,-1428.93 3763.67,-1416.57"/>
<path fill="none" stroke="black" d="M3763.67,-1414.57C3763.46,-1414.35 3715.78,-1343.08 3715.67,-1342.8 3645.52,-1174.78 3633.67,-1123.49 3633.67,-941.41 3633.67,-941.41 3633.67,-941.41 3633.67,-595.24 3633.67,-529.07 3650.06,-499.75 3706.67,-465.49 3819.45,-397.22 4777.64,-493.91 4892.67,-429.49 4919.55,-414.43 4904.09,-387.09 4930.67,-371.5 4997.45,-332.33 5652.03,-370.55 5623.67,-298.5"/>
<path fill="none" stroke="black" d="M5623.67,-297.5C5502.85,54.74 2283.82,-496.29 2276.67,-123.97"/>
</g>
<!-- ahriman_version&#45;&gt;ahriman_application_lock -->
<g id="edge325" 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="M3944.39,-1725.63C3909.9,-1695.14 3834.26,-1632.38 3759.67,-1597.88 3684.56,-1563.14 3590.18,-1543.56 3531.38,-1533.91"/>
<polygon fill="#e72222" stroke="black" points="3531.62,-1530.41 3521.19,-1532.28 3530.51,-1537.32 3531.62,-1530.41"/>
</g>
<!-- ahriman_version&#45;&gt;ahriman_web_views_index -->
<g id="edge326" 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="M3951.67,-1524.11C3920.51,-1439.96 3929.38,-1183.2 3995.67,-1122.72 4062.09,-1062.12 4337.99,-1153.07 4398.67,-1086.72 4420.73,-1062.6 4411.78,-1043.12 4398.67,-1013.18 4389.21,-991.57 4373.04,-996.62 4359.67,-977.18 4320.26,-919.89 4280.1,-897.98 4301.67,-831.87"/>
</g>
<!-- ahriman_version&#45;&gt;ahriman_web_views_status_status -->
<g id="edge327" 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="M3763.67,-1414.57C3706.83,-1345.5 3704.64,-1097.79 3733.67,-1013.18 3740.25,-994.01 3755.09,-996.36 3761.67,-977.18 3772.28,-946.27 3771.75,-934.73 3761.67,-903.64 3749.52,-866.17 3682.21,-860.11 3709.67,-831.87"/>
</g>
<!-- ahriman_web -->
<g id="node77" class="node">
<title>ahriman_web</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="4841.67" cy="-400.5" rx="41.59" ry="18"/>
<text text-anchor="middle" x="4841.67" 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="edge328" 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="M4865.16,-385.44C4874.9,-380.24 4886.52,-374.8 4897.67,-371.5 4967.36,-350.88 5598.49,-350.45 5547.67,-298.5"/>
<path fill="none" stroke="black" d="M5547.67,-297.5C5531.76,-254.74 2306.64,-273.7 2262.67,-261.5 2256.83,-259.89 2250.98,-257.56 2245.34,-254.87"/>
<polygon fill="#f91010" stroke="black" points="2246.56,-251.56 2236.07,-250.04 2243.32,-257.76 2246.56,-251.56"/>
</g>
<!-- ahriman_web_middlewares -->
<g id="node78" class="node">
<title>ahriman_web_middlewares</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="4977.67" cy="-494.48" rx="50.41" ry="28.98"/>
<text text-anchor="middle" x="4977.67" y="-502.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4977.67" y="-491.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4977.67" 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="edge329" 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="M4977.67,-465.38C4977.67,-457.34 4977.67,-448.44 4977.67,-439.9"/>
<polygon fill="#c82323" stroke="black" points="4981.17,-439.74 4977.67,-429.74 4974.17,-439.74 4981.17,-439.74"/>
</g>
<!-- ahriman_web_middlewares_auth_handler&#45;&gt;ahriman_web_web -->
<g id="edge330" 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="M5315.87,-705.36C5373.08,-694 5459.35,-665.66 5471.67,-597.24"/>
<path fill="none" stroke="black" d="M5471.67,-595.24C5479.53,-551.6 5487.73,-536.81 5471.67,-495.48"/>
</g>
<!-- ahriman_web_middlewares_exception_handler -->
<g id="node80" class="node">
<title>ahriman_web_middlewares_exception_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="5376.67" cy="-596.24" rx="67.35" ry="36.54"/>
<text text-anchor="middle" x="5376.67" y="-610.24" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5376.67" y="-599.24" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5376.67" y="-588.24" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">middlewares.</text>
<text text-anchor="middle" x="5376.67" 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="edge331" 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="M5425.92,-571C5454.88,-553.02 5483.67,-526.35 5471.67,-495.48"/>
</g>
<!-- ahriman_web_routes -->
<g id="node81" class="node">
<title>ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="4362.67" cy="-494.48" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="4362.67" y="-502.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4362.67" y="-491.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4362.67" 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="edge332" 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="M4400.91,-494.06C4493.34,-494.42 4735.33,-489.09 4925.67,-429.49 4930.32,-428.03 4935.03,-426.15 4939.62,-424.06"/>
<polygon fill="#732626" stroke="black" points="4941.41,-427.08 4948.83,-419.52 4938.31,-420.8 4941.41,-427.08"/>
</g>
<!-- ahriman_web_views -->
<g id="node82" class="node">
<title>ahriman_web_views</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="4329.67" cy="-596.24" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="4329.67" y="-604.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4329.67" y="-593.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4329.67" 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="edge333" 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="M4338.69,-567.98C4342.32,-556.98 4346.58,-544.12 4350.48,-532.31"/>
<polygon fill="#f91010" stroke="black" points="4353.84,-533.3 4353.66,-522.71 4347.2,-531.1 4353.84,-533.3"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_index -->
<g id="edge334" 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="M4454.84,-815.4C4425.35,-802.4 4382.57,-781.75 4348.67,-758.1 4344.11,-754.92 4339.53,-751.32 4335.13,-747.59"/>
<polygon fill="#a90404" stroke="black" points="4337.23,-744.78 4327.42,-740.79 4332.6,-750.03 4337.23,-744.78"/>
</g>
<!-- ahriman_web_views_service_add -->
<g id="node86" class="node">
<title>ahriman_web_views_service_add</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#993333" stroke="black" cx="4685.67" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="4685.67" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4685.67" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4685.67" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4685.67" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="4685.67" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">add</text>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_add -->
<g id="edge335" 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="M4524.99,-816.38C4556.23,-803.64 4602.36,-782.84 4638.67,-758.1 4642.34,-755.61 4646,-752.83 4649.58,-749.92"/>
<polygon fill="#a90404" stroke="black" points="4651.89,-752.55 4657.23,-743.4 4647.34,-747.22 4651.89,-752.55"/>
</g>
<!-- ahriman_web_views_service_remove -->
<g id="node87" class="node">
<title>ahriman_web_views_service_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#993333" stroke="black" cx="4489.67" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="4489.67" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4489.67" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4489.67" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4489.67" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="4489.67" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">remove</text>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_remove -->
<g id="edge336" 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="M4489.67,-794.02C4489.67,-785.94 4489.67,-777.19 4489.67,-768.55"/>
<polygon fill="#a90404" stroke="black" points="4493.17,-768.51 4489.67,-758.51 4486.17,-768.51 4493.17,-768.51"/>
</g>
<!-- ahriman_web_views_service_search -->
<g id="node88" class="node">
<title>ahriman_web_views_service_search</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="4911.67" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="4911.67" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4911.67" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4911.67" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4911.67" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="4911.67" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">search</text>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_search -->
<g id="edge337" 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="M4525.04,-816.25C4545.44,-808.82 4571.71,-799.97 4595.67,-794.1 4696.6,-769.4 4727.84,-790.2 4826.67,-758.1 4841.02,-753.44 4855.91,-746.59 4869.14,-739.7"/>
<polygon fill="#a90404" stroke="black" points="4870.85,-742.76 4878.01,-734.95 4867.54,-736.59 4870.85,-742.76"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_status_ahriman -->
<g id="edge338" 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="M4525.29,-817.17C4545.77,-810.05 4572.04,-801.19 4595.67,-794.1 4655.97,-776.03 4677.48,-788.4 4732.67,-758.1 4736.56,-755.97 4740.38,-753.44 4744.05,-750.7"/>
<polygon fill="#a90404" stroke="black" points="4746.26,-753.41 4751.84,-744.41 4741.86,-747.97 4746.26,-753.41"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_status_package -->
<g id="edge339" 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="M4466.43,-801.37C4454.86,-787.17 4440.68,-769.77 4428.05,-754.29"/>
<polygon fill="#a90404" stroke="black" points="4430.65,-751.93 4421.62,-746.39 4425.22,-756.35 4430.65,-751.93"/>
</g>
<!-- ahriman_web_views_status_packages -->
<g id="node92" class="node">
<title>ahriman_web_views_status_packages</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#993333" stroke="black" cx="4587.67" cy="-713.56" rx="41.94" ry="44.6"/>
<text text-anchor="middle" x="4587.67" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4587.67" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4587.67" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4587.67" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="4587.67" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">packages</text>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_status_packages -->
<g id="edge340" 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="M4513.39,-801.96C4525.36,-787.88 4540.09,-770.55 4553.27,-755.04"/>
<polygon fill="#a90404" stroke="black" points="4556.19,-757.01 4560,-747.12 4550.85,-752.47 4556.19,-757.01"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_status_status -->
<g id="edge341" 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="M4451.26,-830.52C4374.2,-830.33 4196.97,-822.29 4066.67,-758.1 4062.8,-756.2 4059.02,-753.87 4055.39,-751.29"/>
<polygon fill="#a90404" stroke="black" points="4057.27,-748.31 4047.24,-744.89 4052.95,-753.82 4057.27,-748.31"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_user_login -->
<g id="edge342" 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="M4451.46,-828.03C4387.76,-823.59 4257.33,-808.55 4160.67,-758.1 4156.74,-756.05 4152.89,-753.58 4149.19,-750.87"/>
<polygon fill="#a90404" stroke="black" points="4151.37,-748.14 4141.37,-744.63 4147.01,-753.61 4151.37,-748.14"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge343" 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="M4452.17,-823.81C4403.96,-814.85 4318.83,-795 4254.67,-758.1 4250.82,-755.89 4247.03,-753.31 4243.38,-750.53"/>
<polygon fill="#a90404" stroke="black" points="4245.57,-747.81 4235.62,-744.19 4241.15,-753.23 4245.57,-747.81"/>
</g>
<!-- ahriman_web_views_index&#45;&gt;ahriman_web_routes -->
<g id="edge344" 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="M4329.21,-687.93C4358.02,-660.91 4398.69,-618.53 4395.67,-597.24"/>
</g>
<!-- ahriman_web_views_service -->
<g id="node85" class="node">
<title>ahriman_web_views_service</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c24747" stroke="black" cx="3831.67" cy="-713.56" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3831.67" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3831.67" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="3831.67" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="3831.67" 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="edge345" 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="M3855.7,-684.59C3862.47,-678.42 3870.3,-672.64 3878.67,-669.01 3985.06,-622.8 4411.98,-712.08 4395.67,-597.24"/>
<path fill="none" stroke="black" d="M4395.67,-595.24C4392.6,-573.65 4385.21,-550.48 4378.19,-531.9"/>
<polygon fill="#c24747" stroke="black" points="4381.37,-530.41 4374.47,-522.37 4374.85,-532.96 4381.37,-530.41"/>
</g>
<!-- ahriman_web_views_service_add&#45;&gt;ahriman_web_routes -->
<g id="edge346" 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="M4657.75,-682.87C4651.83,-677.72 4645.34,-672.8 4638.67,-669.01 4540.79,-613.32 4411.5,-708.73 4395.67,-597.24"/>
</g>
<!-- ahriman_web_views_service_remove&#45;&gt;ahriman_web_routes -->
<g id="edge347" 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="M4460.65,-684.19C4434.12,-657.13 4398.56,-617.57 4395.67,-597.24"/>
</g>
<!-- ahriman_web_views_service_search&#45;&gt;ahriman_web_routes -->
<g id="edge348" 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="M4883.07,-683.95C4875.92,-678.18 4867.93,-672.75 4859.67,-669.01 4764.63,-625.96 4410.34,-700.54 4395.67,-597.24"/>
</g>
<!-- ahriman_web_views_status -->
<g id="node89" class="node">
<title>ahriman_web_views_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c24747" stroke="black" cx="3925.67" cy="-713.56" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3925.67" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3925.67" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="3925.67" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="3925.67" 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="edge349" 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="M3949.74,-684.68C3956.52,-678.51 3964.33,-672.71 3972.67,-669.01 4055.04,-632.41 4301.56,-682.83 4376.67,-633.01 4391.67,-623.06 4398.2,-615.06 4395.67,-597.24"/>
</g>
<!-- ahriman_web_views_status_ahriman&#45;&gt;ahriman_web_routes -->
<g id="edge350" 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="M4751.98,-682.45C4746.04,-677.34 4739.48,-672.54 4732.67,-669.01 4596.74,-598.49 4417.2,-748.86 4395.67,-597.24"/>
</g>
<!-- ahriman_web_views_status_package&#45;&gt;ahriman_web_routes -->
<g id="edge351" 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="M4398.55,-669.09C4399.25,-647.4 4399.02,-620.83 4395.67,-597.24"/>
</g>
<!-- ahriman_web_views_status_packages&#45;&gt;ahriman_web_routes -->
<g id="edge352" 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="M4556.48,-683.94C4550.13,-678.69 4543.35,-673.47 4536.67,-669.01 4478.19,-629.96 4405.56,-666.86 4395.67,-597.24"/>
</g>
<!-- ahriman_web_views_status_status&#45;&gt;ahriman_web_routes -->
<g id="edge353" 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="M4046.85,-682.15C4052.88,-677 4059.6,-672.27 4066.67,-669.01 4202.62,-606.42 4416.71,-745.41 4395.67,-597.24"/>
</g>
<!-- ahriman_web_views_user -->
<g id="node94" class="node">
<title>ahriman_web_views_user</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c24747" stroke="black" cx="3737.67" cy="-713.56" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3737.67" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3737.67" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="3737.67" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="3737.67" 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="edge354" 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="M3762.81,-685.37C3769.46,-679.34 3776.94,-673.43 3784.67,-669.01 3964.93,-565.93 4212.51,-518.45 4315.14,-502.26"/>
<polygon fill="#c24747" stroke="black" points="4315.84,-505.69 4325.19,-500.7 4314.77,-498.77 4315.84,-505.69"/>
</g>
<!-- ahriman_web_views_user_login&#45;&gt;ahriman_web_routes -->
<g id="edge355" 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="M4141.24,-682.21C4147.19,-677.11 4153.78,-672.39 4160.67,-669.01 4258.71,-620.9 4411.02,-705.36 4395.67,-597.24"/>
</g>
<!-- ahriman_web_views_user_logout&#45;&gt;ahriman_web_routes -->
<g id="edge356" 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="M4235.59,-682.87C4241.51,-677.72 4248,-672.8 4254.67,-669.01 4315.79,-634.25 4405.56,-666.86 4395.67,-597.24"/>
</g>
<!-- ahriman_web_web&#45;&gt;ahriman_application_handlers_web -->
<g id="edge357" 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="M5015.95,-399.34C5146.9,-398.29 5569.81,-390.65 5585.67,-335.5"/>
<path fill="none" stroke="black" d="M5585.67,-334.5C5592.1,-312.15 5555.78,-320.31 5547.67,-298.5"/>
</g>
<!-- aioauthclient -->
<g id="node98" class="node">
<title>aioauthclient</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#b67e53" stroke="black" points="4425.17,-2286.55 4422.17,-2290.55 4401.17,-2290.55 4398.17,-2286.55 4354.17,-2286.55 4354.17,-2250.55 4425.17,-2250.55 4425.17,-2286.55"/>
<text text-anchor="middle" x="4389.67" y="-2266.05" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aioauthclient</text>
</g>
<!-- aioauthclient&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge358" 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="M4389.99,-2250.43C4390.61,-2231.83 4392.42,-2201.32 4397.67,-2175.57"/>
</g>
<!-- aiohttp -->
<g id="node99" class="node">
<title>aiohttp</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#f9d606" stroke="black" points="4855.67,-1324.03 4852.67,-1328.03 4831.67,-1328.03 4828.67,-1324.03 4801.67,-1324.03 4801.67,-1288.03 4855.67,-1288.03 4855.67,-1324.03"/>
<text text-anchor="middle" x="4828.67" 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="edge359" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_middlewares</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4977.67,-829.87C4958.96,-776.28 4968.83,-609.44 4974.54,-533.64"/>
<polygon fill="#f9d606" stroke="black" points="4978.04,-533.81 4975.31,-523.57 4971.06,-533.27 4978.04,-533.81"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge360" 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="M4907.67,-1232.26C4946.71,-1180.99 4957.52,-1168.71 5002.67,-1122.72 5019.43,-1105.66 5026.69,-1104.52 5042.67,-1086.72 5082.76,-1042.05 5089.63,-1027.94 5121.67,-977.18 5151.29,-930.24 5155.11,-916.39 5181.67,-867.64 5201.92,-830.47 5224.85,-788.17 5241.47,-757.47"/>
<polygon fill="#f9d606" stroke="black" points="5244.73,-758.79 5246.41,-748.33 5238.58,-755.46 5244.73,-758.79"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_middlewares_exception_handler -->
<g id="edge361" 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="M5107.67,-939.41C5148.52,-818.61 5115.87,-761.5 5203.67,-669.01 5230.47,-640.77 5270.05,-623.25 5304.59,-612.59"/>
<polygon fill="#f9d606" stroke="black" points="5305.58,-615.95 5314.18,-609.77 5303.6,-609.23 5305.58,-615.95"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_routes -->
<g id="edge362" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4845.67,-829.87C4819.65,-762.75 4876.35,-721.11 4826.67,-669.01 4759.66,-598.74 4409.32,-693.37 4395.67,-597.24"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_base -->
<g id="edge363" 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="M4851.52,-1288.03C4868.53,-1274.55 4891.51,-1254.49 4907.67,-1233.26"/>
<path fill="none" stroke="black" d="M4907.67,-1232.26C4926.99,-1206.88 4911.07,-1192.21 4907.67,-1160.49"/>
<path fill="none" stroke="black" d="M4907.67,-1158.49C4903.34,-1118.07 4790.37,-1077.6 4759.67,-1050.95"/>
<path fill="none" stroke="black" d="M4759.67,-1048.95C4688.13,-986.87 4633.37,-1016.53 4575.67,-941.41"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_add -->
<g id="edge364" 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="M4685.67,-829.87C4667.36,-814.63 4666.08,-788.64 4669.94,-765.19"/>
<polygon fill="#f9d606" stroke="black" points="4673.38,-765.82 4671.88,-755.33 4666.51,-764.47 4673.38,-765.82"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_remove -->
<g id="edge365" 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="M4907.67,-1158.49C4888.21,-984.05 4820.54,-944.2 4685.67,-831.87"/>
<path fill="none" stroke="black" d="M4685.67,-829.87C4634.74,-776.88 4598.04,-798.56 4536.67,-758.1 4532.96,-755.66 4529.27,-752.92 4525.68,-750.04"/>
<polygon fill="#f9d606" stroke="black" points="4527.9,-747.34 4518.01,-743.56 4523.39,-752.69 4527.9,-747.34"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_search -->
<g id="edge366" 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="M4907.67,-1158.49C4899.69,-1086.99 4993.13,-1113.51 5028.67,-1050.95"/>
<path fill="none" stroke="black" d="M5028.67,-1048.95C5077.62,-962.78 4998.29,-928.81 4977.67,-831.87"/>
<path fill="none" stroke="black" d="M4977.67,-829.87C4968.82,-804.53 4954.38,-778.4 4941.26,-757.43"/>
<polygon fill="#f9d606" stroke="black" points="4944.06,-755.32 4935.73,-748.78 4938.16,-759.09 4944.06,-755.32"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_status_ahriman -->
<g id="edge367" 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="M4907.67,-1158.49C4895.58,-1045.7 4929.59,-1011.24 4893.67,-903.64 4881.52,-867.24 4861.59,-866.79 4845.67,-831.87"/>
<path fill="none" stroke="black" d="M4845.67,-829.87C4835.97,-804.84 4821.45,-778.74 4808.49,-757.71"/>
<polygon fill="#f9d606" stroke="black" points="4811.33,-755.65 4803.06,-749.03 4805.4,-759.36 4811.33,-755.65"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_status_package -->
<g id="edge368" 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="M4759.67,-1048.95C4745.21,-1036.4 4747.78,-1028.01 4735.67,-1013.18 4692.43,-960.22 4677.67,-950.27 4627.67,-903.64 4609.69,-886.88 4599.91,-887.69 4585.67,-867.64 4575.78,-853.73 4584.59,-843.03 4571.67,-831.87"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_status_packages -->
<g id="edge369" 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="M4685.67,-829.87C4660.39,-808.82 4636.39,-780.77 4618.47,-757.6"/>
<polygon fill="#f9d606" stroke="black" points="4621.24,-755.46 4612.39,-749.63 4615.67,-759.71 4621.24,-755.46"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_status_status -->
<g id="edge370" 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="M4801.52,-1295.86C4759.24,-1280.54 4676.77,-1246.39 4621.67,-1196.26 4592.8,-1170 4607.35,-1142.44 4573.67,-1122.72 4469.68,-1061.87 4133.82,-1152.2 4032.67,-1086.72 4017.56,-1076.94 4026.31,-1063.77 4013.67,-1050.95"/>
<path fill="none" stroke="black" d="M4013.67,-1048.95C3939.43,-973.69 3973.83,-836.33 3999.88,-763.28"/>
<polygon fill="#f9d606" stroke="black" points="4003.19,-764.43 4003.33,-753.84 3996.61,-762.03 4003.19,-764.43"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_user_login -->
<g id="edge371" 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="M4013.67,-1048.95C3980.1,-1014.93 4001.71,-987.69 4013.67,-941.41"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge372" 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="M4810.66,-1287.9C4775.78,-1254.95 4696.23,-1180.85 4625.67,-1122.72 4480.42,-1003.05 4409.33,-1011.23 4287.67,-867.64 4261.49,-836.75 4240.67,-795.85 4226.84,-764.1"/>
<polygon fill="#f9d606" stroke="black" points="4229.92,-762.39 4222.78,-754.57 4223.48,-765.14 4229.92,-762.39"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_web -->
<g id="edge373" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5028.67,-1048.95C5038.03,-1034.68 5033.68,-1027.7 5042.67,-1013.18 5065.33,-976.6 5097.26,-983.17 5107.67,-941.41"/>
<path fill="none" stroke="black" d="M5107.67,-939.41C5123.32,-876.66 5106.8,-858.17 5115.67,-794.1 5123.48,-737.67 5111.93,-716.32 5143.67,-669.01 5191.07,-598.35 5225.34,-599.03 5300.67,-559.47 5372.51,-521.74 5501.06,-571.12 5471.67,-495.48"/>
<path fill="none" stroke="black" d="M5471.67,-493.48C5436.06,-411.89 5143.25,-401.93 5025.97,-401.24"/>
<polygon fill="#f9d606" stroke="black" points="5025.86,-397.74 5015.85,-401.21 5025.83,-404.74 5025.86,-397.74"/>
</g>
<!-- aiohttpjinja2 -->
<g id="node100" class="node">
<title>aiohttpjinja2</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#8eb03a" stroke="black" points="5079.67,-1177.49 5076.67,-1181.49 5055.67,-1181.49 5052.67,-1177.49 5011.67,-1177.49 5011.67,-1141.49 5079.67,-1141.49 5079.67,-1177.49"/>
<text text-anchor="middle" x="5045.67" y="-1156.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aiohttpjinja2</text>
</g>
<!-- aiohttp&#45;&gt;aiohttpjinja2 -->
<g id="edge374" class="edge">
<title>aiohttp&#45;&gt;aiohttpjinja2</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4855.77,-1288.15C4867.16,-1281.58 4880.75,-1274.41 4893.67,-1269.26 4952.55,-1245.8 4973.8,-1259.12 5031.67,-1233.26"/>
<path fill="none" stroke="black" d="M5031.67,-1232.26C5047.6,-1225.14 5050.46,-1204.97 5049.69,-1187.82"/>
<polygon fill="#f9d606" stroke="black" points="5053.16,-1187.35 5048.83,-1177.68 5046.19,-1187.94 5053.16,-1187.35"/>
</g>
<!-- aiohttpsession -->
<g id="node102" class="node">
<title>aiohttpsession</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#3db84e" stroke="black" points="5329.67,-1177.49 5326.67,-1181.49 5305.67,-1181.49 5302.67,-1177.49 5249.67,-1177.49 5249.67,-1141.49 5329.67,-1141.49 5329.67,-1177.49"/>
<text text-anchor="middle" x="5289.67" y="-1156.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aiohttpsession</text>
</g>
<!-- aiohttp&#45;&gt;aiohttpsession -->
<g id="edge375" class="edge">
<title>aiohttp&#45;&gt;aiohttpsession</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5031.67,-1232.26C5100.85,-1201.34 5186.53,-1180.7 5239.65,-1169.78"/>
<polygon fill="#f9d606" stroke="black" points="5240.39,-1173.2 5249.5,-1167.79 5239.01,-1166.34 5240.39,-1173.2"/>
</g>
<!-- aiohttpjinja2&#45;&gt;ahriman_web_views_index -->
<g id="edge376" 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="M5028.07,-1141.36C4966.45,-1082.44 4752.4,-886.65 4536.67,-794.1 4458.49,-760.56 4424.59,-796.5 4348.67,-758.1 4343.71,-755.59 4338.89,-752.4 4334.35,-748.89"/>
<polygon fill="#8eb03a" stroke="black" points="4336.42,-746.06 4326.51,-742.31 4331.92,-751.42 4336.42,-746.06"/>
</g>
<!-- aiohttpjinja2&#45;&gt;ahriman_web_web -->
<g id="edge377" class="edge">
<title>aiohttpjinja2&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5079.87,-1153.84C5167.93,-1139.76 5395.67,-1089.07 5395.67,-941.41"/>
<path fill="none" stroke="black" d="M5395.67,-939.41C5393.74,-833.94 5455.21,-818.76 5471.67,-714.56"/>
<path fill="none" stroke="black" d="M5471.67,-712.56C5476.62,-661.54 5462.59,-647.68 5471.67,-597.24"/>
</g>
<!-- aiohttpsecurity -->
<g id="node101" class="node">
<title>aiohttpsecurity</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#6ac247" stroke="black" points="4915.67,-1433.57 4912.67,-1437.57 4891.67,-1437.57 4888.67,-1433.57 4835.67,-1433.57 4835.67,-1397.57 4915.67,-1397.57 4915.67,-1433.57"/>
<text text-anchor="middle" x="4875.67" 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="edge378" 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="M4854.83,-1397.29C4837.81,-1383.01 4813.29,-1362.03 4792.67,-1342.8 4767.44,-1319.28 4604.66,-1137.87 4573.67,-1122.72 4455,-1064.72 4409.28,-1106.41 4278.67,-1086.72 4226.62,-1078.88 4167.27,-1067.95 4127.03,-1060.24"/>
<polygon fill="#6ac247" stroke="black" points="4127.46,-1056.76 4116.98,-1058.31 4126.13,-1063.63 4127.46,-1056.76"/>
</g>
<!-- aiohttpsecurity&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge379" 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="M4895.48,-1397.37C4975.48,-1327.21 5270.87,-1060.67 5281.67,-941.41"/>
<path fill="none" stroke="black" d="M5281.67,-939.41C5279.59,-877.34 5273.56,-805.85 5269.27,-760.45"/>
<polygon fill="#6ac247" stroke="black" points="5272.74,-759.96 5268.31,-750.33 5265.77,-760.62 5272.74,-759.96"/>
</g>
<!-- aiohttpsession&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge380" 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="M5311.04,-1141.4C5333,-1121.65 5363.25,-1087.19 5357.67,-1050.95"/>
<path fill="none" stroke="black" d="M5357.67,-1048.95C5348.76,-991.11 5276.39,-999.7 5281.67,-941.41"/>
</g>
<!-- aur -->
<g id="node103" class="node">
<title>aur</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#33cc8a" stroke="black" points="5368.67,-2670.26 5365.67,-2674.26 5344.67,-2674.26 5341.67,-2670.26 5314.67,-2670.26 5314.67,-2634.26 5368.67,-2634.26 5368.67,-2670.26"/>
<text text-anchor="middle" x="5341.67" 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="edge381" 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="M5354.92,-2633.9C5398.43,-2576.53 5533.77,-2394.91 5527.67,-2363.53"/>
<path fill="none" stroke="black" d="M5527.67,-2361.53C5528.42,-2342.63 5434.84,-2053.54 5427.67,-2036.03 5344.42,-1832.91 5363.03,-1744.52 5199.67,-1597.88 5067.24,-1479.01 4985.34,-1532.9 4826.67,-1452.34 4705.18,-1390.66 4439.36,-1164.49 4309.67,-1122.72 4240.29,-1100.38 1761.77,-987.87 1689.67,-977.18 1553.02,-956.92 1523.43,-929.18 1387.67,-903.64 1269.13,-881.34 1231.78,-909.55 1118.67,-867.64 1114.41,-866.07 1110.14,-864.11 1105.97,-861.93"/>
<polygon fill="#33cc8a" stroke="black" points="1107.47,-858.76 1097.04,-856.88 1104.02,-864.85 1107.47,-858.76"/>
</g>
<!-- aur&#45;&gt;ahriman_models_package -->
<g id="edge382" class="edge">
<title>aur&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5314.58,-2643.24C5284.76,-2634.78 5235.25,-2621.81 5191.67,-2615.49 5118.22,-2604.84 4589.29,-2615.99 4524.67,-2579.49 4511.58,-2572.09 4520.55,-2553.62 4505.67,-2551.5"/>
</g>
<!-- aur&#45;&gt;ahriman_web_views_service_search -->
<g id="edge383" 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="M5527.67,-2361.53C5618.13,-1811.97 5609.35,-1609.48 5338.67,-1122.72 5248.56,-960.68 5226.73,-909.59 5081.67,-794.1 5044.5,-764.52 4994.53,-742.83 4958.4,-729.64"/>
<polygon fill="#33cc8a" stroke="black" points="4959.19,-726.21 4948.59,-726.15 4956.84,-732.8 4959.19,-726.21"/>
</g>
<!-- boto3 -->
<g id="node104" class="node">
<title>boto3</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#40bfc0" stroke="black" points="2871.67,-2286.55 2868.67,-2290.55 2847.67,-2290.55 2844.67,-2286.55 2817.67,-2286.55 2817.67,-2250.55 2871.67,-2250.55 2871.67,-2286.55"/>
<text text-anchor="middle" x="2844.67" 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="edge384" 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="M2833.61,-2250.36C2822.61,-2230.89 2809.29,-2198.84 2823.67,-2175.57"/>
</g>
<!-- cryptography -->
<g id="node105" class="node">
<title>cryptography</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#198ee6" stroke="black" points="5632.67,-2892.01 5629.67,-2896.01 5608.67,-2896.01 5605.67,-2892.01 5558.67,-2892.01 5558.67,-2856.01 5632.67,-2856.01 5632.67,-2892.01"/>
<text text-anchor="middle" x="5595.67" y="-2871.51" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">cryptography</text>
</g>
<!-- cryptography&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge385" 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="M5717.67,-2725.03C5721.82,-2648.01 5717.67,-2628.62 5717.67,-2551.5 5717.67,-2551.5 5717.67,-2551.5 5717.67,-2071.8 5717.67,-1925.66 5679.67,-1891.33 5679.67,-1745.19 5679.67,-1745.19 5679.67,-1745.19 5679.67,-1232.26 5679.67,-999.82 5421.83,-812.16 5312.62,-743.1"/>
<polygon fill="#198ee6" stroke="black" points="5314.42,-740.1 5304.09,-737.76 5310.7,-746.03 5314.42,-740.1"/>
</g>
<!-- cryptography&#45;&gt;aiohttpsession -->
<g id="edge386" class="edge">
<title>cryptography&#45;&gt;aiohttpsession</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5627.33,-2855.95C5667.93,-2831.49 5731.58,-2783.05 5717.67,-2726.03"/>
<path fill="none" stroke="black" d="M5717.67,-2725.03C5716.11,-2707.93 5709.3,-2705.24 5703.67,-2689.03 5653.99,-2546.08 5603.67,-2514.87 5603.67,-2363.53 5603.67,-2363.53 5603.67,-2363.53 5603.67,-2173.57 5603.67,-2017.35 5500.32,-1635.06 5446.67,-1488.34 5404.14,-1372.04 5334.57,-1241.42 5304.4,-1186.75"/>
<polygon fill="#198ee6" stroke="black" points="5307.31,-1184.79 5299.4,-1177.74 5301.19,-1188.19 5307.31,-1184.79"/>
</g>
<!-- requests -->
<g id="node109" class="node">
<title>requests</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#dd18c1" stroke="black" points="5501.67,-2809.02 5498.67,-2813.02 5477.67,-2813.02 5474.67,-2809.02 5447.67,-2809.02 5447.67,-2773.02 5501.67,-2773.02 5501.67,-2809.02"/>
<text text-anchor="middle" x="5474.67" y="-2788.52" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">requests</text>
</g>
<!-- cryptography&#45;&gt;requests -->
<g id="edge387" class="edge">
<title>cryptography&#45;&gt;requests</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5570.01,-2855.83C5552.2,-2843.91 5528.29,-2827.91 5508.86,-2814.91"/>
<polygon fill="#198ee6" stroke="black" points="5510.55,-2811.82 5500.29,-2809.17 5506.66,-2817.64 5510.55,-2811.82"/>
</g>
<!-- jinja2 -->
<g id="node106" class="node">
<title>jinja2</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#3b50ce" stroke="black" points="5271.67,-2286.55 5268.67,-2290.55 5247.67,-2290.55 5244.67,-2286.55 5217.67,-2286.55 5217.67,-2250.55 5271.67,-2250.55 5271.67,-2286.55"/>
<text text-anchor="middle" x="5244.67" 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="edge388" 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="M5229.45,-2250.26C5176.03,-2191 4989.24,-1995.94 4786.67,-1926.5 4601.43,-1863 3218.68,-1917.07 3024.67,-1890.5 2997.98,-1886.84 2969.04,-1879.89 2944.52,-1873.09"/>
<polygon fill="#3b50ce" stroke="black" points="2945.23,-1869.65 2934.65,-1870.29 2943.32,-1876.38 2945.23,-1869.65"/>
</g>
<!-- jinja2&#45;&gt;ahriman_web_web -->
<g id="edge389" class="edge">
<title>jinja2&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5259.05,-2250.42C5308.46,-2190.53 5471.99,-1983.06 5541.67,-1780.96 5573.83,-1687.67 5568.7,-1660.14 5577.67,-1561.88 5592.44,-1400.02 5583.11,-1358.78 5584.67,-1196.26 5584.98,-1163.58 5588.12,-1155.22 5584.67,-1122.72 5583.88,-1115.3 5470.35,-604.59 5471.67,-597.24"/>
</g>
<!-- jinja2&#45;&gt;aiohttpjinja2 -->
<g id="edge390" class="edge">
<title>jinja2&#45;&gt;aiohttpjinja2</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5247.18,-2250.49C5251.91,-2216.8 5261.67,-2139.31 5261.67,-2073.8 5261.67,-2073.8 5261.67,-2073.8 5261.67,-1743.19 5261.67,-1514.64 5113.77,-1265.34 5062.74,-1186.13"/>
<polygon fill="#3b50ce" stroke="black" points="5065.67,-1184.21 5057.28,-1177.74 5059.8,-1188.03 5065.67,-1184.21"/>
</g>
<!-- passlib -->
<g id="node107" class="node">
<title>passlib</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#653bce" stroke="black" points="5182.67,-2670.26 5179.67,-2674.26 5158.67,-2674.26 5155.67,-2670.26 5128.67,-2670.26 5128.67,-2634.26 5182.67,-2634.26 5182.67,-2670.26"/>
<text text-anchor="middle" x="5155.67" y="-2649.76" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">passlib</text>
</g>
<!-- passlib&#45;&gt;ahriman_models_user -->
<g id="edge391" class="edge">
<title>passlib&#45;&gt;ahriman_models_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5142.69,-2634.12C5107.32,-2587.44 5008.82,-2457.44 4962.43,-2396.21"/>
<polygon fill="#653bce" stroke="black" points="4965.07,-2393.9 4956.24,-2388.05 4959.49,-2398.13 4965.07,-2393.9"/>
</g>
<!-- pyalpm -->
<g id="node108" class="node">
<title>pyalpm</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#a43bce" stroke="black" points="5144.67,-2964.01 5141.67,-2968.01 5120.67,-2968.01 5117.67,-2964.01 5090.67,-2964.01 5090.67,-2928.01 5144.67,-2928.01 5144.67,-2964.01"/>
<text text-anchor="middle" x="5117.67" y="-2943.51" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">pyalpm</text>
</g>
<!-- pyalpm&#45;&gt;ahriman_core_alpm_pacman -->
<g id="edge392" 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="M5119.38,-2927.9C5121.84,-2899.47 5125.3,-2840.83 5117.67,-2792.02"/>
<path fill="none" stroke="black" d="M5117.67,-2790.02C5106.15,-2726.46 5007.06,-2712.55 4967.67,-2689.03 4962.34,-2685.84 4956.78,-2682.42 4951.31,-2678.99"/>
<polygon fill="#a43bce" stroke="black" points="4953.18,-2676.03 4942.86,-2673.65 4949.44,-2681.95 4953.18,-2676.03"/>
</g>
<!-- pyalpm&#45;&gt;ahriman_models_package -->
<g id="edge393" class="edge">
<title>pyalpm&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5117.67,-2790.02C5112.27,-2757.66 5103.94,-2750 5082.67,-2725.03 5065.61,-2705 5052.67,-2709.11 5035.67,-2689.03 5011.77,-2660.79 5027.62,-2635.75 4996.67,-2615.49 4908.66,-2557.87 4615.68,-2632.24 4524.67,-2579.49 4511.66,-2571.95 4520.55,-2553.62 4505.67,-2551.5"/>
<path fill="none" stroke="black" d="M4505.67,-2549.5C4489.45,-2547.17 4496.36,-2528.76 4481.67,-2521.5 4352.36,-2457.64 3962.98,-2549.37 3833.67,-2485.5 3818.98,-2478.25 3823.92,-2465.6 3809.67,-2457.51"/>
<path fill="none" stroke="black" d="M3809.67,-2455.51C3796.59,-2448.09 3799.81,-2439.46 3790.67,-2427.52 3782.23,-2416.49 3772.49,-2404.85 3763.58,-2394.57"/>
<polygon fill="#a43bce" stroke="black" points="3766.18,-2392.22 3756.96,-2387 3760.91,-2396.83 3766.18,-2392.22"/>
</g>
<!-- pyalpm&#45;&gt;ahriman_models_package_description -->
<g id="edge394" 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="M5117.67,-2790.02C5116.21,-2775.05 5107.63,-2774.1 5098.67,-2762.03 5086.05,-2745.03 5084.71,-2738.85 5068.67,-2725.03 5044.82,-2704.48 5030.53,-2710.67 5007.67,-2689.03 4979.15,-2662.02 4992.56,-2635.34 4958.67,-2615.49 4868.86,-2562.87 4584.08,-2627.38 4491.67,-2579.49 4461.97,-2564.09 4473.54,-2536.58 4443.67,-2521.5 4314.92,-2456.52 3937.56,-2511.34 3795.67,-2485.5 3787.42,-2484 3778.87,-2481.97 3770.48,-2479.67"/>
<polygon fill="#a43bce" stroke="black" points="3771.3,-2476.26 3760.73,-2476.87 3769.37,-2482.99 3771.3,-2476.26"/>
</g>
<!-- requests&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge395" 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="M5447.62,-2783.95C5409.96,-2774.83 5340.34,-2755.43 5286.67,-2726.03"/>
<path fill="none" stroke="black" d="M5286.67,-2725.03C5220.08,-2688.54 5181.6,-2732.96 5119.67,-2689.03 5088.42,-2666.86 5104.77,-2639.19 5074.67,-2615.49 4967.89,-2531.41 4916.44,-2550.54 4783.67,-2521.5 4663.98,-2495.33 3805.24,-2429.24 3688.67,-2391.52 3471.97,-2321.4 3243.96,-2165.84 3155.67,-2101.99"/>
<polygon fill="#dd18c1" stroke="black" points="3157.71,-2099.15 3147.57,-2096.11 3153.6,-2104.82 3157.71,-2099.15"/>
</g>
<!-- requests&#45;&gt;ahriman_core_status_web_client -->
<g id="edge396" 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="M5286.67,-2725.03C5218.84,-2688.32 5286.67,-2628.62 5286.67,-2551.5 5286.67,-2551.5 5286.67,-2551.5 5286.67,-2455.51 5286.67,-2377.21 5237.66,-2370.28 5208.67,-2297.54 5163.16,-2183.36 5201,-2127.3 5118.67,-2036.03 4915.97,-1811.34 4524.5,-1759.87 4381.58,-1748.39"/>
<polygon fill="#dd18c1" stroke="black" points="4381.56,-1744.88 4371.32,-1747.6 4381.03,-1751.85 4381.56,-1744.88"/>
</g>
<!-- requests&#45;&gt;ahriman_core_util -->
<g id="edge397" class="edge">
<title>requests&#45;&gt;ahriman_core_util</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5447.49,-2784.09C5364.32,-2765.81 5116.99,-2710.2 5086.67,-2689.03 5054.06,-2666.26 5069.81,-2635.89 5035.67,-2615.49 4913.57,-2542.53 4853.41,-2621.97 4717.67,-2579.49 4713.02,-2578.03 4708.31,-2576.15 4703.71,-2574.06"/>
<polygon fill="#dd18c1" stroke="black" points="4705.03,-2570.8 4694.51,-2569.52 4701.93,-2577.08 4705.03,-2570.8"/>
</g>
<!-- requests&#45;&gt;aur -->
<g id="edge398" class="edge">
<title>requests&#45;&gt;aur</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5458.09,-2772.97C5434.8,-2749.02 5392.24,-2705.26 5365.54,-2677.8"/>
<polygon fill="#dd18c1" stroke="black" points="5367.93,-2675.25 5358.45,-2670.52 5362.92,-2680.13 5367.93,-2675.25"/>
</g>
<!-- srcinfo -->
<g id="node110" class="node">
<title>srcinfo</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#b6537e" stroke="black" points="4636.67,-2670.26 4633.67,-2674.26 4612.67,-2674.26 4609.67,-2670.26 4582.67,-2670.26 4582.67,-2634.26 4636.67,-2634.26 4636.67,-2670.26"/>
<text text-anchor="middle" x="4609.67" 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="edge399" class="edge">
<title>srcinfo&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4593.33,-2634.21C4586.26,-2627.62 4577.57,-2620.47 4568.67,-2615.49 4521.94,-2589.32 4498.39,-2608.96 4453.67,-2579.49 4439.99,-2570.47 4445.72,-2554.81 4429.67,-2551.5"/>
<path fill="none" stroke="black" d="M4429.67,-2549.5C4341.57,-2531.33 3683.71,-2551.57 3622.67,-2485.5 3605.18,-2466.58 3609.69,-2449.79 3622.67,-2427.52 3637.25,-2402.5 3665.65,-2386.48 3690.33,-2376.73"/>
<polygon fill="#b6537e" stroke="black" points="3691.76,-2379.93 3699.92,-2373.17 3689.32,-2373.36 3691.76,-2379.93"/>
</g>
</g>
</svg>