Skip to content
{{ message }}

Instantly share code, notes, and snippets.

# LeadroyaL/graph_demo.py

Created Oct 13, 2019

 # coding:utf-8 from graphviz import Digraph # 先加载asm文件，按照列表的方式去存 fd = open("main.asm") lines = [l.strip('\n') for l in fd.readlines()] fd.close() # 遍历label，找到label对应的addr（应该是第一个label的addr） label_addrs = dict() for i in range(len(lines)): a = lines[i] if a[0] == '(' and a[-1] == ')': j = i - 1 while True: if lines[j][0] == '(' and lines[j][-1] == ')': j -= 1 continue label_addrs[a.strip("()")] = j + 1 break # 按顺序遍历汇编，以 branch 语句作为BB的结束，以 branch 语句的目的地作为BB的开始 # sps存放各个BB的开头地址 sps = set() sps.add(0) sps.add(len(lines)) for i in range(len(lines) - 1): a, b = lines[i], lines[i + 1] if "JMP" in b or "JLT" in b or "JEQ" in b or "JGT" in b or "JLE" in b or "JNE" in b or "JGE" in b: if "@" in a: # 找到label对应的addr print "Branch at", b, "to", a, label_addrs[a.strip('@')] # 检查是不是最后一个指令 if i + 2 < len(lines): sps.add(i + 2) sps.add(label_addrs[a.strip('@')]) else: print "Indirect Branch:", a, b sps = list(sps) sps.sort() print sps bbs = [] for i in range(len(sps) - 1): a, b = sps[i], sps[i + 1] bbs.append((a, b)) # 使用API，按地址从小到大顺序创建各个BB dot = Digraph(comment='The Round Table') for start, end in bbs: dot.node('Node%d' % start, 'Some data %d~%d' % (start, end), shape='box') # 创建连接关系：如果末尾是普通语句，就连接到下一个，如果末尾是跳转语句，就连接到跳转的位置 for start, end in bbs: bb = lines[start:end] a, b = bb[-2], bb[-1] if "JMP" in b and '@' in a: nextBB = label_addrs[a.strip('@')] dot.edge('Node%d' % start, 'Node%d' % nextBB) elif ("JLT" in b or "JEQ" in b or "JGT" in b or "JLE" in b or "JNE" in b or "JGE" in b) and '@' in a: nextBB = label_addrs[a.strip('@')] dot.edge('Node%d' % start, 'Node%d' % nextBB) dot.edge('Node%d' % start, 'Node%d' % end) else: dot.edge('Node%d' % start, 'Node%d' % end) print dot.source dot.view() # 后面这句就注释了，也可以使用这个命令查看效果
 // The Round Table digraph { Node0 [label="Some data 0~4087" shape=box] Node4087 [label="Some data 4087~4101" shape=box] Node4101 [label="Some data 4101~4115" shape=box] Node4115 [label="Some data 4115~4118" shape=box] Node4118 [label="Some data 4118~4150" shape=box] Node4150 [label="Some data 4150~4173" shape=box] Node4173 [label="Some data 4173~4196" shape=box] Node4196 [label="Some data 4196~4206" shape=box] Node4206 [label="Some data 4206~4245" shape=box] Node4245 [label="Some data 4245~4250" shape=box] Node4250 [label="Some data 4250~4285" shape=box] Node4285 [label="Some data 4285~4294" shape=box] Node4294 [label="Some data 4294~4615" shape=box] Node4615 [label="Some data 4615~4634" shape=box] Node4634 [label="Some data 4634~4642" shape=box] Node4642 [label="Some data 4642~4656" shape=box] Node4656 [label="Some data 4656~4673" shape=box] Node4673 [label="Some data 4673~4695" shape=box] Node4695 [label="Some data 4695~4705" shape=box] Node4705 [label="Some data 4705~4729" shape=box] Node4729 [label="Some data 4729~4783" shape=box] Node4783 [label="Some data 4783~4802" shape=box] Node4802 [label="Some data 4802~4816" shape=box] Node4816 [label="Some data 4816~4830" shape=box] Node4830 [label="Some data 4830~4833" shape=box] Node4833 [label="Some data 4833~4836" shape=box] Node4836 [label="Some data 4836~4853" shape=box] Node4853 [label="Some data 4853~4877" shape=box] Node4877 [label="Some data 4877~4891" shape=box] Node4891 [label="Some data 4891~4903" shape=box] Node4903 [label="Some data 4903~4922" shape=box] Node4922 [label="Some data 4922~4936" shape=box] Node4936 [label="Some data 4936~4948" shape=box] Node4948 [label="Some data 4948~4967" shape=box] Node4967 [label="Some data 4967~5005" shape=box] Node5005 [label="Some data 5005~5011" shape=box] Node5011 [label="Some data 5011~5048" shape=box] Node5048 [label="Some data 5048~5059" shape=box] Node5059 [label="Some data 5059~5063" shape=box] Node5063 [label="Some data 5063~5078" shape=box] Node5078 [label="Some data 5078~5090" shape=box] Node5090 [label="Some data 5090~5100" shape=box] Node5100 [label="Some data 5100~5124" shape=box] Node5124 [label="Some data 5124~5141" shape=box] Node5141 [label="Some data 5141~5191" shape=box] Node5191 [label="Some data 5191~5200" shape=box] Node5200 [label="Some data 5200~5204" shape=box] Node5204 [label="Some data 5204~5233" shape=box] Node5233 [label="Some data 5233~5246" shape=box] Node5246 [label="Some data 5246~5255" shape=box] Node5255 [label="Some data 5255~5270" shape=box] Node5270 [label="Some data 5270~5283" shape=box] Node5283 [label="Some data 5283~5300" shape=box] Node5300 [label="Some data 5300~5324" shape=box] Node5324 [label="Some data 5324~5335" shape=box] Node5335 [label="Some data 5335~5406" shape=box] Node5406 [label="Some data 5406~5415" shape=box] Node5415 [label="Some data 5415~5764" shape=box] Node5764 [label="Some data 5764~5773" shape=box] Node5773 [label="Some data 5773~6046" shape=box] Node6046 [label="Some data 6046~6055" shape=box] Node6055 [label="Some data 6055~6403" shape=box] Node6403 [label="Some data 6403~6412" shape=box] Node6412 [label="Some data 6412~6764" shape=box] Node6764 [label="Some data 6764~6773" shape=box] Node6773 [label="Some data 6773~7046" shape=box] Node7046 [label="Some data 7046~7055" shape=box] Node7055 [label="Some data 7055~7407" shape=box] Node7407 [label="Some data 7407~7416" shape=box] Node7416 [label="Some data 7416~7764" shape=box] Node7764 [label="Some data 7764~7773" shape=box] Node7773 [label="Some data 7773~8046" shape=box] Node8046 [label="Some data 8046~8055" shape=box] Node8055 [label="Some data 8055~8407" shape=box] Node8407 [label="Some data 8407~8416" shape=box] Node8416 [label="Some data 8416~8763" shape=box] Node8763 [label="Some data 8763~8772" shape=box] Node8772 [label="Some data 8772~9041" shape=box] Node9041 [label="Some data 9041~9050" shape=box] Node9050 [label="Some data 9050~9398" shape=box] Node9398 [label="Some data 9398~9407" shape=box] Node9407 [label="Some data 9407~9675" shape=box] Node9675 [label="Some data 9675~9684" shape=box] Node9684 [label="Some data 9684~9957" shape=box] Node9957 [label="Some data 9957~9966" shape=box] Node9966 [label="Some data 9966~10234" shape=box] Node10234 [label="Some data 10234~10243" shape=box] Node10243 [label="Some data 10243~10512" shape=box] Node10512 [label="Some data 10512~10521" shape=box] Node10521 [label="Some data 10521~10794" shape=box] Node10794 [label="Some data 10794~10803" shape=box] Node10803 [label="Some data 10803~11155" shape=box] Node11155 [label="Some data 11155~11164" shape=box] Node11164 [label="Some data 11164~11516" shape=box] Node11516 [label="Some data 11516~11525" shape=box] Node11525 [label="Some data 11525~11877" shape=box] Node11877 [label="Some data 11877~11886" shape=box] Node11886 [label="Some data 11886~12234" shape=box] Node12234 [label="Some data 12234~12243" shape=box] Node12243 [label="Some data 12243~12595" shape=box] Node12595 [label="Some data 12595~12604" shape=box] Node12604 [label="Some data 12604~12877" shape=box] Node12877 [label="Some data 12877~12886" shape=box] Node12886 [label="Some data 12886~13155" shape=box] Node13155 [label="Some data 13155~13164" shape=box] Node13164 [label="Some data 13164~13511" shape=box] Node13511 [label="Some data 13511~13520" shape=box] Node13520 [label="Some data 13520~13793" shape=box] Node13793 [label="Some data 13793~13802" shape=box] Node13802 [label="Some data 13802~14075" shape=box] Node14075 [label="Some data 14075~14084" shape=box] Node14084 [label="Some data 14084~14357" shape=box] Node14357 [label="Some data 14357~14366" shape=box] Node14366 [label="Some data 14366~14639" shape=box] Node14639 [label="Some data 14639~14648" shape=box] Node14648 [label="Some data 14648~15000" shape=box] Node15000 [label="Some data 15000~15009" shape=box] Node15009 [label="Some data 15009~15358" shape=box] Node15358 [label="Some data 15358~15367" shape=box] Node15367 [label="Some data 15367~15719" shape=box] Node15719 [label="Some data 15719~15728" shape=box] Node15728 [label="Some data 15728~16080" shape=box] Node16080 [label="Some data 16080~16089" shape=box] Node16089 [label="Some data 16089~16438" shape=box] Node16438 [label="Some data 16438~16447" shape=box] Node16447 [label="Some data 16447~16790" shape=box] Node16790 [label="Some data 16790~16799" shape=box] Node16799 [label="Some data 16799~17146" shape=box] Node17146 [label="Some data 17146~17155" shape=box] Node17155 [label="Some data 17155~17428" shape=box] Node17428 [label="Some data 17428~17437" shape=box] Node17437 [label="Some data 17437~17710" shape=box] Node17710 [label="Some data 17710~17719" shape=box] Node17719 [label="Some data 17719~17992" shape=box] Node17992 [label="Some data 17992~18001" shape=box] Node18001 [label="Some data 18001~18269" shape=box] Node18269 [label="Some data 18269~18278" shape=box] Node18278 [label="Some data 18278~18630" shape=box] Node18630 [label="Some data 18630~18639" shape=box] Node18639 [label="Some data 18639~18991" shape=box] Node18991 [label="Some data 18991~19000" shape=box] Node19000 [label="Some data 19000~19273" shape=box] Node19273 [label="Some data 19273~19282" shape=box] Node19282 [label="Some data 19282~19634" shape=box] Node19634 [label="Some data 19634~19643" shape=box] Node19643 [label="Some data 19643~19995" shape=box] Node19995 [label="Some data 19995~20004" shape=box] Node20004 [label="Some data 20004~20356" shape=box] Node20356 [label="Some data 20356~20365" shape=box] Node20365 [label="Some data 20365~20638" shape=box] Node20638 [label="Some data 20638~20647" shape=box] Node20647 [label="Some data 20647~20920" shape=box] Node20920 [label="Some data 20920~20929" shape=box] Node20929 [label="Some data 20929~21281" shape=box] Node21281 [label="Some data 21281~21290" shape=box] Node21290 [label="Some data 21290~21639" shape=box] Node21639 [label="Some data 21639~21648" shape=box] Node21648 [label="Some data 21648~22000" shape=box] Node22000 [label="Some data 22000~22009" shape=box] Node22009 [label="Some data 22009~22282" shape=box] Node22282 [label="Some data 22282~22291" shape=box] Node22291 [label="Some data 22291~22643" shape=box] Node22643 [label="Some data 22643~22652" shape=box] Node22652 [label="Some data 22652~22925" shape=box] Node22925 [label="Some data 22925~22934" shape=box] Node22934 [label="Some data 22934~23207" shape=box] Node23207 [label="Some data 23207~23216" shape=box] Node23216 [label="Some data 23216~23489" shape=box] Node23489 [label="Some data 23489~23498" shape=box] Node23498 [label="Some data 23498~23771" shape=box] Node23771 [label="Some data 23771~23780" shape=box] Node23780 [label="Some data 23780~24046" shape=box] Node24046 [label="Some data 24046~24055" shape=box] Node24055 [label="Some data 24055~24399" shape=box] Node24399 [label="Some data 24399~24408" shape=box] Node24408 [label="Some data 24408~24757" shape=box] Node24757 [label="Some data 24757~24766" shape=box] Node24766 [label="Some data 24766~25118" shape=box] Node25118 [label="Some data 25118~25127" shape=box] Node25127 [label="Some data 25127~25400" shape=box] Node25400 [label="Some data 25400~25409" shape=box] Node25409 [label="Some data 25409~25758" shape=box] Node25758 [label="Some data 25758~25767" shape=box] Node25767 [label="Some data 25767~26037" shape=box] Node26037 [label="Some data 26037~26046" shape=box] Node26046 [label="Some data 26046~26314" shape=box] Node26314 [label="Some data 26314~26323" shape=box] Node26323 [label="Some data 26323~26596" shape=box] Node26596 [label="Some data 26596~26605" shape=box] Node26605 [label="Some data 26605~26878" shape=box] Node26878 [label="Some data 26878~26887" shape=box] Node26887 [label="Some data 26887~27160" shape=box] Node27160 [label="Some data 27160~27169" shape=box] Node27169 [label="Some data 27169~27521" shape=box] Node27521 [label="Some data 27521~27530" shape=box] Node27530 [label="Some data 27530~27803" shape=box] Node27803 [label="Some data 27803~27812" shape=box] Node27812 [label="Some data 27812~28164" shape=box] Node28164 [label="Some data 28164~28173" shape=box] Node28173 [label="Some data 28173~28519" shape=box] Node28519 [label="Some data 28519~28528" shape=box] Node28528 [label="Some data 28528~28880" shape=box] Node28880 [label="Some data 28880~28889" shape=box] Node28889 [label="Some data 28889~29152" shape=box] Node29152 [label="Some data 29152~29161" shape=box] Node29161 [label="Some data 29161~29434" shape=box] Node29434 [label="Some data 29434~29443" shape=box] Node29443 [label="Some data 29443~29792" shape=box] Node29792 [label="Some data 29792~29801" shape=box] Node29801 [label="Some data 29801~30153" shape=box] Node30153 [label="Some data 30153~30162" shape=box] Node30162 [label="Some data 30162~30432" shape=box] Node30432 [label="Some data 30432~30441" shape=box] Node30441 [label="Some data 30441~30464" shape=box] Node30464 [label="Some data 30464~30510" shape=box] Node30510 [label="Some data 30510~30578" shape=box] Node30578 [label="Some data 30578~30592" shape=box] Node30592 [label="Some data 30592~30639" shape=box] Node30639 [label="Some data 30639~30664" shape=box] Node30664 [label="Some data 30664~30675" shape=box] Node30675 [label="Some data 30675~30678" shape=box] Node30678 [label="Some data 30678~30696" shape=box] Node30696 [label="Some data 30696~30720" shape=box] Node30720 [label="Some data 30720~30733" shape=box] Node30733 [label="Some data 30733~30760" shape=box] Node30760 [label="Some data 30760~30813" shape=box] Node30813 [label="Some data 30813~30831" shape=box] Node30831 [label="Some data 30831~30844" shape=box] Node30844 [label="Some data 30844~30883" shape=box] Node30883 [label="Some data 30883~30900" shape=box] Node30900 [label="Some data 30900~30913" shape=box] Node30913 [label="Some data 30913~30932" shape=box] Node30932 [label="Some data 30932~30949" shape=box] Node30949 [label="Some data 30949~30962" shape=box] Node30962 [label="Some data 30962~30981" shape=box] Node30981 [label="Some data 30981~30994" shape=box] Node30994 [label="Some data 30994~31012" shape=box] Node31012 [label="Some data 31012~31025" shape=box] Node31025 [label="Some data 31025~31043" shape=box] Node31043 [label="Some data 31043~31056" shape=box] Node31056 [label="Some data 31056~31074" shape=box] Node31074 [label="Some data 31074~31087" shape=box] Node31087 [label="Some data 31087~31105" shape=box] Node31105 [label="Some data 31105~31118" shape=box] Node31118 [label="Some data 31118~31136" shape=box] Node31136 [label="Some data 31136~31149" shape=box] Node31149 [label="Some data 31149~31167" shape=box] Node31167 [label="Some data 31167~31180" shape=box] Node31180 [label="Some data 31180~31198" shape=box] Node31198 [label="Some data 31198~31211" shape=box] Node31211 [label="Some data 31211~31229" shape=box] Node31229 [label="Some data 31229~31242" shape=box] Node31242 [label="Some data 31242~31260" shape=box] Node31260 [label="Some data 31260~31273" shape=box] Node31273 [label="Some data 31273~31291" shape=box] Node31291 [label="Some data 31291~31304" shape=box] Node31304 [label="Some data 31304~31322" shape=box] Node31322 [label="Some data 31322~31335" shape=box] Node31335 [label="Some data 31335~31353" shape=box] Node31353 [label="Some data 31353~31366" shape=box] Node31366 [label="Some data 31366~31384" shape=box] Node31384 [label="Some data 31384~31397" shape=box] Node31397 [label="Some data 31397~31420" shape=box] Node31420 [label="Some data 31420~31438" shape=box] Node31438 [label="Some data 31438~31458" shape=box] Node31458 [label="Some data 31458~31479" shape=box] Node31479 [label="Some data 31479~31505" shape=box] Node31505 [label="Some data 31505~31524" shape=box] Node31524 [label="Some data 31524~31548" shape=box] Node31548 [label="Some data 31548~31593" shape=box] Node31593 [label="Some data 31593~31603" shape=box] Node0 -> Node4087 Node4087 -> Node4115 Node4087 -> Node4101 Node4101 -> Node4115 Node4115 -> Node4087 Node4118 -> Node4150 Node4150 -> Node4173 Node4173 -> Node4285 Node4173 -> Node4196 Node4196 -> Node4285 Node4196 -> Node4206 Node4206 -> Node4250 Node4206 -> Node4245 Node4245 -> Node4250 Node4250 -> Node4285 Node4285 -> Node4173 Node4294 -> Node4615 Node4615 -> Node4634 Node4634 -> Node4656 Node4634 -> Node4642 Node4642 -> Node4656 Node4656 -> Node4673 Node4673 -> Node4877 Node4673 -> Node4695 Node4695 -> Node4705 Node4705 -> Node4853 Node4705 -> Node4729 Node4729 -> Node4783 Node4783 -> Node4833 Node4783 -> Node4802 Node4802 -> Node4830 Node4802 -> Node4816 Node4816 -> Node4830 Node4830 -> Node4802 Node4833 -> Node4783 Node4836 -> Node4853 Node4853 -> Node4877 Node4877 -> Node4922 Node4877 -> Node4891 Node4891 -> Node4705 Node4903 -> Node5063 Node4922 -> Node4967 Node4922 -> Node4936 Node4936 -> Node4705 Node4948 -> Node5063 Node4967 -> Node5011 Node4967 -> Node5005 Node5005 -> Node5011 Node5011 -> Node5048 Node5048 -> Node5078 Node5048 -> Node5059 Node5059 -> Node5063 Node5063 -> Node5078 Node5078 -> Node5100 Node5078 -> Node5090 Node5090 -> Node5100 Node5100 -> Node5048 Node5124 -> Node4634 Node5141 -> Node5191 Node5191 -> Node5204 Node5191 -> Node5200 Node5200 -> Node5204 Node5204 -> Node5255 Node5204 -> Node5233 Node5233 -> Node5255 Node5233 -> Node5246 Node5246 -> Node5255 Node5255 -> Node31593 Node5255 -> Node5270 Node5270 -> Node31593 Node5270 -> Node5283 Node5283 -> Node30678 Node5283 -> Node5300 Node5300 -> Node4673 Node5324 -> Node5335 Node5335 -> Node5415 Node5335 -> Node5406 Node5406 -> Node5415 Node5415 -> Node5773 Node5415 -> Node5764 Node5764 -> Node5773 Node5773 -> Node6055 Node5773 -> Node6046 Node6046 -> Node6055 Node6055 -> Node6412 Node6055 -> Node6403 Node6403 -> Node6412 Node6412 -> Node6773 Node6412 -> Node6764 Node6764 -> Node6773 Node6773 -> Node7055 Node6773 -> Node7046 Node7046 -> Node7055 Node7055 -> Node7416 Node7055 -> Node7407 Node7407 -> Node7416 Node7416 -> Node7773 Node7416 -> Node7764 Node7764 -> Node7773 Node7773 -> Node8055 Node7773 -> Node8046 Node8046 -> Node8055 Node8055 -> Node8416 Node8055 -> Node8407 Node8407 -> Node8416 Node8416 -> Node8772 Node8416 -> Node8763 Node8763 -> Node8772 Node8772 -> Node9050 Node8772 -> Node9041 Node9041 -> Node9050 Node9050 -> Node9407 Node9050 -> Node9398 Node9398 -> Node9407 Node9407 -> Node9684 Node9407 -> Node9675 Node9675 -> Node9684 Node9684 -> Node9966 Node9684 -> Node9957 Node9957 -> Node9966 Node9966 -> Node10243 Node9966 -> Node10234 Node10234 -> Node10243 Node10243 -> Node10521 Node10243 -> Node10512 Node10512 -> Node10521 Node10521 -> Node10803 Node10521 -> Node10794 Node10794 -> Node10803 Node10803 -> Node11164 Node10803 -> Node11155 Node11155 -> Node11164 Node11164 -> Node11525 Node11164 -> Node11516 Node11516 -> Node11525 Node11525 -> Node11886 Node11525 -> Node11877 Node11877 -> Node11886 Node11886 -> Node12243 Node11886 -> Node12234 Node12234 -> Node12243 Node12243 -> Node12604 Node12243 -> Node12595 Node12595 -> Node12604 Node12604 -> Node12886 Node12604 -> Node12877 Node12877 -> Node12886 Node12886 -> Node13164 Node12886 -> Node13155 Node13155 -> Node13164 Node13164 -> Node13520 Node13164 -> Node13511 Node13511 -> Node13520 Node13520 -> Node13802 Node13520 -> Node13793 Node13793 -> Node13802 Node13802 -> Node14084 Node13802 -> Node14075 Node14075 -> Node14084 Node14084 -> Node14366 Node14084 -> Node14357 Node14357 -> Node14366 Node14366 -> Node14648 Node14366 -> Node14639 Node14639 -> Node14648 Node14648 -> Node15009 Node14648 -> Node15000 Node15000 -> Node15009 Node15009 -> Node15367 Node15009 -> Node15358 Node15358 -> Node15367 Node15367 -> Node15728 Node15367 -> Node15719 Node15719 -> Node15728 Node15728 -> Node16089 Node15728 -> Node16080 Node16080 -> Node16089 Node16089 -> Node16447 Node16089 -> Node16438 Node16438 -> Node16447 Node16447 -> Node16799 Node16447 -> Node16790 Node16790 -> Node16799 Node16799 -> Node17155 Node16799 -> Node17146 Node17146 -> Node17155 Node17155 -> Node17437 Node17155 -> Node17428 Node17428 -> Node17437 Node17437 -> Node17719 Node17437 -> Node17710 Node17710 -> Node17719 Node17719 -> Node18001 Node17719 -> Node17992 Node17992 -> Node18001 Node18001 -> Node18278 Node18001 -> Node18269 Node18269 -> Node18278 Node18278 -> Node18639 Node18278 -> Node18630 Node18630 -> Node18639 Node18639 -> Node19000 Node18639 -> Node18991 Node18991 -> Node19000 Node19000 -> Node19282 Node19000 -> Node19273 Node19273 -> Node19282 Node19282 -> Node19643 Node19282 -> Node19634 Node19634 -> Node19643 Node19643 -> Node20004 Node19643 -> Node19995 Node19995 -> Node20004 Node20004 -> Node20365 Node20004 -> Node20356 Node20356 -> Node20365 Node20365 -> Node20647 Node20365 -> Node20638 Node20638 -> Node20647 Node20647 -> Node20929 Node20647 -> Node20920 Node20920 -> Node20929 Node20929 -> Node21290 Node20929 -> Node21281 Node21281 -> Node21290 Node21290 -> Node21648 Node21290 -> Node21639 Node21639 -> Node21648 Node21648 -> Node22009 Node21648 -> Node22000 Node22000 -> Node22009 Node22009 -> Node22291 Node22009 -> Node22282 Node22282 -> Node22291 Node22291 -> Node22652 Node22291 -> Node22643 Node22643 -> Node22652 Node22652 -> Node22934 Node22652 -> Node22925 Node22925 -> Node22934 Node22934 -> Node23216 Node22934 -> Node23207 Node23207 -> Node23216 Node23216 -> Node23498 Node23216 -> Node23489 Node23489 -> Node23498 Node23498 -> Node23780 Node23498 -> Node23771 Node23771 -> Node23780 Node23780 -> Node24055 Node23780 -> Node24046 Node24046 -> Node24055 Node24055 -> Node24408 Node24055 -> Node24399 Node24399 -> Node24408 Node24408 -> Node24766 Node24408 -> Node24757 Node24757 -> Node24766 Node24766 -> Node25127 Node24766 -> Node25118 Node25118 -> Node25127 Node25127 -> Node25409 Node25127 -> Node25400 Node25400 -> Node25409 Node25409 -> Node25767 Node25409 -> Node25758 Node25758 -> Node25767 Node25767 -> Node26046 Node25767 -> Node26037 Node26037 -> Node26046 Node26046 -> Node26323 Node26046 -> Node26314 Node26314 -> Node26323 Node26323 -> Node26605 Node26323 -> Node26596 Node26596 -> Node26605 Node26605 -> Node26887 Node26605 -> Node26878 Node26878 -> Node26887 Node26887 -> Node27169 Node26887 -> Node27160 Node27160 -> Node27169 Node27169 -> Node27530 Node27169 -> Node27521 Node27521 -> Node27530 Node27530 -> Node27812 Node27530 -> Node27803 Node27803 -> Node27812 Node27812 -> Node28173 Node27812 -> Node28164 Node28164 -> Node28173 Node28173 -> Node28528 Node28173 -> Node28519 Node28519 -> Node28528 Node28528 -> Node28889 Node28528 -> Node28880 Node28880 -> Node28889 Node28889 -> Node29161 Node28889 -> Node29152 Node29152 -> Node29161 Node29161 -> Node29443 Node29161 -> Node29434 Node29434 -> Node29443 Node29443 -> Node29801 Node29443 -> Node29792 Node29792 -> Node29801 Node29801 -> Node30162 Node29801 -> Node30153 Node30153 -> Node30162 Node30162 -> Node30441 Node30162 -> Node30432 Node30432 -> Node30441 Node30441 -> Node4150 Node30464 -> Node30578 Node30464 -> Node30510 Node30510 -> Node30578 Node30578 -> Node30639 Node30578 -> Node30592 Node30592 -> Node30639 Node30639 -> Node4615 Node30664 -> Node30675 Node30675 -> Node30675 Node30678 -> Node30733 Node30678 -> Node30696 Node30696 -> Node4673 Node30720 -> Node5335 Node30733 -> Node30813 Node30733 -> Node30760 Node30760 -> Node30813 Node30813 -> Node31593 Node30813 -> Node30831 Node30831 -> Node31420 Node30831 -> Node30844 Node30844 -> Node30913 Node30844 -> Node30883 Node30883 -> Node30913 Node30883 -> Node30900 Node30900 -> Node30913 Node30913 -> Node30962 Node30913 -> Node30932 Node30932 -> Node30962 Node30932 -> Node30949 Node30949 -> Node30962 Node30962 -> Node30994 Node30962 -> Node30981 Node30981 -> Node30994 Node30994 -> Node31025 Node30994 -> Node31012 Node31012 -> Node31025 Node31025 -> Node31056 Node31025 -> Node31043 Node31043 -> Node31056 Node31056 -> Node31087 Node31056 -> Node31074 Node31074 -> Node31087 Node31087 -> Node31118 Node31087 -> Node31105 Node31105 -> Node31118 Node31118 -> Node31149 Node31118 -> Node31136 Node31136 -> Node31149 Node31149 -> Node31180 Node31149 -> Node31167 Node31167 -> Node31180 Node31180 -> Node31211 Node31180 -> Node31198 Node31198 -> Node31211 Node31211 -> Node31242 Node31211 -> Node31229 Node31229 -> Node31242 Node31242 -> Node31273 Node31242 -> Node31260 Node31260 -> Node31273 Node31273 -> Node31304 Node31273 -> Node31291 Node31291 -> Node31304 Node31304 -> Node31335 Node31304 -> Node31322 Node31322 -> Node31335 Node31335 -> Node31366 Node31335 -> Node31353 Node31353 -> Node31366 Node31366 -> Node31397 Node31366 -> Node31384 Node31384 -> Node31397 Node31397 -> Node31420 Node31420 -> Node31505 Node31420 -> Node31438 Node31438 -> Node31505 Node31438 -> Node31458 Node31458 -> Node4673 Node31479 -> Node31505 Node31505 -> Node31593 Node31505 -> Node31524 Node31524 -> Node4673 Node31548 -> Node31593 Node31593 -> Node5191 }
to join this conversation on GitHub. Already have an account? Sign in to comment