summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDante Catalfamo2021-07-04 03:13:03 -0400
committerDante Catalfamo2021-07-04 03:13:03 -0400
commit1a7fc12e8655d65620b19ad6e09592aef95f68c8 (patch)
treed84aaa7c841422be44ac7372226d62199d0f94de
parent070dc77a81992fd01c73b21967ab02ad64a780e8 (diff)
downloadblog-1a7fc12e8655d65620b19ad6e09592aef95f68c8.tar.gz
blog-1a7fc12e8655d65620b19ad6e09592aef95f68c8.tar.bz2
blog-1a7fc12e8655d65620b19ad6e09592aef95f68c8.zip
bsd-auth: Add color to lines in graph, add copyright and license
-rwxr-xr-xcontent/posts/WIP-how-bsd-authentication-works/gen_dot.rb11
-rw-r--r--content/posts/WIP-how-bsd-authentication-works/graph.dot152
-rw-r--r--content/posts/WIP-how-bsd-authentication-works/graph.svg310
3 files changed, 241 insertions, 232 deletions
diff --git a/content/posts/WIP-how-bsd-authentication-works/gen_dot.rb b/content/posts/WIP-how-bsd-authentication-works/gen_dot.rb
index 7244789..bad2a90 100755
--- a/content/posts/WIP-how-bsd-authentication-works/gen_dot.rb
+++ b/content/posts/WIP-how-bsd-authentication-works/gen_dot.rb
@@ -1,6 +1,11 @@
#!/usr/bin/env ruby
# frozen_string_literal: true
+# Copyright (c) 2021 Dante Catalfamo
+# SPDX-License-Identifier: MIT
+
+require 'digest'
+
SOURCE_DIR = File.join Dir.home, 'src', 'github.com', 'openbsd', 'src', 'lib', 'libc', 'gen'
FILENAMES = %w[authenticate.c auth_subr.c login_cap.c].freeze
@@ -36,8 +41,12 @@ class FunctionDigraph
@to = to
end
+ def color(func)
+ Digest::MD5.hexdigest(func)[..5]
+ end
+
def emit
- puts "#{from} -> #{to}" if to =~ /auth|login|^_/
+ puts "#{from} -> #{to} [color = \"##{color(from)}\"]" if to =~ /auth|login|^_/
end
end
diff --git a/content/posts/WIP-how-bsd-authentication-works/graph.dot b/content/posts/WIP-how-bsd-authentication-works/graph.dot
index 59d7ecd..27730fb 100644
--- a/content/posts/WIP-how-bsd-authentication-works/graph.dot
+++ b/content/posts/WIP-how-bsd-authentication-works/graph.dot
@@ -66,80 +66,80 @@ multiply
secure_path
expandstr
}
-auth_checknologin -> _auth_checknologin
-_auth_checknologin -> login_getcapbool
-_auth_checknologin -> login_getcapstr
-_auth_checknologin -> auth_cat
-auth_approval -> auth_getitem
-auth_approval -> auth_getpwd
-auth_approval -> _auth_validuser
-auth_approval -> login_getclass
-auth_approval -> login_close
-auth_approval -> login_getcapstr
-auth_approval -> auth_open
-auth_approval -> auth_setstate
-auth_approval -> auth_setitem
-auth_approval -> auth_check_expire
-auth_approval -> login_getcapbool
-auth_approval -> auth_call
-auth_approval -> auth_close
-auth_approval -> auth_getstate
-auth_usercheck -> _auth_validuser
-auth_usercheck -> login_getclass
-auth_usercheck -> login_getstyle
-auth_usercheck -> login_close
-auth_usercheck -> auth_open
-auth_usercheck -> auth_setitem
-auth_usercheck -> auth_setdata
-auth_usercheck -> auth_verify
-auth_userokay -> auth_usercheck
-auth_userokay -> auth_close
-auth_userchallenge -> _auth_validuser
-auth_userchallenge -> login_getclass
-auth_userchallenge -> login_getstyle
-auth_userchallenge -> auth_open
-auth_userchallenge -> login_close
-auth_userchallenge -> auth_setitem
-auth_userchallenge -> auth_close
-auth_userchallenge -> auth_challenge
-auth_userresponse -> auth_setstate
-auth_userresponse -> auth_getitem
-auth_userresponse -> _auth_validuser
-auth_userresponse -> auth_close
-auth_userresponse -> auth_setdata
-auth_userresponse -> auth_getstate
-auth_userresponse -> auth_check_expire
-auth_verify -> auth_open
-auth_verify -> auth_setstate
-auth_verify -> auth_setitem
-auth_verify -> auth_getitem
-auth_verify -> _auth_validuser
-auth_verify -> auth_set_va_list
-auth_verify -> auth_call
-auth_clean -> auth_clrenv
-auth_clean -> auth_setitem
-auth_close -> auth_setenv
-auth_challenge -> _auth_validuser
-auth_challenge -> auth_getvalue
-auth_setitem -> auth_setitem
-auth_setitem -> _auth_validuser
-auth_check_expire -> auth_setpwd
-auth_check_change -> auth_setpwd
-auth_call -> _auth_next_arg
-auth_call -> _auth_spool
-auth_call -> _add_rmlist
-auth_call -> auth_clrenv
-_auth_spool -> _recv_fd
-login_getstyle -> login_getcapstr
-gsetrl -> login_getcaptime
-gsetrl -> login_getcapsize
-gsetrl -> login_getcapnum
-setclasscontext -> login_getclass
-setclasscontext -> login_close
-setusercontext -> login_getclass
-setusercontext -> login_close
-setusercontext -> login_getcapnum
-setusercontext -> setlogin
-setuserpath -> login_setenv
-setuserenv -> login_setenv
+auth_checknologin -> _auth_checknologin [color = "#f0bfd8"]
+_auth_checknologin -> login_getcapbool [color = "#f51748"]
+_auth_checknologin -> login_getcapstr [color = "#f51748"]
+_auth_checknologin -> auth_cat [color = "#f51748"]
+auth_approval -> auth_getitem [color = "#8f94eb"]
+auth_approval -> auth_getpwd [color = "#8f94eb"]
+auth_approval -> _auth_validuser [color = "#8f94eb"]
+auth_approval -> login_getclass [color = "#8f94eb"]
+auth_approval -> login_close [color = "#8f94eb"]
+auth_approval -> login_getcapstr [color = "#8f94eb"]
+auth_approval -> auth_open [color = "#8f94eb"]
+auth_approval -> auth_setstate [color = "#8f94eb"]
+auth_approval -> auth_setitem [color = "#8f94eb"]
+auth_approval -> auth_check_expire [color = "#8f94eb"]
+auth_approval -> login_getcapbool [color = "#8f94eb"]
+auth_approval -> auth_call [color = "#8f94eb"]
+auth_approval -> auth_close [color = "#8f94eb"]
+auth_approval -> auth_getstate [color = "#8f94eb"]
+auth_usercheck -> _auth_validuser [color = "#96fc6d"]
+auth_usercheck -> login_getclass [color = "#96fc6d"]
+auth_usercheck -> login_getstyle [color = "#96fc6d"]
+auth_usercheck -> login_close [color = "#96fc6d"]
+auth_usercheck -> auth_open [color = "#96fc6d"]
+auth_usercheck -> auth_setitem [color = "#96fc6d"]
+auth_usercheck -> auth_setdata [color = "#96fc6d"]
+auth_usercheck -> auth_verify [color = "#96fc6d"]
+auth_userokay -> auth_usercheck [color = "#3eb09b"]
+auth_userokay -> auth_close [color = "#3eb09b"]
+auth_userchallenge -> _auth_validuser [color = "#0db8d4"]
+auth_userchallenge -> login_getclass [color = "#0db8d4"]
+auth_userchallenge -> login_getstyle [color = "#0db8d4"]
+auth_userchallenge -> auth_open [color = "#0db8d4"]
+auth_userchallenge -> login_close [color = "#0db8d4"]
+auth_userchallenge -> auth_setitem [color = "#0db8d4"]
+auth_userchallenge -> auth_close [color = "#0db8d4"]
+auth_userchallenge -> auth_challenge [color = "#0db8d4"]
+auth_userresponse -> auth_setstate [color = "#cc7ac2"]
+auth_userresponse -> auth_getitem [color = "#cc7ac2"]
+auth_userresponse -> _auth_validuser [color = "#cc7ac2"]
+auth_userresponse -> auth_close [color = "#cc7ac2"]
+auth_userresponse -> auth_setdata [color = "#cc7ac2"]
+auth_userresponse -> auth_getstate [color = "#cc7ac2"]
+auth_userresponse -> auth_check_expire [color = "#cc7ac2"]
+auth_verify -> auth_open [color = "#83192f"]
+auth_verify -> auth_setstate [color = "#83192f"]
+auth_verify -> auth_setitem [color = "#83192f"]
+auth_verify -> auth_getitem [color = "#83192f"]
+auth_verify -> _auth_validuser [color = "#83192f"]
+auth_verify -> auth_set_va_list [color = "#83192f"]
+auth_verify -> auth_call [color = "#83192f"]
+auth_clean -> auth_clrenv [color = "#759227"]
+auth_clean -> auth_setitem [color = "#759227"]
+auth_close -> auth_setenv [color = "#4a5505"]
+auth_challenge -> _auth_validuser [color = "#5e3ac3"]
+auth_challenge -> auth_getvalue [color = "#5e3ac3"]
+auth_setitem -> auth_setitem [color = "#e67693"]
+auth_setitem -> _auth_validuser [color = "#e67693"]
+auth_check_expire -> auth_setpwd [color = "#739550"]
+auth_check_change -> auth_setpwd [color = "#902d9d"]
+auth_call -> _auth_next_arg [color = "#a9e6c9"]
+auth_call -> _auth_spool [color = "#a9e6c9"]
+auth_call -> _add_rmlist [color = "#a9e6c9"]
+auth_call -> auth_clrenv [color = "#a9e6c9"]
+_auth_spool -> _recv_fd [color = "#977e1c"]
+login_getstyle -> login_getcapstr [color = "#51a344"]
+gsetrl -> login_getcaptime [color = "#35d53a"]
+gsetrl -> login_getcapsize [color = "#35d53a"]
+gsetrl -> login_getcapnum [color = "#35d53a"]
+setclasscontext -> login_getclass [color = "#5b8e44"]
+setclasscontext -> login_close [color = "#5b8e44"]
+setusercontext -> login_getclass [color = "#7eb75f"]
+setusercontext -> login_close [color = "#7eb75f"]
+setusercontext -> login_getcapnum [color = "#7eb75f"]
+setusercontext -> setlogin [color = "#7eb75f"]
+setuserpath -> login_setenv [color = "#35ed7d"]
+setuserenv -> login_setenv [color = "#a1aa6a"]
}
diff --git a/content/posts/WIP-how-bsd-authentication-works/graph.svg b/content/posts/WIP-how-bsd-authentication-works/graph.svg
index 40ddc41..3063fdf 100644
--- a/content/posts/WIP-how-bsd-authentication-works/graph.svg
+++ b/content/posts/WIP-how-bsd-authentication-works/graph.svg
@@ -45,8 +45,8 @@
<!-- auth_checknologin&#45;&gt;_auth_checknologin -->
<g id="edge1" class="edge">
<title>auth_checknologin&#45;&gt;_auth_checknologin</title>
-<path fill="none" stroke="black" d="M205.83,-1451C262.33,-1451 323.11,-1451 323.11,-1451 323.11,-1451 323.11,-1505.29 323.11,-1505.29"/>
-<polygon fill="black" stroke="black" points="319.61,-1505.29 323.11,-1515.29 326.61,-1505.29 319.61,-1505.29"/>
+<path fill="none" stroke="#f0bfd8" d="M205.83,-1451C262.33,-1451 323.11,-1451 323.11,-1451 323.11,-1451 323.11,-1505.29 323.11,-1505.29"/>
+<polygon fill="#f0bfd8" stroke="#f0bfd8" points="319.61,-1505.29 323.11,-1515.29 326.61,-1505.29 319.61,-1505.29"/>
</g>
<!-- auth_cat -->
<g id="node4" class="node">
@@ -57,8 +57,8 @@
<!-- _auth_checknologin&#45;&gt;auth_cat -->
<g id="edge4" class="edge">
<title>_auth_checknologin&#45;&gt;auth_cat</title>
-<path fill="none" stroke="black" d="M513.07,-1523C513.07,-1523 659.96,-1523 659.96,-1523"/>
-<polygon fill="black" stroke="black" points="659.96,-1526.5 669.96,-1523 659.96,-1519.5 659.96,-1526.5"/>
+<path fill="none" stroke="#f51748" d="M513.07,-1523C513.07,-1523 659.96,-1523 659.96,-1523"/>
+<polygon fill="#f51748" stroke="#f51748" points="659.96,-1526.5 669.96,-1523 659.96,-1519.5 659.96,-1526.5"/>
</g>
<!-- login_getcapstr -->
<g id="node39" class="node">
@@ -69,8 +69,8 @@
<!-- _auth_checknologin&#45;&gt;login_getcapstr -->
<g id="edge3" class="edge">
<title>_auth_checknologin&#45;&gt;login_getcapstr</title>
-<path fill="none" stroke="black" d="M447.11,-1540.01C447.11,-1677.79 447.11,-2606 447.11,-2606 447.11,-2606 1322.11,-2606 1322.11,-2606 1322.11,-2606 1322.11,-2614 1322.11,-2614"/>
-<polygon fill="black" stroke="black" points="1318.61,-2614 1322.11,-2624 1325.61,-2614 1318.61,-2614"/>
+<path fill="none" stroke="#f51748" d="M447.11,-1540.01C447.11,-1677.79 447.11,-2606 447.11,-2606 447.11,-2606 1322.11,-2606 1322.11,-2606 1322.11,-2606 1322.11,-2614 1322.11,-2614"/>
+<polygon fill="#f51748" stroke="#f51748" points="1318.61,-2614 1322.11,-2624 1325.61,-2614 1318.61,-2614"/>
</g>
<!-- login_getcapbool -->
<g id="node43" class="node">
@@ -81,8 +81,8 @@
<!-- _auth_checknologin&#45;&gt;login_getcapbool -->
<g id="edge2" class="edge">
<title>_auth_checknologin&#45;&gt;login_getcapbool</title>
-<path fill="none" stroke="black" d="M380.11,-1540.22C380.11,-1681.76 380.11,-2648 380.11,-2648 380.11,-2648 933.27,-2648 933.27,-2648"/>
-<polygon fill="black" stroke="black" points="933.27,-2651.5 943.27,-2648 933.27,-2644.5 933.27,-2651.5"/>
+<path fill="none" stroke="#f51748" d="M380.11,-1540.22C380.11,-1681.76 380.11,-2648 380.11,-2648 380.11,-2648 933.27,-2648 933.27,-2648"/>
+<polygon fill="#f51748" stroke="#f51748" points="933.27,-2651.5 943.27,-2648 933.27,-2644.5 933.27,-2651.5"/>
</g>
<!-- _auth_validuser -->
<g id="node5" class="node">
@@ -99,8 +99,8 @@
<!-- auth_approval&#45;&gt;_auth_validuser -->
<g id="edge7" class="edge">
<title>auth_approval&#45;&gt;_auth_validuser</title>
-<path fill="none" stroke="black" d="M770.36,-1354.2C838.28,-1354.2 950.11,-1354.2 950.11,-1354.2 950.11,-1354.2 950.11,-1390.97 950.11,-1390.97"/>
-<polygon fill="black" stroke="black" points="946.61,-1390.97 950.11,-1400.97 953.61,-1390.97 946.61,-1390.97"/>
+<path fill="none" stroke="#8f94eb" d="M769.08,-1354.5C837.41,-1354.5 952.11,-1354.5 952.11,-1354.5 952.11,-1354.5 952.11,-1390.11 952.11,-1390.11"/>
+<polygon fill="#8f94eb" stroke="#8f94eb" points="948.61,-1390.11 952.11,-1400.11 955.61,-1390.11 948.61,-1390.11"/>
</g>
<!-- auth_open -->
<g id="node12" class="node">
@@ -111,8 +111,8 @@
<!-- auth_approval&#45;&gt;auth_open -->
<g id="edge11" class="edge">
<title>auth_approval&#45;&gt;auth_open</title>
-<path fill="none" stroke="black" d="M794.15,-1339.8C845,-1339.8 903.11,-1339.8 903.11,-1339.8 903.11,-1339.8 903.11,-901.6 903.11,-901.6 903.11,-901.6 958.7,-901.6 958.7,-901.6"/>
-<polygon fill="black" stroke="black" points="958.7,-905.1 968.7,-901.6 958.7,-898.1 958.7,-905.1"/>
+<path fill="none" stroke="#8f94eb" d="M793.62,-1338.75C844.59,-1338.75 903.11,-1338.75 903.11,-1338.75 903.11,-1338.75 903.11,-901.6 903.11,-901.6 903.11,-901.6 958.7,-901.6 958.7,-901.6"/>
+<polygon fill="#8f94eb" stroke="#8f94eb" points="958.7,-905.1 968.7,-901.6 958.7,-898.1 958.7,-905.1"/>
</g>
<!-- auth_close -->
<g id="node14" class="node">
@@ -123,8 +123,8 @@
<!-- auth_approval&#45;&gt;auth_close -->
<g id="edge17" class="edge">
<title>auth_approval&#45;&gt;auth_close</title>
-<path fill="none" stroke="black" d="M793.08,-1337.4C837.32,-1337.4 885.11,-1337.4 885.11,-1337.4 885.11,-1337.4 885.11,-829.6 885.11,-829.6 885.11,-829.6 958.1,-829.6 958.1,-829.6"/>
-<polygon fill="black" stroke="black" points="958.1,-833.1 968.1,-829.6 958.1,-826.1 958.1,-833.1"/>
+<path fill="none" stroke="#8f94eb" d="M792.11,-1336.5C836.62,-1336.5 885.11,-1336.5 885.11,-1336.5 885.11,-1336.5 885.11,-829.6 885.11,-829.6 885.11,-829.6 958.1,-829.6 958.1,-829.6"/>
+<polygon fill="#8f94eb" stroke="#8f94eb" points="958.1,-833.1 968.1,-829.6 958.1,-826.1 958.1,-833.1"/>
</g>
<!-- auth_getitem -->
<g id="node18" class="node">
@@ -135,8 +135,8 @@
<!-- auth_approval&#45;&gt;auth_getitem -->
<g id="edge5" class="edge">
<title>auth_approval&#45;&gt;auth_getitem</title>
-<path fill="none" stroke="black" d="M770.46,-1327.8C804.52,-1327.8 843.11,-1327.8 843.11,-1327.8 843.11,-1327.8 843.11,-187 843.11,-187 843.11,-187 954.89,-187 954.89,-187"/>
-<polygon fill="black" stroke="black" points="954.89,-190.5 964.89,-187 954.89,-183.5 954.89,-190.5"/>
+<path fill="none" stroke="#8f94eb" d="M769.04,-1327.5C803.44,-1327.5 843.11,-1327.5 843.11,-1327.5 843.11,-1327.5 843.11,-187 843.11,-187 843.11,-187 954.89,-187 954.89,-187"/>
+<polygon fill="#8f94eb" stroke="#8f94eb" points="954.89,-190.5 964.89,-187 954.89,-183.5 954.89,-190.5"/>
</g>
<!-- auth_setitem -->
<g id="node19" class="node">
@@ -147,8 +147,8 @@
<!-- auth_approval&#45;&gt;auth_setitem -->
<g id="edge13" class="edge">
<title>auth_approval&#45;&gt;auth_setitem</title>
-<path fill="none" stroke="black" d="M792.95,-1344.6C958.07,-1344.6 1344.11,-1344.6 1344.11,-1344.6 1344.11,-1344.6 1344.11,-1123.09 1344.11,-1123.09"/>
-<polygon fill="black" stroke="black" points="1347.61,-1123.09 1344.11,-1113.09 1340.61,-1123.09 1347.61,-1123.09"/>
+<path fill="none" stroke="#8f94eb" d="M793.87,-1343.25C959.51,-1343.25 1344.11,-1343.25 1344.11,-1343.25 1344.11,-1343.25 1344.11,-1123.39 1344.11,-1123.39"/>
+<polygon fill="#8f94eb" stroke="#8f94eb" points="1347.61,-1123.39 1344.11,-1113.39 1340.61,-1123.39 1347.61,-1123.39"/>
</g>
<!-- auth_check_expire -->
<g id="node26" class="node">
@@ -159,8 +159,8 @@
<!-- auth_approval&#45;&gt;auth_check_expire -->
<g id="edge14" class="edge">
<title>auth_approval&#45;&gt;auth_check_expire</title>
-<path fill="none" stroke="black" d="M756.94,-1325.4C789.38,-1325.4 831.11,-1325.4 831.11,-1325.4 831.11,-1325.4 831.11,-112 831.11,-112 831.11,-112 926.65,-112 926.65,-112"/>
-<polygon fill="black" stroke="black" points="926.65,-115.5 936.65,-112 926.65,-108.5 926.65,-115.5"/>
+<path fill="none" stroke="#8f94eb" d="M755.71,-1325.25C788.31,-1325.25 831.11,-1325.25 831.11,-1325.25 831.11,-1325.25 831.11,-112 831.11,-112 831.11,-112 926.65,-112 926.65,-112"/>
+<polygon fill="#8f94eb" stroke="#8f94eb" points="926.65,-115.5 936.65,-112 926.65,-108.5 926.65,-115.5"/>
</g>
<!-- auth_call -->
<g id="node28" class="node">
@@ -171,8 +171,8 @@
<!-- auth_approval&#45;&gt;auth_call -->
<g id="edge16" class="edge">
<title>auth_approval&#45;&gt;auth_call</title>
-<path fill="none" stroke="black" d="M789.95,-1335C832.71,-1335 879.11,-1335 879.11,-1335 879.11,-1335 879.11,-544 879.11,-544 879.11,-544 967.69,-544 967.69,-544"/>
-<polygon fill="black" stroke="black" points="967.69,-547.5 977.69,-544 967.69,-540.5 967.69,-547.5"/>
+<path fill="none" stroke="#8f94eb" d="M789.02,-1334.25C832.04,-1334.25 879.11,-1334.25 879.11,-1334.25 879.11,-1334.25 879.11,-544 879.11,-544 879.11,-544 967.69,-544 967.69,-544"/>
+<polygon fill="#8f94eb" stroke="#8f94eb" points="967.69,-547.5 977.69,-544 967.69,-540.5 967.69,-547.5"/>
</g>
<!-- auth_setstate -->
<g id="node33" class="node">
@@ -183,8 +183,8 @@
<!-- auth_approval&#45;&gt;auth_setstate -->
<g id="edge12" class="edge">
<title>auth_approval&#45;&gt;auth_setstate</title>
-<path fill="none" stroke="black" d="M779.35,-1330.2C815.69,-1330.2 855.11,-1330.2 855.11,-1330.2 855.11,-1330.2 855.11,-259 855.11,-259 855.11,-259 953.62,-259 953.62,-259"/>
-<polygon fill="black" stroke="black" points="953.62,-262.5 963.62,-259 953.62,-255.5 953.62,-262.5"/>
+<path fill="none" stroke="#8f94eb" d="M778.17,-1329.75C814.83,-1329.75 855.11,-1329.75 855.11,-1329.75 855.11,-1329.75 855.11,-259 855.11,-259 855.11,-259 953.62,-259 953.62,-259"/>
+<polygon fill="#8f94eb" stroke="#8f94eb" points="953.62,-262.5 963.62,-259 953.62,-255.5 953.62,-262.5"/>
</g>
<!-- auth_getstate -->
<g id="node35" class="node">
@@ -195,8 +195,8 @@
<!-- auth_approval&#45;&gt;auth_getstate -->
<g id="edge18" class="edge">
<title>auth_approval&#45;&gt;auth_getstate</title>
-<path fill="none" stroke="black" d="M785.72,-1332.6C822.59,-1332.6 861.11,-1332.6 861.11,-1332.6 861.11,-1332.6 861.11,-328 861.11,-328 861.11,-328 946.84,-328 946.84,-328"/>
-<polygon fill="black" stroke="black" points="946.84,-331.5 956.84,-328 946.84,-324.5 946.84,-331.5"/>
+<path fill="none" stroke="#8f94eb" d="M784.48,-1332C821.71,-1332 861.11,-1332 861.11,-1332 861.11,-1332 861.11,-328 861.11,-328 861.11,-328 946.84,-328 946.84,-328"/>
+<polygon fill="#8f94eb" stroke="#8f94eb" points="946.84,-331.5 956.84,-328 946.84,-324.5 946.84,-331.5"/>
</g>
<!-- auth_getpwd -->
<g id="node36" class="node">
@@ -207,8 +207,8 @@
<!-- auth_approval&#45;&gt;auth_getpwd -->
<g id="edge6" class="edge">
<title>auth_approval&#45;&gt;auth_getpwd</title>
-<path fill="none" stroke="black" d="M794.26,-1342.2C849.49,-1342.2 915.11,-1342.2 915.11,-1342.2 915.11,-1342.2 915.11,-970 915.11,-970 915.11,-970 945.97,-970 945.97,-970"/>
-<polygon fill="black" stroke="black" points="945.97,-973.5 955.97,-970 945.97,-966.5 945.97,-973.5"/>
+<path fill="none" stroke="#8f94eb" d="M794.26,-1341C849.49,-1341 915.11,-1341 915.11,-1341 915.11,-1341 915.11,-970 915.11,-970 915.11,-970 945.97,-970 945.97,-970"/>
+<polygon fill="#8f94eb" stroke="#8f94eb" points="945.97,-973.5 955.97,-970 945.97,-966.5 945.97,-973.5"/>
</g>
<!-- login_getclass -->
<g id="node37" class="node">
@@ -219,20 +219,20 @@
<!-- auth_approval&#45;&gt;login_getclass -->
<g id="edge8" class="edge">
<title>auth_approval&#45;&gt;login_getclass</title>
-<path fill="none" stroke="black" d="M785.81,-1349.4C925.08,-1349.4 1235.11,-1349.4 1235.11,-1349.4 1235.11,-1349.4 1235.11,-2345 1235.11,-2345 1235.11,-2345 1246.91,-2345 1246.91,-2345"/>
-<polygon fill="black" stroke="black" points="1246.91,-2348.5 1256.91,-2345 1246.91,-2341.5 1246.91,-2348.5"/>
+<path fill="none" stroke="#8f94eb" d="M789,-1347.75C929.75,-1347.75 1235.11,-1347.75 1235.11,-1347.75 1235.11,-1347.75 1235.11,-2345 1235.11,-2345 1235.11,-2345 1246.91,-2345 1246.91,-2345"/>
+<polygon fill="#8f94eb" stroke="#8f94eb" points="1246.91,-2348.5 1256.91,-2345 1246.91,-2341.5 1246.91,-2348.5"/>
</g>
<!-- auth_approval&#45;&gt;login_getcapstr -->
<g id="edge10" class="edge">
<title>auth_approval&#45;&gt;login_getcapstr</title>
-<path fill="none" stroke="black" d="M779.3,-1351.8C891.47,-1351.8 1122.11,-1351.8 1122.11,-1351.8 1122.11,-1351.8 1122.11,-2636 1122.11,-2636 1122.11,-2636 1236.13,-2636 1236.13,-2636"/>
-<polygon fill="black" stroke="black" points="1236.13,-2639.5 1246.13,-2636 1236.13,-2632.5 1236.13,-2639.5"/>
+<path fill="none" stroke="#8f94eb" d="M784.6,-1350C898.56,-1350 1122.11,-1350 1122.11,-1350 1122.11,-1350 1122.11,-2636 1122.11,-2636 1122.11,-2636 1236.13,-2636 1236.13,-2636"/>
+<polygon fill="#8f94eb" stroke="#8f94eb" points="1236.13,-2639.5 1246.13,-2636 1236.13,-2632.5 1236.13,-2639.5"/>
</g>
<!-- auth_approval&#45;&gt;login_getcapbool -->
<g id="edge15" class="edge">
<title>auth_approval&#45;&gt;login_getcapbool</title>
-<path fill="none" stroke="black" d="M757,-1356.6C787.37,-1356.6 825.11,-1356.6 825.11,-1356.6 825.11,-1356.6 825.11,-2636 825.11,-2636 825.11,-2636 933.53,-2636 933.53,-2636"/>
-<polygon fill="black" stroke="black" points="933.53,-2639.5 943.53,-2636 933.53,-2632.5 933.53,-2639.5"/>
+<path fill="none" stroke="#8f94eb" d="M755.82,-1356.75C786.38,-1356.75 825.11,-1356.75 825.11,-1356.75 825.11,-1356.75 825.11,-2636 825.11,-2636 825.11,-2636 933.53,-2636 933.53,-2636"/>
+<polygon fill="#8f94eb" stroke="#8f94eb" points="933.53,-2639.5 943.53,-2636 933.53,-2632.5 933.53,-2639.5"/>
</g>
<!-- login_close -->
<g id="node44" class="node">
@@ -243,8 +243,8 @@
<!-- auth_approval&#45;&gt;login_close -->
<g id="edge9" class="edge">
<title>auth_approval&#45;&gt;login_close</title>
-<path fill="none" stroke="black" d="M789.94,-1347C931.32,-1347 1236.11,-1347 1236.11,-1347 1236.11,-1347 1236.11,-2271.2 1236.11,-2271.2 1236.11,-2271.2 1263.32,-2271.2 1263.32,-2271.2"/>
-<polygon fill="black" stroke="black" points="1263.32,-2274.7 1273.32,-2271.2 1263.32,-2267.7 1263.32,-2274.7"/>
+<path fill="none" stroke="#8f94eb" d="M791.84,-1345.5C934.03,-1345.5 1236.11,-1345.5 1236.11,-1345.5 1236.11,-1345.5 1236.11,-2271.2 1236.11,-2271.2 1236.11,-2271.2 1263.32,-2271.2 1263.32,-2271.2"/>
+<polygon fill="#8f94eb" stroke="#8f94eb" points="1263.32,-2274.7 1273.32,-2271.2 1263.32,-2267.7 1263.32,-2274.7"/>
</g>
<!-- auth_usercheck -->
<g id="node7" class="node">
@@ -255,8 +255,8 @@
<!-- auth_usercheck&#45;&gt;_auth_validuser -->
<g id="edge19" class="edge">
<title>auth_usercheck&#45;&gt;_auth_validuser</title>
-<path fill="none" stroke="black" d="M414.11,-1287C414.11,-1296 414.11,-1305 414.11,-1305 414.11,-1305 952.11,-1305 952.11,-1305 952.11,-1305 952.11,-1390.26 952.11,-1390.26"/>
-<polygon fill="black" stroke="black" points="948.61,-1390.26 952.11,-1400.26 955.61,-1390.26 948.61,-1390.26"/>
+<path fill="none" stroke="#96fc6d" d="M414.11,-1287C414.11,-1296 414.11,-1305 414.11,-1305 414.11,-1305 955.11,-1305 955.11,-1305 955.11,-1305 955.11,-1388.86 955.11,-1388.86"/>
+<polygon fill="#96fc6d" stroke="#96fc6d" points="951.61,-1388.86 955.11,-1398.86 958.61,-1388.86 951.61,-1388.86"/>
</g>
<!-- auth_verify -->
<g id="node11" class="node">
@@ -267,20 +267,20 @@
<!-- auth_usercheck&#45;&gt;auth_verify -->
<g id="edge26" class="edge">
<title>auth_usercheck&#45;&gt;auth_verify</title>
-<path fill="none" stroke="black" d="M478.54,-1258.2C478.54,-1258.2 660.32,-1258.2 660.32,-1258.2"/>
-<polygon fill="black" stroke="black" points="660.32,-1261.7 670.32,-1258.2 660.32,-1254.7 660.32,-1261.7"/>
+<path fill="none" stroke="#96fc6d" d="M478.54,-1258.2C478.54,-1258.2 660.32,-1258.2 660.32,-1258.2"/>
+<polygon fill="#96fc6d" stroke="#96fc6d" points="660.32,-1261.7 670.32,-1258.2 660.32,-1254.7 660.32,-1261.7"/>
</g>
<!-- auth_usercheck&#45;&gt;auth_open -->
<g id="edge23" class="edge">
<title>auth_usercheck&#45;&gt;auth_open</title>
-<path fill="none" stroke="black" d="M414.11,-1250.84C414.11,-1174.97 414.11,-887.2 414.11,-887.2 414.11,-887.2 969.22,-887.2 969.22,-887.2"/>
-<polygon fill="black" stroke="black" points="969.22,-890.7 979.22,-887.2 969.22,-883.7 969.22,-890.7"/>
+<path fill="none" stroke="#96fc6d" d="M414.11,-1250.84C414.11,-1174.97 414.11,-887.2 414.11,-887.2 414.11,-887.2 969.22,-887.2 969.22,-887.2"/>
+<polygon fill="#96fc6d" stroke="#96fc6d" points="969.22,-890.7 979.22,-887.2 969.22,-883.7 969.22,-890.7"/>
</g>
<!-- auth_usercheck&#45;&gt;auth_setitem -->
<g id="edge24" class="edge">
<title>auth_usercheck&#45;&gt;auth_setitem</title>
-<path fill="none" stroke="black" d="M454.11,-1253.23C454.11,-1208.49 454.11,-1084 454.11,-1084 454.11,-1084 1259.54,-1084 1259.54,-1084"/>
-<polygon fill="black" stroke="black" points="1259.54,-1087.5 1269.54,-1084 1259.54,-1080.5 1259.54,-1087.5"/>
+<path fill="none" stroke="#96fc6d" d="M454.11,-1253.23C454.11,-1208.49 454.11,-1084 454.11,-1084 454.11,-1084 1259.54,-1084 1259.54,-1084"/>
+<polygon fill="#96fc6d" stroke="#96fc6d" points="1259.54,-1087.5 1269.54,-1084 1259.54,-1080.5 1259.54,-1087.5"/>
</g>
<!-- auth_setdata -->
<g id="node23" class="node">
@@ -291,14 +291,14 @@
<!-- auth_usercheck&#45;&gt;auth_setdata -->
<g id="edge25" class="edge">
<title>auth_usercheck&#45;&gt;auth_setdata</title>
-<path fill="none" stroke="black" d="M373.11,-1253.31C373.11,-1109.65 373.11,-28 373.11,-28 373.11,-28 949.83,-28 949.83,-28"/>
-<polygon fill="black" stroke="black" points="949.83,-31.5 959.83,-28 949.83,-24.5 949.83,-31.5"/>
+<path fill="none" stroke="#96fc6d" d="M373.11,-1253.31C373.11,-1109.65 373.11,-28 373.11,-28 373.11,-28 949.83,-28 949.83,-28"/>
+<polygon fill="#96fc6d" stroke="#96fc6d" points="949.83,-31.5 959.83,-28 949.83,-24.5 949.83,-31.5"/>
</g>
<!-- auth_usercheck&#45;&gt;login_getclass -->
<g id="edge20" class="edge">
<title>auth_usercheck&#45;&gt;login_getclass</title>
-<path fill="none" stroke="black" d="M492.87,-1272.6C530.42,-1272.6 567.11,-1272.6 567.11,-1272.6 567.11,-1272.6 567.11,-2318 567.11,-2318 567.11,-2318 1256.11,-2318 1256.11,-2318 1256.11,-2318 1256.11,-2335.29 1256.11,-2335.29"/>
-<polygon fill="black" stroke="black" points="1252.61,-2335.29 1256.11,-2345.29 1259.61,-2335.29 1252.61,-2335.29"/>
+<path fill="none" stroke="#96fc6d" d="M492.87,-1272.6C530.42,-1272.6 567.11,-1272.6 567.11,-1272.6 567.11,-1272.6 567.11,-2318 567.11,-2318 567.11,-2318 1256.11,-2318 1256.11,-2318 1256.11,-2318 1256.11,-2335.29 1256.11,-2335.29"/>
+<polygon fill="#96fc6d" stroke="#96fc6d" points="1252.61,-2335.29 1256.11,-2345.29 1259.61,-2335.29 1252.61,-2335.29"/>
</g>
<!-- login_getstyle -->
<g id="node38" class="node">
@@ -309,32 +309,32 @@
<!-- auth_usercheck&#45;&gt;login_getstyle -->
<g id="edge21" class="edge">
<title>auth_usercheck&#45;&gt;login_getstyle</title>
-<path fill="none" stroke="black" d="M478.52,-1279.8C509.61,-1279.8 540.11,-1279.8 540.11,-1279.8 540.11,-1279.8 540.11,-2576 540.11,-2576 540.11,-2576 946.37,-2576 946.37,-2576"/>
-<polygon fill="black" stroke="black" points="946.38,-2579.5 956.37,-2576 946.37,-2572.5 946.38,-2579.5"/>
+<path fill="none" stroke="#96fc6d" d="M478.52,-1279.8C509.61,-1279.8 540.11,-1279.8 540.11,-1279.8 540.11,-1279.8 540.11,-2576 540.11,-2576 540.11,-2576 946.37,-2576 946.37,-2576"/>
+<polygon fill="#96fc6d" stroke="#96fc6d" points="946.38,-2579.5 956.37,-2576 946.37,-2572.5 946.38,-2579.5"/>
</g>
<!-- auth_usercheck&#45;&gt;login_close -->
<g id="edge22" class="edge">
<title>auth_usercheck&#45;&gt;login_close</title>
-<path fill="none" stroke="black" d="M493.09,-1265.4C541.54,-1265.4 594.11,-1265.4 594.11,-1265.4 594.11,-1265.4 594.11,-2246 594.11,-2246 594.11,-2246 1302.11,-2246 1302.11,-2246 1302.11,-2246 1302.11,-2254.84 1302.11,-2254.84"/>
-<polygon fill="black" stroke="black" points="1298.61,-2254.84 1302.11,-2264.84 1305.61,-2254.84 1298.61,-2254.84"/>
+<path fill="none" stroke="#96fc6d" d="M493.09,-1265.4C541.54,-1265.4 594.11,-1265.4 594.11,-1265.4 594.11,-1265.4 594.11,-2246 594.11,-2246 594.11,-2246 1302.11,-2246 1302.11,-2246 1302.11,-2246 1302.11,-2254.84 1302.11,-2254.84"/>
+<polygon fill="#96fc6d" stroke="#96fc6d" points="1298.61,-2254.84 1302.11,-2264.84 1305.61,-2254.84 1298.61,-2254.84"/>
</g>
<!-- auth_userokay -->
<g id="node8" class="node">
<title>auth_userokay</title>
-<ellipse fill="none" stroke="black" cx="110.89" cy="-1233" rx="76.89" ry="18"/>
+<ellipse fill="none" stroke="black" cx="110.89" cy="-1233" rx="76.09" ry="18"/>
<text text-anchor="middle" x="110.89" y="-1229.3" font-family="Times-Roman" font-size="14.00">auth_userokay</text>
</g>
<!-- auth_userokay&#45;&gt;auth_usercheck -->
<g id="edge27" class="edge">
<title>auth_userokay&#45;&gt;auth_usercheck</title>
-<path fill="none" stroke="black" d="M111.11,-1251C111.11,-1260 111.11,-1269 111.11,-1269 111.11,-1269 321.86,-1269 321.86,-1269"/>
-<polygon fill="black" stroke="black" points="321.86,-1272.5 331.86,-1269 321.86,-1265.5 321.86,-1272.5"/>
+<path fill="none" stroke="#3eb09b" d="M111.11,-1251C111.11,-1260 111.11,-1269 111.11,-1269 111.11,-1269 321.86,-1269 321.86,-1269"/>
+<polygon fill="#3eb09b" stroke="#3eb09b" points="321.86,-1272.5 331.86,-1269 321.86,-1265.5 321.86,-1272.5"/>
</g>
<!-- auth_userokay&#45;&gt;auth_close -->
<g id="edge28" class="edge">
<title>auth_userokay&#45;&gt;auth_close</title>
-<path fill="none" stroke="black" d="M111.11,-1214.78C111.11,-1134.36 111.11,-815.2 111.11,-815.2 111.11,-815.2 968.76,-815.2 968.76,-815.2"/>
-<polygon fill="black" stroke="black" points="968.76,-818.7 978.76,-815.2 968.76,-811.7 968.76,-818.7"/>
+<path fill="none" stroke="#3eb09b" d="M111.11,-1214.78C111.11,-1134.36 111.11,-815.2 111.11,-815.2 111.11,-815.2 968.76,-815.2 968.76,-815.2"/>
+<polygon fill="#3eb09b" stroke="#3eb09b" points="968.76,-818.7 978.76,-815.2 968.76,-811.7 968.76,-818.7"/>
</g>
<!-- auth_userchallenge -->
<g id="node9" class="node">
@@ -345,20 +345,20 @@
<!-- auth_userchallenge&#45;&gt;_auth_validuser -->
<g id="edge29" class="edge">
<title>auth_userchallenge&#45;&gt;_auth_validuser</title>
-<path fill="none" stroke="black" d="M811.34,-1419.8C811.34,-1419.8 953.93,-1419.8 953.93,-1419.8"/>
-<polygon fill="black" stroke="black" points="953.93,-1423.3 963.93,-1419.8 953.93,-1416.3 953.93,-1423.3"/>
+<path fill="none" stroke="#0db8d4" d="M811.34,-1419.8C811.34,-1419.8 953.93,-1419.8 953.93,-1419.8"/>
+<polygon fill="#0db8d4" stroke="#0db8d4" points="953.93,-1423.3 963.93,-1419.8 953.93,-1416.3 953.93,-1423.3"/>
</g>
<!-- auth_userchallenge&#45;&gt;auth_open -->
<g id="edge32" class="edge">
<title>auth_userchallenge&#45;&gt;auth_open</title>
-<path fill="none" stroke="black" d="M813.45,-1407.4C861.14,-1407.4 909.11,-1407.4 909.11,-1407.4 909.11,-1407.4 909.11,-908.8 909.11,-908.8 909.11,-908.8 969.28,-908.8 969.28,-908.8"/>
-<polygon fill="black" stroke="black" points="969.28,-912.3 979.28,-908.8 969.28,-905.3 969.28,-912.3"/>
+<path fill="none" stroke="#0db8d4" d="M813.45,-1407.4C861.14,-1407.4 909.11,-1407.4 909.11,-1407.4 909.11,-1407.4 909.11,-908.8 909.11,-908.8 909.11,-908.8 969.28,-908.8 969.28,-908.8"/>
+<polygon fill="#0db8d4" stroke="#0db8d4" points="969.28,-912.3 979.28,-908.8 969.28,-905.3 969.28,-912.3"/>
</g>
<!-- auth_userchallenge&#45;&gt;auth_close -->
<g id="edge35" class="edge">
<title>auth_userchallenge&#45;&gt;auth_close</title>
-<path fill="none" stroke="black" d="M794.25,-1401.2C840.5,-1401.2 891.11,-1401.2 891.11,-1401.2 891.11,-1401.2 891.11,-836.8 891.11,-836.8 891.11,-836.8 968.62,-836.8 968.62,-836.8"/>
-<polygon fill="black" stroke="black" points="968.62,-840.3 978.62,-836.8 968.62,-833.3 968.62,-840.3"/>
+<path fill="none" stroke="#0db8d4" d="M794.25,-1401.2C840.5,-1401.2 891.11,-1401.2 891.11,-1401.2 891.11,-1401.2 891.11,-836.8 891.11,-836.8 891.11,-836.8 968.62,-836.8 968.62,-836.8"/>
+<polygon fill="#0db8d4" stroke="#0db8d4" points="968.62,-840.3 978.62,-836.8 968.62,-833.3 968.62,-840.3"/>
</g>
<!-- auth_challenge -->
<g id="node15" class="node">
@@ -369,116 +369,116 @@
<!-- auth_userchallenge&#45;&gt;auth_challenge -->
<g id="edge36" class="edge">
<title>auth_userchallenge&#45;&gt;auth_challenge</title>
-<path fill="none" stroke="black" d="M806.11,-1404.07C806.11,-1392.7 806.11,-1374.5 806.11,-1374.5 806.11,-1374.5 961.11,-1374.5 961.11,-1374.5 961.11,-1374.5 961.11,-1062.69 961.11,-1062.69"/>
-<polygon fill="black" stroke="black" points="964.61,-1062.69 961.11,-1052.69 957.61,-1062.69 964.61,-1062.69"/>
+<path fill="none" stroke="#0db8d4" d="M805.11,-1403.77C805.11,-1386.78 805.11,-1352.25 805.11,-1352.25 805.11,-1352.25 950.11,-1352.25 950.11,-1352.25 950.11,-1352.25 950.11,-1057.65 950.11,-1057.65"/>
+<polygon fill="#0db8d4" stroke="#0db8d4" points="953.61,-1057.65 950.11,-1047.65 946.61,-1057.65 953.61,-1057.65"/>
</g>
<!-- auth_userchallenge&#45;&gt;auth_setitem -->
<g id="edge34" class="edge">
<title>auth_userchallenge&#45;&gt;auth_setitem</title>
-<path fill="none" stroke="black" d="M818.21,-1413.6C869.31,-1413.6 921.11,-1413.6 921.11,-1413.6 921.11,-1413.6 921.11,-1090 921.11,-1090 921.11,-1090 1245.85,-1090 1245.85,-1090"/>
-<polygon fill="black" stroke="black" points="1245.85,-1093.5 1255.85,-1090 1245.85,-1086.5 1245.85,-1093.5"/>
+<path fill="none" stroke="#0db8d4" d="M818.21,-1413.6C869.31,-1413.6 921.11,-1413.6 921.11,-1413.6 921.11,-1413.6 921.11,-1090 921.11,-1090 921.11,-1090 1245.85,-1090 1245.85,-1090"/>
+<polygon fill="#0db8d4" stroke="#0db8d4" points="1245.85,-1093.5 1255.85,-1090 1245.85,-1086.5 1245.85,-1093.5"/>
</g>
<!-- auth_userchallenge&#45;&gt;login_getclass -->
<g id="edge30" class="edge">
<title>auth_userchallenge&#45;&gt;login_getclass</title>
-<path fill="none" stroke="black" d="M794.11,-1424.9C794.11,-1527.24 794.11,-2255 794.11,-2255 794.11,-2255 1260.11,-2255 1260.11,-2255 1260.11,-2255 1260.11,-2333.78 1260.11,-2333.78"/>
-<polygon fill="black" stroke="black" points="1256.61,-2333.78 1260.11,-2343.78 1263.61,-2333.78 1256.61,-2333.78"/>
+<path fill="none" stroke="#0db8d4" d="M794.11,-1424.9C794.11,-1527.24 794.11,-2255 794.11,-2255 794.11,-2255 1260.11,-2255 1260.11,-2255 1260.11,-2255 1260.11,-2333.78 1260.11,-2333.78"/>
+<polygon fill="#0db8d4" stroke="#0db8d4" points="1256.61,-2333.78 1260.11,-2343.78 1263.61,-2333.78 1256.61,-2333.78"/>
</g>
<!-- auth_userchallenge&#45;&gt;login_getstyle -->
<g id="edge31" class="edge">
<title>auth_userchallenge&#45;&gt;login_getstyle</title>
-<path fill="none" stroke="black" d="M782.11,-1427.14C782.11,-1558.69 782.11,-2564 782.11,-2564 782.11,-2564 946.21,-2564 946.21,-2564"/>
-<polygon fill="black" stroke="black" points="946.21,-2567.5 956.21,-2564 946.21,-2560.5 946.21,-2567.5"/>
+<path fill="none" stroke="#0db8d4" d="M782.11,-1427.14C782.11,-1558.69 782.11,-2564 782.11,-2564 782.11,-2564 946.21,-2564 946.21,-2564"/>
+<polygon fill="#0db8d4" stroke="#0db8d4" points="946.21,-2567.5 956.21,-2564 946.21,-2560.5 946.21,-2567.5"/>
</g>
<!-- auth_userchallenge&#45;&gt;login_close -->
<g id="edge33" class="edge">
<title>auth_userchallenge&#45;&gt;login_close</title>
-<path fill="none" stroke="black" d="M806.11,-1421.7C806.11,-1509.76 806.11,-2237 806.11,-2237 806.11,-2237 1342.11,-2237 1342.11,-2237 1342.11,-2237 1342.11,-2254.99 1342.11,-2254.99"/>
-<polygon fill="black" stroke="black" points="1338.61,-2254.99 1342.11,-2264.99 1345.61,-2254.99 1338.61,-2254.99"/>
+<path fill="none" stroke="#0db8d4" d="M806.11,-1421.7C806.11,-1509.76 806.11,-2237 806.11,-2237 806.11,-2237 1342.11,-2237 1342.11,-2237 1342.11,-2237 1342.11,-2254.99 1342.11,-2254.99"/>
+<polygon fill="#0db8d4" stroke="#0db8d4" points="1338.61,-2254.99 1342.11,-2264.99 1345.61,-2254.99 1338.61,-2254.99"/>
</g>
<!-- auth_userresponse -->
<g id="node10" class="node">
<title>auth_userresponse</title>
-<ellipse fill="none" stroke="black" cx="719.46" cy="-1197" rx="96.68" ry="18"/>
+<ellipse fill="none" stroke="black" cx="719.46" cy="-1197" rx="96.38" ry="18"/>
<text text-anchor="middle" x="719.46" y="-1193.3" font-family="Times-Roman" font-size="14.00">auth_userresponse</text>
</g>
<!-- auth_userresponse&#45;&gt;_auth_validuser -->
<g id="edge39" class="edge">
<title>auth_userresponse&#45;&gt;_auth_validuser</title>
-<path fill="none" stroke="black" d="M816.52,-1197C882.6,-1197 958.11,-1197 958.11,-1197 958.11,-1197 958.11,-1387.82 958.11,-1387.82"/>
-<polygon fill="black" stroke="black" points="954.61,-1387.82 958.11,-1397.82 961.61,-1387.82 954.61,-1387.82"/>
+<path fill="none" stroke="#cc7ac2" d="M815.66,-1197C883.05,-1197 961.11,-1197 961.11,-1197 961.11,-1197 961.11,-1386.95 961.11,-1386.95"/>
+<polygon fill="#cc7ac2" stroke="#cc7ac2" points="957.61,-1386.95 961.11,-1396.95 964.61,-1386.95 957.61,-1386.95"/>
</g>
<!-- auth_userresponse&#45;&gt;auth_close -->
<g id="edge40" class="edge">
<title>auth_userresponse&#45;&gt;auth_close</title>
-<path fill="none" stroke="black" d="M789.11,-1184.11C789.11,-1118.24 789.11,-822.4 789.11,-822.4 789.11,-822.4 958.12,-822.4 958.12,-822.4"/>
-<polygon fill="black" stroke="black" points="958.12,-825.9 968.12,-822.4 958.12,-818.9 958.12,-825.9"/>
+<path fill="none" stroke="#cc7ac2" d="M789.11,-1184.54C789.11,-1119.54 789.11,-822.4 789.11,-822.4 789.11,-822.4 958.12,-822.4 958.12,-822.4"/>
+<polygon fill="#cc7ac2" stroke="#cc7ac2" points="958.12,-825.9 968.12,-822.4 958.12,-818.9 958.12,-825.9"/>
</g>
<!-- auth_userresponse&#45;&gt;auth_getitem -->
<g id="edge38" class="edge">
<title>auth_userresponse&#45;&gt;auth_getitem</title>
-<path fill="none" stroke="black" d="M706.11,-1179.16C706.11,-1042.65 706.11,-169 706.11,-169 706.11,-169 954.83,-169 954.83,-169"/>
-<polygon fill="black" stroke="black" points="954.83,-172.5 964.83,-169 954.83,-165.5 954.83,-172.5"/>
+<path fill="none" stroke="#cc7ac2" d="M706.11,-1179.16C706.11,-1042.65 706.11,-169 706.11,-169 706.11,-169 954.83,-169 954.83,-169"/>
+<polygon fill="#cc7ac2" stroke="#cc7ac2" points="954.83,-172.5 964.83,-169 954.83,-165.5 954.83,-172.5"/>
</g>
<!-- auth_userresponse&#45;&gt;auth_setdata -->
<g id="edge41" class="edge">
<title>auth_userresponse&#45;&gt;auth_setdata</title>
-<path fill="none" stroke="black" d="M651.11,-1184.01C651.11,-1056.89 651.11,-40 651.11,-40 651.11,-40 950.01,-40 950.01,-40"/>
-<polygon fill="black" stroke="black" points="950.01,-43.5 960.01,-40 950.01,-36.5 950.01,-43.5"/>
+<path fill="none" stroke="#cc7ac2" d="M651.11,-1184.01C651.11,-1056.89 651.11,-40 651.11,-40 651.11,-40 950.01,-40 950.01,-40"/>
+<polygon fill="#cc7ac2" stroke="#cc7ac2" points="950.01,-43.5 960.01,-40 950.01,-36.5 950.01,-43.5"/>
</g>
<!-- auth_userresponse&#45;&gt;auth_check_expire -->
<g id="edge43" class="edge">
<title>auth_userresponse&#45;&gt;auth_check_expire</title>
-<path fill="none" stroke="black" d="M678.11,-1180.64C678.11,-1044.18 678.11,-100 678.11,-100 678.11,-100 926.63,-100 926.63,-100"/>
-<polygon fill="black" stroke="black" points="926.63,-103.5 936.63,-100 926.63,-96.5 926.63,-103.5"/>
+<path fill="none" stroke="#cc7ac2" d="M679.11,-1180.64C679.11,-1044.18 679.11,-100 679.11,-100 679.11,-100 926.44,-100 926.44,-100"/>
+<polygon fill="#cc7ac2" stroke="#cc7ac2" points="926.44,-103.5 936.44,-100 926.44,-96.5 926.44,-103.5"/>
</g>
<!-- auth_userresponse&#45;&gt;auth_setstate -->
<g id="edge37" class="edge">
<title>auth_userresponse&#45;&gt;auth_setstate</title>
-<path fill="none" stroke="black" d="M734.11,-1179.18C734.11,-1048.3 734.11,-241 734.11,-241 734.11,-241 953.49,-241 953.49,-241"/>
-<polygon fill="black" stroke="black" points="953.49,-244.5 963.49,-241 953.49,-237.5 953.49,-244.5"/>
+<path fill="none" stroke="#cc7ac2" d="M734.11,-1179.18C734.11,-1048.3 734.11,-241 734.11,-241 734.11,-241 953.49,-241 953.49,-241"/>
+<polygon fill="#cc7ac2" stroke="#cc7ac2" points="953.49,-244.5 963.49,-241 953.49,-237.5 953.49,-244.5"/>
</g>
<!-- auth_userresponse&#45;&gt;auth_getstate -->
<g id="edge42" class="edge">
<title>auth_userresponse&#45;&gt;auth_getstate</title>
-<path fill="none" stroke="black" d="M761.11,-1180.57C761.11,-1059.97 761.11,-316 761.11,-316 761.11,-316 946.86,-316 946.86,-316"/>
-<polygon fill="black" stroke="black" points="946.86,-319.5 956.86,-316 946.86,-312.5 946.86,-319.5"/>
+<path fill="none" stroke="#cc7ac2" d="M761.11,-1180.57C761.11,-1059.97 761.11,-316 761.11,-316 761.11,-316 946.86,-316 946.86,-316"/>
+<polygon fill="#cc7ac2" stroke="#cc7ac2" points="946.86,-319.5 956.86,-316 946.86,-312.5 946.86,-319.5"/>
</g>
<!-- auth_verify&#45;&gt;_auth_validuser -->
<g id="edge48" class="edge">
<title>auth_verify&#45;&gt;_auth_validuser</title>
-<path fill="none" stroke="black" d="M759.97,-1282.5C827.34,-1282.5 955.11,-1282.5 955.11,-1282.5 955.11,-1282.5 955.11,-1388.97 955.11,-1388.97"/>
-<polygon fill="black" stroke="black" points="951.61,-1388.97 955.11,-1398.97 958.61,-1388.97 951.61,-1388.97"/>
+<path fill="none" stroke="#83192f" d="M759.94,-1282.5C828.03,-1282.5 958.11,-1282.5 958.11,-1282.5 958.11,-1282.5 958.11,-1387.73 958.11,-1387.73"/>
+<polygon fill="#83192f" stroke="#83192f" points="954.61,-1387.73 958.11,-1397.73 961.61,-1387.73 954.61,-1387.73"/>
</g>
<!-- auth_verify&#45;&gt;auth_open -->
<g id="edge44" class="edge">
<title>auth_verify&#45;&gt;auth_open</title>
-<path fill="none" stroke="black" d="M778.61,-1273.5C830.29,-1273.5 897.11,-1273.5 897.11,-1273.5 897.11,-1273.5 897.11,-894.4 897.11,-894.4 897.11,-894.4 958.92,-894.4 958.92,-894.4"/>
-<polygon fill="black" stroke="black" points="958.92,-897.9 968.92,-894.4 958.92,-890.9 958.92,-897.9"/>
+<path fill="none" stroke="#83192f" d="M778.61,-1273.5C830.29,-1273.5 897.11,-1273.5 897.11,-1273.5 897.11,-1273.5 897.11,-894.4 897.11,-894.4 897.11,-894.4 958.92,-894.4 958.92,-894.4"/>
+<polygon fill="#83192f" stroke="#83192f" points="958.92,-897.9 968.92,-894.4 958.92,-890.9 958.92,-897.9"/>
</g>
<!-- auth_verify&#45;&gt;auth_getitem -->
<g id="edge47" class="edge">
<title>auth_verify&#45;&gt;auth_getitem</title>
-<path fill="none" stroke="black" d="M759.94,-1255.5C793.98,-1255.5 837.11,-1255.5 837.11,-1255.5 837.11,-1255.5 837.11,-178 837.11,-178 837.11,-178 945.47,-178 945.47,-178"/>
-<polygon fill="black" stroke="black" points="945.47,-181.5 955.47,-178 945.47,-174.5 945.47,-181.5"/>
+<path fill="none" stroke="#83192f" d="M759.94,-1255.5C793.98,-1255.5 837.11,-1255.5 837.11,-1255.5 837.11,-1255.5 837.11,-178 837.11,-178 837.11,-178 945.47,-178 945.47,-178"/>
+<polygon fill="#83192f" stroke="#83192f" points="945.47,-181.5 955.47,-178 945.47,-174.5 945.47,-181.5"/>
</g>
<!-- auth_verify&#45;&gt;auth_setitem -->
<g id="edge46" class="edge">
<title>auth_verify&#45;&gt;auth_setitem</title>
-<path fill="none" stroke="black" d="M772.43,-1278C915.53,-1278 1299.11,-1278 1299.11,-1278 1299.11,-1278 1299.11,-1123.12 1299.11,-1123.12"/>
-<polygon fill="black" stroke="black" points="1302.61,-1123.12 1299.11,-1113.12 1295.61,-1123.12 1302.61,-1123.12"/>
+<path fill="none" stroke="#83192f" d="M772.43,-1278C915.53,-1278 1299.11,-1278 1299.11,-1278 1299.11,-1278 1299.11,-1123.12 1299.11,-1123.12"/>
+<polygon fill="#83192f" stroke="#83192f" points="1302.61,-1123.12 1299.11,-1113.12 1295.61,-1123.12 1302.61,-1123.12"/>
</g>
<!-- auth_verify&#45;&gt;auth_call -->
<g id="edge50" class="edge">
<title>auth_verify&#45;&gt;auth_call</title>
-<path fill="none" stroke="black" d="M780.62,-1269C823.47,-1269 873.11,-1269 873.11,-1269 873.11,-1269 873.11,-532 873.11,-532 873.11,-532 967.83,-532 967.83,-532"/>
-<polygon fill="black" stroke="black" points="967.83,-535.5 977.83,-532 967.83,-528.5 967.83,-535.5"/>
+<path fill="none" stroke="#83192f" d="M780.62,-1269C823.47,-1269 873.11,-1269 873.11,-1269 873.11,-1269 873.11,-532 873.11,-532 873.11,-532 967.83,-532 967.83,-532"/>
+<polygon fill="#83192f" stroke="#83192f" points="967.83,-535.5 977.83,-532 967.83,-528.5 967.83,-535.5"/>
</g>
<!-- auth_verify&#45;&gt;auth_setstate -->
<g id="edge45" class="edge">
<title>auth_verify&#45;&gt;auth_setstate</title>
-<path fill="none" stroke="black" d="M772.56,-1260C808.37,-1260 849.11,-1260 849.11,-1260 849.11,-1260 849.11,-250 849.11,-250 849.11,-250 944.12,-250 944.12,-250"/>
-<polygon fill="black" stroke="black" points="944.12,-253.5 954.12,-250 944.12,-246.5 944.12,-253.5"/>
+<path fill="none" stroke="#83192f" d="M772.56,-1260C808.37,-1260 849.11,-1260 849.11,-1260 849.11,-1260 849.11,-250 849.11,-250 849.11,-250 944.12,-250 944.12,-250"/>
+<polygon fill="#83192f" stroke="#83192f" points="944.12,-253.5 954.12,-250 944.12,-246.5 944.12,-253.5"/>
</g>
<!-- auth_set_va_list -->
<g id="node34" class="node">
@@ -489,8 +489,8 @@
<!-- auth_verify&#45;&gt;auth_set_va_list -->
<g id="edge49" class="edge">
<title>auth_verify&#45;&gt;auth_set_va_list</title>
-<path fill="none" stroke="black" d="M778.66,-1264.5C819.74,-1264.5 867.11,-1264.5 867.11,-1264.5 867.11,-1264.5 867.11,-466 867.11,-466 867.11,-466 933.61,-466 933.61,-466"/>
-<polygon fill="black" stroke="black" points="933.61,-469.5 943.61,-466 933.61,-462.5 933.61,-469.5"/>
+<path fill="none" stroke="#83192f" d="M778.66,-1264.5C819.74,-1264.5 867.11,-1264.5 867.11,-1264.5 867.11,-1264.5 867.11,-466 867.11,-466 867.11,-466 933.61,-466 933.61,-466"/>
+<polygon fill="#83192f" stroke="#83192f" points="933.61,-469.5 943.61,-466 933.61,-462.5 933.61,-469.5"/>
</g>
<!-- auth_clean -->
<g id="node13" class="node">
@@ -507,14 +507,14 @@
<!-- auth_clean&#45;&gt;auth_clrenv -->
<g id="edge51" class="edge">
<title>auth_clean&#45;&gt;auth_clrenv</title>
-<path fill="none" stroke="black" d="M1062.03,-1099.6C1122.48,-1099.6 1237.11,-1099.6 1237.11,-1099.6 1237.11,-1099.6 1237.11,-724 1237.11,-724 1237.11,-724 1251.98,-724 1251.98,-724"/>
-<polygon fill="black" stroke="black" points="1251.98,-727.5 1261.98,-724 1251.98,-720.5 1251.98,-727.5"/>
+<path fill="none" stroke="#759227" d="M1062.03,-1099.6C1122.48,-1099.6 1237.11,-1099.6 1237.11,-1099.6 1237.11,-1099.6 1237.11,-724 1237.11,-724 1237.11,-724 1251.98,-724 1251.98,-724"/>
+<polygon fill="#759227" stroke="#759227" points="1251.98,-727.5 1261.98,-724 1251.98,-720.5 1251.98,-727.5"/>
</g>
<!-- auth_clean&#45;&gt;auth_setitem -->
<g id="edge52" class="edge">
<title>auth_clean&#45;&gt;auth_setitem</title>
-<path fill="none" stroke="black" d="M1073.55,-1103.2C1073.55,-1103.2 1247.7,-1103.2 1247.7,-1103.2"/>
-<polygon fill="black" stroke="black" points="1247.7,-1106.7 1257.7,-1103.2 1247.7,-1099.7 1247.7,-1106.7"/>
+<path fill="none" stroke="#759227" d="M1073.55,-1103.2C1073.55,-1103.2 1247.7,-1103.2 1247.7,-1103.2"/>
+<polygon fill="#759227" stroke="#759227" points="1247.7,-1106.7 1257.7,-1103.2 1247.7,-1099.7 1247.7,-1106.7"/>
</g>
<!-- auth_setenv -->
<g id="node16" class="node">
@@ -525,14 +525,14 @@
<!-- auth_close&#45;&gt;auth_setenv -->
<g id="edge53" class="edge">
<title>auth_close&#45;&gt;auth_setenv</title>
-<path fill="none" stroke="black" d="M1084.49,-826C1084.49,-826 1245.62,-826 1245.62,-826"/>
-<polygon fill="black" stroke="black" points="1245.62,-829.5 1255.62,-826 1245.62,-822.5 1245.62,-829.5"/>
+<path fill="none" stroke="#4a5505" d="M1084.49,-826C1084.49,-826 1245.62,-826 1245.62,-826"/>
+<polygon fill="#4a5505" stroke="#4a5505" points="1245.62,-829.5 1255.62,-826 1245.62,-822.5 1245.62,-829.5"/>
</g>
<!-- auth_challenge&#45;&gt;_auth_validuser -->
<g id="edge54" class="edge">
<title>auth_challenge&#45;&gt;_auth_validuser</title>
-<path fill="none" stroke="black" d="M964.11,-1053.35C964.11,-1053.35 964.11,-1386.05 964.11,-1386.05"/>
-<polygon fill="black" stroke="black" points="960.61,-1386.05 964.11,-1396.05 967.61,-1386.05 960.61,-1386.05"/>
+<path fill="none" stroke="#5e3ac3" d="M964.11,-1053.35C964.11,-1053.35 964.11,-1386.05 964.11,-1386.05"/>
+<polygon fill="#5e3ac3" stroke="#5e3ac3" points="960.61,-1386.05 964.11,-1396.05 967.61,-1386.05 960.61,-1386.05"/>
</g>
<!-- auth_getvalue -->
<g id="node25" class="node">
@@ -543,20 +543,20 @@
<!-- auth_challenge&#45;&gt;auth_getvalue -->
<g id="edge55" class="edge">
<title>auth_challenge&#45;&gt;auth_getvalue</title>
-<path fill="none" stroke="black" d="M1094.68,-1033C1094.68,-1033 1246.74,-1033 1246.74,-1033"/>
-<polygon fill="black" stroke="black" points="1246.74,-1036.5 1256.74,-1033 1246.74,-1029.5 1246.74,-1036.5"/>
+<path fill="none" stroke="#5e3ac3" d="M1094.68,-1033C1094.68,-1033 1246.74,-1033 1246.74,-1033"/>
+<polygon fill="#5e3ac3" stroke="#5e3ac3" points="1246.74,-1036.5 1256.74,-1033 1246.74,-1029.5 1246.74,-1036.5"/>
</g>
<!-- auth_setitem&#45;&gt;_auth_validuser -->
<g id="edge57" class="edge">
<title>auth_setitem&#45;&gt;_auth_validuser</title>
-<path fill="none" stroke="black" d="M1265.8,-1106.8C1199.05,-1106.8 1096.11,-1106.8 1096.11,-1106.8 1096.11,-1106.8 1096.11,-1388.99 1096.11,-1388.99"/>
-<polygon fill="black" stroke="black" points="1092.61,-1388.99 1096.11,-1398.99 1099.61,-1388.99 1092.61,-1388.99"/>
+<path fill="none" stroke="#e67693" d="M1265.8,-1106.8C1199.05,-1106.8 1096.11,-1106.8 1096.11,-1106.8 1096.11,-1106.8 1096.11,-1388.99 1096.11,-1388.99"/>
+<polygon fill="#e67693" stroke="#e67693" points="1092.61,-1388.99 1096.11,-1398.99 1099.61,-1388.99 1092.61,-1388.99"/>
</g>
<!-- auth_setitem&#45;&gt;auth_setitem -->
<g id="edge56" class="edge">
<title>auth_setitem&#45;&gt;auth_setitem</title>
-<path fill="none" stroke="black" d="M1279.43,-1110.4C1259.97,-1110.4 1241.11,-1110.4 1241.11,-1110.4 1241.11,-1110.4 1241.11,-1123 1241.11,-1123 1241.11,-1123 1406.11,-1123 1406.11,-1123 1406.11,-1123 1406.11,-1096 1406.11,-1096 1406.11,-1096 1401.37,-1096 1401.37,-1096"/>
-<polygon fill="black" stroke="black" points="1401.37,-1092.5 1391.37,-1096 1401.37,-1099.5 1401.37,-1092.5"/>
+<path fill="none" stroke="#e67693" d="M1279.43,-1110.4C1259.97,-1110.4 1241.11,-1110.4 1241.11,-1110.4 1241.11,-1110.4 1241.11,-1123 1241.11,-1123 1241.11,-1123 1406.11,-1123 1406.11,-1123 1406.11,-1123 1406.11,-1096 1406.11,-1096 1406.11,-1096 1401.37,-1096 1401.37,-1096"/>
+<polygon fill="#e67693" stroke="#e67693" points="1401.37,-1092.5 1391.37,-1096 1401.37,-1099.5 1401.37,-1092.5"/>
</g>
<!-- auth_setoption -->
<g id="node20" class="node">
@@ -585,8 +585,8 @@
<!-- auth_check_expire&#45;&gt;auth_setpwd -->
<g id="edge58" class="edge">
<title>auth_check_expire&#45;&gt;auth_setpwd</title>
-<path fill="none" stroke="black" d="M1113.11,-113.03C1113.11,-141.15 1113.11,-244 1113.11,-244 1113.11,-244 1247.01,-244 1247.01,-244"/>
-<polygon fill="black" stroke="black" points="1247.01,-247.5 1257.01,-244 1247.01,-240.5 1247.01,-247.5"/>
+<path fill="none" stroke="#739550" d="M1113.11,-113.03C1113.11,-141.15 1113.11,-244 1113.11,-244 1113.11,-244 1247.01,-244 1247.01,-244"/>
+<polygon fill="#739550" stroke="#739550" points="1247.01,-247.5 1257.01,-244 1247.01,-240.5 1247.01,-247.5"/>
</g>
<!-- auth_check_change -->
<g id="node27" class="node">
@@ -597,14 +597,14 @@
<!-- auth_check_change&#45;&gt;auth_setpwd -->
<g id="edge59" class="edge">
<title>auth_check_change&#45;&gt;auth_setpwd</title>
-<path fill="none" stroke="black" d="M1106.11,-383.17C1106.11,-350.64 1106.11,-256 1106.11,-256 1106.11,-256 1246.89,-256 1246.89,-256"/>
-<polygon fill="black" stroke="black" points="1246.89,-259.5 1256.89,-256 1246.89,-252.5 1246.89,-259.5"/>
+<path fill="none" stroke="#902d9d" d="M1106.11,-383.17C1106.11,-350.64 1106.11,-256 1106.11,-256 1106.11,-256 1246.89,-256 1246.89,-256"/>
+<polygon fill="#902d9d" stroke="#902d9d" points="1246.89,-259.5 1256.89,-256 1246.89,-252.5 1246.89,-259.5"/>
</g>
<!-- auth_call&#45;&gt;auth_clrenv -->
<g id="edge63" class="edge">
<title>auth_call&#45;&gt;auth_clrenv</title>
-<path fill="none" stroke="black" d="M1066.33,-548.8C1128.25,-548.8 1239.11,-548.8 1239.11,-548.8 1239.11,-548.8 1239.11,-712 1239.11,-712 1239.11,-712 1252.06,-712 1252.06,-712"/>
-<polygon fill="black" stroke="black" points="1252.06,-715.5 1262.06,-712 1252.06,-708.5 1252.06,-715.5"/>
+<path fill="none" stroke="#a9e6c9" d="M1066.33,-548.8C1128.25,-548.8 1239.11,-548.8 1239.11,-548.8 1239.11,-548.8 1239.11,-712 1239.11,-712 1239.11,-712 1252.06,-712 1252.06,-712"/>
+<polygon fill="#a9e6c9" stroke="#a9e6c9" points="1252.06,-715.5 1262.06,-712 1252.06,-708.5 1252.06,-715.5"/>
</g>
<!-- _auth_spool -->
<g id="node30" class="node">
@@ -615,20 +615,20 @@
<!-- auth_call&#45;&gt;_auth_spool -->
<g id="edge61" class="edge">
<title>auth_call&#45;&gt;_auth_spool</title>
-<path fill="none" stroke="black" d="M1075.54,-534.4C1075.54,-534.4 1249.11,-534.4 1249.11,-534.4"/>
-<polygon fill="black" stroke="black" points="1249.11,-537.9 1259.11,-534.4 1249.11,-530.9 1249.11,-537.9"/>
+<path fill="none" stroke="#a9e6c9" d="M1075.54,-534.4C1075.54,-534.4 1249.11,-534.4 1249.11,-534.4"/>
+<polygon fill="#a9e6c9" stroke="#a9e6c9" points="1249.11,-537.9 1259.11,-534.4 1249.11,-530.9 1249.11,-537.9"/>
</g>
<!-- _add_rmlist -->
<g id="node31" class="node">
<title>_add_rmlist</title>
-<ellipse fill="none" stroke="black" cx="1321.52" cy="-610" rx="62.29" ry="18"/>
+<ellipse fill="none" stroke="black" cx="1321.52" cy="-610" rx="61.99" ry="18"/>
<text text-anchor="middle" x="1321.52" y="-606.3" font-family="Times-Roman" font-size="14.00">_add_rmlist</text>
</g>
<!-- auth_call&#45;&gt;_add_rmlist -->
<g id="edge62" class="edge">
<title>auth_call&#45;&gt;_add_rmlist</title>
-<path fill="none" stroke="black" d="M1075.42,-541.6C1138.76,-541.6 1240.11,-541.6 1240.11,-541.6 1240.11,-541.6 1240.11,-610 1240.11,-610 1240.11,-610 1248.99,-610 1248.99,-610"/>
-<polygon fill="black" stroke="black" points="1248.99,-613.5 1258.99,-610 1248.99,-606.5 1248.99,-613.5"/>
+<path fill="none" stroke="#a9e6c9" d="M1075.42,-541.6C1138.76,-541.6 1240.11,-541.6 1240.11,-541.6 1240.11,-541.6 1240.11,-610 1240.11,-610 1240.11,-610 1249.4,-610 1249.4,-610"/>
+<polygon fill="#a9e6c9" stroke="#a9e6c9" points="1249.4,-613.5 1259.4,-610 1249.4,-606.5 1249.4,-613.5"/>
</g>
<!-- _auth_next_arg -->
<g id="node32" class="node">
@@ -639,8 +639,8 @@
<!-- auth_call&#45;&gt;_auth_next_arg -->
<g id="edge60" class="edge">
<title>auth_call&#45;&gt;_auth_next_arg</title>
-<path fill="none" stroke="black" d="M1066.43,-527.2C1131.62,-527.2 1252.11,-527.2 1252.11,-527.2 1252.11,-527.2 1252.11,-484.77 1252.11,-484.77"/>
-<polygon fill="black" stroke="black" points="1255.61,-484.77 1252.11,-474.77 1248.61,-484.77 1255.61,-484.77"/>
+<path fill="none" stroke="#a9e6c9" d="M1066.43,-527.2C1131.62,-527.2 1252.11,-527.2 1252.11,-527.2 1252.11,-527.2 1252.11,-484.77 1252.11,-484.77"/>
+<polygon fill="#a9e6c9" stroke="#a9e6c9" points="1255.61,-484.77 1252.11,-474.77 1248.61,-484.77 1255.61,-484.77"/>
</g>
<!-- _recv_fd -->
<g id="node29" class="node">
@@ -651,14 +651,14 @@
<!-- _auth_spool&#45;&gt;_recv_fd -->
<g id="edge64" class="edge">
<title>_auth_spool&#45;&gt;_recv_fd</title>
-<path fill="none" stroke="black" d="M1385.44,-538C1385.44,-538 1507.53,-538 1507.53,-538"/>
-<polygon fill="black" stroke="black" points="1507.53,-541.5 1517.53,-538 1507.53,-534.5 1507.53,-541.5"/>
+<path fill="none" stroke="#977e1c" d="M1385.44,-538C1385.44,-538 1507.53,-538 1507.53,-538"/>
+<polygon fill="#977e1c" stroke="#977e1c" points="1507.53,-541.5 1517.53,-538 1507.53,-534.5 1507.53,-541.5"/>
</g>
<!-- login_getstyle&#45;&gt;login_getcapstr -->
<g id="edge65" class="edge">
<title>login_getstyle&#45;&gt;login_getcapstr</title>
-<path fill="none" stroke="black" d="M1095.03,-2576C1109.83,-2576 1121.11,-2576 1121.11,-2576 1121.11,-2576 1121.11,-2648 1121.11,-2648 1121.11,-2648 1236.04,-2648 1236.04,-2648"/>
-<polygon fill="black" stroke="black" points="1236.04,-2651.5 1246.04,-2648 1236.04,-2644.5 1236.04,-2651.5"/>
+<path fill="none" stroke="#51a344" d="M1095.03,-2576C1109.83,-2576 1121.11,-2576 1121.11,-2576 1121.11,-2576 1121.11,-2648 1121.11,-2648 1121.11,-2648 1236.04,-2648 1236.04,-2648"/>
+<polygon fill="#51a344" stroke="#51a344" points="1236.04,-2651.5 1246.04,-2648 1236.04,-2644.5 1236.04,-2651.5"/>
</g>
<!-- login_getcaptime -->
<g id="node40" class="node">
@@ -687,20 +687,20 @@
<!-- gsetrl&#45;&gt;login_getcaptime -->
<g id="edge66" class="edge">
<title>gsetrl&#45;&gt;login_getcaptime</title>
-<path fill="none" stroke="black" d="M1057.37,-2507C1086.14,-2507 1124.11,-2507 1124.11,-2507 1124.11,-2507 1124.11,-2564 1124.11,-2564 1124.11,-2564 1228.66,-2564 1228.66,-2564"/>
-<polygon fill="black" stroke="black" points="1228.66,-2567.5 1238.66,-2564 1228.66,-2560.5 1228.66,-2567.5"/>
+<path fill="none" stroke="#35d53a" d="M1057.37,-2507C1086.14,-2507 1124.11,-2507 1124.11,-2507 1124.11,-2507 1124.11,-2564 1124.11,-2564 1124.11,-2564 1228.66,-2564 1228.66,-2564"/>
+<polygon fill="#35d53a" stroke="#35d53a" points="1228.66,-2567.5 1238.66,-2564 1228.66,-2560.5 1228.66,-2567.5"/>
</g>
<!-- gsetrl&#45;&gt;login_getcapnum -->
<g id="edge68" class="edge">
<title>gsetrl&#45;&gt;login_getcapnum</title>
-<path fill="none" stroke="black" d="M1057.24,-2489C1084.01,-2489 1118.11,-2489 1118.11,-2489 1118.11,-2489 1118.11,-2438 1118.11,-2438 1118.11,-2438 1245.48,-2438 1245.48,-2438"/>
-<polygon fill="black" stroke="black" points="1245.48,-2441.5 1255.48,-2438 1245.48,-2434.5 1245.48,-2441.5"/>
+<path fill="none" stroke="#35d53a" d="M1057.24,-2489C1084.01,-2489 1118.11,-2489 1118.11,-2489 1118.11,-2489 1118.11,-2438 1118.11,-2438 1118.11,-2438 1245.48,-2438 1245.48,-2438"/>
+<polygon fill="#35d53a" stroke="#35d53a" points="1245.48,-2441.5 1255.48,-2438 1245.48,-2434.5 1245.48,-2441.5"/>
</g>
<!-- gsetrl&#45;&gt;login_getcapsize -->
<g id="edge67" class="edge">
<title>gsetrl&#45;&gt;login_getcapsize</title>
-<path fill="none" stroke="black" d="M1062.26,-2498C1062.26,-2498 1226.11,-2498 1226.11,-2498"/>
-<polygon fill="black" stroke="black" points="1226.11,-2501.5 1236.11,-2498 1226.11,-2494.5 1226.11,-2501.5"/>
+<path fill="none" stroke="#35d53a" d="M1062.26,-2498C1062.26,-2498 1226.11,-2498 1226.11,-2498"/>
+<polygon fill="#35d53a" stroke="#35d53a" points="1226.11,-2501.5 1236.11,-2498 1226.11,-2494.5 1226.11,-2501.5"/>
</g>
<!-- setclasscontext -->
<g id="node46" class="node">
@@ -711,14 +711,14 @@
<!-- setclasscontext&#45;&gt;login_getclass -->
<g id="edge69" class="edge">
<title>setclasscontext&#45;&gt;login_getclass</title>
-<path fill="none" stroke="black" d="M1106.53,-2354C1106.53,-2354 1237.37,-2354 1237.37,-2354"/>
-<polygon fill="black" stroke="black" points="1237.37,-2357.5 1247.37,-2354 1237.37,-2350.5 1237.37,-2357.5"/>
+<path fill="none" stroke="#5b8e44" d="M1106.53,-2354C1106.53,-2354 1237.37,-2354 1237.37,-2354"/>
+<polygon fill="#5b8e44" stroke="#5b8e44" points="1237.37,-2357.5 1247.37,-2354 1237.37,-2350.5 1237.37,-2357.5"/>
</g>
<!-- setclasscontext&#45;&gt;login_close -->
<g id="edge70" class="edge">
<title>setclasscontext&#45;&gt;login_close</title>
-<path fill="none" stroke="black" d="M1099.11,-2346.42C1099.11,-2328.61 1099.11,-2285.6 1099.11,-2285.6 1099.11,-2285.6 1252.79,-2285.6 1252.79,-2285.6"/>
-<polygon fill="black" stroke="black" points="1252.79,-2289.1 1262.79,-2285.6 1252.79,-2282.1 1252.79,-2289.1"/>
+<path fill="none" stroke="#5b8e44" d="M1099.11,-2346.42C1099.11,-2328.61 1099.11,-2285.6 1099.11,-2285.6 1099.11,-2285.6 1252.79,-2285.6 1252.79,-2285.6"/>
+<polygon fill="#5b8e44" stroke="#5b8e44" points="1252.79,-2289.1 1262.79,-2285.6 1252.79,-2282.1 1252.79,-2289.1"/>
</g>
<!-- setusercontext -->
<g id="node47" class="node">
@@ -729,20 +729,20 @@
<!-- setusercontext&#45;&gt;login_getclass -->
<g id="edge71" class="edge">
<title>setusercontext&#45;&gt;login_getclass</title>
-<path fill="none" stroke="black" d="M1098.67,-2420C1108.95,-2420 1116.11,-2420 1116.11,-2420 1116.11,-2420 1116.11,-2363 1116.11,-2363 1116.11,-2363 1247.09,-2363 1247.09,-2363"/>
-<polygon fill="black" stroke="black" points="1247.09,-2366.5 1257.09,-2363 1247.09,-2359.5 1247.09,-2366.5"/>
+<path fill="none" stroke="#7eb75f" d="M1098.67,-2420C1108.95,-2420 1116.11,-2420 1116.11,-2420 1116.11,-2420 1116.11,-2363 1116.11,-2363 1116.11,-2363 1247.09,-2363 1247.09,-2363"/>
+<polygon fill="#7eb75f" stroke="#7eb75f" points="1247.09,-2366.5 1257.09,-2363 1247.09,-2359.5 1247.09,-2366.5"/>
</g>
<!-- setusercontext&#45;&gt;login_getcapnum -->
<g id="edge73" class="edge">
<title>setusercontext&#45;&gt;login_getcapnum</title>
-<path fill="none" stroke="black" d="M1103.42,-2426C1103.42,-2426 1223.08,-2426 1223.08,-2426"/>
-<polygon fill="black" stroke="black" points="1223.08,-2429.5 1233.08,-2426 1223.08,-2422.5 1223.08,-2429.5"/>
+<path fill="none" stroke="#7eb75f" d="M1103.42,-2426C1103.42,-2426 1223.08,-2426 1223.08,-2426"/>
+<polygon fill="#7eb75f" stroke="#7eb75f" points="1223.08,-2429.5 1233.08,-2426 1223.08,-2422.5 1223.08,-2429.5"/>
</g>
<!-- setusercontext&#45;&gt;login_close -->
<g id="edge72" class="edge">
<title>setusercontext&#45;&gt;login_close</title>
-<path fill="none" stroke="black" d="M1083.58,-2414C1100.77,-2414 1115.11,-2414 1115.11,-2414 1115.11,-2414 1115.11,-2292.8 1115.11,-2292.8 1115.11,-2292.8 1263.65,-2292.8 1263.65,-2292.8"/>
-<polygon fill="black" stroke="black" points="1263.65,-2296.3 1273.65,-2292.8 1263.65,-2289.3 1263.65,-2296.3"/>
+<path fill="none" stroke="#7eb75f" d="M1083.58,-2414C1100.77,-2414 1115.11,-2414 1115.11,-2414 1115.11,-2414 1115.11,-2292.8 1115.11,-2292.8 1115.11,-2292.8 1263.65,-2292.8 1263.65,-2292.8"/>
+<polygon fill="#7eb75f" stroke="#7eb75f" points="1263.65,-2296.3 1273.65,-2292.8 1263.65,-2289.3 1263.65,-2296.3"/>
</g>
<!-- setlogin -->
<g id="node56" class="node">
@@ -753,8 +753,8 @@
<!-- setusercontext&#45;&gt;setlogin -->
<g id="edge74" class="edge">
<title>setusercontext&#45;&gt;setlogin</title>
-<path fill="none" stroke="black" d="M1098.84,-2432C1110.65,-2432 1119.11,-2432 1119.11,-2432 1119.11,-2432 1119.11,-2717 1119.11,-2717 1119.11,-2717 1265.34,-2717 1265.34,-2717"/>
-<polygon fill="black" stroke="black" points="1265.34,-2720.5 1275.34,-2717 1265.34,-2713.5 1265.34,-2720.5"/>
+<path fill="none" stroke="#7eb75f" d="M1098.84,-2432C1110.65,-2432 1119.11,-2432 1119.11,-2432 1119.11,-2432 1119.11,-2717 1119.11,-2717 1119.11,-2717 1265.34,-2717 1265.34,-2717"/>
+<polygon fill="#7eb75f" stroke="#7eb75f" points="1265.34,-2720.5 1275.34,-2717 1265.34,-2713.5 1265.34,-2720.5"/>
</g>
<!-- setuserpath -->
<g id="node48" class="node">
@@ -771,8 +771,8 @@
<!-- setuserpath&#45;&gt;login_setenv -->
<g id="edge75" class="edge">
<title>setuserpath&#45;&gt;login_setenv</title>
-<path fill="none" stroke="black" d="M1089.51,-2278.4C1158.31,-2278.4 1258.11,-2278.4 1258.11,-2278.4 1258.11,-2278.4 1258.11,-2226.31 1258.11,-2226.31"/>
-<polygon fill="black" stroke="black" points="1261.61,-2226.31 1258.11,-2216.31 1254.61,-2226.31 1261.61,-2226.31"/>
+<path fill="none" stroke="#35ed7d" d="M1089.51,-2278.4C1158.31,-2278.4 1258.11,-2278.4 1258.11,-2278.4 1258.11,-2278.4 1258.11,-2226.31 1258.11,-2226.31"/>
+<polygon fill="#35ed7d" stroke="#35ed7d" points="1261.61,-2226.31 1258.11,-2216.31 1254.61,-2226.31 1261.61,-2226.31"/>
</g>
<!-- setuserenv -->
<g id="node49" class="node">
@@ -783,8 +783,8 @@
<!-- setuserenv&#45;&gt;login_setenv -->
<g id="edge76" class="edge">
<title>setuserenv&#45;&gt;login_setenv</title>
-<path fill="none" stroke="black" d="M1086.27,-2210C1086.27,-2210 1243.79,-2210 1243.79,-2210"/>
-<polygon fill="black" stroke="black" points="1243.79,-2213.5 1253.79,-2210 1243.79,-2206.5 1243.79,-2213.5"/>
+<path fill="none" stroke="#a1aa6a" d="M1086.27,-2210C1086.27,-2210 1243.79,-2210 1243.79,-2210"/>
+<polygon fill="#a1aa6a" stroke="#a1aa6a" points="1243.79,-2213.5 1253.79,-2210 1243.79,-2206.5 1243.79,-2213.5"/>
</g>
<!-- strtosize -->
<g id="node51" class="node">