diff --git a/6_number.jl b/6_number.jl
index e08719c5ed9c044bac26b823703d21eb42d9042a..bb6bc036769e7a62f2f2c328d846dfef0ebda2f7 100644
--- a/6_number.jl
+++ b/6_number.jl
@@ -15,7 +15,7 @@ macro bind(def, element)
 end
 
 # ╔═╡ 06679a09-47d7-4024-8232-4954c08747a0
-using PlutoUI, Primes, DataFrames
+using PlutoUI, Primes, DataFrames, Luxor, Colors, LinearAlgebra
 
 # ╔═╡ 1b1d5c9b-5fc7-480e-9649-e9c44a49c38d
 include("utils.jl")
@@ -369,18 +369,189 @@ prime_list = primes(3, primes_upper)
 # ╔═╡ 61462af5-69bd-42be-8918-7992c79ee00d
 qa(md"Comment savoir si `prime_list` contient assez de nombres pour avoir la bonne réponse ?", md"On a la bonne réponse modulo `prod(prime_list)` donc si `prod(prime_list) > 2^power`, on a la bonne réponse.")
 
+# ╔═╡ 592ae01b-2819-402d-9538-17018df5c34b
+frametitle("Fibonacci sequence")
+
+# ╔═╡ 594829e2-585b-4d48-bb6e-b35d9543cfbe
+frametitle("Fast powering for matrices")
+
+# ╔═╡ 72ec8410-05d9-475a-93d4-47153cc0ce31
+fib_rec(n) = (n == 0 ? 0 : (n == 1 ? 1 : fib_rec(n - 1) + fib_rec(n - 2)))
+
+# ╔═╡ 027fe67c-d2f0-49f6-b894-959795551d27
+@time fib_rec(32)
+
+# ╔═╡ 462fa407-d973-4e9e-8512-b7cd3bb98b7b
+function fib_seq(n)
+	f = zeros(BigInt, n + 1)
+	f[2] = 1
+	for k in 2:n
+		f[k + 1] = f[k] + f[k - 1]
+	end
+	return f[end]
+end
+
+# ╔═╡ 3cd40d9e-fcea-427d-9877-cea65e7ea413
+@time fib_seq(20000)
+
+# ╔═╡ 38744170-9af6-44b5-a0be-46a83da3253e
+function fib_pow(n)
+	A = BigInt[1 1
+		 1 0]
+	x = A^(n-1) * [1, 0]
+	return x[1]
+end
+
+# ╔═╡ a1081bb2-2186-4b19-b667-0c246155f360
+@time fib_pow(20000)
+
+# ╔═╡ 4714b7d7-32ee-42a1-bfa5-93eafda739d3
+frametitle("Diagonalization to speed up powering")
+
+# ╔═╡ b5f3620d-0942-41bb-80b0-d2ddcfe65090
+E = eigen([1 1; 1 0])
+
+# ╔═╡ 19ef447f-9fdf-49e1-8d1a-7860b4d4e9ba
+D = Diagonal([(1 - √big(5)) / 2, (1 + √big(5)) / 2])
+
+# ╔═╡ 6cf004be-5205-429e-8131-ef607cebeaec
+E.vectors
+
+# ╔═╡ f6e22fc3-382e-4548-bc59-8f944e06d237
+E.vectors * Diagonal(E.values) * inv(E.vectors)
+
+# ╔═╡ d830fffd-3781-40ca-85cb-c242f99667ce
+function fib_diag(n)
+	x = E.vectors * D^(n - 1) * (E.vectors \ [1, 0])
+	return x[1]
+end
+
+# ╔═╡ ac5e1516-1574-4893-a965-f799947076cb
+@time fib_diag(20000)
+
+# ╔═╡ 4cb070de-e8bf-4a1d-9625-043c19466c46
+@time fib_pow(20000)
+
+# ╔═╡ 6c3bca1a-3109-4e48-97e1-e0ed4599ffb2
+frametitle("Closed form solution")
+
+# ╔═╡ 1ca71c26-f98c-4126-a1c5-98786fde7e9b
+md"""
+Trouver ``b`` tel que ``x_k`` est solution:
+```math
+x_k = b^k
+\quad \to \quad  b^{k+1} = b^k + b^{k-1}
+\quad \to \quad  b^2 - b - 1 = 0
+\quad \to \quad  b = \frac{1 \pm \sqrt{5}}{2}
+```
+On a donc une famille de solutions:
+```math
+x_k = a_1
+\left(\frac{1 - \sqrt5}{2}\right)^k +
+a_2
+\left(\frac{1 + \sqrt5}{2}\right)^k
+```
+Il reste à trouver ``a_1`` et ``a_2`` tels que ``x_0 = 0`` et ``x_1 = 1``. Ça correspond à calculer `E.vectors \ [1, 0]`, etc...
+```math
+\begin{align}
+  x_0 & = 0 & a_1 + a_2 & = 0\\
+  x_1 & = 1 & a_1 \frac{1 - \sqrt5}{2} + a_2 \frac{1 + \sqrt5}{2} & = 1
+\end{align}
+```
+Donc ``a_1 = -1/\sqrt5`` et ``a_2 = 1/\sqrt5``.
+"""
+
+# ╔═╡ 535f4bc1-e88c-47c7-990b-e3c8b5054acc
+fib_closed(n) = (((1 + √big(5)) / 2)^n - ((1 - √big(5)) / 2)^n) / √big(5)
+
+# ╔═╡ 9b9fc5e6-1a41-43c5-ba43-2c93bc3ef66b
+@time fib_closed(20000)
+
+# ╔═╡ d882afdd-eb85-467c-bf18-525c0c5da5e7
+@time fib_diag(20000)
+
+# ╔═╡ 192f608c-0563-4179-903f-49fad2db4c74
+@time fib_pow(20000)
+
 # ╔═╡ 8f6ba1c4-a971-4dc4-ac5d-2f30790aecde
 frametitle("Fermat’s Little Theorem")
 
