some changes

master
Frederik Maaßen 2 years ago
parent 4794fe82da
commit ec3ebf62ff
  1. 12
      implementation/topologies/6r4h_topo.py
  2. 12
      implementation/topologies/8r4h_topo.py
  3. 24
      thesis/content/evaluation/evaluation.tex
  4. 2
      thesis/content/testing/testing.tex
  5. 4
      thesis/content/testing/topologies_and_routing.tex
  6. 126
      thesis/images/testing_failure_path_1.eps
  7. 6
      thesis/images/testing_failure_path_1.svg
  8. 122
      thesis/images/testing_failure_path_2.eps
  9. 4
      thesis/images/testing_failure_path_2.svg

@ -351,9 +351,9 @@ class SixRoutersFourHosts(CustomTopo):
"use_pre_defined_function": True,
"separate_definitions": True,
"command_pre": ("measure_packet_flow", (
'h1', 'h6', '10.6.0.101', ["r1", "r2", "r5", "r6"], 30, 1, "before_failure", [0, 3000], "Packet flow on routers before failure", "tcp", 100)),
'h1', 'h6', '10.6.0.101', ["r1", "r2", "r3", "r5"], 30, 1, "before_failure", [0, 3000], "Packet flow on routers before failure", "tcp", 100)),
"command_post": ("measure_packet_flow", (
'h1', 'h6', '10.6.0.101', ["r1", "r2", "r5", "r6"], 30, 1, "after_failure", [0, 3000], "Packet flow on routers after failure", "tcp", 100)),
'h1', 'h6', '10.6.0.101', ["r1", "r2", "r3", "r5"], 30, 1, "after_failure", [0, 3000], "Packet flow on routers after failure", "tcp", 100)),
},
"failures": [
@ -378,7 +378,7 @@ class SixRoutersFourHosts(CustomTopo):
"execute": {
"use_pre_defined_function": True,
"command": ("measure_packet_flow", (
'h1', 'h6', '10.6.0.101', ["r1", "r2", "r5", "r6"], 30, 1, "concurrent_failure", [0, 3000], "Packet flow on routers before failure", "tcp", 100)),
'h1', 'h6', '10.6.0.101', ["r1", "r2", "r3", "r5"], 30, 1, "concurrent_failure", [0, 3000], "Packet flow on routers before failure", "tcp", 100)),
},
"failures": [
@ -405,10 +405,10 @@ class SixRoutersFourHosts(CustomTopo):
"use_pre_defined_function": True,
"separate_definitions": True,
"command_pre": ("measure_packet_flow", (
'h1', 'h6', '10.6.0.101', ["r1", "r2", "r5", "r6"], 30, 1, "udp_before_failure", [0, 20000],
'h1', 'h6', '10.6.0.101', ["r1", "r2", "r3", "r5"], 30, 1, "udp_before_failure", [0, 20000],
"UDP Packet flow on routers before failure", "udp", 100)),
"command_post": ("measure_packet_flow", (
'h1', 'h6', '10.6.0.101', ["r1", "r2", "r5", "r6"], 30, 1, "udp_after_failure", [0, 22000],
'h1', 'h6', '10.6.0.101', ["r1", "r2", "r3", "r5"], 30, 1, "udp_after_failure", [0, 22000],
"UDP Packet flow on routers after failure", "udp", 100)),
},
@ -434,7 +434,7 @@ class SixRoutersFourHosts(CustomTopo):
"execute": {
"use_pre_defined_function": True,
"command": ("measure_packet_flow", (
'h1', 'h6', '10.6.0.101', ["r1", "r2", "r5", "r6"], 30, 1, "udp_concurrent_failure", [0, 22000],
'h1', 'h6', '10.6.0.101', ["r1", "r2", "r3", "r5"], 30, 1, "udp_concurrent_failure", [0, 22000],
"UDP Packet flow on routers before failure", "udp", 100)),
},

