diff --git a/caderno.pdf b/caderno.pdf
index 5a54a327a4124562e27a8295f03c06dc8f00fb57..7714cc621aef8714e5683bd461e4a4018e148806 100644
Binary files a/caderno.pdf and b/caderno.pdf differ
diff --git a/fontes/1 b/fontes/1
deleted file mode 100644
index 496a920e558147a3c866be99fb6ceb02d6bbdf8a..0000000000000000000000000000000000000000
--- a/fontes/1
+++ /dev/null
@@ -1,11 +0,0 @@
-import subprocess as sp, hashlib as hl, sys
-process = lambda a: (a[0], ''.join(sp.run(['cpp', '-dD', '-P', '-fpreprocessed'],
-         input=a[1], text=True, capture_output=True).stdout.split()))
-l, s = list(map(process, enumerate(sys.stdin))), []
-for i, line in l:
-    for c in l[i]:
-        if c == '{': s.append(i)
-        elif c == '}': lp = s[-1]; s.pop()
-    print(hl.md5((process(' '.join(l[lp:][1])).encode()
-        if l[i] == '}' or l[i] == '};' else l[i][1].encode())).hexdigest()[0:3]
-        if l[i] else '', line[:-1])
diff --git a/fontes/hash.sh b/fontes/hash.sh
deleted file mode 100644
index 6543aa1ad1404f864f9b21eb2231efeeafd5947b..0000000000000000000000000000000000000000
--- a/fontes/hash.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-while IFS="" read -r l; do
-  h=$(echo "$l" | sed '/^#w/d' |
-    cpp -dD -P -fpreprocessed |
-    tr -d '[:space:]' | md5sum | cut -c -3)
-  [ -z "$l" ] && h=""
-  echo "$h $l"
-done
diff --git a/generate.sh b/generate.sh
index c07ed3342d60a736927de41bc11e91a7bfc574a9..40d2f62b21c8e7c4aff7ee62fa92663f5fe1abb5 100644
--- a/generate.sh
+++ b/generate.sh
@@ -5,5 +5,5 @@ for arq in fontes/*; do
         echo "WARNING: $arq does not end with a newline"
     fi
     grep --color '.\{59\}' $arq
-    bash fontes/hash.sh <$arq >fontes-com-hash/$(basename $arq)
+    python3 fontes/hash.py <$arq >fontes-com-hash/$(basename $arq)
 done