+# ╔═╡ bc58ba24-90f0-4913-8f66-10bb6cb54076
+md"""
+**Définition** ``g`` est une *racine primitive* modulo ``p`` si ``g^k`` prend toutes les valeurs ``1, 2, ..., p - 1``.
+
+```math
+\text{Si } \quad p \nmid b,\quad \text{ alors } \quad
+b^{p - 1} \equiv 1 \pmod{p}
+```
+"""
+
 # ╔═╡ 82ba8fe1-435e-422b-abb7-cb50a7a85e1e
 frametitle("Dicrete logarithm")
 
+# ╔═╡ 8b16a522-9be4-4286-b64d-3d1bbdef7142
+md"""
+Étant donné un nombre premier ``p`` et une racine primitive ``g`` modulo ``p`` et un entier ``a`` tel que ``p \nmid a``, le *Discrete logarithme problem* consiste à retrouver ``x`` tel que ``g^x \equiv a \pmod{p}``.
+"""
+
+# ╔═╡ ec14d629-b720-47cd-bc08-ff96f49271ab
+function discrete_log(a, g, p)
+	gx = one(a)
+	for x = 0:(p-2)
+		if a == gx
+			return x
+		end
+		gx = mod(gx * g, p)
+	end
+end
+
+# ╔═╡ ee43c389-55f4-4cf9-a8db-ce37d1b89db4
+frametitle("Shanks's Babystep–Giantstep Algorithm")
+
+# ╔═╡ 4853f4ef-fbb8-48c3-9523-13ab4969d097
+function baby_steps(g, n, p)
+	steps = [one(g)]
+	for i in 1:n
+		push!(steps, mod(steps[end] * g, p))
+	end
+	return steps
+end
+
+# ╔═╡ 3026f9c5-81d3-443a-940a-f22fef9754af
+function giant_steps(g, n, p)
+	gn = fast_mod_power(g, n, p)
+	return baby_steps.(modinv(gn, p), n, p)
+end
+
+# ╔═╡ 6e5e3ec6-c96a-4a4a-bf4d-4b115f9b0d82
+function collision(a, b)
+	d = Dict(a[i] => i for i in eachindex(a))
+	for j in eachindex(b)
+		if haskey(d, b[j])
+			return d[b[j]], j
+		end
+	end
+end
+
+# ╔═╡ 7330af43-bec3-460c-94f6-768ac2975b00
+function shanks_discrete_log(a, g, p)
+	n = isqrt(p) + 1
+	i, j = collision(baby_steps(g, n, p), mod.(a .* giant_steps(g, n, p), p))
+	return i - 1 + (j - 1) * n
+end
+
+# ╔═╡ 1e27eedc-5308-4608-863f-fb81d60acdf0
+qa(md"Quelle est la complexité?", md"???")
+
 # ╔═╡ a293bb0e-078d-4335-a446-3096a79c03bc
 frametitle("Diffie-Hellman")
 
 # ╔═╡ 3da58487-192f-458a-9d47-7a4ce98b6da3
 section("Utils")
 
+# ╔═╡ 7f9bd301-355b-43f5-b168-22fac9e52511
+Primes.primes(10)
+
 # ╔═╡ bafc9870-3823-4d1d-b0b7-94c69ee764d5
 import DocumenterCitations
 