@ -498,9 +498,9 @@ class EightRoutersFourHosts(CustomTopo):
"use_pre_defined_function": True,
"separate_definitions": True,
"command_pre": ("measure_packet_flow", (
'h1', 'h8', '10.8.0.101', ["r1", "r2", "r7", "r8"], 30, 1, "before_failure", [0, 3000], "Packet flow on routers before failure", "tcp", 100)),
'h1', 'h8', '10.8.0.101', ["r1", "r2", "r4", "r7"], 30, 1, "before_failure", [0, 3000], "Packet flow on routers before failure", "tcp", 100)),
"command_post": ("measure_packet_flow", (
'h1', 'h8', '10.8.0.101', ["r1", "r2", "r7", "r8"], 30, 1, "after_failure", [0, 3000], "Packet flow on routers after failure", "tcp", 100)),
'h1', 'h8', '10.8.0.101', ["r1", "r2", "r4", "r7"], 30, 1, "after_failure", [0, 3000], "Packet flow on routers after failure", "tcp", 100)),
},
"failures": [
@ -525,7 +525,7 @@ class EightRoutersFourHosts(CustomTopo):
"execute": {
"use_pre_defined_function": True,
"command": ("measure_packet_flow", (
'h1', 'h8', '10.8.0.101', ["r1", "r2", "r7", "r8"], 30, 1, "concurrent_failure", [0, 3000], "Packet flow on routers before failure", "tcp", 100)),
'h1', 'h8', '10.8.0.101', ["r1", "r2", "r4", "r7"], 30, 1, "concurrent_failure", [0, 3000], "Packet flow on routers before failure", "tcp", 100)),
},
"failures": [
@ -552,9 +552,9 @@ class EightRoutersFourHosts(CustomTopo):
"use_pre_defined_function": True,
"separate_definitions": True,
"command_pre": ("measure_packet_flow", (
'h1', 'h8', '10.8.0.101', ["r1", "r2", "r7", "r8"], 30, 1, "udp_before_failure", [0, 15000], "UDP Packet flow on routers before failure", "udp", 100)),
'h1', 'h8', '10.8.0.101', ["r1", "r2", "r4", "r7"], 30, 1, "udp_before_failure", [0, 15000], "UDP Packet flow on routers before failure", "udp", 100)),
"command_post": ("measure_packet_flow", (
'h1', 'h8', '10.8.0.101', ["r1", "r2", "r7", "r8"], 30, 1, "udp_after_failure", [0, 15000], "UDP Packet flow on routers after failure", "udp", 100)),
'h1', 'h8', '10.8.0.101', ["r1", "r2", "r4", "r7"], 30, 1, "udp_after_failure", [0, 15000], "UDP Packet flow on routers after failure", "udp", 100)),
},
"failures": [
@ -579,7 +579,7 @@ class EightRoutersFourHosts(CustomTopo):
"execute": {
"use_pre_defined_function": True,
"command": ("measure_packet_flow", (
'h1', 'h8', '10.8.0.101', ["r1", "r2", "r7", "r8"], 30, 1, "udp_concurrent_failure", [0, 15000], "UDP Packet flow on routers before failure", "udp", 100)),
'h1', 'h8', '10.8.0.101', ["r1", "r2", "r4", "r7"], 30, 1, "udp_concurrent_failure", [0, 15000], "UDP Packet flow on routers before failure", "udp", 100)),
},
"failures": [

@ -36,15 +36,21 @@ Longer failure paths would of course increase this additional delay. Because Sho
As such ShortCut provides a reliable way to optimize alternative routes, especially for time sensitive data like VOIP.
\subsection{TCP packet flow}
\label{discussion_packet_flow_tcp}
Our packet flow measurements using a TCP data transfer showed the amount of packets forwarded on each router. A naive assumption would be that the routers on a looped path would have to forward each packet twice and therefore have a 100\% increased load on them. This is, however, not true for TCP as only packets sent to the receiving device are forwarded through our loop in our topologies. ACKs returning from the \textit{iperf} server are not sent through the looped path. Because of this the routers on the looped path actually only forward half of all packets, except for the router at the entry point of the loop. It has to be noted that these packets all contain data and therefore do have full impact on the bandwidth of links involved in the looped path as discussed previously in \cref{discussion_bandwidth_link_usage}.
\subsection{Packet flow}
\label{discussion_packet_flow}
Our packet flow measurements using a TCP data transfer showed the amount of packets forwarded on each router. A naive assumption would be that the routers on a looped path would have to forward each packet twice and therefore have a 100\% increased load on them. This is, however, not true for TCP as only packets sent to the receiving device are forwarded through our loop in our topologies. ACKs returning from the \textit{iperf} server are not sent through the looped path. Because of this the routers on the looped path actually only forward half of all packets.
All routers on the failure path, except for the router at the end, will forward all packets sent into the loop twice. While the actual amount of packets does not change for these routers, as ACKs are not sent into the loop, they add onto the overall load of the network. The router directly attached to the broken link will just forward packets once.
The entry point of the loop, which in our topologies is always router R1, forwards each packet containing data twice and acknowledgements once, increasing the workload for the router by 50\%.
Longer failure paths do not influence this behaviour.
It has to be noted that these packets all contain data and therefore do have full impact on the bandwidth of links involved in the looped path as discussed previously in \cref{discussion_bandwidth_link_usage}.
ShortCut is able to cut the looped path and therefore restores the network to a state in which all routers on the path of routing forward the same amount of packets, with routers on the looped path not forwarding any packets anymore.
The entry point of the loop, which in our topologies is always router R1, forwards each packet containing data twice and in addition to this the acknowledgements once, increasing the workload for the router by 50\%.
Longer failure paths do not influence this behaviour, they do however add more devices which will be affected by the failure and therefore also the amount of packets forwarded on the network in total.
This adds up to 33\% more packets forwarded in our minimal network, 50\% more packets forwarded in our first failure path network and a 60\% increase in forwarded packets in our longer second failure path network.
When using UDP for our data transfer and measuring the packets forwarded on routers, the differences between TCP and UDP become quite obvious. As UDP does not send ACKs on successful transmission, all looped routers except for the router directly attached to the failure, e.g. router R4 for the second failure path network, will forward all packets twice.
For our minimal network this meant an increase in packets forwarded on the network by 50\%. With increasing length of the failure path the impact on the network grew worse, with a 100\% increase of packets forwarded for our first failure path network and a 120\% increase for our longer second failure path network.
For all transfers, be it using TCP or UDP, ShortCut is able to cut the looped path and therefore restore the network to a state in which only a minimum amount of routers forward the same amount of packets. No more additional packets are forwarded, alleviating the burden placed on the network. ShortCut proves to be a reliable way to reduce traffic caused by failures.
\subsection{UDP packet flow}
\label{discussion_packet_flow_udp}
When using UDP for our data transfer and measuring the packets forwarded on routers, the differences between TCP and UDP become quite obvious. As UDP does not send ACKs on successful transmission there a

@ -43,7 +43,7 @@ The second measurement however always uses H1 as an \textit{iperf} server, shift
\subsection{TCP packet flow}
The test uses the "measure\_packet\_flow" function described in \textit{measure\_packet\_flow} in \cref{implementation_commands}.
Depending on the topology
For each topology we chose four routers for which the packet counters should be implemented. For our minimal topology this choice was easy - we just implemented packet counters on all routers. In our failure path networks however we
\subsection{UDP packet flow}
\section{Failures, FRR and FRMs}

@ -49,7 +49,7 @@ The subnets between routers were given IP addresses in a similar fashion as show
\label{testing_failure_path}
\begin{figure}
\centering
\fbox{\includegraphics[width=10cm]{testing_failure_path_1}}
\includegraphics[width=10cm]{testing_failure_path_1}
\caption{A network with a failure path length of 2 links and 2 routers}
\label{fig:testing_failure_path_1}
\end{figure}
@ -58,7 +58,7 @@ FRMs advantages include the removal of longer paths. In theory, these should red
\begin{figure}
\centering
\fbox{\includegraphics[width=10cm]{testing_failure_path_2}}
\includegraphics[width=10cm]{testing_failure_path_2}
\caption{A network with a failure path length of 3 links and 3 routers}
\label{fig:testing_failure_path_2}
\end{figure}

@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.17.4 (https://cairographics.org)
%%CreationDate: Sun May 01 19:11:37 2022
%%CreationDate: Tue May 17 00:56:41 2022
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
@ -102,12 +102,12 @@ Encoding 119 /w put
/.notdef 0 def
/H 1 def
/one 2 def
/three 3 def
/six 3 def
/R 4 def
/two 5 def
/four 6 def
/five 7 def
/six 8 def
/three 8 def
/p 9 def
/l 10 def
/a 11 def
@ -130,7 +130,7 @@ end readonly def
<00010000000900800003001063767420595e5f14000026640000029c6670676d1a0c76f90000
2900000004dc676c7966d50d93e50000009c000025c868656164e7752f8e00002ddc00000036
686865610fc308cb00002e1400000024686d747879230ed500002e38000000686c6f63610001
e86000002ea00000006c6d6178700428060200002f0c0000002070726570765c925e00002f2c
e78400002ea00000006c6d6178700428060200002f0c0000002070726570765c925e00002f2c
000004ec00020100000007000600000300070014b706020400060204002fcdddcd002fcdddcd
3130211121112521112101000600fa800500fb000600fa00800500000000000100c80000053b
05d1000b0128b2033508b8ffc040140f0f025500081008020808050a070301050809024110ff
@ -148,7 +148,57 @@ b8ffeeb40c0c025505b8ffeeb40d0d065505b8ffeeb60c0c0655056c0c10f62b2b2b2b2b2b2b
700303030c1010025503b8ffe0400b0f0f025503160909025503b8fff4401d0b0b0255031e0c
0c025503060d0d025503100d0d065503100c0c0655032f2b2b2b2b2b2b2b2b5d33ed2b2b3932
2f5d2f335d003ffd323f332fed3130012b2b2b2b2b2b21213521112135323637363637331121
043cfcda0136feca3f90252e35049b01309803e6881514194d41fac20000000100a7ffe1047c
043cfcda0136feca3f90252e35049b01309803e6881514194d41fac2000000020089ffe104a7
05ed0022003700c44033060d160d3925333133374925423143375f01560d5020502165217531
0e1a0329491d1313174a1d030f023549030a1a2c2f1223410afff8000b000b0140005a0023ff
fc000c000c0140b65a232100120900b8ffeeb40f0f025500b8fff4400b0b0b0255000c0c0c02
5500b8ffec40100d0d0255009c390f391f39022f080b0bb80140b45a2f040c0cb80140b35a2f
2109b8fff4b60f0f025509983810f62bed2b2b5d10e62b2b2b2b113910ed2b2b2f123939003f
ed3f1239fd322f2fed123931305d011400232226272602353412373624333216171523262623
220007363633321617161607342627262623220607060615141617161633323604a7fed5d96e
b445565d555d580116b93b50290a1c713bd7ff001554a36b5f914c5859cb373f2e703d55924d
020241392e6b3f91a601e3e3fee14443530112c1c6013277717f0a0dbf0f1bfef3e533352335
3dba8d5d7a2d2014282a16291f9eb7352c29b1000000000200c80000059805d10010001f0128
403108011d012d013a01391d450f4814481d5a01560f59146f016902600a650b7e01750b1102
01b300100010071a3402400d0db8014040225a02400d0d025502400d0d065540020102020518
3407030105080f211f2140210311bbfff8000b000b0140b65a11150f0d010db8fff8401d0909
02550d1c0c0c02550d0c0d0d06550d180c0c06550d0d1020000100b8ffea400a0d0d06550019
03040c0db80140b45a03080b0bb8014040115a03090c0c0655031400050e1010025505b8fffc
b40b0b025505b8ffda400b0f0f025505080909025505b8ffeeb40c0c025505b8ffeab40d0d02
5505b8fff1b60c0c0655056c2010f62b2b2b2b2b2b2b32fd2b2b2b322f2b5d39392f2b2b2b2b
5ded2b5d003f3c3fed12392f5d2b2b2bed123931300187107afd18c0015d2121012111231121
3216171616151406071334262726262323113332363736360598fefffe0efee9c601a187b448
515ba28e612d342b7650e9c85e8c312d2b0250fdb005d1232d339b77a1d93701a34063221d17
fdce212d2a6d0000000100a10000049105f0002001084051501f601f02050306111603151124
113b05380d350e3f1d3f1e391f4b05480d450e4f1d4f1e491f5f035d045d055b0956115f195e
1b5d1c5f1d5f1e6a036406651162156f1e700274117f1a7f1c7f1e2503b8ffe8b40c0c065502
b8ffe840210c0c0655000f100f2d082f1c300f400f060f400c0c02550f400c0d06550f400c0c
b80140400f5a0f0f0b4a1302021f4a01081f0208410afff8000b000b0140005a0008fffc000c
000c014040165a0821160c0f0f0255160c0909025516040b0b025516b8fff440190c0c025516
160c0c06551616209e220f221f2202101002992110f6322f5d10f6322f2b2b2b2b2bed2b2b12
39003ffd323fed332f2b2b2b5d31302b2b5d015d212135363637363635342623220607233536
3633320415140607060607060607210491fc1069d35bc08e99895bd4650a47ed6fe501042b2a
27694b6be4630321d15ab459badb7f74834042d2233addbd5593423e784969c554000002004d
000004b305d1000a000d0158b308080b0bb80140b45a09080b0bb80140b45a01080b0bb80140
b45a02080b0bb80140b45a08100c0cb80140b45a09100c0cb80140b45a01100c0cb80140b45a
02100c0cb80140b45a08040d0db80140b45a09040d0db80140b45a01040d0db80140b45a0204
0d0db8014040225a040d140d240d340d440d700d060c180c0c06550c0d480606070c0607090d
490105b8ffc040190c0c0655050503070303083f0a4f0a020a0f0f1f0f02070c04b8fff4b40c
0c025504b8fff3400e0c0c065504200a090d064f060101b8ffe4400b0b0b0255010a0c0c0255
01b8fffab40d0d025501b8ffee40320c0c065501010f061f063f060306261010025506020f0f
0255061809090255060c0b0b0255060c0c0c025506180c0c0655062f2b2b2b2b2b2b5d332f2b
2b2b2b5d12393333ed2b2b39395d2f5d003f3f12392f2b3cfd321239393130018710fd04c02b
015d2b2b2b2b2b2b2b2b2b2b2b2b012311231121350133113321110104b3ddc0fd3702d1b8dd
fe63fdbf01a3fe5d01a3e60348fc7202a0fd6000000100bbffe1048505d1002a00ddb321040d
0db80140b45a22040d0db8014040295a0a081a082b083d0835113d164b0844115a0854296a08
7a080c1d1d1a490f251f2540250325400d0db8014040185a25214a25061e020f0a1f0a020a0a
0e4a060a2022080b0cb80140b65a22204f1d011db8ffec40180b0b02551d160c0c02551d0e0d
0d02551d100c0c06551d14410afff8000b000b0140005a0014fffc000c000c014040185a1421
00201d0900160c0c0255009f2c0f2c1f2c02099b2b10e65d10e62b11393910ed2b2b2f2b2b2b
2b5ded2b2f003fed332f5d3f1239ed2f2b5dfd322f31305d012b2b0114060706062322262735
331616333236373636353426272626232206071121152111363633321617161604854c4248c7
837ae24e0e52dc6a4785342c2d352f34955c58a33b0380fd412b5a2179b64c505801d968be41
464b3324d3344928322b784f4d6a20261f180c02ffaffe740404293437ae000100a7ffe1047c
05f0003d00f040580b0b052f1a0b152f290b262f293c3c0b35143122342f4a0b45144322432f
56015905590b552f6a0b662f6a3c780b762f74357b3c1a343a443a023b3a1e491f012d112d02
2d2d294a1f0931020f0d1f0d020d0d114a090a23410afff8000b000b0140005a0023fffc000c
@ -159,57 +209,7 @@ b8ffeeb40c0c025505b8ffeeb40d0d065505b8ffeeb60c0c0655056c0c10f62b2b2b2b2b2b2b
3736363534262726262323353332363534262726262322060723353636333216171616151406
07151616040e303e4a434bcb797cf04d0f55e66b3f8e2c2e2d332d2d804a5a4698b52e292b62
3e5fd65f0a47ed6f6da643484aaf77307c02cd2b826766aa3f46433b23d1384a2a292c6a5150
691e1f17a67f7a36511a1a14443ed1233b282c30885b7cb9180e0833000200c80000059805d1
0010001f0128403108011d012d013a01391d450f4814481d5a01560f59146f016902600a650b
7e01750b110201b300100010071a3402400d0db8014040225a02400d0d025502400d0d065540
0201020205183407030105080f211f2140210311bbfff8000b000b0140b65a11150f0d010db8
fff8401d090902550d1c0c0c02550d0c0d0d06550d180c0c06550d0d1020000100b8ffea400a
0d0d0655001903040c0db80140b45a03080b0bb8014040115a03090c0c0655031400050e1010
025505b8fffcb40b0b025505b8ffda400b0f0f025505080909025505b8ffeeb40c0c025505b8
ffeab40d0d025505b8fff1b60c0c0655056c2010f62b2b2b2b2b2b2b32fd2b2b2b322f2b5d39
392f2b2b2b2b5ded2b5d003f3c3fed12392f5d2b2b2bed123931300187107afd18c0015d2121
0121112311213216171616151406071334262726262323113332363736360598fefffe0efee9
c601a187b448515ba28e612d342b7650e9c85e8c312d2b0250fdb005d1232d339b77a1d93701
a34063221d17fdce212d2a6d0000000100a10000049105f0002001084051501f601f02050306
111603151124113b05380d350e3f1d3f1e391f4b05480d450e4f1d4f1e491f5f035d045d055b
0956115f195e1b5d1c5f1d5f1e6a036406651162156f1e700274117f1a7f1c7f1e2503b8ffe8
b40c0c065502b8ffe840210c0c0655000f100f2d082f1c300f400f060f400c0c02550f400c0d
06550f400c0cb80140400f5a0f0f0b4a1302021f4a01081f0208410afff8000b000b0140005a
0008fffc000c000c014040165a0821160c0f0f0255160c0909025516040b0b025516b8fff440
190c0c025516160c0c06551616209e220f221f2202101002992110f6322f5d10f6322f2b2b2b
2b2bed2b2b1239003ffd323fed332f2b2b2b5d31302b2b5d015d212135363637363635342623
2206072335363633320415140607060607060607210491fc1069d35bc08e99895bd4650a47ed
6fe501042b2a27694b6be4630321d15ab459badb7f74834042d2233addbd5593423e784969c5
54000002004d000004b305d1000a000d0158b308080b0bb80140b45a09080b0bb80140b45a01
080b0bb80140b45a02080b0bb80140b45a08100c0cb80140b45a09100c0cb80140b45a01100c
0cb80140b45a02100c0cb80140b45a08040d0db80140b45a09040d0db80140b45a01040d0db8
0140b45a02040d0db8014040225a040d140d240d340d440d700d060c180c0c06550c0d480606
070c0607090d490105b8ffc040190c0c0655050503070303083f0a4f0a020a0f0f1f0f02070c
04b8fff4b40c0c025504b8fff3400e0c0c065504200a090d064f060101b8ffe4400b0b0b0255
010a0c0c025501b8fffab40d0d025501b8ffee40320c0c065501010f061f063f060306261010
025506020f0f0255061809090255060c0b0b0255060c0c0c025506180c0c0655062f2b2b2b2b
2b2b5d332f2b2b2b2b5d12393333ed2b2b39395d2f5d003f3f12392f2b3cfd32123939313001
8710fd04c02b015d2b2b2b2b2b2b2b2b2b2b2b2b012311231121350133113321110104b3ddc0
fd3702d1b8ddfe63fdbf01a3fe5d01a3e60348fc7202a0fd6000000100bbffe1048505d1002a
00ddb321040d0db80140b45a22040d0db8014040295a0a081a082b083d0835113d164b084411
5a0854296a087a080c1d1d1a490f251f2540250325400d0db8014040185a25214a25061e020f
0a1f0a020a0a0e4a060a2022080b0cb80140b65a22204f1d011db8ffec40180b0b02551d160c
0c02551d0e0d0d02551d100c0c06551d14410afff8000b000b0140005a0014fffc000c000c01
4040185a142100201d0900160c0c0255009f2c0f2c1f2c02099b2b10e65d10e62b11393910ed
2b2b2f2b2b2b2b5ded2b2f003fed332f5d3f1239ed2f2b5dfd322f31305d012b2b0114060706
0623222627353316163332363736363534262726262322060711211521113636333216171616
04854c4248c7837ae24e0e52dc6a4785342c2d352f34955c58a33b0380fd412b5a2179b64c50
5801d968be41464b3324d3344928322b784f4d6a20261f180c02ffaffe740404293437ae0002
0089ffe104a705ed0022003700c44033060d160d3925333133374925423143375f01560d5020
5021652175310e1a0329491d1313174a1d030f023549030a1a2c2f1223410afff8000b000b01
40005a0023fffc000c000c0140b65a232100120900b8ffeeb40f0f025500b8fff4400b0b0b02
55000c0c0c025500b8ffec40100d0d0255009c390f391f39022f080b0bb80140b45a2f040c0c
b80140b35a2f2109b8fff4b60f0f025509983810f62bed2b2b5d10e62b2b2b2b113910ed2b2b
2f123939003fed3f1239fd322f2fed123931305d011400232226272602353412373624333216
1715232626232200073636333216171616073426272626232206070606151416171616333236
04a7fed5d96eb445565d555d580116b93b50290a1c713bd7ff001554a36b5f914c5859cb373f
2e703d55924d020241392e6b3f91a601e3e3fee14443530112c1c6013277717f0a0dbf0f1bfe
f3e5333523353dba8d5d7a2d2014282a16291f9eb7352c29b1000000000200b9fe640490047c
691e1f17a67f7a36511a1a14443ed1233b282c30885b7cb9180e0833000200b9fe640490047c
0013002001694025320239153220430249154220561267127e087c1c0a0e0906174211040c05
1e4006090b0c144113fff8000b000b0140005a0014fffc000d000d0140005a0014fff8000c00
0c0140005a0014fff4b40c0c025514b8fff6b60c0c0655141b00b8fff0b40b0b025500b8ffd0
@ -436,13 +436,13 @@ b80180b109401bb2054008ba01800009014059b9400000808855b94000020063b8040088555a
438ab020205c58212121b0631c598a8a208a208a23b81000635658b81000635658b00426b001
5bb00426b00426b004261b21212121b13600231c591b2159b0042623b08062205c588a5c8a5a
23212321b01d1c598ab08062205c5821212321b00e1c59b00426b00161b8ff981c23212d0001
00000005547b961bdf7f5f0f3cf5001b080000000000aa7e442900000000d60e4bf0fb86fd93
00000005547b961be1375f0f3cf5001b080000000000aa7e442900000000d60e4bf0fb86fd93
0c2f086800000009000200010000000000010000080bfe5200000cedfb86fd710c2f00010000
000000000000000000000000001a08000100060300c805160116051600a7059000c8051600a1
0516004d051600bb0516008904fc00b9023200bb04ce0068051000b904c4006a04fc006c02d0
000000000000000000000000001a08000100060300c80516011605160089059000c8051600a1
0516004d051600bb051600a704fc00b9023200bb04ce0068051000b904c4006a04fc006c02d0
000002d00044023200af051000b1036a00b904db006a0327003e042b006e068c0056042b0069
051000b9000000000000004000000198000002a000000440000005d400000744000008d80000
0a3800000bac00000d8000000ea400001130000012ec0000147c0000164c0000164c0000179c
051000b9000000000000004000000198000002a000000414000005a800000718000008ac0000
0a0c00000bac00000d8000000ea400001130000012ec0000147c0000164c0000164c0000179c
0000195400001b0000001c1c00001dd400001efc00002130000022a800002404000025c80001
0000001a00790007006b000500020010002f005d0000039104ec00030001bb0054014b002a01
4a401956f332f256f201d556f121d556f0d5ff1f5ff2eff2021ff201b80128b201d556b80127
@ -527,7 +527,7 @@ q 1 0 0 1 0 0 cm
BT
6.969866 0 0 -7.724195 375.988598 132.270446 Tm
/f-0-0 1 Tf
(H3)Tj
(H6)Tj
ET
0.751181 w
q 1 0 0 1 0 0 cm
@ -873,7 +873,7 @@ q 1 0 0 1 0 0 cm
BT
6.969866 0 0 -7.724195 299.114108 61.75644 Tm
/f-0-0 1 Tf
(H2)Tj
(H3)Tj
7.216131 0 0 -7.724199 262.601365 113.745151 Tm
(R3)Tj
ET

@ -26,7 +26,7 @@
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="3.1037318"
inkscape:cx="288.20145"
inkscape:cx="381.95955"
inkscape:cy="183.97208"
inkscape:window-width="1920"
inkscape:window-height="1017"
@ -163,7 +163,7 @@
id="tspan2864-3"
style="stroke-width:0.104906"
x="91.708122"
y="42.661163">H3</tspan></text>
y="42.661163">H6</tspan></text>
</g>
<path
style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
@ -459,7 +459,7 @@
style="stroke-width:0.104906"
x="66.442757"
y="48.360664"
id="tspan5709">H2</tspan></text>
id="tspan5709">H3</tspan></text>
</g>
<g
id="g32177"

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

@ -1,6 +1,6 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.17.4 (https://cairographics.org)
%%CreationDate: Sun May 01 19:13:22 2022
%%CreationDate: Tue May 17 00:57:21 2022
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
@ -104,13 +104,13 @@ Encoding 119 /w put
/.notdef 0 def
/H 1 def
/one 2 def
/three 3 def
/eight 3 def
/R 4 def
/two 5 def
/five 6 def
/six 7 def
/seven 8 def
/eight 9 def
/three 6 def
/five 7 def
/six 8 def
/seven 9 def
/four 10 def
/p 11 def
/l 12 def
@ -134,7 +134,7 @@ end readonly def
<00010000000900800003001063767420595e5f14000029180000029c6670676d1a0c76f90000
2bb4000004dc676c7966c03e3e8b0000009c0000287c68656164e7752f8e0000309000000036
686865610fc308cd000030c800000024686d7478834f0fe9000030ec000000706c6f63610002
30380000315c000000746d617870042a0602000031d00000002070726570765c925e000031f0
345c0000315c000000746d617870042a0602000031d00000002070726570765c925e000031f0
000004ec00020100000007000600000300070014b706020400060204002fcdddcd002fcdddcd
3130211121112521112101000600fa800500fb000600fa00800500000000000100c80000053b
05d1000b0128b2033508b8ffc040140f0f025500081008020808050a070301050809024110ff
@ -152,39 +152,53 @@ b8ffeeb40c0c025505b8ffeeb40d0d065505b8ffeeb60c0c0655056c0c10f62b2b2b2b2b2b2b
700303030c1010025503b8ffe0400b0f0f025503160909025503b8fff4401d0b0b0255031e0c
0c025503060d0d025503100d0d065503100c0c0655032f2b2b2b2b2b2b2b2b5d33ed2b2b3932
2f5d2f335d003ffd323f332fed3130012b2b2b2b2b2b21213521112135323637363637331121
043cfcda0136feca3f90252e35049b01309803e6881514194d41fac20000000100a7ffe1047c
05f0003d00f040580b0b052f1a0b152f290b262f293c3c0b35143122342f4a0b45144322432f
56015905590b552f6a0b662f6a3c780b762f74357b3c1a343a443a023b3a1e491f012d112d02
2d2d294a1f0931020f0d1f0d020d0d114a090a23410afff8000b000b0140005a0023fffc000c
000c014040195a2321370c0c0c025537040d0d025537060c0c0655371e2e16410afff8000b00
0b0140005a0016fffc000c000c014040215a1621032e1e3a37040c031a0c0c0255030c0c0c06
5503a03f0f3f1f3f020c9a3e10e65d10e62b2b11173910ed2b2b2f2f2f2b2b2bed2b2b003fed
332f5d3f1239ed332f5d2ffd39395d31305d0116161514060706062322262735331616333236
3736363534262726262323353332363534262726262322060723353636333216171616151406
07151616040e303e4a434bcb797cf04d0f55e66b3f8e2c2e2d332d2d804a5a4698b52e292b62
3e5fd65f0a47ed6f6da643484aaf77307c02cd2b826766aa3f46433b23d1384a2a292c6a5150
691e1f17a67f7a36511a1a14443ed1233b282c30885b7cb9180e0833000200c80000059805d1
0010001f0128403108011d012d013a01391d450f4814481d5a01560f59146f016902600a650b
7e01750b110201b300100010071a3402400d0db8014040225a02400d0d025502400d0d065540
0201020205183407030105080f211f2140210311bbfff8000b000b0140b65a11150f0d010db8
fff8401d090902550d1c0c0c02550d0c0d0d06550d180c0c06550d0d1020000100b8ffea400a
0d0d0655001903040c0db80140b45a03080b0bb8014040115a03090c0c0655031400050e1010
025505b8fffcb40b0b025505b8ffda400b0f0f025505080909025505b8ffeeb40c0c025505b8
ffeab40d0d025505b8fff1b60c0c0655056c2010f62b2b2b2b2b2b2b32fd2b2b2b322f2b5d39
392f2b2b2b2b5ded2b5d003f3c3fed12392f5d2b2b2bed123931300187107afd18c0015d2121
0121112311213216171616151406071334262726262323113332363736360598fefffe0efee9
c601a187b448515ba28e612d342b7650e9c85e8c312d2b0250fdb005d1232d339b77a1d93701
a34063221d17fdce212d2a6d0000000100a10000049105f0002001084051501f601f02050306
111603151124113b05380d350e3f1d3f1e391f4b05480d450e4f1d4f1e491f5f035d045d055b
0956115f195e1b5d1c5f1d5f1e6a036406651162156f1e700274117f1a7f1c7f1e2503b8ffe8
b40c0c065502b8ffe840210c0c0655000f100f2d082f1c300f400f060f400c0c02550f400c0d
06550f400c0cb80140400f5a0f0f0b4a1302021f4a01081f0208410afff8000b000b0140005a
0008fffc000c000c014040165a0821160c0f0f0255160c0909025516040b0b025516b8fff440
190c0c025516160c0c06551616209e220f221f2202101002992110f6322f5d10f6322f2b2b2b
2b2bed2b2b1239003ffd323fed332f2b2b2b5d31302b2b5d015d212135363637363635342623
2206072335363633320415140607060607060607210491fc1069d35bc08e99895bd4650a47ed
6fe501042b2a27694b6be4630321d15ab459badb7f74834042d2233addbd5593423e784969c5
5400000100bbffe1048505d1002a00ddb321040d0db80140b45a22040d0db8014040295a0a08
043cfcda0136feca3f90252e35049b01309803e6881514194d41fac200000003007affde049c
05f30019002800370168b90026fff4b40d0f025525b8fff4b40d0f025524b8fff4b40d0f0255
23b8fff4b40d0f025522b8fff440550d0f02552d2b3415332234273433441541224427453350
155b195a1b5a1f54225f2b592c5f31543354376008620e6212621960236027760e76127b2c86
121d0602a926a62f0226160a2f04031d4710023548030a1a410afff8000b000b0140005a001a
fffc000c000d0140400d5a1a200013011313002f0a0d29410afff8000b000b0140005a0029ff
fc000c000c014040195a29210016262000160c0c0255009d390f391f390220080b0bb80140b4
5a20040c0db80140b35a20210db8fff4400a0f0f02550d0d32080b0bb80140b45a32040c0cb8
0140b55a322106973810f6ed2b2b332f2bed2b2b5d10e42b11393910ed2b2b11393911332f71
ed2b2b003fed3fed1217395d435458401e592c892c02292c3203352f292f3623452356236423
9926061a202303261d111217395d111217395d5931305d2b2b2b2b2b01140023222435343637
3526263534243332041514060715161603342623220615141617161617363613342627262627
0606151416333236049cfed3e4f2fee1908378730114d5df010a7e7a8c94eda5807ea1515225
8b42634c1f51762f705d5a6dba8f92af019fc1ff00fac37cc93b06409872a8e0d6a565c33706
3cb0024f6b7f7866486929123a13428efd735c6f3816262231a86a87b096000200c800000598
05d10010001f0128403108011d012d013a01391d450f4814481d5a01560f59146f016902600a
650b7e01750b110201b300100010071a3402400d0db8014040225a02400d0d025502400d0d06
55400201020205183407030105080f211f2140210311bbfff8000b000b0140b65a11150f0d01
0db8fff8401d090902550d1c0c0c02550d0c0d0d06550d180c0c06550d0d1020000100b8ffea
400a0d0d0655001903040c0db80140b45a03080b0bb8014040115a03090c0c0655031400050e
1010025505b8fffcb40b0b025505b8ffda400b0f0f025505080909025505b8ffeeb40c0c0255
05b8ffeab40d0d025505b8fff1b60c0c0655056c2010f62b2b2b2b2b2b2b32fd2b2b2b322f2b
5d39392f2b2b2b2b5ded2b5d003f3c3fed12392f5d2b2b2bed123931300187107afd18c0015d
21210121112311213216171616151406071334262726262323113332363736360598fefffe0e
fee9c601a187b448515ba28e612d342b7650e9c85e8c312d2b0250fdb005d1232d339b77a1d9
3701a34063221d17fdce212d2a6d0000000100a10000049105f0002001084051501f601f0205
0306111603151124113b05380d350e3f1d3f1e391f4b05480d450e4f1d4f1e491f5f035d045d
055b0956115f195e1b5d1c5f1d5f1e6a036406651162156f1e700274117f1a7f1c7f1e2503b8
ffe8b40c0c065502b8ffe840210c0c0655000f100f2d082f1c300f400f060f400c0c02550f40
0c0d06550f400c0cb80140400f5a0f0f0b4a1302021f4a01081f0208410afff8000b000b0140
005a0008fffc000c000c014040165a0821160c0f0f0255160c0909025516040b0b025516b8ff
f440190c0c025516160c0c06551616209e220f221f2202101002992110f6322f5d10f6322f2b
2b2b2b2bed2b2b1239003ffd323fed332f2b2b2b5d31302b2b5d015d21213536363736363534
26232206072335363633320415140607060607060607210491fc1069d35bc08e99895bd4650a
47ed6fe501042b2a27694b6be4630321d15ab459badb7f74834042d2233addbd5593423e7849
69c55400000100a7ffe1047c05f0003d00f040580b0b052f1a0b152f290b262f293c3c0b3514
3122342f4a0b45144322432f56015905590b552f6a0b662f6a3c780b762f74357b3c1a343a44
3a023b3a1e491f012d112d022d2d294a1f0931020f0d1f0d020d0d114a090a23410afff8000b
000b0140005a0023fffc000c000c014040195a2321370c0c0c025537040d0d025537060c0c06
55371e2e16410afff8000b000b0140005a0016fffc000c000c014040215a1621032e1e3a3704
0c031a0c0c0255030c0c0c065503a03f0f3f1f3f020c9a3e10e65d10e62b2b11173910ed2b2b
2f2f2f2b2b2bed2b2b003fed332f5d3f1239ed332f5d2ffd39395d31305d0116161514060706
0623222627353316163332363736363534262726262323353332363534262726262322060723
35363633321617161615140607151616040e303e4a434bcb797cf04d0f55e66b3f8e2c2e2d33
2d2d804a5a4698b52e292b623e5fd65f0a47ed6f6da643484aaf77307c02cd2b826766aa3f46
433b23d1384a2a292c6a5150691e1f17a67f7a36511a1a14443ed1233b282c30885b7cb9180e
0833000100bbffe1048505d1002a00ddb321040d0db80140b45a22040d0db8014040295a0a08
1a082b083d0835113d164b0844115a0854296a087a080c1d1d1a490f251f2540250325400d0d
b8014040185a25214a25061e020f0a1f0a020a0a0e4a060a2022080b0cb80140b65a22204f1d
011db8ffec40180b0b02551d160c0c02551d0e0d0d02551d100c0c06551d14410afff8000b00
@ -207,21 +221,7 @@ b10000000001009a0000049505d10006007841110003fff8000c000c0140005a0002fff8000c
000c0140005a0003fffb000b000b014040335a09010a02240148014b02580279030703010001
20020203000002034a050302080f081f087b020303000202040f00010000042f332f5d12392f
12395d003f3ffd11392f3130018710ed87c0015d012b2b2b010123012135210495fd5ed602cd
fcb003fb04f2fb0e0522af000003007affde049c05f30019002800370168b90026fff4b40d0f
025525b8fff4b40d0f025524b8fff4b40d0f025523b8fff4b40d0f025522b8fff440550d0f02
552d2b3415332234273433441541224427453350155b195a1b5a1f54225f2b592c5f31543354
376008620e6212621960236027760e76127b2c86121d0602a926a62f0226160a2f04031d4710
023548030a1a410afff8000b000b0140005a001afffc000c000d0140400d5a1a200013011313
002f0a0d29410afff8000b000b0140005a0029fffc000c000c014040195a2921001626200016
0c0c0255009d390f391f390220080b0bb80140b45a20040c0db80140b35a20210db8fff4400a
0f0f02550d0d32080b0bb80140b45a32040c0cb80140b55a322106973810f6ed2b2b332f2bed
2b2b5d10e42b11393910ed2b2b11393911332f71ed2b2b003fed3fed1217395d435458401e59
2c892c02292c3203352f292f36234523562364239926061a202303261d111217395d11121739
5d5931305d2b2b2b2b2b01140023222435343637352626353424333204151406071516160334
26232206151416171616173636133426272626270606151416333236049cfed3e4f2fee19083
78730114d5df010a7e7a8c94eda5807ea15152258b42634c1f51762f705d5a6dba8f92af019f
c1ff00fac37cc93b06409872a8e0d6a565c337063cb0024f6b7f7866486929123a13428efd73
5c6f3816262231a86a87b0960002004d000004b305d1000a000d0158b308080b0bb80140b45a
fcb003fb04f2fb0e0522af000002004d000004b305d1000a000d0158b308080b0bb80140b45a
09080b0bb80140b45a01080b0bb80140b45a02080b0bb80140b45a08100c0cb80140b45a0910
0c0cb80140b45a01100c0cb80140b45a02100c0cb80140b45a08040d0db80140b45a09040d0d
b80140b45a01040d0db80140b45a02040d0db8014040225a040d140d240d340d440d700d060c
@ -458,13 +458,13 @@ b1000243b056237921b0024323b020205c58212121b100471c598a8a208a208a23b810006356
b072237921b10002438ab020205c58212121b0631c598a8a208a208a23b81000635658b81000
635658b00426b0015bb00426b00426b004261b21212121b13600231c591b2159b0042623b080
62205c588a5c8a5a23212321b01d1c598ab08062205c5821212321b00e1c59b00426b00161b8
ff981c23212d000100000005547bab5ddfcb5f0f3cf5001b080000000000aa7e442900000000
ff981c23212d000100000005547bab5dd7835f0f3cf5001b080000000000aa7e442900000000
d60e4bf0fb86fd930c2f086800000009000200010000000000010000080bfe5200000cedfb86
fd710c2f00010000000000000000000000000000001c08000100060300c805160116051600a7
059000c8051600a1051600bb051600890516009a0516007a0516004d04fc00b9023200bb04ce
fd710c2f00010000000000000000000000000000001c08000100060300c8051601160516007a
059000c8051600a1051600a7051600bb051600890516009a0516004d04fc00b9023200bb04ce
0068051000b904c4006a04fc006c02d0000002d00044023200af051000b1036a00b904db006a
0327003e042b006e068c0056042b0069051000b9000000000000004000000198000002a00000
0440000005d400000744000008a400000a1800000ab800000ccc00000e600000103400001158
04b400000648000007b80000095800000ab800000c2c00000ccc00000e600000103400001158
000013e4000015a000001730000019000000190000001a5000001c0800001db400001ed00000
2088000021b0000023e40000255c000026b80000287c00010000001c00790007006b00050002
0010002f005d0000039104ec00030001bb0054014b002a014a401956f332f256f201d556f121
@ -553,7 +553,7 @@ q 1 0 0 1 0 0 cm
BT
6.969866 0 0 -7.724195 447.058333 119.416742 Tm
/f-0-0 1 Tf
(H3)Tj
(H8)Tj
ET
0.6 g
415.562 110.215 18.016 13.965 re f
@ -1075,7 +1075,7 @@ q 1 0 0 1 0 0 cm
BT
6.969866 0 0 -7.724195 329.547301 35.48079 Tm
/f-0-0 1 Tf
(H2)Tj
(H4)Tj
7.216131 0 0 -7.724199 328.916948 101.858024 Tm
(R4)Tj
ET

@ -164,7 +164,7 @@
id="tspan2864-3"
style="stroke-width:0.104906"
x="91.708122"
y="42.661163">H3</tspan></text>
y="42.661163">H8</tspan></text>
</g>
<g
id="g32802-4-7-1"
@ -593,7 +593,7 @@
style="stroke-width:0.104906"
x="66.442757"
y="48.360664"
id="tspan5709">H2</tspan></text>
id="tspan5709">H4</tspan></text>
</g>
<g
id="g32177"

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB