diff --git a/build/0/both-with-label.svg b/build/0/both-with-label.svg
new file mode 100644
index 0000000..9709051
--- /dev/null
+++ b/build/0/both-with-label.svg
@@ -0,0 +1,1044 @@
+
+
+
diff --git a/build/0/both.svg b/build/0/both.svg
new file mode 100644
index 0000000..8565b40
--- /dev/null
+++ b/build/0/both.svg
@@ -0,0 +1,1007 @@
+
+
+
diff --git a/build/0/ch1.svg b/build/0/ch1.svg
new file mode 100644
index 0000000..99404d7
--- /dev/null
+++ b/build/0/ch1.svg
@@ -0,0 +1,498 @@
+
+
+
diff --git a/build/0/ch2.svg b/build/0/ch2.svg
new file mode 100644
index 0000000..f39477f
--- /dev/null
+++ b/build/0/ch2.svg
@@ -0,0 +1,481 @@
+
+
+
diff --git a/build/1/both-with-label.svg b/build/1/both-with-label.svg
new file mode 100644
index 0000000..c1efc44
--- /dev/null
+++ b/build/1/both-with-label.svg
@@ -0,0 +1,1010 @@
+
+
+
diff --git a/build/1/both.svg b/build/1/both.svg
new file mode 100644
index 0000000..0bd349a
--- /dev/null
+++ b/build/1/both.svg
@@ -0,0 +1,973 @@
+
+
+
diff --git a/build/1/ch1.svg b/build/1/ch1.svg
new file mode 100644
index 0000000..503ca3b
--- /dev/null
+++ b/build/1/ch1.svg
@@ -0,0 +1,476 @@
+
+
+
diff --git a/build/1/ch2.svg b/build/1/ch2.svg
new file mode 100644
index 0000000..f788053
--- /dev/null
+++ b/build/1/ch2.svg
@@ -0,0 +1,481 @@
+
+
+
diff --git a/build/10/both-with-label.svg b/build/10/both-with-label.svg
new file mode 100644
index 0000000..ff130e1
--- /dev/null
+++ b/build/10/both-with-label.svg
@@ -0,0 +1,710 @@
+
+
+
diff --git a/build/10/both.svg b/build/10/both.svg
new file mode 100644
index 0000000..fcae7f0
--- /dev/null
+++ b/build/10/both.svg
@@ -0,0 +1,673 @@
+
+
+
diff --git a/build/10/ch1.svg b/build/10/ch1.svg
new file mode 100644
index 0000000..eda53ef
--- /dev/null
+++ b/build/10/ch1.svg
@@ -0,0 +1,322 @@
+
+
+
diff --git a/build/10/ch2.svg b/build/10/ch2.svg
new file mode 100644
index 0000000..034a672
--- /dev/null
+++ b/build/10/ch2.svg
@@ -0,0 +1,323 @@
+
+
+
diff --git a/build/11/both-with-label.svg b/build/11/both-with-label.svg
new file mode 100644
index 0000000..9c5ef8b
--- /dev/null
+++ b/build/11/both-with-label.svg
@@ -0,0 +1,722 @@
+
+
+
diff --git a/build/11/both.svg b/build/11/both.svg
new file mode 100644
index 0000000..aa81890
--- /dev/null
+++ b/build/11/both.svg
@@ -0,0 +1,685 @@
+
+
+
diff --git a/build/11/ch1.svg b/build/11/ch1.svg
new file mode 100644
index 0000000..8eb82be
--- /dev/null
+++ b/build/11/ch1.svg
@@ -0,0 +1,331 @@
+
+
+
diff --git a/build/11/ch2.svg b/build/11/ch2.svg
new file mode 100644
index 0000000..875f7e2
--- /dev/null
+++ b/build/11/ch2.svg
@@ -0,0 +1,326 @@
+
+
+
diff --git a/build/12/both-with-label.svg b/build/12/both-with-label.svg
new file mode 100644
index 0000000..54383b6
--- /dev/null
+++ b/build/12/both-with-label.svg
@@ -0,0 +1,597 @@
+
+
+
diff --git a/build/12/both.svg b/build/12/both.svg
new file mode 100644
index 0000000..8b5f111
--- /dev/null
+++ b/build/12/both.svg
@@ -0,0 +1,560 @@
+
+
+
diff --git a/build/12/ch1.svg b/build/12/ch1.svg
new file mode 100644
index 0000000..c4d455d
--- /dev/null
+++ b/build/12/ch1.svg
@@ -0,0 +1,275 @@
+
+
+
diff --git a/build/12/ch2.svg b/build/12/ch2.svg
new file mode 100644
index 0000000..9bea8d8
--- /dev/null
+++ b/build/12/ch2.svg
@@ -0,0 +1,269 @@
+
+
+
diff --git a/build/13/both-with-label.svg b/build/13/both-with-label.svg
new file mode 100644
index 0000000..2250e85
--- /dev/null
+++ b/build/13/both-with-label.svg
@@ -0,0 +1,606 @@
+
+
+
diff --git a/build/13/both.svg b/build/13/both.svg
new file mode 100644
index 0000000..e00660d
--- /dev/null
+++ b/build/13/both.svg
@@ -0,0 +1,569 @@
+
+
+
diff --git a/build/13/ch1.svg b/build/13/ch1.svg
new file mode 100644
index 0000000..db61c9e
--- /dev/null
+++ b/build/13/ch1.svg
@@ -0,0 +1,279 @@
+
+
+
diff --git a/build/13/ch2.svg b/build/13/ch2.svg
new file mode 100644
index 0000000..b020f21
--- /dev/null
+++ b/build/13/ch2.svg
@@ -0,0 +1,274 @@
+
+
+
diff --git a/build/14/both-with-label.svg b/build/14/both-with-label.svg
new file mode 100644
index 0000000..94ff673
--- /dev/null
+++ b/build/14/both-with-label.svg
@@ -0,0 +1,606 @@
+
+
+
diff --git a/build/14/both.svg b/build/14/both.svg
new file mode 100644
index 0000000..4023e3f
--- /dev/null
+++ b/build/14/both.svg
@@ -0,0 +1,569 @@
+
+
+
diff --git a/build/14/ch1.svg b/build/14/ch1.svg
new file mode 100644
index 0000000..0d8a6b4
--- /dev/null
+++ b/build/14/ch1.svg
@@ -0,0 +1,278 @@
+
+
+
diff --git a/build/14/ch2.svg b/build/14/ch2.svg
new file mode 100644
index 0000000..bec0b81
--- /dev/null
+++ b/build/14/ch2.svg
@@ -0,0 +1,275 @@
+
+
+
diff --git a/build/15/both-with-label.svg b/build/15/both-with-label.svg
new file mode 100644
index 0000000..929fe76
--- /dev/null
+++ b/build/15/both-with-label.svg
@@ -0,0 +1,613 @@
+
+
+
diff --git a/build/15/both.svg b/build/15/both.svg
new file mode 100644
index 0000000..c41e476
--- /dev/null
+++ b/build/15/both.svg
@@ -0,0 +1,576 @@
+
+
+
diff --git a/build/15/ch1.svg b/build/15/ch1.svg
new file mode 100644
index 0000000..a93f67b
--- /dev/null
+++ b/build/15/ch1.svg
@@ -0,0 +1,281 @@
+
+
+
diff --git a/build/15/ch2.svg b/build/15/ch2.svg
new file mode 100644
index 0000000..7b252fd
--- /dev/null
+++ b/build/15/ch2.svg
@@ -0,0 +1,279 @@
+
+
+
diff --git a/build/16/both-with-label.svg b/build/16/both-with-label.svg
new file mode 100644
index 0000000..4b211c5
--- /dev/null
+++ b/build/16/both-with-label.svg
@@ -0,0 +1,1047 @@
+
+
+
diff --git a/build/16/both.svg b/build/16/both.svg
new file mode 100644
index 0000000..6b38ccc
--- /dev/null
+++ b/build/16/both.svg
@@ -0,0 +1,1010 @@
+
+
+
diff --git a/build/16/ch1.svg b/build/16/ch1.svg
new file mode 100644
index 0000000..37d61c7
--- /dev/null
+++ b/build/16/ch1.svg
@@ -0,0 +1,496 @@
+
+
+
diff --git a/build/16/ch2.svg b/build/16/ch2.svg
new file mode 100644
index 0000000..65b3b58
--- /dev/null
+++ b/build/16/ch2.svg
@@ -0,0 +1,486 @@
+
+
+
diff --git a/build/17/both-with-label.svg b/build/17/both-with-label.svg
new file mode 100644
index 0000000..8101ba1
--- /dev/null
+++ b/build/17/both-with-label.svg
@@ -0,0 +1,990 @@
+
+
+
diff --git a/build/17/both.svg b/build/17/both.svg
new file mode 100644
index 0000000..63adf20
--- /dev/null
+++ b/build/17/both.svg
@@ -0,0 +1,953 @@
+
+
+
diff --git a/build/17/ch1.svg b/build/17/ch1.svg
new file mode 100644
index 0000000..0be7020
--- /dev/null
+++ b/build/17/ch1.svg
@@ -0,0 +1,476 @@
+
+
+
diff --git a/build/17/ch2.svg b/build/17/ch2.svg
new file mode 100644
index 0000000..da0f286
--- /dev/null
+++ b/build/17/ch2.svg
@@ -0,0 +1,461 @@
+
+
+
diff --git a/build/18/both-with-label.svg b/build/18/both-with-label.svg
new file mode 100644
index 0000000..fbfe2c8
--- /dev/null
+++ b/build/18/both-with-label.svg
@@ -0,0 +1,1047 @@
+
+
+
diff --git a/build/18/both.svg b/build/18/both.svg
new file mode 100644
index 0000000..82e74e8
--- /dev/null
+++ b/build/18/both.svg
@@ -0,0 +1,1010 @@
+
+
+
diff --git a/build/18/ch1.svg b/build/18/ch1.svg
new file mode 100644
index 0000000..c7e9a24
--- /dev/null
+++ b/build/18/ch1.svg
@@ -0,0 +1,496 @@
+
+
+
diff --git a/build/18/ch2.svg b/build/18/ch2.svg
new file mode 100644
index 0000000..1253dae
--- /dev/null
+++ b/build/18/ch2.svg
@@ -0,0 +1,486 @@
+
+
+
diff --git a/build/19/both-with-label.svg b/build/19/both-with-label.svg
new file mode 100644
index 0000000..bc65364
--- /dev/null
+++ b/build/19/both-with-label.svg
@@ -0,0 +1,1062 @@
+
+
+
diff --git a/build/19/both.svg b/build/19/both.svg
new file mode 100644
index 0000000..f435246
--- /dev/null
+++ b/build/19/both.svg
@@ -0,0 +1,1025 @@
+
+
+
diff --git a/build/19/ch1.svg b/build/19/ch1.svg
new file mode 100644
index 0000000..7b54045
--- /dev/null
+++ b/build/19/ch1.svg
@@ -0,0 +1,496 @@
+
+
+
diff --git a/build/19/ch2.svg b/build/19/ch2.svg
new file mode 100644
index 0000000..78ecdac
--- /dev/null
+++ b/build/19/ch2.svg
@@ -0,0 +1,501 @@
+
+
+
diff --git a/build/2/both-with-label.svg b/build/2/both-with-label.svg
new file mode 100644
index 0000000..e5c48c6
--- /dev/null
+++ b/build/2/both-with-label.svg
@@ -0,0 +1,990 @@
+
+
+
diff --git a/build/2/both.svg b/build/2/both.svg
new file mode 100644
index 0000000..4fbfae4
--- /dev/null
+++ b/build/2/both.svg
@@ -0,0 +1,953 @@
+
+
+
diff --git a/build/2/ch1.svg b/build/2/ch1.svg
new file mode 100644
index 0000000..d3142c7
--- /dev/null
+++ b/build/2/ch1.svg
@@ -0,0 +1,476 @@
+
+
+
diff --git a/build/2/ch2.svg b/build/2/ch2.svg
new file mode 100644
index 0000000..7de4400
--- /dev/null
+++ b/build/2/ch2.svg
@@ -0,0 +1,461 @@
+
+
+
diff --git a/build/20/both-with-label.svg b/build/20/both-with-label.svg
new file mode 100644
index 0000000..a19d29b
--- /dev/null
+++ b/build/20/both-with-label.svg
@@ -0,0 +1,1052 @@
+
+
+
diff --git a/build/20/both.svg b/build/20/both.svg
new file mode 100644
index 0000000..6ac7e37
--- /dev/null
+++ b/build/20/both.svg
@@ -0,0 +1,1015 @@
+
+
+
diff --git a/build/20/ch1.svg b/build/20/ch1.svg
new file mode 100644
index 0000000..478d24c
--- /dev/null
+++ b/build/20/ch1.svg
@@ -0,0 +1,496 @@
+
+
+
diff --git a/build/20/ch2.svg b/build/20/ch2.svg
new file mode 100644
index 0000000..fc9db23
--- /dev/null
+++ b/build/20/ch2.svg
@@ -0,0 +1,491 @@
+
+
+
diff --git a/build/21/both-with-label.svg b/build/21/both-with-label.svg
new file mode 100644
index 0000000..4cf305b
--- /dev/null
+++ b/build/21/both-with-label.svg
@@ -0,0 +1,1042 @@
+
+
+
diff --git a/build/21/both.svg b/build/21/both.svg
new file mode 100644
index 0000000..74b2fd9
--- /dev/null
+++ b/build/21/both.svg
@@ -0,0 +1,1005 @@
+
+
+
diff --git a/build/21/ch1.svg b/build/21/ch1.svg
new file mode 100644
index 0000000..3beff2b
--- /dev/null
+++ b/build/21/ch1.svg
@@ -0,0 +1,496 @@
+
+
+
diff --git a/build/21/ch2.svg b/build/21/ch2.svg
new file mode 100644
index 0000000..35f6e52
--- /dev/null
+++ b/build/21/ch2.svg
@@ -0,0 +1,481 @@
+
+
+
diff --git a/build/22/both-with-label.svg b/build/22/both-with-label.svg
new file mode 100644
index 0000000..4ba0f9e
--- /dev/null
+++ b/build/22/both-with-label.svg
@@ -0,0 +1,1052 @@
+
+
+
diff --git a/build/22/both.svg b/build/22/both.svg
new file mode 100644
index 0000000..9a4b669
--- /dev/null
+++ b/build/22/both.svg
@@ -0,0 +1,1015 @@
+
+
+
diff --git a/build/22/ch1.svg b/build/22/ch1.svg
new file mode 100644
index 0000000..e37a034
--- /dev/null
+++ b/build/22/ch1.svg
@@ -0,0 +1,496 @@
+
+
+
diff --git a/build/22/ch2.svg b/build/22/ch2.svg
new file mode 100644
index 0000000..7353acf
--- /dev/null
+++ b/build/22/ch2.svg
@@ -0,0 +1,491 @@
+
+
+
diff --git a/build/23/both-with-label.svg b/build/23/both-with-label.svg
new file mode 100644
index 0000000..5294201
--- /dev/null
+++ b/build/23/both-with-label.svg
@@ -0,0 +1,1052 @@
+
+
+
diff --git a/build/23/both.svg b/build/23/both.svg
new file mode 100644
index 0000000..9e5225c
--- /dev/null
+++ b/build/23/both.svg
@@ -0,0 +1,1015 @@
+
+
+
diff --git a/build/23/ch1.svg b/build/23/ch1.svg
new file mode 100644
index 0000000..87b8c49
--- /dev/null
+++ b/build/23/ch1.svg
@@ -0,0 +1,496 @@
+
+
+
diff --git a/build/23/ch2.svg b/build/23/ch2.svg
new file mode 100644
index 0000000..8e1e36b
--- /dev/null
+++ b/build/23/ch2.svg
@@ -0,0 +1,491 @@
+
+
+
diff --git a/build/24/both-with-label.svg b/build/24/both-with-label.svg
new file mode 100644
index 0000000..727dbcd
--- /dev/null
+++ b/build/24/both-with-label.svg
@@ -0,0 +1,1052 @@
+
+
+
diff --git a/build/24/both.svg b/build/24/both.svg
new file mode 100644
index 0000000..7b2ae92
--- /dev/null
+++ b/build/24/both.svg
@@ -0,0 +1,1015 @@
+
+
+
diff --git a/build/24/ch1.svg b/build/24/ch1.svg
new file mode 100644
index 0000000..8caed4a
--- /dev/null
+++ b/build/24/ch1.svg
@@ -0,0 +1,496 @@
+
+
+
diff --git a/build/24/ch2.svg b/build/24/ch2.svg
new file mode 100644
index 0000000..08ebeb9
--- /dev/null
+++ b/build/24/ch2.svg
@@ -0,0 +1,491 @@
+
+
+
diff --git a/build/25/both-with-label.svg b/build/25/both-with-label.svg
new file mode 100644
index 0000000..4f7ce66
--- /dev/null
+++ b/build/25/both-with-label.svg
@@ -0,0 +1,1057 @@
+
+
+
diff --git a/build/25/both.svg b/build/25/both.svg
new file mode 100644
index 0000000..6dc9c74
--- /dev/null
+++ b/build/25/both.svg
@@ -0,0 +1,1020 @@
+
+
+
diff --git a/build/25/ch1.svg b/build/25/ch1.svg
new file mode 100644
index 0000000..a967c06
--- /dev/null
+++ b/build/25/ch1.svg
@@ -0,0 +1,496 @@
+
+
+
diff --git a/build/25/ch2.svg b/build/25/ch2.svg
new file mode 100644
index 0000000..d7e92b8
--- /dev/null
+++ b/build/25/ch2.svg
@@ -0,0 +1,496 @@
+
+
+
diff --git a/build/26/both-with-label.svg b/build/26/both-with-label.svg
new file mode 100644
index 0000000..84a4326
--- /dev/null
+++ b/build/26/both-with-label.svg
@@ -0,0 +1,1062 @@
+
+
+
diff --git a/build/26/both.svg b/build/26/both.svg
new file mode 100644
index 0000000..95664e9
--- /dev/null
+++ b/build/26/both.svg
@@ -0,0 +1,1025 @@
+
+
+
diff --git a/build/26/ch1.svg b/build/26/ch1.svg
new file mode 100644
index 0000000..e38cb42
--- /dev/null
+++ b/build/26/ch1.svg
@@ -0,0 +1,496 @@
+
+
+
diff --git a/build/26/ch2.svg b/build/26/ch2.svg
new file mode 100644
index 0000000..ddebf3a
--- /dev/null
+++ b/build/26/ch2.svg
@@ -0,0 +1,501 @@
+
+
+
diff --git a/build/27/both-with-label.svg b/build/27/both-with-label.svg
new file mode 100644
index 0000000..d368b28
--- /dev/null
+++ b/build/27/both-with-label.svg
@@ -0,0 +1,1062 @@
+
+
+
diff --git a/build/27/both.svg b/build/27/both.svg
new file mode 100644
index 0000000..71188cc
--- /dev/null
+++ b/build/27/both.svg
@@ -0,0 +1,1025 @@
+
+
+
diff --git a/build/27/ch1.svg b/build/27/ch1.svg
new file mode 100644
index 0000000..04e212b
--- /dev/null
+++ b/build/27/ch1.svg
@@ -0,0 +1,496 @@
+
+
+
diff --git a/build/27/ch2.svg b/build/27/ch2.svg
new file mode 100644
index 0000000..b45af5a
--- /dev/null
+++ b/build/27/ch2.svg
@@ -0,0 +1,501 @@
+
+
+
diff --git a/build/28/both-with-label.svg b/build/28/both-with-label.svg
new file mode 100644
index 0000000..eb4cb16
--- /dev/null
+++ b/build/28/both-with-label.svg
@@ -0,0 +1,990 @@
+
+
+
diff --git a/build/28/both.svg b/build/28/both.svg
new file mode 100644
index 0000000..d8e11d9
--- /dev/null
+++ b/build/28/both.svg
@@ -0,0 +1,953 @@
+
+
+
diff --git a/build/28/ch1.svg b/build/28/ch1.svg
new file mode 100644
index 0000000..e315fa7
--- /dev/null
+++ b/build/28/ch1.svg
@@ -0,0 +1,476 @@
+
+
+
diff --git a/build/28/ch2.svg b/build/28/ch2.svg
new file mode 100644
index 0000000..782fb2f
--- /dev/null
+++ b/build/28/ch2.svg
@@ -0,0 +1,461 @@
+
+
+
diff --git a/build/29/both-with-label.svg b/build/29/both-with-label.svg
new file mode 100644
index 0000000..7db580c
--- /dev/null
+++ b/build/29/both-with-label.svg
@@ -0,0 +1,804 @@
+
+
+
diff --git a/build/29/both.svg b/build/29/both.svg
new file mode 100644
index 0000000..79c7a1f
--- /dev/null
+++ b/build/29/both.svg
@@ -0,0 +1,767 @@
+
+
+
diff --git a/build/29/ch1.svg b/build/29/ch1.svg
new file mode 100644
index 0000000..f9427ea
--- /dev/null
+++ b/build/29/ch1.svg
@@ -0,0 +1,359 @@
+
+
+
diff --git a/build/29/ch2.svg b/build/29/ch2.svg
new file mode 100644
index 0000000..c445b73
--- /dev/null
+++ b/build/29/ch2.svg
@@ -0,0 +1,380 @@
+
+
+
diff --git a/build/3/both-with-label.svg b/build/3/both-with-label.svg
new file mode 100644
index 0000000..a472335
--- /dev/null
+++ b/build/3/both-with-label.svg
@@ -0,0 +1,777 @@
+
+
+
diff --git a/build/3/both.svg b/build/3/both.svg
new file mode 100644
index 0000000..89ec315
--- /dev/null
+++ b/build/3/both.svg
@@ -0,0 +1,740 @@
+
+
+
diff --git a/build/3/ch1.svg b/build/3/ch1.svg
new file mode 100644
index 0000000..954922e
--- /dev/null
+++ b/build/3/ch1.svg
@@ -0,0 +1,360 @@
+
+
+
diff --git a/build/3/ch2.svg b/build/3/ch2.svg
new file mode 100644
index 0000000..93f83e4
--- /dev/null
+++ b/build/3/ch2.svg
@@ -0,0 +1,352 @@
+
+
+
diff --git a/build/30/both-with-label.svg b/build/30/both-with-label.svg
new file mode 100644
index 0000000..dc9260f
--- /dev/null
+++ b/build/30/both-with-label.svg
@@ -0,0 +1,787 @@
+
+
+
diff --git a/build/30/both.svg b/build/30/both.svg
new file mode 100644
index 0000000..f71e622
--- /dev/null
+++ b/build/30/both.svg
@@ -0,0 +1,750 @@
+
+
+
diff --git a/build/30/ch1.svg b/build/30/ch1.svg
new file mode 100644
index 0000000..2347bb0
--- /dev/null
+++ b/build/30/ch1.svg
@@ -0,0 +1,366 @@
+
+
+
diff --git a/build/30/ch2.svg b/build/30/ch2.svg
new file mode 100644
index 0000000..3a68b2f
--- /dev/null
+++ b/build/30/ch2.svg
@@ -0,0 +1,358 @@
+
+
+
diff --git a/build/31/both-with-label.svg b/build/31/both-with-label.svg
new file mode 100644
index 0000000..986f66c
--- /dev/null
+++ b/build/31/both-with-label.svg
@@ -0,0 +1,814 @@
+
+
+
diff --git a/build/31/both.svg b/build/31/both.svg
new file mode 100644
index 0000000..02c7bab
--- /dev/null
+++ b/build/31/both.svg
@@ -0,0 +1,777 @@
+
+
+
diff --git a/build/31/ch1.svg b/build/31/ch1.svg
new file mode 100644
index 0000000..4762717
--- /dev/null
+++ b/build/31/ch1.svg
@@ -0,0 +1,372 @@
+
+
+
diff --git a/build/31/ch2.svg b/build/31/ch2.svg
new file mode 100644
index 0000000..9c62546
--- /dev/null
+++ b/build/31/ch2.svg
@@ -0,0 +1,377 @@
+
+
+
diff --git a/build/32/both-with-label.svg b/build/32/both-with-label.svg
new file mode 100644
index 0000000..acf194e
--- /dev/null
+++ b/build/32/both-with-label.svg
@@ -0,0 +1,802 @@
+
+
+
diff --git a/build/32/both.svg b/build/32/both.svg
new file mode 100644
index 0000000..ce41881
--- /dev/null
+++ b/build/32/both.svg
@@ -0,0 +1,765 @@
+
+
+
diff --git a/build/32/ch1.svg b/build/32/ch1.svg
new file mode 100644
index 0000000..6ebc651
--- /dev/null
+++ b/build/32/ch1.svg
@@ -0,0 +1,373 @@
+
+
+
diff --git a/build/32/ch2.svg b/build/32/ch2.svg
new file mode 100644
index 0000000..90bf92e
--- /dev/null
+++ b/build/32/ch2.svg
@@ -0,0 +1,364 @@
+
+
+
diff --git a/build/33/both-with-label.svg b/build/33/both-with-label.svg
new file mode 100644
index 0000000..857b854
--- /dev/null
+++ b/build/33/both-with-label.svg
@@ -0,0 +1,688 @@
+
+
+
diff --git a/build/33/both.svg b/build/33/both.svg
new file mode 100644
index 0000000..2bc6ed1
--- /dev/null
+++ b/build/33/both.svg
@@ -0,0 +1,651 @@
+
+
+
diff --git a/build/33/ch1.svg b/build/33/ch1.svg
new file mode 100644
index 0000000..74c40b1
--- /dev/null
+++ b/build/33/ch1.svg
@@ -0,0 +1,314 @@
+
+
+
diff --git a/build/33/ch2.svg b/build/33/ch2.svg
new file mode 100644
index 0000000..502beb5
--- /dev/null
+++ b/build/33/ch2.svg
@@ -0,0 +1,309 @@
+
+
+
diff --git a/build/34/both-with-label.svg b/build/34/both-with-label.svg
new file mode 100644
index 0000000..0527025
--- /dev/null
+++ b/build/34/both-with-label.svg
@@ -0,0 +1,710 @@
+
+
+
diff --git a/build/34/both.svg b/build/34/both.svg
new file mode 100644
index 0000000..f38fef2
--- /dev/null
+++ b/build/34/both.svg
@@ -0,0 +1,673 @@
+
+
+
diff --git a/build/34/ch1.svg b/build/34/ch1.svg
new file mode 100644
index 0000000..c056d2e
--- /dev/null
+++ b/build/34/ch1.svg
@@ -0,0 +1,318 @@
+
+
+
diff --git a/build/34/ch2.svg b/build/34/ch2.svg
new file mode 100644
index 0000000..9be3718
--- /dev/null
+++ b/build/34/ch2.svg
@@ -0,0 +1,327 @@
+
+
+
diff --git a/build/35/both-with-label.svg b/build/35/both-with-label.svg
new file mode 100644
index 0000000..d23e9ef
--- /dev/null
+++ b/build/35/both-with-label.svg
@@ -0,0 +1,707 @@
+
+
+
diff --git a/build/35/both.svg b/build/35/both.svg
new file mode 100644
index 0000000..5bea526
--- /dev/null
+++ b/build/35/both.svg
@@ -0,0 +1,670 @@
+
+
+
diff --git a/build/35/ch1.svg b/build/35/ch1.svg
new file mode 100644
index 0000000..853ad96
--- /dev/null
+++ b/build/35/ch1.svg
@@ -0,0 +1,323 @@
+
+
+
diff --git a/build/35/ch2.svg b/build/35/ch2.svg
new file mode 100644
index 0000000..a6fecbd
--- /dev/null
+++ b/build/35/ch2.svg
@@ -0,0 +1,319 @@
+
+
+
diff --git a/build/36/both-with-label.svg b/build/36/both-with-label.svg
new file mode 100644
index 0000000..9ec3339
--- /dev/null
+++ b/build/36/both-with-label.svg
@@ -0,0 +1,712 @@
+
+
+
diff --git a/build/36/both.svg b/build/36/both.svg
new file mode 100644
index 0000000..8a84c5a
--- /dev/null
+++ b/build/36/both.svg
@@ -0,0 +1,675 @@
+
+
+
diff --git a/build/36/ch1.svg b/build/36/ch1.svg
new file mode 100644
index 0000000..fc9b05b
--- /dev/null
+++ b/build/36/ch1.svg
@@ -0,0 +1,327 @@
+
+
+
diff --git a/build/36/ch2.svg b/build/36/ch2.svg
new file mode 100644
index 0000000..0e421b5
--- /dev/null
+++ b/build/36/ch2.svg
@@ -0,0 +1,320 @@
+
+
+
diff --git a/build/37/both-with-label.svg b/build/37/both-with-label.svg
new file mode 100644
index 0000000..99dd0d8
--- /dev/null
+++ b/build/37/both-with-label.svg
@@ -0,0 +1,615 @@
+
+
+
diff --git a/build/37/both.svg b/build/37/both.svg
new file mode 100644
index 0000000..e0732b8
--- /dev/null
+++ b/build/37/both.svg
@@ -0,0 +1,578 @@
+
+
+
diff --git a/build/37/ch1.svg b/build/37/ch1.svg
new file mode 100644
index 0000000..944fb8e
--- /dev/null
+++ b/build/37/ch1.svg
@@ -0,0 +1,279 @@
+
+
+
diff --git a/build/37/ch2.svg b/build/37/ch2.svg
new file mode 100644
index 0000000..1576f38
--- /dev/null
+++ b/build/37/ch2.svg
@@ -0,0 +1,283 @@
+
+
+
diff --git a/build/38/both-with-label.svg b/build/38/both-with-label.svg
new file mode 100644
index 0000000..6b98048
--- /dev/null
+++ b/build/38/both-with-label.svg
@@ -0,0 +1,642 @@
+
+
+
diff --git a/build/38/both.svg b/build/38/both.svg
new file mode 100644
index 0000000..acc8c91
--- /dev/null
+++ b/build/38/both.svg
@@ -0,0 +1,605 @@
+
+
+
diff --git a/build/38/ch1.svg b/build/38/ch1.svg
new file mode 100644
index 0000000..309564e
--- /dev/null
+++ b/build/38/ch1.svg
@@ -0,0 +1,281 @@
+
+
+
diff --git a/build/38/ch2.svg b/build/38/ch2.svg
new file mode 100644
index 0000000..e442062
--- /dev/null
+++ b/build/38/ch2.svg
@@ -0,0 +1,308 @@
+
+
+
diff --git a/build/39/both-with-label.svg b/build/39/both-with-label.svg
new file mode 100644
index 0000000..fc30ccd
--- /dev/null
+++ b/build/39/both-with-label.svg
@@ -0,0 +1,649 @@
+
+
+
diff --git a/build/39/both.svg b/build/39/both.svg
new file mode 100644
index 0000000..a30d578
--- /dev/null
+++ b/build/39/both.svg
@@ -0,0 +1,612 @@
+
+
+
diff --git a/build/39/ch1.svg b/build/39/ch1.svg
new file mode 100644
index 0000000..7844ef1
--- /dev/null
+++ b/build/39/ch1.svg
@@ -0,0 +1,294 @@
+
+
+
diff --git a/build/39/ch2.svg b/build/39/ch2.svg
new file mode 100644
index 0000000..8b9d88e
--- /dev/null
+++ b/build/39/ch2.svg
@@ -0,0 +1,302 @@
+
+
+
diff --git a/build/4/both-with-label.svg b/build/4/both-with-label.svg
new file mode 100644
index 0000000..e623ac9
--- /dev/null
+++ b/build/4/both-with-label.svg
@@ -0,0 +1,799 @@
+
+
+
diff --git a/build/4/both.svg b/build/4/both.svg
new file mode 100644
index 0000000..ce7e190
--- /dev/null
+++ b/build/4/both.svg
@@ -0,0 +1,762 @@
+
+
+
diff --git a/build/4/ch1.svg b/build/4/ch1.svg
new file mode 100644
index 0000000..b09e4f5
--- /dev/null
+++ b/build/4/ch1.svg
@@ -0,0 +1,365 @@
+
+
+
diff --git a/build/4/ch2.svg b/build/4/ch2.svg
new file mode 100644
index 0000000..afb5972
--- /dev/null
+++ b/build/4/ch2.svg
@@ -0,0 +1,369 @@
+
+
+
diff --git a/build/40/both-with-label.svg b/build/40/both-with-label.svg
new file mode 100644
index 0000000..f0f9d31
--- /dev/null
+++ b/build/40/both-with-label.svg
@@ -0,0 +1,830 @@
+
+
+
diff --git a/build/40/both.svg b/build/40/both.svg
new file mode 100644
index 0000000..0b22191
--- /dev/null
+++ b/build/40/both.svg
@@ -0,0 +1,793 @@
+
+
+
diff --git a/build/40/ch1.svg b/build/40/ch1.svg
new file mode 100644
index 0000000..2fb27b1
--- /dev/null
+++ b/build/40/ch1.svg
@@ -0,0 +1,383 @@
+
+
+
diff --git a/build/40/ch2.svg b/build/40/ch2.svg
new file mode 100644
index 0000000..89b608a
--- /dev/null
+++ b/build/40/ch2.svg
@@ -0,0 +1,374 @@
+
+
+
diff --git a/build/41/both-with-label.svg b/build/41/both-with-label.svg
new file mode 100644
index 0000000..c4df6ec
--- /dev/null
+++ b/build/41/both-with-label.svg
@@ -0,0 +1,831 @@
+
+
+
diff --git a/build/41/both.svg b/build/41/both.svg
new file mode 100644
index 0000000..4778b52
--- /dev/null
+++ b/build/41/both.svg
@@ -0,0 +1,794 @@
+
+
+
diff --git a/build/41/ch1.svg b/build/41/ch1.svg
new file mode 100644
index 0000000..685ea13
--- /dev/null
+++ b/build/41/ch1.svg
@@ -0,0 +1,390 @@
+
+
+
diff --git a/build/41/ch2.svg b/build/41/ch2.svg
new file mode 100644
index 0000000..86e1c48
--- /dev/null
+++ b/build/41/ch2.svg
@@ -0,0 +1,370 @@
+
+
+
diff --git a/build/42/both-with-label.svg b/build/42/both-with-label.svg
new file mode 100644
index 0000000..72af6fd
--- /dev/null
+++ b/build/42/both-with-label.svg
@@ -0,0 +1,822 @@
+
+
+
diff --git a/build/42/both.svg b/build/42/both.svg
new file mode 100644
index 0000000..2ec8203
--- /dev/null
+++ b/build/42/both.svg
@@ -0,0 +1,785 @@
+
+
+
diff --git a/build/42/ch1.svg b/build/42/ch1.svg
new file mode 100644
index 0000000..a72c84c
--- /dev/null
+++ b/build/42/ch1.svg
@@ -0,0 +1,385 @@
+
+
+
diff --git a/build/42/ch2.svg b/build/42/ch2.svg
new file mode 100644
index 0000000..791cfa8
--- /dev/null
+++ b/build/42/ch2.svg
@@ -0,0 +1,364 @@
+
+
+
diff --git a/build/43/both-with-label.svg b/build/43/both-with-label.svg
new file mode 100644
index 0000000..8992eb7
--- /dev/null
+++ b/build/43/both-with-label.svg
@@ -0,0 +1,819 @@
+
+
+
diff --git a/build/43/both.svg b/build/43/both.svg
new file mode 100644
index 0000000..6c4bb64
--- /dev/null
+++ b/build/43/both.svg
@@ -0,0 +1,782 @@
+
+
+
diff --git a/build/43/ch1.svg b/build/43/ch1.svg
new file mode 100644
index 0000000..2280191
--- /dev/null
+++ b/build/43/ch1.svg
@@ -0,0 +1,385 @@
+
+
+
diff --git a/build/43/ch2.svg b/build/43/ch2.svg
new file mode 100644
index 0000000..a0b0f5e
--- /dev/null
+++ b/build/43/ch2.svg
@@ -0,0 +1,361 @@
+
+
+
diff --git a/build/44/both-with-label.svg b/build/44/both-with-label.svg
new file mode 100644
index 0000000..d16dd29
--- /dev/null
+++ b/build/44/both-with-label.svg
@@ -0,0 +1,821 @@
+
+
+
diff --git a/build/44/both.svg b/build/44/both.svg
new file mode 100644
index 0000000..a56f2f5
--- /dev/null
+++ b/build/44/both.svg
@@ -0,0 +1,784 @@
+
+
+
diff --git a/build/44/ch1.svg b/build/44/ch1.svg
new file mode 100644
index 0000000..7921be3
--- /dev/null
+++ b/build/44/ch1.svg
@@ -0,0 +1,387 @@
+
+
+
diff --git a/build/44/ch2.svg b/build/44/ch2.svg
new file mode 100644
index 0000000..921f6ca
--- /dev/null
+++ b/build/44/ch2.svg
@@ -0,0 +1,361 @@
+
+
+
diff --git a/build/45/both-with-label.svg b/build/45/both-with-label.svg
new file mode 100644
index 0000000..2ef9ec6
--- /dev/null
+++ b/build/45/both-with-label.svg
@@ -0,0 +1,819 @@
+
+
+
diff --git a/build/45/both.svg b/build/45/both.svg
new file mode 100644
index 0000000..c8402f1
--- /dev/null
+++ b/build/45/both.svg
@@ -0,0 +1,782 @@
+
+
+
diff --git a/build/45/ch1.svg b/build/45/ch1.svg
new file mode 100644
index 0000000..3d68a63
--- /dev/null
+++ b/build/45/ch1.svg
@@ -0,0 +1,384 @@
+
+
+
diff --git a/build/45/ch2.svg b/build/45/ch2.svg
new file mode 100644
index 0000000..312120f
--- /dev/null
+++ b/build/45/ch2.svg
@@ -0,0 +1,362 @@
+
+
+
diff --git a/build/46/both-with-label.svg b/build/46/both-with-label.svg
new file mode 100644
index 0000000..5c80944
--- /dev/null
+++ b/build/46/both-with-label.svg
@@ -0,0 +1,751 @@
+
+
+
diff --git a/build/46/both.svg b/build/46/both.svg
new file mode 100644
index 0000000..7e63fd0
--- /dev/null
+++ b/build/46/both.svg
@@ -0,0 +1,714 @@
+
+
+
diff --git a/build/46/ch1.svg b/build/46/ch1.svg
new file mode 100644
index 0000000..20be27e
--- /dev/null
+++ b/build/46/ch1.svg
@@ -0,0 +1,348 @@
+
+
+
diff --git a/build/46/ch2.svg b/build/46/ch2.svg
new file mode 100644
index 0000000..8e6c391
--- /dev/null
+++ b/build/46/ch2.svg
@@ -0,0 +1,342 @@
+
+
+
diff --git a/build/47/both-with-label.svg b/build/47/both-with-label.svg
new file mode 100644
index 0000000..a7d3847
--- /dev/null
+++ b/build/47/both-with-label.svg
@@ -0,0 +1,767 @@
+
+
+
diff --git a/build/47/both.svg b/build/47/both.svg
new file mode 100644
index 0000000..81d4f92
--- /dev/null
+++ b/build/47/both.svg
@@ -0,0 +1,730 @@
+
+
+
diff --git a/build/47/ch1.svg b/build/47/ch1.svg
new file mode 100644
index 0000000..d439d25
--- /dev/null
+++ b/build/47/ch1.svg
@@ -0,0 +1,353 @@
+
+
+
diff --git a/build/47/ch2.svg b/build/47/ch2.svg
new file mode 100644
index 0000000..2152f15
--- /dev/null
+++ b/build/47/ch2.svg
@@ -0,0 +1,353 @@
+
+
+
diff --git a/build/48/both-with-label.svg b/build/48/both-with-label.svg
new file mode 100644
index 0000000..3704649
--- /dev/null
+++ b/build/48/both-with-label.svg
@@ -0,0 +1,762 @@
+
+
+
diff --git a/build/48/both.svg b/build/48/both.svg
new file mode 100644
index 0000000..af212c1
--- /dev/null
+++ b/build/48/both.svg
@@ -0,0 +1,725 @@
+
+
+
diff --git a/build/48/ch1.svg b/build/48/ch1.svg
new file mode 100644
index 0000000..ce17aed
--- /dev/null
+++ b/build/48/ch1.svg
@@ -0,0 +1,352 @@
+
+
+
diff --git a/build/48/ch2.svg b/build/48/ch2.svg
new file mode 100644
index 0000000..506df85
--- /dev/null
+++ b/build/48/ch2.svg
@@ -0,0 +1,349 @@
+
+
+
diff --git a/build/49/both-with-label.svg b/build/49/both-with-label.svg
new file mode 100644
index 0000000..1ba7bd1
--- /dev/null
+++ b/build/49/both-with-label.svg
@@ -0,0 +1,748 @@
+
+
+
diff --git a/build/49/both.svg b/build/49/both.svg
new file mode 100644
index 0000000..60973f8
--- /dev/null
+++ b/build/49/both.svg
@@ -0,0 +1,711 @@
+
+
+
diff --git a/build/49/ch1.svg b/build/49/ch1.svg
new file mode 100644
index 0000000..dea4219
--- /dev/null
+++ b/build/49/ch1.svg
@@ -0,0 +1,356 @@
+
+
+
diff --git a/build/49/ch2.svg b/build/49/ch2.svg
new file mode 100644
index 0000000..ae4e79a
--- /dev/null
+++ b/build/49/ch2.svg
@@ -0,0 +1,331 @@
+
+
+
diff --git a/build/5/both-with-label.svg b/build/5/both-with-label.svg
new file mode 100644
index 0000000..517a753
--- /dev/null
+++ b/build/5/both-with-label.svg
@@ -0,0 +1,821 @@
+
+
+
diff --git a/build/5/both.svg b/build/5/both.svg
new file mode 100644
index 0000000..f6a9ddf
--- /dev/null
+++ b/build/5/both.svg
@@ -0,0 +1,784 @@
+
+
+
diff --git a/build/5/ch1.svg b/build/5/ch1.svg
new file mode 100644
index 0000000..1a55e0f
--- /dev/null
+++ b/build/5/ch1.svg
@@ -0,0 +1,371 @@
+
+
+
diff --git a/build/5/ch2.svg b/build/5/ch2.svg
new file mode 100644
index 0000000..2aa8d43
--- /dev/null
+++ b/build/5/ch2.svg
@@ -0,0 +1,385 @@
+
+
+
diff --git a/build/50/both-with-label.svg b/build/50/both-with-label.svg
new file mode 100644
index 0000000..ed15542
--- /dev/null
+++ b/build/50/both-with-label.svg
@@ -0,0 +1,813 @@
+
+
+
diff --git a/build/50/both.svg b/build/50/both.svg
new file mode 100644
index 0000000..c6f24b1
--- /dev/null
+++ b/build/50/both.svg
@@ -0,0 +1,776 @@
+
+
+
diff --git a/build/50/ch1.svg b/build/50/ch1.svg
new file mode 100644
index 0000000..d89159d
--- /dev/null
+++ b/build/50/ch1.svg
@@ -0,0 +1,388 @@
+
+
+
diff --git a/build/50/ch2.svg b/build/50/ch2.svg
new file mode 100644
index 0000000..5f14a63
--- /dev/null
+++ b/build/50/ch2.svg
@@ -0,0 +1,352 @@
+
+
+
diff --git a/build/51/both-with-label.svg b/build/51/both-with-label.svg
new file mode 100644
index 0000000..d3d9450
--- /dev/null
+++ b/build/51/both-with-label.svg
@@ -0,0 +1,845 @@
+
+
+
diff --git a/build/51/both.svg b/build/51/both.svg
new file mode 100644
index 0000000..e4513d1
--- /dev/null
+++ b/build/51/both.svg
@@ -0,0 +1,808 @@
+
+
+
diff --git a/build/51/ch1.svg b/build/51/ch1.svg
new file mode 100644
index 0000000..0a54069
--- /dev/null
+++ b/build/51/ch1.svg
@@ -0,0 +1,390 @@
+
+
+
diff --git a/build/51/ch2.svg b/build/51/ch2.svg
new file mode 100644
index 0000000..547639c
--- /dev/null
+++ b/build/51/ch2.svg
@@ -0,0 +1,384 @@
+
+
+
diff --git a/build/52/both-with-label.svg b/build/52/both-with-label.svg
new file mode 100644
index 0000000..ce0dac4
--- /dev/null
+++ b/build/52/both-with-label.svg
@@ -0,0 +1,811 @@
+
+
+
diff --git a/build/52/both.svg b/build/52/both.svg
new file mode 100644
index 0000000..a3207da
--- /dev/null
+++ b/build/52/both.svg
@@ -0,0 +1,774 @@
+
+
+
diff --git a/build/52/ch1.svg b/build/52/ch1.svg
new file mode 100644
index 0000000..1e8fca8
--- /dev/null
+++ b/build/52/ch1.svg
@@ -0,0 +1,386 @@
+
+
+
diff --git a/build/52/ch2.svg b/build/52/ch2.svg
new file mode 100644
index 0000000..94dcd2b
--- /dev/null
+++ b/build/52/ch2.svg
@@ -0,0 +1,352 @@
+
+
+
diff --git a/build/6/both-with-label.svg b/build/6/both-with-label.svg
new file mode 100644
index 0000000..6d6db4d
--- /dev/null
+++ b/build/6/both-with-label.svg
@@ -0,0 +1,829 @@
+
+
+
diff --git a/build/6/both.svg b/build/6/both.svg
new file mode 100644
index 0000000..a1f35b8
--- /dev/null
+++ b/build/6/both.svg
@@ -0,0 +1,792 @@
+
+
+
diff --git a/build/6/ch1.svg b/build/6/ch1.svg
new file mode 100644
index 0000000..e462e9b
--- /dev/null
+++ b/build/6/ch1.svg
@@ -0,0 +1,372 @@
+
+
+
diff --git a/build/6/ch2.svg b/build/6/ch2.svg
new file mode 100644
index 0000000..c19f19e
--- /dev/null
+++ b/build/6/ch2.svg
@@ -0,0 +1,392 @@
+
+
+
diff --git a/build/7/both-with-label.svg b/build/7/both-with-label.svg
new file mode 100644
index 0000000..8b4697a
--- /dev/null
+++ b/build/7/both-with-label.svg
@@ -0,0 +1,692 @@
+
+
+
diff --git a/build/7/both.svg b/build/7/both.svg
new file mode 100644
index 0000000..6d4479b
--- /dev/null
+++ b/build/7/both.svg
@@ -0,0 +1,655 @@
+
+
+
diff --git a/build/7/ch1.svg b/build/7/ch1.svg
new file mode 100644
index 0000000..4f9bc84
--- /dev/null
+++ b/build/7/ch1.svg
@@ -0,0 +1,314 @@
+
+
+
diff --git a/build/7/ch2.svg b/build/7/ch2.svg
new file mode 100644
index 0000000..0e84ff8
--- /dev/null
+++ b/build/7/ch2.svg
@@ -0,0 +1,313 @@
+
+
+
diff --git a/build/8/both-with-label.svg b/build/8/both-with-label.svg
new file mode 100644
index 0000000..e3b51ec
--- /dev/null
+++ b/build/8/both-with-label.svg
@@ -0,0 +1,695 @@
+
+
+
diff --git a/build/8/both.svg b/build/8/both.svg
new file mode 100644
index 0000000..eacd3e8
--- /dev/null
+++ b/build/8/both.svg
@@ -0,0 +1,658 @@
+
+
+
diff --git a/build/8/ch1.svg b/build/8/ch1.svg
new file mode 100644
index 0000000..d20a498
--- /dev/null
+++ b/build/8/ch1.svg
@@ -0,0 +1,319 @@
+
+
+
diff --git a/build/8/ch2.svg b/build/8/ch2.svg
new file mode 100644
index 0000000..6cd4e43
--- /dev/null
+++ b/build/8/ch2.svg
@@ -0,0 +1,311 @@
+
+
+
diff --git a/build/9/both-with-label.svg b/build/9/both-with-label.svg
new file mode 100644
index 0000000..80aee66
--- /dev/null
+++ b/build/9/both-with-label.svg
@@ -0,0 +1,706 @@
+
+
+
diff --git a/build/9/both.svg b/build/9/both.svg
new file mode 100644
index 0000000..ecd9b04
--- /dev/null
+++ b/build/9/both.svg
@@ -0,0 +1,669 @@
+
+
+
diff --git a/build/9/ch1.svg b/build/9/ch1.svg
new file mode 100644
index 0000000..a482a17
--- /dev/null
+++ b/build/9/ch1.svg
@@ -0,0 +1,323 @@
+
+
+
diff --git a/build/9/ch2.svg b/build/9/ch2.svg
new file mode 100644
index 0000000..eae282b
--- /dev/null
+++ b/build/9/ch2.svg
@@ -0,0 +1,318 @@
+
+
+
diff --git a/build/out.csv b/build/out.csv
new file mode 100644
index 0000000..910002b
--- /dev/null
+++ b/build/out.csv
@@ -0,0 +1,54 @@
+Mesure, Average Phase Shift, Ch1 Peak-to-Peak, Ch2 Peak-to-Peak, Ch1 Time, Ch2 Time, Ch1 Frequency, Ch2 Frequency
+0,73.944,4.08,1.18,0.01,0.01,100,100
+1,65.64857142857,4.08,1.673333333333,0.006666666666667,0.006673333333333,150,149.8501498501
+2,59.35767883942,4.08,2.08,0.0049975,0.0049975,200.100050025,200.100050025
+3,49.26770708283,4.08,2.72,0.003332,0.003334,300.1200480192,299.9400119976
+4,41.112,4.08,3.12,0.0025,0.002498666666667,400,400.2134471718
+5,33.912,4.08,3.4,0.002,0.002,500,500
+6,29.2507204611,4.08,3.56,0.0016656,0.0016672,600.3842459174,599.8080614203
+7,26.95135784346,4.08,3.68,0.001427333333333,0.001429333333333,700.6071929005,699.6268656716
+8,24.06083244397,4.08,3.76,0.001249333333333,0.001250666666667,800.4268943437,799.5735607676
+9,22.2502250225,4.08,3.84,0.001111,0.001111,900.0900090009,900.0900090009
+10,18.35082458771,4.08,3.856,0.0010005,0.001,999.5002498751,1000
+11,16.85069611138,4.08,3.92,0.0008332,0.0008332,1200.192030725,1200.192030725
+12,14.77280309602,4.08,4,0.0007136666666667,0.0007136666666667,1401.214385801,1401.214385801
+13,13.32,4.08,4,0.000625,0.0006243333333333,1600,1601.708489055
+14,12.37966711651,4.08,4,0.00055575,0.00055575,1799.370220423,1799.370220423
+15,9.504,4.08,4,0.0005,0.0005005,2000,1998.001998002
+16,81.6168084042,4.08,0.5936,0.01999,0.02,50.02501250625,50
+17,-125.25,4.08,2.442666666667,0.004,0.003998,250,250.1250625313
+18,81.72,4.08,0.592,0.02,0.01999,50,50.02501250625
+19,77.904,4.08,0.9,0.02,0.02001,50,49.97501249375
+20,71.136,4.08,1.36,0.02,0.02,50,50
+21,55.96003996004,4.08,2.36,0.02002,0.01999,49.95004995005,50.02501250625
+22,33.31934032984,4.08,3.4,0.02001,0.02001,49.97501249375,49.97501249375
+23,24.12,4.08,3.712,0.02,0.02,50,50
+24,16.776,4.08,3.92,0.02,0.01999,50,50.02501250625
+25,-1.151424287856,4.08,4.04,0.02001,0.02,49.97501249375,50
+26,130.68,4.08,1.88,0.01,0.009995,100,100.0500250125
+27,130.968,4.08,1.896,0.01,0.01,100,100
+28,114.2068965517,4.08,1.165,0.0050025,0.004995,199.900049975,200.2002002002
+29,107.9856115108,4.08,0.82,0.003336,0.003342,299.7601918465,299.2220227409
+30,103.9514407684,4.08,0.608,0.002498666666667,0.002502666666667,400.2134471718,399.5737879595
+31,102.168,4.08,0.496,0.002,0.001999,500,500.2501250625
+32,100.4560729717,4.093333333333,0.416,0.0016664,0.0016672,600.0960153625,599.8080614203
+33,-79.44562899787,4.08,0.3653333333333,0.001429333333333,0.001427333333333,699.6268656716,700.6071929005
+34,99.24986652429,4.08,0.316,0.001248666666667,0.00125,800.8542445275,800
+35,-80.82771030139,4.08,0.28,0.0011115,0.0011105,899.6851102114,900.4952723998
+36,99.504,4.1,0.254,0.001,0.001,1000,1000
+37,99.61876204755,4.08,0.176,0.000667,0.0006666666666667,1499.250374813,1500
+38,98.88288288288,4.08,0.1312,0.0004995,0.0005005,2002.002002002,1998.001998002
+39,-79.5,4.08,0.106,0.0004,0.0004002,2500,2498.750624688
+40,99.77286312014,4.16,0.09133333333333,0.0003346,0.000333,2988.643156007,3003.003003003
+41,-77.61082594494,4.16,0.08,0.0002857333333333,0.0002857333333333,3499.766682221,3499.766682221
+42,102.24,4.16,0.0715,0.00025,0.0002505333333333,4000,3991.484832358
+43,-77.80476833108,4.16,0.064,0.0002223,0.0002225,4498.425551057,4494.382022472
+44,103.700149925,4.16,0.058,0.0002001,0.0002,4997.501249375,5000
+45,106.5561959654,4.16,0.04083333333333,0.00016656,0.00016656,6003.842459174,6003.842459174
+46,-69.9073395107,4.186666666667,nan,0.0001428666666667,0.0001438,6999.533364442,6954.102920723
+47,106.4991982897,4.186666666667,nan,0.0001247333333333,0.0001254,8017.103153394,7974.481658692
+48,-68.14948221522,4.16,nan,0.00011105,0.00011085,9004.952723998,9021.199819576
+49,109.4227113557,4.16,nan,9.995e-05,0.0001003,10005.00250125,9970.089730808
+50,137.0194902549,4.14,2.51,0.0002001,0.0002001,4997.501249375,4997.501249375
+51,113.5135135135,4.176,0.88,0.0001998,0.0002003,5005.005005005,4992.51123315
+52,105.4414414414,4.224,0.0585,0.0001998,0.0001997,5005.005005005,5007.5112669
diff --git a/main.cpp b/main.cpp
index 4389d5d..7009636 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,18 +8,25 @@
#include "fstream"
#include "sstream"
#include "matplot/matplot.h"
+#include
using namespace std;
namespace plt = matplot;
+namespace fs = std::filesystem;
-int MIN_ZERO_SEPARATION = 10;
-int POWERED_MIN = 5;
-int POWERED_MAX = 5;
+int MIN_ZERO_SEPARATION = 100;
+int POWERED_MIN = 3;
+int POWERED_MAX = 3;
-vector findZeroCrossings(const vector& data) {
- vector zeroCrossings;
+long double average(vector a)
+{
+ return reduce(a.begin(), a.end(), 0.0) / a.size();
+}
+
+vector findZeroCrossings(const vector& data, long double absZero) {
+ vector zeroCrossings;
for (int i = 1; i < data.size(); ++i) {
- if (data[i - 1] * data[i] < 0 || data[i - 1] * data[i] == 0) {
+ if ((data[i - 1] - absZero) * (data[i] - absZero) < 0 || (data[i - 1] - absZero) * (data[i] - absZero) == 0) {
// Cleaning the duplicate zero which are +-MIN_ZERO_SEPARATION
if(zeroCrossings.size() >= 1) {
@@ -35,17 +42,17 @@ vector findZeroCrossings(const vector& data) {
return zeroCrossings;
}
-pair poweredMax(const vector& data, int n) {
+pair poweredMax(const vector& data, int n) {
if (data.empty()) {
return {0.0, false}; // If vector is empty, return false
}
- unordered_map freqMap;
- for (double value : data) {
+ unordered_map freqMap;
+ for (long double value : data) {
freqMap[value]++;
}
- double maxVal = data[0]; // Initialize maxVal with the first element
+ long double maxVal = data[0]; // Initialize maxVal with the first element
int maxFreq = freqMap[maxVal];
for (const auto& entry : freqMap) {
@@ -60,17 +67,17 @@ pair poweredMax(const vector& data, int n) {
return {maxVal, found};
}
-std::pair poweredMin(const std::vector& data, int n) {
+std::pair poweredMin(const std::vector& data, int n) {
if (data.empty()) {
return {0.0, false}; // If vector is empty, return false
}
- std::unordered_map freqMap;
- for (double value : data) {
+ std::unordered_map freqMap;
+ for (long double value : data) {
freqMap[value]++;
}
- double minVal = std::numeric_limits::max(); // Initialize minVal with maximum double value
+ long double minVal = std::numeric_limits::max(); // Initialize minVal with maximum double value
int minFreq = freqMap[minVal];
for (const auto& entry : freqMap) {
@@ -85,7 +92,7 @@ std::pair poweredMin(const std::vector& data, int n) {
return {minVal, found};
}
-std::vector slice(const std::vector& data, int start, int end) {
+std::vector slice(const std::vector& data, int start, int end) {
if (start < 0 || end >= static_cast(data.size()) || start > end) {
std::cerr << "Invalid slice indices." << std::endl;
return {};
@@ -103,18 +110,26 @@ ifstream openFile(string path) {
return file;
}
-int main() {
+int analyseOne(int i, ofstream &out) {
+ cout << setprecision(13);
+ out << setprecision(13);
vector channels;
- channels.push_back(openFile("/Users/eliebaier/Workspace/Physique/TP8/DATA/ALL0012/F0012CH1.CSV"));
- channels.push_back(openFile("/Users/eliebaier/Workspace/Physique/TP8/DATA/ALL0012/F0012CH2.CSV"));
+ if(i < 10) {
+ channels.push_back(openFile("/Users/eliebaier/Workspace/Physique/TP8/DATA/ALL000" + to_string(i) + "/F000" + to_string(i) + "CH1.CSV"));
+ channels.push_back(openFile("/Users/eliebaier/Workspace/Physique/TP8/DATA/ALL000" + to_string(i) + "/F000" + to_string(i) + "CH2.CSV"));
+ } else {
+ channels.push_back(openFile("/Users/eliebaier/Workspace/Physique/TP8/DATA/ALL00" + to_string(i) + "/F00" + to_string(i) + "CH1.CSV"));
+ channels.push_back(openFile("/Users/eliebaier/Workspace/Physique/TP8/DATA/ALL00" + to_string(i) + "/F00" + to_string(i) + "CH2.CSV"));
+ }
- vector> channelsXData, channelsYData, channelsZeros;
- vector channelsP2P;
- double channelOneT = 0;
+ vector> channelsXData, channelsYData, channelsZeros;
+ vector channelsP2P, channelsAbsoluteZero, channelsTimings, channelsFrequency;
+ long double channelOneT = 0;
for(int channel = 0; channel < channels.size(); channel++) {
string line;
+ cout << "========== CHANNEL " << channel << " ==========" << endl;
cout << "[INFO] Starting data fetching for channel " << channel << endl;
// Skipping the TEKTRONICS DEFINITION lines
@@ -124,7 +139,7 @@ int main() {
}
cout << "[INFO] Reading channel data" << endl;
- vector xs, ys;
+ vector xs, ys;
while(getline(channels[channel], line)) {
// Cleaning the lines
line.erase(0, 3);
@@ -137,7 +152,7 @@ int main() {
}
}
- double x, y;
+ long double x, y;
istringstream iss(line);
char comma;
if (!(iss >> x >> comma >> y)) {
@@ -147,49 +162,60 @@ int main() {
xs.push_back(x);
ys.push_back(y);
}
-
channelsXData.push_back(xs);
channelsYData.push_back(ys);
-
cout << "[INFO] Closing channel " << channel << " file" << endl;
channels[channel].close();
+ // Finding the zeros and finding the average minimum and the average maximum (also finding the reference zero)
+ // Finding the absolute max (powered)
+ cout << "[INFO] Finding the absolute max and min" << endl;
+ double absoluteMax = poweredMax(channelsYData[channel], POWERED_MAX).first;
+ cout << "[INFO] Absolute max is " << absoluteMax << endl;
+ double absoluteMin = poweredMin(channelsYData[channel], POWERED_MAX).first;
+ cout << "[INFO] Absolute min is " << absoluteMin << endl;
+
+ // Find the reference zero and the offset to the measured one
+ channelsAbsoluteZero.push_back((absoluteMax + absoluteMin)/2);
+ cout << "[INFO] Reference zero is " << channelsAbsoluteZero[channel] << endl;
+
cout << "[INFO] Finding zeros" << endl;
- channelsZeros.push_back(findZeroCrossings(channelsYData[channel]));
-
- vector frequency;
- for(int j = 0; j + 1 < channelsZeros[channel].size(); j=j+2) {
- // cout << "[INFO] Processing zeros " << j << " and " << j+1 << endl;
- frequency.push_back((channelsXData[channel][channelsZeros[channel][j + 1]] - channelsXData[channel][channelsZeros[channel][j]]));
- }
-
- double avgFrequency = 0;
- for(auto freq : frequency) {
- avgFrequency += freq;
- }
- avgFrequency /= (frequency.size());
- avgFrequency *= 2;
- cout << "[INFO] Average peak time is " << avgFrequency << "s" << endl;
- cout << "[INFO] Average frequency is " << 1/avgFrequency << "Hz" << endl;
- if(channel == 0) {
- channelOneT = avgFrequency;
- cout << "Set chan 1 freq: " << channelOneT << endl;
- }
-
- vector mins, maxs;
+ channelsZeros.push_back(findZeroCrossings(channelsYData[channel], channelsAbsoluteZero[channel]));
+ vector mins, maxs;
for(int i = 1; i < channelsZeros[channel].size(); i++) {
// Checking if it's a min or a max by taking the middle and looking at the sign
+ // Add subtraction with channelsAbsoluteZero[channel]
if(channelsYData[channel][int (channelsZeros[channel][i - 1] + channelsZeros[channel][i])/2] >= 0) {
// This is a max
// cout << "Found max between " << xData[zeroCrossings[i - 1]] << " and " << xData[zeroCrossings[i]] << " ";
// cout << "max is: " << poweredMax(slice(yData, zeroCrossings[i - 1], zeroCrossings[i]), 5).first << endl;
- maxs.push_back(poweredMax(slice(channelsYData[channel], channelsZeros[channel][i - 1], channelsZeros[channel][i]), POWERED_MAX).first);
+ long double newlyMax = poweredMax(slice(channelsYData[channel], channelsZeros[channel][i - 1], channelsZeros[channel][i]), POWERED_MAX).first;
+ cout << "Max found " << newlyMax << endl;
+ maxs.push_back(newlyMax);
} else {
mins.push_back(poweredMin(slice(channelsYData[channel], channelsZeros[channel][i - 1], channelsZeros[channel][i]), POWERED_MIN).first);
}
}
- double avgMax = 0, avgMin = 0;
+ vector frequency;
+ for(int j = 0; j + 2 < channelsZeros[channel].size(); j=j+2) {
+ // cout << "[INFO] Processing zeros " << j << " and " << j+1 << endl;
+ frequency.push_back(((channelsXData[channel][channelsZeros[channel][j + 2]]) - channelsXData[channel][channelsZeros[channel][j]]));
+ cout << "[INFO] Distance between zero " << j << " (" << channelsZeros[channel][j] << ") and " << j+2 << " (" << channelsZeros[channel][j + 2] << ") is " << ((channelsXData[channel][channelsZeros[channel][j + 2]]) - channelsXData[channel][channelsZeros[channel][j]]) << " (" << channelsZeros[channel][j+2] - channelsZeros[channel][j] << ")" << endl;
+ }
+
+ long double avgFrequency = average(frequency);
+ // avgFrequency *= 2;
+ cout << "[INFO] Average peak time for channel " << channel << " is " << avgFrequency << "s" << endl;
+ channelsTimings.push_back(avgFrequency);
+ cout << "[INFO] Average frequency for channel " << channel << " is " << 1/avgFrequency << "Hz" << endl;
+ channelsFrequency.push_back(1/avgFrequency);
+ if(channel == 0) {
+ channelOneT = avgFrequency;
+ // cout << "Set chan 1 freq: " << channelOneT << endl;
+ }
+
+ long double avgMax = 0, avgMin = 0;
for(auto max : maxs) {
avgMax += max;
}
@@ -198,25 +224,58 @@ int main() {
}
avgMax /= maxs.size();
avgMin /= mins.size();
+ cout << "[INFO] Average Peak for channel " << channel << " max is " << avgMax << endl;
+ cout << "[INFO] Average Peak for channel " << channel << " min is " << avgMin << endl;
cout << "[INFO] Average Peak-to-Peak for channel " << channel << " is " << abs(avgMin) + abs(avgMax) << endl;
+ // Change this to subtraction for cases which are all negative
channelsP2P.push_back(abs(avgMin) + abs(avgMax));
}
cout << "[INFO] Starting the calculate the phase shift" << endl;
- double deltas;
+ long double deltas = 0;
int ndeltas = 0;
for(int i = 0; i < channelsZeros[0].size(); i++) {
if(channelsZeros[1].size() <= i) continue;
- // cout << "[INFO] Phase shift for zero " << i << " is " << ((channelsXData[0][channelsZeros[0][i]] - channelsXData[1][channelsZeros[1][i]]) / channelOneT) * 360 << endl;
- deltas += channelsXData[1][channelsZeros[1][i]] - channelsXData[0][channelsZeros[0][i]];
+ long double d = channelsXData[1][channelsZeros[1][i]] - channelsXData[0][channelsZeros[0][i]];
+ cout << "[INFO] Phase shift for zero " << i << " is " << ((d) / channelOneT) * (-360) << endl;
+ deltas += (d / channelOneT) * (-360);
ndeltas++;
}
- cout << "[INFO] Average phase shift (CHA0 to CHA1) " << ((deltas/ndeltas) / channelOneT) * 360 << endl;
+ deltas /= ndeltas;
+ // cout << ndeltas << deltas << channelOneT << endl;
+ cout << "[INFO] Average phase shift (CHA0 to CHA1) " << deltas << endl;
- plt::plot(channelsXData[0], channelsYData[0], channelsXData[1], channelsYData[1]);
- plt::xlabel("X Label");
- plt::ylabel("Y Label");
- plt::title("Line Plot");
+ cout << "[INFO] Writing to CSV" << endl;
+ out << i << "," << deltas << "," << channelsP2P[0] << "," << channelsP2P[1] << "," << channelsTimings[0] << "," << channelsTimings[1] << "," << channelsFrequency[0] << "," << channelsFrequency[1] << "\n";
+
+ plt::tiledlayout(1, 1);
+
+ auto ax1 = plt::nexttile();
+
+ plt::plot(channelsXData[0], channelsYData[0]);
+ plt::xlabel("Temps [s]");
+ plt::ylabel("Tension [V]");
+ plt::title("Tension en fonction du temps (Mesure 00" + to_string(i) + ")");
+
+ plt::hold(matplot::on);
+
+ plt::plot(channelsXData[1], channelsYData[1])->use_y2(true);
+
+ plt::grid(matplot::on);
+ plt::gca()->minor_grid(true);
+
+ auto lgd = ::matplot::legend(ax1, {"Générateur", "Bornes de la résistance"});
+ lgd->location(matplot::legend::general_alignment::bottomleft);
+ lgd->box(false);
+
+ /* auto ax2 = plt::nexttile();
+ plt::plot(ax2, channelsXData[1], channelsYData[1]);
+ plt::xlabel(ax2, "Temps [s]");
+ plt::ylabel(ax2, "Tension [V]");
+ plt::title(ax2, "Tension aux bornes de la résistance en fonction du temps (Mesure 00" + to_string(i) + ")");
+
+ plt::grid(matplot::on);
+ plt::gca()->minor_grid(true); */
/* vector zeroCrossings = findZeroCrossings(yData);
@@ -227,8 +286,42 @@ int main() {
} */
// Show the plot
- plt::show();
+ // plt::show();
+
+ /* cout << "[INFO] Saving svg to " << "/Users/eliebaier/Workspace/Physique/TP8/build/" + to_string(i) + "/ch1.svg" << endl;
+ fs::create_directories("./build/" + to_string(i));
+ plt::save("/Users/eliebaier/Workspace/Physique/TP8/build/" + to_string(i) + "/ch1.svg"); */
+
+ /* plt::tiledlayout(2, 1);
+
+ auto ax2 = plt::nexttile();
+
+ plt::plot(ax2, channelsXData[1], channelsYData[1]);
+ plt::xlabel(ax2, "Temps [s]");
+ plt::ylabel(ax2, "Tension [V]");
+ plt::title(ax2, "Tension aux bornes de la résistance en fonction du temps (Mesure 00" + to_string(i) + ")"); */
+
+ /* for(auto zero : channelsZeros[1]) {
+ cout << "Zero: " << zero << endl;
+ plt::line(channelsXData[1][zero], -2, channelsXData[1][zero], 2);
+ } */
+
+ // plt::show();
+
+ cout << "[INFO] Saving svg to " << "/Users/eliebaier/Workspace/Physique/TP8/build/" + to_string(i) + "/both-with-label.svg" << endl;
+ fs::create_directories("./build/" + to_string(i));
+ plt::save("/Users/eliebaier/Workspace/Physique/TP8/build/" + to_string(i) + "/both-with-label.svg");
return 0;
+}
+
+int main() {
+ std::ofstream out;
+ out.open("/Users/eliebaier/Workspace/Physique/TP8/build/out.csv");
+ out << "Mesure, Average Phase Shift, Ch1 Peak-to-Peak, Ch2 Peak-to-Peak, Ch1 Time, Ch2 Time, Ch1 Frequency, Ch2 Frequency" << endl;
+ for(int i = 0; i < 53; i++) {
+ analyseOne(i, out);
+ }
+ out.close();
}
\ No newline at end of file