@@ -457,6 +628,167 @@ chinese_remainder_theorem(big.(fast_mod_power.(2, power, prime_list)), big.(prim
 # ╔═╡ e9633e3f-376d-413d-bc19-d015f6ce76e5
 big(2)^power
 
+# ╔═╡ 8315b53f-abca-483d-bbf6-7e9193e751c9
+function draw_fib(n, size = 400)
+	f = [0, 1, 1]
+	for i in 3:(n+1)
+		push!(f, f[end] + f[end - 1])
+	end
+	scale = div(size, 2maximum(f[end-1]))
+	#Luxor.scale(scale)
+	colors = distinguishable_colors(n)
+	if iseven(n)
+		Δx = f[end]
+		Δy = f[end - 1]
+	else
+		Δx = f[end - 1]
+		Δy = f[end]
+	end
+	left_most = sum(f[i] for i in 1:(n+1) if mod(i, 4) == 1; init = 0)
+	up_most = sum(f[i] for i in 1:(n+1) if mod(i, 4) == 0; init = 0)
+	shift = Point(left_most - Δx / 2, up_most - Δy / 2)
+	pos(x, y) = scale * (Point(x, y) + shift)
+	@draw begin
+		x = 0
+		y = 0
+		j = 1
+		for i in 2:(n+1)
+			left = x
+			if isodd(i)
+				if iseven(div(i - 1, 2))
+					left -= f[i]
+				else
+					left += f[i - 1]
+				end
+			end
+			up = y
+			if iseven(i)
+				if iseven(div(i, 2))
+					up -= f[i]
+				else
+					up += f[i-1]
+				end
+			end
+			sethue(colors[i - 1])
+			setopacity(0.6)
+			rect(pos(left, up), scale * f[i], scale * f[i], action=:fill)
+			setopacity(1)
+			sethue("black")
+			fontsize(div(scale * f[i], 2))
+			text(string(f[i]), pos(left + f[i] / 2, up + f[i] / 2), halign = :center, valign = :middle)
+			x = min(x, left)
+			y = min(y, up)
+		end
+	end Δx * scale Δy * scale
+end
+
+# ╔═╡ 0c8ab02e-80b0-44d6-a4a8-c813aac38209
+fib_picker = @bind fib_n Slider(1:12, default = 10, show_value = true)
+
+# ╔═╡ 708c442b-cbff-4e1a-b70d-e704453cfd3d
+HAlign(
+md"""
+Équation de récurrence:
+```math
+x_{k+1} = x_k + x_{k-1}
+```
+Reformulation sans ``(k-1)``
+```math
+\begin{align}
+x_{k+1} & = x_k + y_{k}\\
+y_{k+1} & = x_k
+\end{align}
+```
+Forme matricielle:
+```math
+\begin{bmatrix}
+x_{k+1}\\
+y_{k+1}
+\end{bmatrix}
+=
+\begin{bmatrix}
+1 & 1\\
+1 & 0
+\end{bmatrix}
+\begin{bmatrix}
+x_{k}\\
+y_{k}
+\end{bmatrix}
+```
+Matrix power:
+```math
+\begin{bmatrix}
+x_n\\
+y_n
+\end{bmatrix}
+=
+\begin{bmatrix}
+1 & 1\\
+1 & 0
+\end{bmatrix}^n
+\begin{bmatrix}
+x_0\\
+y_0
+\end{bmatrix}
+```
+""",
+md"""
+`n` = $(fib_picker)\
+
+$(draw_fib(fib_n))
+""",
+)
+
+# ╔═╡ 57816e2c-a675-43e7-b674-2877ffcf1415
+p_picker = @bind p Slider(primes(20), default = 11, show_value = true)
+
+# ╔═╡ 0e3fb524-bea1-4ef0-9589-36230a84e949
+gp_picker = HAlign(
+	md"`g` = $(@bind g Slider(2:(p-1), default = 2, show_value = true))",
+	md"`p` = $p_picker",
+)
+
+# ╔═╡ 4cff1d10-422f-4b12-b790-a589c972fbb7
+gp_picker
+
+# ╔═╡ 59ac02af-7b54-44d4-b5f4-a0f60d4458a1
+all_powers = fast_mod_power.(g, 1:(p-1), p)
+
+# ╔═╡ 9f55cad1-b01a-45e3-93df-a4349e2dfbd3
+sort(all_powers)
+
+# ╔═╡ e2a3842d-4e07-4703-ab47-a5140649dd6a
+unique(sort(all_powers))
+
+# ╔═╡ 08dcbbd3-a531-4f74-a724-1cae8fae1636
+if length(unique(sort(all_powers))) == p - 1
+    md"Le nombre $g **est** une racine primitive modulo $p"
+else
+    md"Le nombre $g **n'est pas** une racine primitive modulo $p"
+end
+
+# ╔═╡ 059b0ada-2442-48e4-82dd-489cb97e5dcc
+gp_picker
+
+# ╔═╡ 4be6cea4-13a2-4bcb-b849-14eef57ab604
+if length(unique(sort(all_powers))) == p - 1
+    md"Le nombre $g **est** une racine primitive modulo $p"
+else
+    md"Le nombre $g **n'est pas** une racine primitive modulo $p"
+end
+
+# ╔═╡ 9efb7a71-9a03-4716-8d34-aae233e9b898
+x = discrete_log(3, g, p)
+
+# ╔═╡ 9bdb30ba-48a7-4e1b-96c2-ea0e059d5253
+fast_mod_power(g, x, p)
+
+# ╔═╡ 59254bfd-48f2-4585-9ba5-e4c809421072
+shanks_x = shanks_discrete_log(3, g, p)
+
+# ╔═╡ ab467d70-ceb1-40e5-b8fe-82e2f1bd95fd
+fast_mod_power(g, shanks_x, p)
+
 # ╔═╡ ba16d83d-21a5-4f0c-807b-674a167da4dc
 biblio = load_biblio!()
 
@@ -466,11 +798,40 @@ cite(args...) = bibcite(biblio, args...)
 # ╔═╡ 3df688c8-1c52-462d-88be-daa153333c60
 md"""
 * Théorie des nombres: $(cite("hoffstein2014Introduction", "1.2, 1.3, 1.4, 1.5, 2.2, 2.3"))
-* Diffie-Hellman: $(cite("hoffstein2014Introduction", "2.2, 2.3"))
+* Discrete Logarithme Problem et Diffie-Hellman: $(cite("hoffstein2014Introduction", "2.2, 2.3, 2.6, 2.7, 2.8"))
+"""
+
+# ╔═╡ a7afc0cb-a980-4f4f-b782-9791d932ee52
+md"""
+Voir $(cite("hoffstein2014Introduction", "Section 2.8")).
 """
 
 # ╔═╡ ed023033-1044-4d48-aab1-39e9300043f7
-cite("hoffstein2014Introduction", "Theorem 1.24")
+md"""
+**Fermat's little theorem** $(cite("hoffstein2014Introduction", "Theorem 1.24"))
+
+```math
+\text{Si} \quad p \text{ est premier}\quad \text{et} \quad p \nmid g,\quad \text{alors} \quad
+g^{p - 1} \equiv 1 \pmod{p}.
+```
+"""
+
+# ╔═╡ bcf73ad7-a08b-4cbb-bcd2-d0abc002e7e2
+qa(md"Quelle est la complexité spatiale et temporelle de `discrete_log` ?", md"""
+``\mathcal{O}(p)`` temporelle et ``\Omega(1)`` spatiale. Voir $(cite("hoffstein2014Introduction", "Proposition 2.19")).
+""")
+
+# ╔═╡ bc9a718f-4b97-4e15-acf8-d180abc5b6d5
+qa(md"Est-ce une complexité linéaire ou exponentielle en fonction de la taille de l'input",
+md"""
+La taille est proportionnelle à ``\log_2(p)`` donc on être linéaire en ``p`` c'est être proportionnel à ``2^{\log_2(p)}`` et donc la complexité est exponentielle en la taille de l'input ! $(cite("hoffstein2014Introduction", "Section 2.6"))
+""")
+
+# ╔═╡ 1072a756-5026-4de9-93a8-f942d54c474a
+md"""Voir $(cite("hoffstein2014Introduction", "Section 2.7"))"""
+
+# ╔═╡ 35b7b8b7-bff6-4f64-91b9-b65035162365
+md"""Voir $(cite("hoffstein2014Introduction", "Section 2.3"))"""
 
 # ╔═╡ 8a5a251f-5373-445a-97b1-4d652c6b7ba8
 refs(keys) = bibrefs(biblio, keys)
@@ -481,14 +842,19 @@ refs(["hoffstein2014Introduction"])
 # ╔═╡ 00000000-0000-0000-0000-000000000001
 PLUTO_PROJECT_TOML_CONTENTS = """
 [deps]
+Colors = "5ae59095-9a9b-59fe-a467-6f913c188581"
 DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
 DocumenterCitations = "daee34ce-89f3-4625-b898-19384cb65244"
+LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
+Luxor = "ae8d54c2-7ccd-5906-9d76-62fc9837b5bc"
 PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8"
 Primes = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae"
 
 [compat]
+Colors = "~0.12.11"
 DataFrames = "~1.7.0"
 DocumenterCitations = "~1.3.5"
+Luxor = "~4.1.0"
 PlutoUI = "~0.7.60"
 Primes = "~0.5.6"
 """
@@ -499,7 +865,7 @@ PLUTO_MANIFEST_TOML_CONTENTS = """
 
 julia_version = "1.11.1"
 manifest_format = "2.0"
-project_hash = "39cd322a83db7ad72fd4bf305476ad8bef3b75b5"
+project_hash = "ac1471e25fb09e7b5045e691de8d2b60f0992157"
 
 [[deps.ANSIColoredPrinters]]
 git-tree-sha1 = "574baf8110975760d391c710b6341da1afa48d8c"
@@ -547,6 +913,24 @@ git-tree-sha1 = "520c679daed011ce835d9efa7778863aad6687ed"
 uuid = "f1be7e48-bf82-45af-a471-ae754a193061"
 version = "0.2.20"
 
+[[deps.Bzip2_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "8873e196c2eb87962a2048b3b8e08946535864a1"
+uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0"
+version = "1.0.8+2"
+
+[[deps.Cairo]]
+deps = ["Cairo_jll", "Colors", "Glib_jll", "Graphics", "Libdl", "Pango_jll"]
+git-tree-sha1 = "71aa551c5c33f1a4415867fe06b7844faadb0ae9"
+uuid = "159f3aea-2a34-519c-b102-8c37f9878175"
+version = "1.1.1"
+
+[[deps.Cairo_jll]]
+deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"]
+git-tree-sha1 = "009060c9a6168704143100f36ab08f06c2af4642"
+uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a"
+version = "1.18.2+1"
+
 [[deps.CodecZlib]]
 deps = ["TranscodingStreams", "Zlib_jll"]
 git-tree-sha1 = "bce6804e5e6044c6daab27bb533d1295e4a2e759"
@@ -559,6 +943,12 @@ git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d"
 uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f"
 version = "0.11.5"
 
+[[deps.Colors]]
+deps = ["ColorTypes", "FixedPointNumbers", "Reexport"]
+git-tree-sha1 = "362a287c3aa50601b0bc359053d5c2468f0e7ce0"
+uuid = "5ae59095-9a9b-59fe-a467-6f913c188581"
+version = "0.12.11"
+
 [[deps.Compat]]
 deps = ["TOML", "UUIDs"]
 git-tree-sha1 = "8ae8d32e09f0dcf42a36b90d4e17f5dd2e4c4215"
@@ -635,6 +1025,18 @@ git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7"
 uuid = "2e619515-83b5-522b-bb60-26c02a35a201"
 version = "2.6.2+0"
 
+[[deps.FFMPEG]]
+deps = ["FFMPEG_jll"]
+git-tree-sha1 = "53ebe7511fa11d33bec688a9178fac4e49eeee00"
+uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a"
+version = "0.4.2"
+
+[[deps.FFMPEG_jll]]
+deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"]
+git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e"
+uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5"
+version = "4.4.4+1"
+
 [[deps.FileIO]]
 deps = ["Pkg", "Requires", "UUIDs"]
 git-tree-sha1 = "91e0e5c68d02bcdaae76d3c8ceb4361e8f28d2e9"
@@ -651,11 +1053,35 @@ git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172"
 uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93"
 version = "0.8.5"
 
+[[deps.Fontconfig_jll]]
+deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"]
+git-tree-sha1 = "db16beca600632c95fc8aca29890d83788dd8b23"
+uuid = "a3f928ae-7b40-5064-980b-68af3947d34b"
+version = "2.13.96+0"
+
+[[deps.FreeType2_jll]]
+deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"]
+git-tree-sha1 = "5c1d8ae0efc6c2e7b1fc502cbe25def8f661b7bc"
+uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7"
+version = "2.13.2+0"
+
+[[deps.FriBidi_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "1ed150b39aebcc805c26b93a8d0122c940f64ce2"
+uuid = "559328eb-81f9-559d-9380-de523a88c83c"
+version = "1.0.14+0"
+
 [[deps.Future]]
 deps = ["Random"]
 uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820"
 version = "1.11.0"
 
+[[deps.Gettext_jll]]
+deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"]
+git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046"
+uuid = "78b55507-aeef-58d4-861c-77aaff3498b1"
+version = "0.21.0+0"
+
 [[deps.Git]]
 deps = ["Git_jll"]
 git-tree-sha1 = "04eff47b1354d702c3a85e8ab23d539bb7d5957e"
@@ -668,6 +1094,30 @@ git-tree-sha1 = "ea372033d09e4552a04fd38361cd019f9003f4f4"
 uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb"
 version = "2.46.2+0"
 
+[[deps.Glib_jll]]
+deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"]
+git-tree-sha1 = "674ff0db93fffcd11a3573986e550d66cd4fd71f"
+uuid = "7746bdde-850d-59dc-9ae8-88ece973131d"
+version = "2.80.5+0"
+
+[[deps.Graphics]]
+deps = ["Colors", "LinearAlgebra", "NaNMath"]
+git-tree-sha1 = "a641238db938fff9b2f60d08ed9030387daf428c"
+uuid = "a2bd30eb-e257-5431-a919-1863eab51364"
+version = "1.1.3"
+
+[[deps.Graphite2_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011"
+uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472"
+version = "1.3.14+0"
+
+[[deps.HarfBuzz_jll]]
+deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"]
+git-tree-sha1 = "401e4f3f30f43af2c8478fc008da50096ea5240f"
+uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566"
+version = "8.3.1+0"
+
 [[deps.Hyperscript]]
 deps = ["Test"]
 git-tree-sha1 = "179267cfa5e712760cd43dcae385d7ea90cc25a4"
@@ -749,6 +1199,36 @@ git-tree-sha1 = "243f1cdb476835d7c249deb9f29ad6b7827da7d3"
 uuid = "7d188eb4-7ad8-530c-ae41-71a32a6d4692"
 version = "1.4.1"
 
+[[deps.JpegTurbo_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "25ee0be4d43d0269027024d75a24c24d6c6e590c"
+uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8"
+version = "3.0.4+0"
+
+[[deps.LAME_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "170b660facf5df5de098d866564877e119141cbd"
+uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d"
+version = "3.100.2+0"
+
+[[deps.LERC_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "36bdbc52f13a7d1dcb0f3cd694e01677a515655b"
+uuid = "88015f11-f218-50d7-93a8-a6af411a945d"
+version = "4.0.0+0"
+
+[[deps.LLVMOpenMP_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "78211fb6cbc872f77cad3fc0b6cf647d923f4929"
+uuid = "1d63c593-3942-5779-bab2-d838dc0a180e"
+version = "18.1.7+0"
+
+[[deps.LZO_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "854a9c268c43b77b0a27f22d7fab8d33cdb3a731"
+uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac"
+version = "2.10.2+1"
+
 [[deps.LaTeXStrings]]
 git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c"
 uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f"
@@ -788,12 +1268,54 @@ version = "1.11.0+1"
 uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
 version = "1.11.0"
 
+[[deps.Libffi_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290"
+uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490"
+version = "3.2.2+1"
+
+[[deps.Libgcrypt_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll"]
+git-tree-sha1 = "8be878062e0ffa2c3f67bb58a595375eda5de80b"
+uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4"
+version = "1.11.0+0"
+
+[[deps.Libgpg_error_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "c6ce1e19f3aec9b59186bdf06cdf3c4fc5f5f3e6"
+uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8"
+version = "1.50.0+0"
+
 [[deps.Libiconv_jll]]
 deps = ["Artifacts", "JLLWrappers", "Libdl"]
 git-tree-sha1 = "61dfdba58e585066d8bce214c5a51eaa0539f269"
 uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531"
 version = "1.17.0+1"
 
+[[deps.Libmount_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "0c4f9c4f1a50d8f35048fa0532dabbadf702f81e"
+uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9"
+version = "2.40.1+0"
+
+[[deps.Librsvg_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pango_jll", "Pkg", "gdk_pixbuf_jll"]
+git-tree-sha1 = "ae0923dab7324e6bc980834f709c4cd83dd797ed"
+uuid = "925c91fb-5dd6-59dd-8e8c-345e74382d89"
+version = "2.54.5+0"
+
+[[deps.Libtiff_jll]]
+deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"]
+git-tree-sha1 = "b404131d06f7886402758c9ce2214b636eb4d54a"
+uuid = "89763e89-9b03-5906-acba-b20f662cd828"
+version = "4.7.0+0"
+
+[[deps.Libuuid_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "5ee6203157c120d79034c748a2acba45b82b8807"
+uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700"
+version = "2.40.1+0"
+
 [[deps.LinearAlgebra]]
 deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"]
 uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
@@ -803,6 +1325,19 @@ version = "1.11.0"
 uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"
 version = "1.11.0"
 
+[[deps.Luxor]]
+deps = ["Base64", "Cairo", "Colors", "DataStructures", "Dates", "FFMPEG", "FileIO", "PolygonAlgorithms", "PrecompileTools", "Random", "Rsvg"]
+git-tree-sha1 = "134570038473304d709de27384621bd0810d23fa"
+uuid = "ae8d54c2-7ccd-5906-9d76-62fc9837b5bc"
+version = "4.1.0"
+
+    [deps.Luxor.extensions]
+    LuxorExtLatex = ["LaTeXStrings", "MathTeXEngine"]
+
+    [deps.Luxor.weakdeps]
+    LaTeXStrings = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f"
+    MathTeXEngine = "0a4f8689-d25c-4efe-a92b-7142dfc1aa53"
+
 [[deps.MIMEs]]
 git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb"
 uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65"
@@ -838,21 +1373,44 @@ version = "1.11.0"
 uuid = "14a3606d-f60d-562e-9121-12d972cd8159"
 version = "2023.12.12"
 
+[[deps.NaNMath]]
+deps = ["OpenLibm_jll"]
+git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4"
+uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3"
+version = "1.0.2"
+
 [[deps.NetworkOptions]]
 uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908"
 version = "1.2.0"
 
+[[deps.Ogg_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f"
+uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051"
+version = "1.3.5+1"
+
 [[deps.OpenBLAS_jll]]
 deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"]
 uuid = "4536629a-c528-5b80-bd46-f80d51c5b363"
 version = "0.3.27+1"
 
+[[deps.OpenLibm_jll]]
+deps = ["Artifacts", "Libdl"]
+uuid = "05823500-19ac-5b8b-9628-191a04bc5112"
+version = "0.8.1+2"
+
 [[deps.OpenSSL_jll]]
 deps = ["Artifacts", "JLLWrappers", "Libdl"]
 git-tree-sha1 = "7493f61f55a6cce7325f197443aa80d32554ba10"
 uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95"
 version = "3.0.15+1"
 
+[[deps.Opus_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "6703a85cb3781bd5909d48730a67205f3f31a575"
+uuid = "91d4177d-7536-5919-b921-800302f37372"
+version = "1.3.3+0"
+
 [[deps.OrderedCollections]]
 git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5"
 uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d"
@@ -863,12 +1421,24 @@ deps = ["Artifacts", "Libdl"]
 uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15"
 version = "10.42.0+1"
 
+[[deps.Pango_jll]]
+deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "e127b609fb9ecba6f201ba7ab753d5a605d53801"
+uuid = "36c8627f-9965-5494-a995-c6b170f724f3"
+version = "1.54.1+0"
+
 [[deps.Parsers]]
 deps = ["Dates", "PrecompileTools", "UUIDs"]
 git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821"
 uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
 version = "2.8.1"
 
+[[deps.Pixman_jll]]
+deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"]
+git-tree-sha1 = "35621f10a7531bc8fa58f74610b1bfb70a3cfc6b"
+uuid = "30392449-352a-5448-841d-b1acce4e97dc"
+version = "0.43.4+0"
+
 [[deps.Pkg]]
 deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"]
 uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
@@ -884,6 +1454,11 @@ git-tree-sha1 = "eba4810d5e6a01f612b948c9fa94f905b49087b0"
 uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8"
 version = "0.7.60"
 
+[[deps.PolygonAlgorithms]]
+git-tree-sha1 = "a5ded6396172cff3bacdd1354d190b93cb667c4b"
+uuid = "32a0d02f-32d9-4438-b5ed-3a2932b48f96"
+version = "0.2.0"
+
 [[deps.PooledArrays]]
 deps = ["DataAPI", "Future"]
 git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3"
@@ -946,6 +1521,12 @@ git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7"
 uuid = "ae029012-a4dd-5104-9daa-d747884805df"
 version = "1.3.0"
 
+[[deps.Rsvg]]
+deps = ["Cairo", "Glib_jll", "Librsvg_jll"]
+git-tree-sha1 = "3d3dc66eb46568fb3a5259034bfc752a0eb0c686"
+uuid = "c4c386cf-5103-5370-be45-f3a111cca3b8"
+version = "1.0.0"
+
 [[deps.SHA]]
 uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce"
 version = "0.7.0"
@@ -1060,6 +1641,72 @@ version = "1.11.0"
 uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
 version = "1.11.0"
 
+[[deps.XML2_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"]
+git-tree-sha1 = "a2fccc6559132927d4c5dc183e3e01048c6dcbd6"
+uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a"
+version = "2.13.5+0"
+
+[[deps.XSLT_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "XML2_jll", "Zlib_jll"]
+git-tree-sha1 = "a54ee957f4c86b526460a720dbc882fa5edcbefc"
+uuid = "aed1982a-8fda-507f-9586-7b0439959a61"
+version = "1.1.41+0"
+
+[[deps.XZ_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "15e637a697345f6743674f1322beefbc5dcd5cfc"
+uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800"
+version = "5.6.3+0"
+
+[[deps.Xorg_libX11_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"]
+git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495"
+uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc"
+version = "1.8.6+0"
+
+[[deps.Xorg_libXau_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8"
+uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec"
+version = "1.0.11+0"
+
+[[deps.Xorg_libXdmcp_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7"
+uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05"
+version = "1.1.4+0"
+
+[[deps.Xorg_libXext_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"]
+git-tree-sha1 = "d2d1a5c49fae4ba39983f63de6afcbea47194e85"
+uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3"
+version = "1.3.6+0"
+
+[[deps.Xorg_libXrender_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"]
+git-tree-sha1 = "47e45cd78224c53109495b3e324df0c37bb61fbe"
+uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa"
+version = "0.9.11+0"
+
+[[deps.Xorg_libpthread_stubs_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9"
+uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74"
+version = "0.1.1+0"
+
+[[deps.Xorg_libxcb_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"]
+git-tree-sha1 = "bcd466676fef0878338c61e655629fa7bbc69d8e"
+uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b"
+version = "1.17.0+0"
+
+[[deps.Xorg_xtrans_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77"
+uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10"
+version = "1.5.0+0"
+
 [[deps.YAML]]
 deps = ["Base64", "Dates", "Printf", "StringEncodings"]
 git-tree-sha1 = "dea63ff72079443240fbd013ba006bcbc8a9ac00"
@@ -1071,11 +1718,53 @@ deps = ["Libdl"]
 uuid = "83775a58-1f1d-513f-b197-d71354ab007a"
 version = "1.2.13+1"
 
+[[deps.Zstd_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "555d1076590a6cc2fdee2ef1469451f872d8b41b"
+uuid = "3161d3a3-bdf6-5164-811a-617609db77b4"
+version = "1.5.6+1"
+
+[[deps.gdk_pixbuf_jll]]
+deps = ["Artifacts", "Glib_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Xorg_libX11_jll", "libpng_jll"]
+git-tree-sha1 = "86e7731be08b12fa5e741f719603ae740e16b666"
+uuid = "da03df04-f53b-5353-a52f-6a8b0620ced0"
+version = "2.42.10+0"
+
+[[deps.libaom_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "1827acba325fdcdf1d2647fc8d5301dd9ba43a9d"
+uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b"
+version = "3.9.0+0"
+
+[[deps.libass_jll]]
+deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Zlib_jll"]
+git-tree-sha1 = "e17c115d55c5fbb7e52ebedb427a0dca79d4484e"
+uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0"
+version = "0.15.2+0"
+
 [[deps.libblastrampoline_jll]]
 deps = ["Artifacts", "Libdl"]
 uuid = "8e850b90-86db-534c-a0d3-1478176c7d93"
 version = "5.11.0+0"
 
+[[deps.libfdk_aac_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "8a22cf860a7d27e4f3498a0fe0811a7957badb38"
+uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280"
+version = "2.0.3+0"
+
+[[deps.libpng_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"]
+git-tree-sha1 = "b70c870239dc3d7bc094eb2d6be9b73d27bef280"
+uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f"
+version = "1.6.44+0"
+
+[[deps.libvorbis_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"]
+git-tree-sha1 = "490376214c4721cdaca654041f635213c6165cb3"
+uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a"
+version = "1.3.7+2"
+
 [[deps.nghttp2_jll]]
 deps = ["Artifacts", "Libdl"]
 uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d"
@@ -1085,6 +1774,18 @@ version = "1.59.0+0"
 deps = ["Artifacts", "Libdl"]
 uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0"
 version = "17.4.0+2"
+
+[[deps.x264_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2"
+uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a"
+version = "2021.5.5+0"
+
+[[deps.x265_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9"
+uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76"
+version = "3.5.0+0"
 """
 
 # ╔═╡ Cell order:
@@ -1111,7 +1812,7 @@ version = "17.4.0+2"
 # ╟─03e49669-cdee-4241-862d-33ee91214455
 # ╟─0ee6972c-5069-4ba0-887f-be64c7d000d0
 # ╟─f4f49568-dcf2-4c76-ba66-065d2fda7a4a
-# ╟─d81bbd74-42df-4bb2-a045-9c2642cc19e5
+# ╠═d81bbd74-42df-4bb2-a045-9c2642cc19e5
 # ╠═31388128-33a3-4443-835e-74b91bf48268
 # ╠═87fdefa1-3bbd-4b69-ad3a-72baca6e55ee
 # ╟─09f44611-ba21-4982-ba1b-0691124642fc
@@ -1158,7 +1859,7 @@ version = "17.4.0+2"
 # ╠═3c198d79-c46a-4781-8bd1-b6b68f06c31f
 # ╟─a4698418-ebf7-4992-a3ba-a15ff282bf87
 # ╟─59817f59-429b-4f17-a46a-185571fd1e5a
-# ╠═8670abc2-63e6-496a-b20c-812197acd9ad
+# ╟─8670abc2-63e6-496a-b20c-812197acd9ad
 # ╟─1b2245f8-2f02-4c4d-b6d2-e65af1f2a21e
 # ╠═77093b36-c232-4477-be49-845f1a631829
 # ╟─9722971a-16f1-4f28-ba31-c12b673b8a30
@@ -1168,25 +1869,78 @@ version = "17.4.0+2"
 # ╠═9cef898e-192c-418a-bec6-511f8b6da179
 # ╠═6f10de7b-ce05-4f82-82e7-4110be44e8cc
 # ╟─c2fab245-8a98-4b41-ade2-c5b16e9c39f9
-# ╠═821de132-559b-4420-b866-e97134c5bd9a
+# ╟─a7afc0cb-a980-4f4f-b782-9791d932ee52
+# ╟─821de132-559b-4420-b866-e97134c5bd9a
 # ╠═ec25ce2a-de8a-4b69-a3f3-b47cd58ec986
 # ╟─67093a35-8e1b-4cd3-b11b-c7ff601f802e
 # ╠═16b677e4-c467-462a-b770-b7a31160e129
 # ╠═191f8429-cbbb-44aa-8beb-271a94293e4b
 # ╠═e9633e3f-376d-413d-bc19-d015f6ce76e5
 # ╟─61462af5-69bd-42be-8918-7992c79ee00d
+# ╟─592ae01b-2819-402d-9538-17018df5c34b
+# ╟─708c442b-cbff-4e1a-b70d-e704453cfd3d
+# ╟─594829e2-585b-4d48-bb6e-b35d9543cfbe
+# ╠═72ec8410-05d9-475a-93d4-47153cc0ce31
+# ╠═027fe67c-d2f0-49f6-b894-959795551d27
+# ╠═462fa407-d973-4e9e-8512-b7cd3bb98b7b
+# ╠═3cd40d9e-fcea-427d-9877-cea65e7ea413
+# ╠═38744170-9af6-44b5-a0be-46a83da3253e
+# ╠═a1081bb2-2186-4b19-b667-0c246155f360
+# ╟─4714b7d7-32ee-42a1-bfa5-93eafda739d3
+# ╠═b5f3620d-0942-41bb-80b0-d2ddcfe65090
+# ╠═19ef447f-9fdf-49e1-8d1a-7860b4d4e9ba
+# ╠═6cf004be-5205-429e-8131-ef607cebeaec
+# ╠═f6e22fc3-382e-4548-bc59-8f944e06d237
+# ╠═d830fffd-3781-40ca-85cb-c242f99667ce
+# ╠═ac5e1516-1574-4893-a965-f799947076cb
+# ╠═4cb070de-e8bf-4a1d-9625-043c19466c46
+# ╟─6c3bca1a-3109-4e48-97e1-e0ed4599ffb2
+# ╟─1ca71c26-f98c-4126-a1c5-98786fde7e9b
+# ╠═535f4bc1-e88c-47c7-990b-e3c8b5054acc
+# ╠═9b9fc5e6-1a41-43c5-ba43-2c93bc3ef66b
+# ╠═d882afdd-eb85-467c-bf18-525c0c5da5e7
+# ╠═192f608c-0563-4179-903f-49fad2db4c74
 # ╟─8f6ba1c4-a971-4dc4-ac5d-2f30790aecde
 # ╟─ed023033-1044-4d48-aab1-39e9300043f7
+# ╟─bc58ba24-90f0-4913-8f66-10bb6cb54076
+# ╟─4cff1d10-422f-4b12-b790-a589c972fbb7
+# ╠═59ac02af-7b54-44d4-b5f4-a0f60d4458a1
+# ╠═9f55cad1-b01a-45e3-93df-a4349e2dfbd3
+# ╠═e2a3842d-4e07-4703-ab47-a5140649dd6a
+# ╟─08dcbbd3-a531-4f74-a724-1cae8fae1636
 # ╟─82ba8fe1-435e-422b-abb7-cb50a7a85e1e
+# ╟─8b16a522-9be4-4286-b64d-3d1bbdef7142
+# ╠═ec14d629-b720-47cd-bc08-ff96f49271ab
+# ╟─059b0ada-2442-48e4-82dd-489cb97e5dcc
+# ╟─4be6cea4-13a2-4bcb-b849-14eef57ab604
+# ╠═9efb7a71-9a03-4716-8d34-aae233e9b898
+# ╠═9bdb30ba-48a7-4e1b-96c2-ea0e059d5253
+# ╟─bcf73ad7-a08b-4cbb-bcd2-d0abc002e7e2
+# ╟─bc9a718f-4b97-4e15-acf8-d180abc5b6d5
+# ╟─ee43c389-55f4-4cf9-a8db-ce37d1b89db4
+# ╟─1072a756-5026-4de9-93a8-f942d54c474a
+# ╠═3026f9c5-81d3-443a-940a-f22fef9754af
+# ╠═4853f4ef-fbb8-48c3-9523-13ab4969d097
+# ╠═6e5e3ec6-c96a-4a4a-bf4d-4b115f9b0d82
+# ╠═7330af43-bec3-460c-94f6-768ac2975b00
+# ╠═59254bfd-48f2-4585-9ba5-e4c809421072
+# ╠═ab467d70-ceb1-40e5-b8fe-82e2f1bd95fd
+# ╟─1e27eedc-5308-4608-863f-fb81d60acdf0
 # ╟─a293bb0e-078d-4335-a446-3096a79c03bc
+# ╟─35b7b8b7-bff6-4f64-91b9-b65035162365
 # ╟─3da58487-192f-458a-9d47-7a4ce98b6da3
+# ╠═7f9bd301-355b-43f5-b168-22fac9e52511
 # ╠═06679a09-47d7-4024-8232-4954c08747a0
 # ╠═bafc9870-3823-4d1d-b0b7-94c69ee764d5
 # ╠═b57adc77-3783-4958-91a0-e90782338755
 # ╠═18031ccb-657f-409a-9080-9a0ada3ae8b5
 # ╠═256c8009-4d2b-42f8-adaa-6f238ef22c6d
 # ╟─4e35d650-b9a6-4668-90f0-f27a50af29ad
+# ╠═0e3fb524-bea1-4ef0-9589-36230a84e949
 # ╠═2381babe-0777-45db-acff-cc647a8a68d3
+# ╠═8315b53f-abca-483d-bbf6-7e9193e751c9
+# ╠═0c8ab02e-80b0-44d6-a4a8-c813aac38209
+# ╠═57816e2c-a675-43e7-b674-2877ffcf1415
 # ╠═1b1d5c9b-5fc7-480e-9649-e9c44a49c38d
 # ╠═ba16d83d-21a5-4f0c-807b-674a167da4dc
 # ╠═6c3595d2-4f68-44da-90e7-dc9c68479bcf