diff --git a/slides/cours_6.md b/slides/cours_6.md index 9aa956d116302d46978eed9603d63b530dc2b401..f57a4085068ba4d107a7b30e595a762e600d4fd2 100644 --- a/slides/cours_6.md +++ b/slides/cours_6.md @@ -375,631 +375,3 @@ double pow(double x, int n) { ``` -# Représentation des nombres - -\Huge La représentation des nombres - -# Représentation des nombres (1/2) - -* Le nombre `247`. - -## Nombres décimaux: Les nombres en base 10 - -+--------+--------+--------+ -| $10^2$ | $10^1$ | $10^0$ | -+--------+--------+--------+ -| `2` | `4` | `7` | -+--------+--------+--------+ - -$$ -247 = 2\cdot 10^2 + 4\cdot 10^1 + 7\cdot 10^0. -$$ - -# Représentation des nombres (2/2) - -* Le nombre `11110111`. - -## Nombres binaires: Les nombres en base 2 - -+-------+-------+-------+-------+-------+-------+-------+-------+ -| $2^7$ | $2^6$ | $2^5$ | $2^4$ | $2^3$ | $2^2$ | $2^1$ | $2^0$ | -+-------+-------+-------+-------+-------+-------+-------+-------+ -| `1` | `1` | `1` | `1` | `0` | `1` | `1` | `1` | -+-------+-------+-------+-------+-------+-------+-------+-------+ - -$$ -1\cdot 2^7 + 1\cdot 2^6 +1\cdot 2^5 +1\cdot 2^4 +0\cdot 2^3 +1\cdot 2^2 -+1\cdot 2^1 +1\cdot 2^0 -$$ - -. . . - -$$ -= 247. -$$ - -# Conversion de décimal à binaire (1/2) - -## Convertir 11 en binaire? - -. . . - -* On décompose en puissances de 2 en partant de la plus grande possible - - ``` - 11 / 8 = 1, 11 % 8 = 3 - 3 / 4 = 0, 3 % 4 = 3 - 3 / 2 = 1, 3 % 2 = 1 - 1 / 1 = 1, 1 % 1 = 0 - ``` -* On a donc - - $$ - 1011 \Rightarrow 1\cdot 2^3 + 0\cdot 2^2 + 1\cdot 2^1 + 1\cdot - 2^0=11. - $$ - -# Conversion de décimal à binaire (2/2) - -## Convertir un nombre arbitraire en binaire: 247? - -* Par groupe établir un algorithme. - -. . . - -## Algorithme - -1. Initialisation - - ```C - num = 247 - N = 0 - - tant que (2^(N+1) < num) { - N += 1 - } - ``` - -. . . - -2. Boucle - - ```C - tant que (N >= 0) { - bit = num / 2^N - num = num % 2^N - N -= 1 - } - ``` - -# Les additions en binaire - -Que donne l'addition `1101` avec `0110`? - -* L'addition est la même que dans le système décimal - - ``` - 1101 8+4+0+1 = 13 - + 0110 + 0+4+2+0 = 6 - ------- ----------------- - 10011 16+0+0+2+1 = 19 - ``` -* Les entiers sur un ordinateur ont une précision **fixée** (ici 4 bits). -* Que se passe-t-il donc ici? - -. . . - -## Dépassement de capacité: le nombre est "tronqué" - -* `10011 (19) -> 0011 (3)`. -* On fait "le tour"." - -# Entier non-signés minimal/maximal - -* Quel est l'entier non-signé maximal représentable avec 4 bit? - -. . . - -$$ -(1111)_2 = 8+4+2+1 = 15 -$$ - -* Quel est l'entier non-signé minimal représentable avec 4 bit? - -. . . - -$$ -(0000)_2 = 0+0+0+0 = 0 -$$ - -* Quel est l'entier non-signé min/max représentable avec N bit? - -. . . - -$$ -0\mbox{ et }2^N-1. -$$ - -* Donc `uint32_t?` maximal est? - -. . . - -$$ -2^{32}-1=4'294'967'295 -$$ - - -# Les multiplications en binaire (1/2) - -Que donne la multiplication de `1101` avec `0110`? - -* La multiplication est la même que dans le système décimal - - ``` - 1101 13 - * 0110 * 6 - --------- -------------- - 0000 78 - 11010 - 110100 - + 0000000 - --------- -------------- - 1001110 64+0+0+8+4+2+0 - ``` - -# Les multiplications en binaire (2/2) - -## Que fait la multiplication par 2? - -. . . - -* Décalage de un bit vers la gauche! - - ``` - 0110 - * 0010 - --------- - 0000 - + 01100 - --------- - 01100 - ``` - -. . . - -## Que fait la multiplication par $2^N$? - -. . . - -* Décalage de $N$ bits vers la gauche! - -# Entiers signés (1/2) - -Pas de nombres négatifs encore... - -## Comment faire? - -. . . - -## Solution naïve: - -* On ajoute un bit de signe (le bit de poids fort): - - ``` - 00000010: +2 - 10000010: -2 - ``` - -## Problèmes? - -. . . - -* Il y a deux zéros (pas trop grave): `10000000` et `00000000` -* Les additions différentes que pour les non-signés (très grave) - - ``` - 00000010 2 - + 10000100 + -4 - ---------- ---- - 10000110 = -6 != -2 - ``` - -# Entiers signés (2/2) - -## Beaucoup mieux - -* Complément à un: - * on inverse tous les bits: `1001 => 0110`. - -## Encore un peu mieux - -* Complément à deux: - * on inverse tous les bits, - * on ajoute 1 (on ignore les dépassements). - -. . . - -* Comment écrit-on `-4` en 8 bits? - -. . . - -``` - 4 = 00000100 - ________ - -4 => 00000100 - - 11111011 - + 00000001 - ---------- - 11111100 -``` - -# Le complément à 2 (1/2) - -## Questions: - -* Comment on écrit `+0` et `-0`? -* Comment calcule-t-on `2 + (-4)`? -* Quel est le complément à 2 de `1000 0000`? - -. . . - -## Réponses - -* Comment on écrit `+0` et `-0`? - - ``` - +0 = 00000000 - -0 = 11111111 + 00000001 = 100000000 => 00000000 - ``` -* Comment calcule-t-on `2 + (-4)`? - - ``` - 00000010 2 - + 11111100 + -4 - ---------- ----- - 11111110 -2 - ``` -* En effet - - ``` - 11111110 => 00000001 + 00000001 = 00000010 = 2. - ``` - -# Le complément à 2 (2/2) - -## Quels sont les entiers représentables en 8 bits? - -. . . - -``` -01111111 => 127 -10000000 => -128 // par définition -``` - -## Quels sont les entiers représentables sur $N$ bits? - -. . . - -$$ --2^{N-1} ... 2^{N-1}-1. -$$ - -## Remarque: dépassement de capacité en `C` - -* Comportement indéfini! - - -# Nombres à virgule (1/3) - -## Comment manipuler des nombres à virgule? - -$$ -0.1 + 0.2 = 0.3. -$$ - -Facile non? - -. . . - -## Et ça? - -```C -#include <stdio.h> -#include <stdlib.h> -int main(int argc, char *argv[]) { - float a = atof(argv[1]); - float b = atof(argv[2]); - printf("%.10f\n", (double)(a + b)); -} -``` - -. . . - -## Que se passe-t-il donc? - -# Nombres à virgule (2/3) - -## Nombres à virgule fixe - -+-------+-------+-------+-------+-----+----------+----------+----------+----------+ -| $2^3$ | $2^2$ | $2^1$ | $2^0$ | `.` | $2^{-1}$ | $2^{-2}$ | $2^{-3}$ | $2^{-4}$ | -+-------+-------+-------+-------+-----+----------+----------+----------+----------+ -| `1` | `0` | `1` | `0` | `.` | `0` | `1` | `0` | `1` | -+-------+-------+-------+-------+-----+----------+----------+----------+----------+ - -## Qu'est-ce ça donne en décimal? - -. . . - -$$ -2^3+2^1+\frac{1}{2^2}+\frac{1}{2^4} = 8+2+0.5+0.0625=10.5625. -$$ - -## Limites de cette représentation? - -. . . - - -* Tous les nombres `> 16`. -* Tous les nombres `< 0.0625`. -* Tous les nombres dont la décimale est pas un multiple de `0.0625`. - -# Nombres à virgule (3/3) - -## Nombres à virgule fixe - -* Nombres de $0=0000.0000$ à $15.9375=1111.1111$. -* Beaucoup de "trous" (au moins $0.0625$) entre deux nombres. - -## Solution partielle? - -. . . - -* Rajouter des bits. -* Bouger la virgule. - -# Nombres à virgule flottante (1/2) - -## Notation scientifique - -* Les nombres sont représentés en terme: - * Une mantisse - * Une base - * Un exposant - -$$ -\underbrace{22.1214}_{\mbox{nombre}}=\underbrace{221214}_{\mbox{mantisse}}\cdot -{\underbrace{10}_{\mbox{base}}}{\overbrace{^{-4}}^{\mbox{exp.}}}, -$$ - -. . . - -On peut donc séparer la représentation en 2: - -* La mantisse -* L'exposant - -# Nombres à virgule flottante (2/2) - -## Quel est l'avantage? - -. . . - -On peut représenter des nombres sur énormément d'ordres de grandeur avec un -nombre de bits fixés. - -## Différence fondamentale avec la virgule fixe? - -. . . - -La précision des nombres est **variable**: - -* On a uniquement un nombre de chiffres **significatifs**. -$$ -123456\cdot 10^{23}+ 123456\cdot 10^{-23}. -$$ - -## Quel inconvénient y a-t-il? - -. . . - -Ce mélange d'échelles entraîne un **perte de précision**. - -# Nombres à virgule flottante simple précision (1/4) - -Aussi appelés *IEEE 754 single-precision binary floating point*. - -](figs/Float_example_bare.svg) - -## Spécification - -* 1 bit de signe, -* 8 bits d'exposant, -* 23 bits de mantisse. - -$$ -(-1)^{b_{31}}\cdot 2^{(b_{30}b_{29}\dots b_{23})_{2}-127}\cdot (1.b_{22}b_{21}\dots b_{0})_{2}, -$$ - -## Calculer la valeur décimale du nombre ci-dessus - -# Nombres à virgule flottante simple précision (2/4) - -](figs/Float_example.svg) - -. . . - -\begin{align} -\mbox{exposant}&=\sum_{i=0}^7 b_{23+i}2^i=2^2+2^3+2^4+2^5+2^6=124-127,\\ -\mbox{mantisse}&=1+\sum_{i=1}^{23}b_{23-i}2^{-i}=1+2^{-2}=1.25,\\ -&\Rightarrow (-1)^0\cdot 2^{-3}\cdot 1.25=0.15625 -\end{align} - -# Nombres à virgule flottante simple précision (3/4) - -## Quel nombre ne peux pas être vraiment représenté? - -. . . - -## Zéro: exception pour l'exposant - -* Si l'exposant est `00000000` (zéro) -$$ -(-1)^{\mbox{sign}}\cdot 2^{-126}\cdot 0.\mbox{mantisse}, -$$ -* Sinon si l'exposant est `00000001` à `11111110` -$$ -\mbox{valeur normale}, -$$ -* Sinon `11111111` donne `NaN`. - -# Nombres à virgule flottante simple précision (4/4) - -## Quels sont les plus petits/grands nombres positifs représentables? - -. . . - -\begin{align} -0\ 0\dots0\ 0\dots01&=2^{-126}\cdot 2^{-23}=1.4...\cdot -10^{-45},\\ -0\ 1\dots10\ 1\dots1&=2^{127}\cdot (2-2^{-23})=3.4...\cdot -10^{38}. -\end{align} - -## Combien de chiffres significatifs en décimal? - -. . . - -* 24 bits ($23 + 1$) sont utiles pour la mantisse, soit $2^{24}-1$: - * La mantisse fait $\sim2^{24}\sim 10^7$, - * Ou encore $\sim \log_{10}(2^{24})\sim 7$. -* Environ **sept** chiffres significatifs. - -# Nombres à virgule flottante double précision (64bits) - -## Spécification - -* 1 bit de signe, -* 11 bits d'exposant, -* 52 bits de mantisse. - -. . . - -## Combien de chiffres significatifs? - -* La mantisse fait $\sim 2^{53}\sim10^{16}$, -* Ou encore $\sim \log_{10}(2^{53})\sim 16$, -* Environ **seize** chiffres significatifs. - -## Plus petit/plus grand nombre représentable? - -. . . - -* Plus petite mantisse et exposant: $\sim 2^{-52}\cdot 2^{-1022}\sim 4\cdot 10^{-324}$, -* Plus grande mantisse et exposant: $\sim 2\cdot 2^{1023}\sim \cdot 1.8\cdot 10^{308}$. - -# Précision finie (1/3) - -## Erreur de représentation - -* Les nombres réels ont potentiellement un **nombre infini** de décimales - * $1/3=0.\overline{3}$, - * $\pi=3.1415926535...$. -* Les nombres à virgule flottante peuvent en représenter qu'un **nombre - fini**. - * $1/3\cong 0.33333$, erreur $0.00000\overline{3}$. - * $\pi\cong3.14159$, erreur $0.0000026535...$. - -On rencontre donc des **erreurs de représentation** ou **erreurs -d'arrondi**. - -. . . - -## Et quand on calcule? - -* Avec deux chiffres significatifs -\begin{align} -&8.9+(0.02+0.04)=8.96=9.0,\\ -&(8.9+0.02)+0.04=8.9+0.04=8.9. -\end{align} - -. . . - -## Même pas associatif! - -# Précision finie (2/3) - -## Erreur de représentation virgule flottante - -$$ -(1.2)_{10} = 1.\overline{0011}\cdot 2^0\Rightarrow 0\ 01111111\ -00110011001100110011010. -$$ -Erreur d'arrondi dans les deux derniers bits et tout ceux qui viennent -ensuite -$$ -\varepsilon_2 = (00000000000000000000011)_2. -$$ -Ou en décimal -$$ -\varepsilon_{10} = 4.76837158203125\cdot 10^{-8}. -$$ - -# Précision finie (3/3) - -## Comment définir l'égalité de 2 nombres à virgule flottante? - -. . . - -Ou en d'autres termes, pour quel $\varepsilon>0$ (appelé `epsilon-machine`) on a -$$ -1+\varepsilon = 1, -$$ -pour un nombre à virgule flottante? - -. . . - -Pour un `float` (32 bits) la différence est à -$$ -2^{-23}=1.19\cdot 10^{-7}, -$$ -Soit la précision de la mantisse. - -## Comment le mesurer (par groupe)? - -. . . - -```C -float eps = 1.0; -while ((float)1.0 + (float)0.5 * eps != (float)1.0) { - eps = (float)0.5 * eps; -} -printf("eps = %g\n", eps); -``` - -# Erreurs d'arrondi - -Et jusqu'ici on a encore pas fait d'arithmétique! - -## Multiplication avec deux chiffres significatifs, décimal - -$$ -(1.1)_{10}\cdot (1.1)_{10}=(1.21)_{10}=(1.2)_{10}. -$$ -En continuant ce petit jeu: -$$ -\underbrace{1.1\cdot 1.1\cdots 1.1}_{\mbox{10 fois}}=2.0. -$$ -Alors qu'en réalité -$$ -1.1^{10}=2.5937... -$$ -Soit une erreur de près de 1/5e! - -. . . - -## Le même phénomène se produit (à plus petite échelle) avec les `float` ou `double`. - diff --git a/slides/cours_7.md b/slides/cours_7.md new file mode 100644 index 0000000000000000000000000000000000000000..21bca35f81f2d94b69f9262ed0045a4ff40a3f6a --- /dev/null +++ b/slides/cours_7.md @@ -0,0 +1,1426 @@ +--- +title: "Représentation des nombres, tris, et complexité" +date: "2024-11-11" +header-includes: | + \usepackage{xcolor} +--- + +# Représentation des nombres + +\Huge La représentation des nombres + +# Représentation des nombres (1/2) + +* Le nombre `247`. + +## Nombres décimaux: Les nombres en base 10 + ++--------+--------+--------+ +| $10^2$ | $10^1$ | $10^0$ | ++--------+--------+--------+ +| `2` | `4` | `7` | ++--------+--------+--------+ + +$$ +247 = 2\cdot 10^2 + 4\cdot 10^1 + 7\cdot 10^0. +$$ + +# Représentation des nombres (2/2) + +* Le nombre `11110111`. + +## Nombres binaires: Les nombres en base 2 + ++-------+-------+-------+-------+-------+-------+-------+-------+ +| $2^7$ | $2^6$ | $2^5$ | $2^4$ | $2^3$ | $2^2$ | $2^1$ | $2^0$ | ++-------+-------+-------+-------+-------+-------+-------+-------+ +| `1` | `1` | `1` | `1` | `0` | `1` | `1` | `1` | ++-------+-------+-------+-------+-------+-------+-------+-------+ + +$$ +1\cdot 2^7 + 1\cdot 2^6 +1\cdot 2^5 +1\cdot 2^4 +0\cdot 2^3 +1\cdot 2^2 ++1\cdot 2^1 +1\cdot 2^0 +$$ + +. . . + +$$ += 247. +$$ + +# Conversion de décimal à binaire (1/2) + +## Convertir 11 en binaire? + +. . . + +* On décompose en puissances de 2 en partant de la plus grande possible + + ``` + 11 / 8 = 1, 11 % 8 = 3 + 3 / 4 = 0, 3 % 4 = 3 + 3 / 2 = 1, 3 % 2 = 1 + 1 / 1 = 1, 1 % 1 = 0 + ``` +* On a donc + + $$ + 1011 \Rightarrow 1\cdot 2^3 + 0\cdot 2^2 + 1\cdot 2^1 + 1\cdot + 2^0=11. + $$ + +# Conversion de décimal à binaire (2/2) + +## Convertir un nombre arbitraire en binaire: 247? + +* Par groupe établir un algorithme. + +. . . + +## Algorithme + +1. Initialisation + + ```C + num = 247 + N = 0 + + tant que (2^(N+1) < num) { + N += 1 + } + ``` + +. . . + +2. Boucle + + ```C + tant que (N >= 0) { + bit = num / 2^N + num = num % 2^N + N -= 1 + } + ``` + +# Les additions en binaire + +Que donne l'addition `1101` avec `0110`? + +* L'addition est la même que dans le système décimal + + ``` + 1101 8+4+0+1 = 13 + + 0110 + 0+4+2+0 = 6 + ------- ----------------- + 10011 16+0+0+2+1 = 19 + ``` +* Les entiers sur un ordinateur ont une précision **fixée** (ici 4 bits). +* Que se passe-t-il donc ici? + +. . . + +## Dépassement de capacité: le nombre est "tronqué" + +* `10011 (19) -> 0011 (3)`. +* On fait "le tour"." + +# Entier non-signés minimal/maximal + +* Quel est l'entier non-signé maximal représentable avec 4 bit? + +. . . + +$$ +(1111)_2 = 8+4+2+1 = 15 +$$ + +* Quel est l'entier non-signé minimal représentable avec 4 bit? + +. . . + +$$ +(0000)_2 = 0+0+0+0 = 0 +$$ + +* Quel est l'entier non-signé min/max représentable avec N bit? + +. . . + +$$ +0\mbox{ et }2^N-1. +$$ + +* Donc `uint32_t?` maximal est? + +. . . + +$$ +2^{32}-1=4'294'967'295 +$$ + + +# Les multiplications en binaire (1/2) + +Que donne la multiplication de `1101` avec `0110`? + +* La multiplication est la même que dans le système décimal + + ``` + 1101 13 + * 0110 * 6 + --------- -------------- + 0000 78 + 11010 + 110100 + + 0000000 + --------- -------------- + 1001110 64+0+0+8+4+2+0 + ``` + +# Les multiplications en binaire (2/2) + +## Que fait la multiplication par 2? + +. . . + +* Décalage de un bit vers la gauche! + + ``` + 0110 + * 0010 + --------- + 0000 + + 01100 + --------- + 01100 + ``` + +. . . + +## Que fait la multiplication par $2^N$? + +. . . + +* Décalage de $N$ bits vers la gauche! + +# Entiers signés (1/2) + +Pas de nombres négatifs encore... + +## Comment faire? + +. . . + +## Solution naïve: + +* On ajoute un bit de signe (le bit de poids fort): + + ``` + 00000010: +2 + 10000010: -2 + ``` + +## Problèmes? + +. . . + +* Il y a deux zéros (pas trop grave): `10000000` et `00000000` +* Les additions différentes que pour les non-signés (très grave) + + ``` + 00000010 2 + + 10000100 + -4 + ---------- ---- + 10000110 = -6 != -2 + ``` + +# Entiers signés (2/2) + +## Beaucoup mieux + +* Complément à un: + * on inverse tous les bits: `1001 => 0110`. + +## Encore un peu mieux + +* Complément à deux: + * on inverse tous les bits, + * on ajoute 1 (on ignore les dépassements). + +. . . + +* Comment écrit-on `-4` en 8 bits? + +. . . + +``` + 4 = 00000100 + ________ + -4 => 00000100 + + 11111011 + + 00000001 + ---------- + 11111100 +``` + +# Le complément à 2 (1/2) + +## Questions: + +* Comment on écrit `+0` et `-0`? +* Comment calcule-t-on `2 + (-4)`? +* Quel est le complément à 2 de `1000 0000`? + +. . . + +## Réponses + +* Comment on écrit `+0` et `-0`? + + ``` + +0 = 00000000 + -0 = 11111111 + 00000001 = 100000000 => 00000000 + ``` +* Comment calcule-t-on `2 + (-4)`? + + ``` + 00000010 2 + + 11111100 + -4 + ---------- ----- + 11111110 -2 + ``` +* En effet + + ``` + 11111110 => 00000001 + 00000001 = 00000010 = 2. + ``` + +# Le complément à 2 (2/2) + +## Quels sont les entiers représentables en 8 bits? + +. . . + +``` +01111111 => 127 +10000000 => -128 // par définition +``` + +## Quels sont les entiers représentables sur $N$ bits? + +. . . + +$$ +-2^{N-1} ... 2^{N-1}-1. +$$ + +## Remarque: dépassement de capacité en `C` + +* Comportement indéfini! + + +# Les types énumérés + +\Huge Les types énumérés + +# Types énumérés (1/2) + +* Un **type énuméré**: ensemble de *variantes* (valeurs constantes). +* En `C` les variantes sont des entiers numérotés à partir de 0. + + ```C + enum days { + monday, tuesday, wednesday, + thursday, friday, saturday, sunday + }; + ``` +* On peut aussi donner des valeurs "custom" + + ```C + enum days { + monday = 2, tuesday = 8, wednesday = -2, + thursday = 1, friday = 3, saturday = 12, sunday = 9 + }; + ``` +* S'utilise comme un type standard et un entier + + ```C + enum days d = monday; + (d + 2) == monday + monday; // true + ``` + +# Types énumérés (2/2) + +* Très utile dans les `switch ... case`{.C} + + ```C + enum days d = monday; + switch (d) { + case monday: + // trucs + break; + case tuesday: + printf("0 ou 1\n"); + break; + } + ``` +* Le compilateur vous prévient qu'il en manque! + +# Utilisation des types énumérés + +## Réusiner votre couverture de la reine avec des `enum` + +A faire à la maison comme exercice! + +# Le tri rapide ou quicksort + +\Huge Tri rapide ou quicksort + +# Tri rapide ou quicksort (1/8) + +## Idée: algorithme `diviser pour régner` (`divide-and-conquer`) + +* Diviser: découper un problème en sous problèmes; +* Régner: résoudre les sous-problèmes (souvent récursivement); +* Combiner: à partir des sous problèmes résolu, calculer la solution. + +## Le pivot + +* Trouver le **pivot**, un élément qui divise le tableau en 2, tels que: + 1. Éléments à gauche sont **plus petits** que le pivot. + 2. Élements à droite sont **plus grands** que le pivot. + +# Tri rapide ou quicksort (2/8) + +## Algorithme `quicksort(tableau)` + +1. Choisir le pivot et l'amener à sa place: + * Les éléments à gauche sont plus petits que le pivot. + * Les éléments à droite sont plus grand que le pivot. +2. `quicksort(tableau_gauche)` en omettant le pivot. +3. `quicksort(tableau_droite)` en omettant le pivot. +4. S'il y a moins de deux éléments dans le tableau, le tableau est trié. + +. . . + +Compris? + +. . . + +Non c'est normal, faisons un exemple. + +# Tri rapide ou quicksort (3/8) + +\footnotesize + +Deux variables sont primordiales: + +```C +entier ind_min, ind_max; // les indices min/max des tableaux à trier +``` + + + +# Tri rapide ou quicksort (4/8) + +\footnotesize + +Deux variables sont primordiales: + +```C +entier ind_min, ind_max; // les indices min/max des tableaux à trier +``` + +## Pseudocode: quicksort + +```python +rien quicksort(entier tableau[], entier ind_min, entier ind_max) + si (longueur(tab) > 1) + ind_pivot = partition(tableau, ind_min, ind_max) + si (longueur(tableau[ind_min:ind_pivot-1]) != 0) + quicksort(tableau, ind_min, pivot_ind - 1) + si (longueur(tableau[ind_pivot+1:ind_max-1]) != 0) + quicksort(tableau, ind_pivot + 1, ind_max) +``` + +# Tri rapide ou quicksort (5/8) + +\footnotesize + +## Pseudocode: partition + +```C +entier partition(entier tableau[], entier ind_min, entier ind_max) + pivot = tableau[ind_max] // choix arbitraire + i = ind_min + j = ind_max-1 + tant que i < j: + en remontant i trouver le premier élément > pivot + en descendant j trouver le premier élément < pivot + échanger(tableau[i], tableau[j]) + // les plus grands à droite + // mettre les plus petits à gauche + + // on met le pivot "au milieu" + échanger(tableau[i], tableau[ind_max]) + retourne i // on retourne l'indice pivot +``` + +# Tri rapide ou quicksort (6/8) + +## Exercice: implémenter les fonctions `quicksort` et `partition` + +. . . + +```C +void quicksort(int size, int array[size], int first, + int last) +{ + if (first < last) { + int midpoint = partition(size, array, first, last); + if (first < midpoint - 1) { + quicksort(size, array, first, midpoint - 1); + } + if (midpoint + 1 < last) { + quicksort(size, array, midpoint + 1, last); + } + } +} +``` + + +# Tri rapide ou quicksort (7/8) + +\footnotesize + +## Exercice: implémenter les fonctions `quicksort` et `partition` + +```C +int partition(int size, int array[size], int first, int last) { + int pivot = array[last]; + int i = first - 1, j = last; + do { + do { + i += 1; + } while (array[i] < pivot && i < j); + do { + j -= 1; + } while (array[j] > pivot && i < j); + if (j > i) { + swap(&array[i], &array[j]); + } + } while (j > i); + swap(&array[i], &array[last]); + return i; +} +``` + +<!-- # Tri rapide ou quicksort (8/8) + +## Quelle est la complexité du tri rapide? + +. . . + +* Pire des cas plus: $\mathcal{O}(N^2)$ + * Quand le pivot sépare toujours le tableau de façon déséquilibrée ($N-1$ + éléments d'un côté $1$ de l'autre). + * $N$ boucles et $N$ comparaisons $\Rightarrow N^2$. +* Meilleur des cas (toujours le meilleur pivot): $\mathcal{O}(N\cdot \log_2(N))$. + * Chaque fois le tableau est séparé en $2$ parties égales. + * On a $\log_2(N)$ partitions, et $N$ boucles $\Rightarrow N\cdot + \log_2(N)$. +* En moyenne: $\mathcal{O}(N\cdot \log_2(N))$. --> + +# L'algorithme à la main + +## Exercice *sur papier* + +* Trier par tri rapide le tableau `[5, -2, 1, 3, 10, 15, 7, 4]` + +```C + + + + + + + + + + + + + +``` + +# Le tri par base (radix sort) + +\Huge Le tri par base (radix sort) + +# Tri par base (radix sort) + +* N'utilise pas la notion de comparaisons, mais celle de classement successif dans des catégories (alvéoles). +* Pour simplifier + * Tri de nombre entiers dans un tableau. + * On considère que des nombres $\ge 0$ (sans perte de généralité). + * On considère ensuite la représentation binaire de ces nombres. + +# Principe de l'algorithme + +1. On considère le bit le moins significatif. +2. On parcourt une 1ère fois le tableau et on place à la suite dans un 2ème tableau les éléments dont le bit est 0; + puis on répète l'opération 2 pour les éléments dont le bit est 1. +3. On répète l'étape 2 en regardant le bit suivant et en permutant le rôle des deux tableaux. + +On utilise donc deux tableaux pour réaliser ce tri. +A noter qu'à chaque étape, l'ordre des éléments dont le bit est à 0 (respectivement à 1) reste identique dans le 2ème tableau par rapport au 1er tableau. + +# Illustration sur un exemple (1/6) + +Soit la liste de nombre entier: + +| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| +| 5 | -5 | 1 | 6 | 4 | -6 | 2 | -9 | 2 | + +Le plus petit élément est -9. On commence donc par décaler les valeurs de 9. + +| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| +| 14 | 4 | 10 | 15 | 13 | 3 | 11 | 0 | 11 | + +# Illustration sur un exemple (2/6) + +* Écrivons les éléments en représentation binaire. +* La valeur maximale est 15, on a besoin de 4 bits. + +| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| +| 14 | 4 | 10 | 15 | 13 | 3 | 11 | 0 | 11 | +| 1110 | 0100 | 1010 | 1111 | 1101 | 0011 | 1011 | 0000 | 1011 | + +# Illustration sur un exemple (3/6) + +* On considère le bit de poids faible + +| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| +| 111**0** | 010**0** | 101**0** | 111**1** | 110**1** | 001**1** | 101**1** | 000**0** | 101**1** | + +. . . + +* On obtient le tableau: + +| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| +| 111\textcolor{red}{0} | 010\textcolor{red}{0} | 101\textcolor{red}{0} | 111\textcolor{green}{1} | 110\textcolor{green}{1} | 001\textcolor{green}{1} | 101\textcolor{green}{1} | 000\textcolor{red}{0} | 101\textcolor{green}{1} | +| \textcolor{red}{1110} | \textcolor{red}{0100} | \textcolor{red}{1010} | \textcolor{red}{0000} | \textcolor{green}{1111} | \textcolor{green}{1101} | \textcolor{green}{0011} | \textcolor{green}{1011} | \textcolor{green}{1011} | + +# Illustration sur un exemple (4/6) + +* On passe au 2ème bit et on obtient le tableau: + +| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| +| 11\textcolor{green}{1}0 | 01\textcolor{red}{0}0 | 10\textcolor{green}{1}0 | 00\textcolor{red}{0}0 | 11\textcolor{green}{1}1 | 11\textcolor{red}{0}1 | 00\textcolor{green}{1}1 | 10\textcolor{green}{1}1 | 10\textcolor{green}{1}1 | +| \textcolor{red}{0100} | \textcolor{red}{0000} | \textcolor{red}{1101} | \textcolor{green}{1110} | \textcolor{green}{1010} | \textcolor{green}{1111} | \textcolor{green}{0011} | \textcolor{green}{1011} | \textcolor{green}{1011} | + +. . . + +* On passe au 3ème bit et on obtient le tableau: + +| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| +| 0\textcolor{green}{1}00 | 0\textcolor{red}{0}00 | 1\textcolor{green}{1}01 | 1\textcolor{green}{1}10 | 1\textcolor{red}{0}10 | 1\textcolor{green}{1}11 | 0\textcolor{red}{0}11 | 1\textcolor{red}{0}11 | 1\textcolor{red}{0}11 | +| \textcolor{red}{0000} | \textcolor{red}{1010} | \textcolor{red}{0011} | \textcolor{red}{1011} | \textcolor{red}{1011} | \textcolor{green}{0100} | \textcolor{green}{1101} | \textcolor{green}{1110} | \textcolor{green}{1111} | + + +# Illustration sur un exemple (5/6) + +4. On passe au dernier bit et on obtient le tableau final: + +| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| +| \textcolor{red}{0}000 | \textcolor{green}{1}010 | \textcolor{red}{0}011 | \textcolor{green}{1}011 | \textcolor{green}{1}011 | \textcolor{red}{0}100 | \textcolor{green}{1}101 | \textcolor{green}{1}110 | \textcolor{green}{1}111 | +| \textcolor{red}{0000} | \textcolor{red}{0011} | \textcolor{red}{0100} | \textcolor{green}{1010} | \textcolor{green}{1011} | \textcolor{green}{1011} | \textcolor{green}{1101} | \textcolor{green}{1110} | \textcolor{green}{1111} | + +. . . + +* En revenant à la représentation décimale, on a le tableau trié: + +| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| 0 | 3 | 4 | 10 | 11 | 11 | 13 | 14 | 15 | + +# Illustration sur un exemple (6/6) + +* Pour revenir aux valeurs initiales, il faut décaler de 9 dans l'autre sens. + +| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| +| -9 | -6 | -5 | 1 | 2 | 2 | 4 | 5 | 6 | + +* Et alors? + +. . . + +* Et alors rien. C'est fini. + + +# Pseudo-code + +```python +rien radix_sort(entier taille, entier tab[taille]): +# initialisation + entier val_min = valeur_min(taille, tab) + entier val_max = valeur_max(taille, tab) + decaler(taille, tab, val_min) + entier nb_bits = nombre_de_bits(val_max - val_min) +# algo + entier tab_tmp[taille] + pour pos de 0 à nb_bits: + alveole_0(taille, tab, tab_tmp, pos) # 0 -> taille + alveole_1(taille, tab, tab_tmp, pos) # taille -> 0 + echanger(tab, tab_tmp) +# post-traitement + decaler(taille, tab, -val_min) +``` +<!-- ```C +void radix_sort(int size,int tab[size]) { + int val_min = tab[index_min(size,tab)]; + int val_max = tab[index_max(size,tab)]; + + decaler(size, tab,val_min); + int nb_bits = get_nb_bits(val_max-val_min); + + int tab_tmp[size]; + for (int pos=0;pos<nb_bits;pos++) { + bucket_0(size,tab,tab_tmp,pos); + bucket_1(size,tab,tab_tmp,pos); + swap(tab,tab_tmp); + } + decaler(size,tab,-val_min); +} +``` --> + +# Un peu plus de détails (1/2) + +## La fonction `decaler()` + +```python +rien decaler(entier taille, entier tab[taille], entier val): + pour i de 0 à taille-1: + taille[i] -= val +``` + +. . . + +## La fonction `echanger()` + +```python +rien echanger(entier tab[], entier tab2[]) +# échanger les tableaux (sans copier les valeurs) +``` + +# Un peu plus de détails (2/2) + +## La fonction `alveole_0()` + +```python +rien alveole_0(entier taille, entier tab[taille], + entier tab_tmp[taille], entier pos): + entier k = 0 + pour i de 0 à taille-1: + si bit(tab[i], pos) == 0: + tab_tmp[k] = tab[i] + k = k + 1 +``` + +. . . + +## La fonction `alveole_1()` + +```python +rien alveole_1(entier taille, entier tab[taille], + entier tab_tmp[taille], entier pos): + # pareil que alveole_0 mais dans l'autre sens +``` + +# Le tri par fusion (merge sort) + +\Huge Le tri par fusion (merge sort) + +# Tri par fusion (merge sort) + +* Tri par comparaison. +* Idée: deux listes triées, sont fusionnées pour donner une liste triée plus longue. +* Itérativement, on trie d'abord les paires de nombres, puis les groupes de 4 nombres, ensuite de 8, et ainsi de suite jusqu'à obtenir un tableau trié. +<!-- * On simplifie ici: le tableau a une longueur de puissance de 2. --> + +<!-- Pour son implémentation, le tri par fusion nécessite d'utiliser une zone temporaire de stockage des données de taille égale à celle de la liste de nombres à trier. On considère le cas du tri d'une liste de nombres entiers stockés dans un tableau. --> + +# Principe de l'algorithme + +* Soit `taille` la taille du tableau à trier. +* Pour `i = 0` à `entier(log2(taille))-1`: + * Fusion des paires de sous-tableaux successifs de taille `2**i` (ou moins pour l'extrémité) + +. . . + +* Remarques: + * Pour l'étape `i`, les sous-tableaux de taille `2**i` sont triés. + * La dernière paire de sous-tableaux peut être incomplète (vide ou avec moins que `2**i` éléments). + +# Exemple de tri par fusion + +* Soit la liste de nombres entiers stockés dans un tableau de taille 9: + +| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| +| 5 | -5 | 1 | 6 | 4 | -6 | 2 | -9 | 2 | + +. . . + +* Fusion des éléments successifs (ce qui revient à les mettre dans l'ordre): + +| étape | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| +| 0 | \textcolor{red}{5} | \textcolor{green}{-5} | \textcolor{red}{1} | \textcolor{green}{6} | \textcolor{red}{4} | \textcolor{green}{-6} | \textcolor{red}{2} | \textcolor{green}{-9} | \textcolor{red}{2} | +| 1 | \textcolor{red}{-5} | \textcolor{red}{5} | \textcolor{green}{1} | \textcolor{green}{6} | \textcolor{red}{-6} | \textcolor{red}{4} | \textcolor{green}{-9} | \textcolor{green}{2} | \textcolor{red}{2} | +| 2 | \textcolor{red}{-5} | \textcolor{red}{1} | \textcolor{red}{5} | \textcolor{red}{6} | \textcolor{green}{-9} | \textcolor{green}{-6} | \textcolor{green}{2} | \textcolor{green}{4} | \textcolor{red}{2} | +| 3 | \textcolor{red}{-9} | \textcolor{red}{-6} | \textcolor{red}{-5} | \textcolor{red}{1} | \textcolor{red}{2} | \textcolor{red}{4} | \textcolor{red}{5} | \textcolor{red}{6} | \textcolor{green}{2} | +| 4 | -9 | -6 | -5 | 1 | 2 | 2 | 4 | 5 | 6 | + + +# Pseudo-code (autrement) + +```python +rien tri_fusion(entier taille, entier tab[taille]) + entier tab_tmp[taille]; + entier nb_etapes = log_2(taille) + 1; + pour etape de 0 a nb_etapes - 1: + entier gauche = 0; + entier t_tranche = 2**etape; + tant que (gauche < taille): + fusion( + tab[gauche..gauche+t_tranche-1], + tab[gauche+t_tranche..gauche+2*t_tranche-1], + tab_tmp[gauche..gauche+2*t_tranche-1]); + #bornes incluses + gauche += 2*t_tranche; + echanger(tab, tab_tmp); +``` + + +# Algorithme de fusion possible + +## Une idée? + +. . . + +* Parcourir les deux tableaux jusqu'à atteindre la fin d'un des deux + * Comparer l'élément courant des 2 tableaux + * Écrire le plus petit élément dans le tableau résultat + * Avancer de 1 dans les tableaux du plus petit élément et résultat +* Copier les éléments du tableau restant dans le tableau résultat + +# La fonction de fusion (pseudo-code autrement) + +\footnotesize + +## Une idée? + +. . . + +```python +# hyp: tab_g et tab_d sont triés +rien fusion(entier tab_g[], entier tab_d[], entier res[]): + entier g = taille(tab_g) + entier d = taille(tab_d) + entier i_g = 0, i_d = 0 + pour i = 0 à g + d: + si i_g < g et i_d < d: + si tab_g[i_g] < tab_d[i_d]: + res[i] = tab_g[i_g] + i_g = i_g + 1 + sinon: + res[i] = tab_d[i_d] + i_d = i_d + 1 + sinon si i_g < g: + res[i] = tab_g[i_g] + i_g = i_g + 1 + sinon si i_d < d: + res[i] = tab_d[i_d] + i_d = i_d + 1 + +``` + +<!-- ## Complexité +L'algorithme présenté précédemment nécessite un certain nombre d'opérations lié à la taille $N$ du tableau. + +Il y a essentiellement $\log_2(N)$ étapes. + +A chaque étape, le tableau est parcouru une fois avec un nombre constant effectué pour chacune des cases du tableau. En effet, l'opération de fusion implique de ne parcourir qu'une seule fois chacun des deux tableaux qu'on fusionne dans un 3ème tableau. + +Ainsi, la complexité du tri par fusion est $\mathcal{O}(N\cdot \log_2(N)$. --> + +# L'efficacité d'un algorithmique + +\Huge L'efficacité d'un algorithmique + +# Efficacité d'un algorithmique + +Comment mesurer l'efficacité d'un algorithme? + +. . . + +* Mesurer le temps CPU, +* Mesurer le temps d'accès à la mémoire, +* Mesurer la place prise mémoire, + +. . . + +Dépendant du **matériel**, du **compilateur**, des **options de compilation**, etc! + +## Mesure du temps CPU + +```C +#include <time.h> +struct timespec tstart={0,0}, tend={0,0}; +clock_gettime(CLOCK_MONOTONIC, &tstart); +// some computation +clock_gettime(CLOCK_MONOTONIC, &tend); +printf("computation about %.5f seconds\n", + ((double)tend.tv_sec + 1e-9*tend.tv_nsec) - + ((double)tstart.tv_sec + 1e-9*tstart.tv_nsec)); +``` + +# Programme simple: mesure du temps CPU + +## Preuve sur un [petit exemple](../source_codes/complexity/sum.c) + +```bash +source_codes/complexity$ make bench +RUN ONCE -O0 +the computation took about 0.00836 seconds +RUN ONCE -O3 +the computation took about 0.00203 seconds +RUN THOUSAND TIMES -O0 +the computation took about 0.00363 seconds +RUN THOUSAND TIMES -O3 +the computation took about 0.00046 seconds +``` + +Et sur votre machine les résultats seront **différents**. + +. . . + +## Conclusion + +* Nécessité d'avoir une mesure indépendante du/de la + matériel/compilateur/façon de mesurer/météo. + +# Analyse de complexité algorithmique (1/4) + +* On analyse le **temps** pris par un algorithme en fonction de la **taille de + l'entrée**. + +## Exemple: recherche d'un élément dans une liste triée de taille N + +```C +int sorted_list[N]; +bool in_list = is_present(N, sorted_list, elem); +``` + +* Plus `N` est grand, plus l'algorithme prend de temps sauf si... + +. . . + +* l'élément est le premier de la liste (ou à une position toujours la même). +* ce genre de cas pathologique ne rentre pas en ligne de compte. + +# Analyse de complexité algorithmique (2/4) + +## Recherche linéaire + +```C +bool is_present(int n, int tab[], int elem) { + for (int i = 0; i < n; ++i) { + if (tab[i] == elem) { + return true; + } else if (elem < tab[i]) { + return false; + } + } + return false; +} +``` + +* Dans le **meilleurs des cas** il faut `1` comparaison. +* Dans le **pire des cas** (élément absent p.ex.) il faut `n` comparaisons. + +. . . + +La **complexité algorithmique** est proportionnelle à `N`: on double la taille +du tableau $\Rightarrow$ on double le temps pris par l'algorithme. + +# Analyse de complexité algorithmique (3/4) + +## Recherche dichotomique + +```C +bool is_present_binary_search(int n, int tab[], int elem) { + int left = 0; + int right = n - 1; + while (left <= right) { + int mid = (right + left) / 2; + if (tab[mid] < elem) { + left = mid + 1; + } else if (tab[mid] > elem) { + right = mid - 1; + } else { + return true; + } + } + return false; +} +``` + +# Analyse de complexité algorithmique (4/4) + +## Recherche dichotomique + +](figs/Binary_search_complexity.svg){width=80%} + +. . . + +* Dans le **meilleurs de cas** il faut `1` comparaison. +* Dans le **pire des cas** il faut $\log_2(N)+1$ comparaisons + +. . . + +## Linéaire vs dichotomique + +* $N$ vs $\log_2(N)$ comparaisons logiques. +* Pour $N=1000000$: `1000000` vs `21` comparaisons. + +# Notation pour la complexité + +## Constante de proportionnalité + +* Pour la recherche linéaire ou dichotomique, on a des algorithmes qui sont $\sim N$ ou $\sim \log_2(N)$ +* Qu'est-ce que cela veut dire? + +. . . + +* Temps de calcul est $t=C\cdot N$ (où $C$ est le temps pris pour une comparaisons sur une machine/compilateur donné) +* La complexité ne dépend pas de $C$. + +## Le $\mathcal{O}$ de Leibnitz + +* Pour noter la complexité d'un algorithme on utilise le symbole $\mathcal{O}$ (ou "grand Ô de"). +* Les complexités les plus couramment rencontrées sont + +. . . + +$$ +\mathcal{O}(1),\quad \mathcal{O}(\log(N)),\quad \mathcal{O}(N),\quad +\mathcal{O}(\log(N)\cdot N), \quad \mathcal{O}(N^2), \quad +\mathcal{O}(N^3). +$$ + +# Ordres de grandeur + +\begin{table}[!h] +\begin{center} +\caption{Valeurs approximatives de quelques fonctions usuelles de complexité.} +\medskip +\begin{tabular}{|c|c|c|c|c|} +\hline +$\log_2(N)$ & $\sqrt{N}$ & $N$ & $N\log_2(N)$ & $N^2$ \\ +\hline\hline +$3$ & $3$ & $10$ & $30$ & $10^2$ \\ +\hline +$6$ & $10$ & $10^2$ & $6\cdot 10^2$ & $10^4$ \\ +\hline +$9$ & $31$ & $10^3$ & $9\cdot 10^3$ & $10^6$ \\ +\hline +$13$ & $10^2$ & $10^4$ & $1.3\cdot 10^5$ & $10^8$ \\ +\hline +$16$ & $3.1\cdot 10^2$ & $10^5$ & $1.6\cdot 10^6$ & $10^{10}$ \\ +\hline +$19$ & $10^3$ & $10^6$ & $1.9\cdot 10^7$ & $10^{12}$ \\ +\hline +\end{tabular} +\end{center} +\end{table} + + +# Quelques exercices (1/3) + +## Complexité de l'algorithme de test de primalité naïf? + +```C +for (i = 2; i < sqrt(N); ++i) { + if (N % i == 0) { + return false; + } +} +return true; +``` + +. . . + +## Réponse + +$$ +\mathcal{O}(\sqrt{N}). +$$ + +# Quelques exercices (2/3) + +## Complexité de trouver le minimum d'un tableau? + +```C +int min = MAX; +for (i = 0; i < N; ++i) { + if (tab[i] < min) { + min = tab[i]; + } +} +return min; +``` + +. . . + +## Réponse + +$$ +\mathcal{O}(N). +$$ + +# Quelques exercices (3/3) + +## Complexité du tri par sélection? + +```C +int ind = 0; +while (ind < SIZE-1) { + min = find_min(tab[ind:SIZE]); + swap(min, tab[ind]); + ind += 1; +} +``` + +. . . + +## Réponse + +### `min = find_min` + +$$ +(N-1)+(N-2)+...+2+1=\sum_{i=1}^{N-1}i=N\cdot(N-1)/2=\mathcal{O}(N^2). +$$ + +## Finalement + +$$ +\mathcal{O}(N^2\mbox{ comparaisons}) + \mathcal{O}(N\mbox{swaps})=\mathcal{O}(N^2). +$$ + + +# Tri à bulle (1/4) + +## Algorithme + +* Parcours du tableau et comparaison des éléments consécutifs: + - Si deux éléments consécutifs ne sont pas dans l'ordre, ils sont échangés. +* On recommence depuis le début du tableau jusqu'à avoir plus d'échanges à + faire. + +## Que peut-on dire sur le dernier élément du tableau après un parcours? + +. . . + +* Le plus grand élément est **à la fin** du tableau. + * Plus besoin de le traiter. +* A chaque parcours on s'arrête un élément plus tôt. + +# Tri à bulle (2/4) + +## Exemple + + + + +# Tri à bulle (3/4) + +## Exercice: écrire l'algorithme (poster le résultat sur matrix) + +. . . + +```C +rien tri_a_bulles(entier tableau[]) + pour i de longueur(tableau)-1 à 1: + trié = vrai + pour j de 0 à i-1: + si (tableau[j] > tableau[j+1]) + échanger(array[j], array[j+1]) + trié = faux + + si trié + retourner +``` + +# Tri à bulle (4/4) + +## Quelle est la complexité du tri à bulles? + +. . . + +* Dans le meilleurs des cas: + * Le tableau est déjà trié: $\mathcal{O}(N)$ comparaisons. +* Dans le pire des cas, $N\cdot (N-1)/2\sim\mathcal{O}(N^2)$: +$$ +\sum_{i=1}^{N-1}i\mbox{ comparaison et }3\sum_{i=1}^{N-1}i \mbox{ affectations +(swap)}\Rightarrow \mathcal{O}(N^2). +$$ +* En moyenne, $\mathcal{O}(N^2)$ ($N^2/2$ comparaisons). + +# L'algorithme à la main + +## Exercice *sur papier* + +* Trier par tri à bulles le tableau `[5, -2, 1, 3, 10, 15, 7, 4]` + +```C + + + + + + + + + + + + + +``` + +# Tri par insertion (1/3) + +## But + +* trier un tableau par ordre croissant + +## Algorithme + +Prendre un élément du tableau et le mettre à sa place parmi les éléments déjà +triés du tableau. + + + +# Tri par insertion (2/3) + +## Exercice: Proposer un algorithme (en C) + +. . . + +```C +void tri_insertion(int N, int tab[N]) { + for (int i = 1; i < N; i++) { + int tmp = tab[i]; + int pos = i; + while (pos > 0 && tab[pos - 1] > tmp) { + tab[pos] = tab[pos - 1]; + pos = pos - 1; + } + tab[pos] = tmp; + } +} +``` + +# Tri par insertion (3/3) + +## Question: Quelle est la complexité? + +. . . + +* Parcours de tous les éléments ($N-1$ passages dans la boucle) + * Placer: en moyenne $i$ comparaisons et affectations à l'étape $i$ +* Moyenne: $\mathcal{O}(N^2)$ + +. . . + +* Pire des cas, liste triée à l'envers: $\mathcal{O}(N^2)$ +* Meilleurs des cas, liste déjà triée: $\mathcal{O}(N)$ + +# L'algorithme à la main + +## Exercice *sur papier* + +* Trier par insertion le tableau `[5, -2, 1, 3, 10]` + +```C + + + + + + + + + + + + + +``` + +# Complexité algorithmique du radix-sort (1/2) + +## Pseudo-code + +```python +rien radix_sort(entier taille, entier tab[taille]): +# initialisation + entier val_min = valeur_min(taille, tab) + entier val_max = valeur_max(taille, tab) + decaler(taille, tab, val_min) + entier nb_bits = nombre_de_bits(val_max - val_min) +# algo + entier tab_tmp[taille] + pour pos de 0 à nb_bits: + alveole_0(taille, tab, tab_tmp, pos) # 0 -> taille + alveole_1(taille, tab, tab_tmp, pos) # taille -> 0 + echanger(tab, tab_tmp) +# post-traitement + decaler(taille, tab, -val_min) +``` + +# Complexité algorithmique du radix-sort (2/2) + +\footnotesize + +<!-- Voici une liste de parcours utilitaires de tableau: + +1. Recherche de la valeur minimum ```val_min``` +2. Recherche de la valeur maximum ```val_max``` +3. Décalage des valeurs dans l'intervalle ```0..val_max-val_min``` +4. Décalage inverse pour revenir dans l'intervalle ```val_min..val_max``` +5. Copie éventuelle du tableau temporaire dans le tableau originel + +On a donc un nombre de parcours fixe (4 ou 5) qui se font en $\mathcal{O}(N)$ où $N$ est la taille du tableau. + +La partie du tri à proprement parler est une boucle sur le nombre de bits *b* de ```val_min..val_max```. + +A chaque passage à travers la boucle, on parcourt 2 fois le tableau: la 1ère fois pour s'occuper des éléments dont le bit courant à 0; la 2ème pour ceux dont le bit courant est à 1. + +A noter que le nombre d'opérations est de l'ordre de *b* pour la lecture d'un bit et constant pour la fonction ```swap_ptr()```. + +Ainsi, la complexité du tri par base est $\mathcal{O}(b\cdot N)$. --> + +## Pseudo-code + +```python +rien radix_sort(entier taille, entier tab[taille]): +# initialisation + entier val_min = valeur_min(taille, tab) # O(taille) + entier val_max = valeur_max(taille, tab) # O(taille) + decaler(taille, tab, val_min) # O(taille) + entier nb_bits = + nombre_de_bits(val_max - val_min) # O(nb_bits) +# algo + entier tab_tmp[taille] + pour pos de 0 à nb_bits: # O(nb_bits) + alveole_0(taille, tab, tab_tmp, pos) # O(taille) + alveole_1(taille, tab, tab_tmp, pos) # O(taille) + echanger(tab, tab_tmp) # O(1) +# post-traitement + decaler(taille, tab, -val_min) # O(N) +``` + +. . . + +* Au final: $\mathcal{O}(N\cdot (b+4))$. + +# Complexité algorithmique du merge-sort (1/2) + +## Pseudo-code + +```python +rien tri_fusion(entier taille, entier tab[taille]) + entier tab_tmp[taille]; + entier nb_etapes = log_2(taille) + 1; + pour etape de 0 a nb_etapes - 1: + entier gauche = 0; + entier t_tranche = 2**etape; + tant que (gauche < taille): + fusion( + tab[gauche..gauche+t_tranche-1], + tab[gauche+t_tranche..gauche+2*t_tranche-1], + tab_tmp[gauche..gauche+2*t_tranche-1]); + gauche += 2*t_tranche; + echanger(tab, tab_tmp); +``` + +# Complexité algorithmique du merge-sort (2/2) + +## Pseudo-code + +```python +rien tri_fusion(entier taille, entier tab[taille]) + entier tab_tmp[taille] + entier nb_etapes = log_2(taille) + 1 + pour etape de 0 a nb_etapes - 1: # O(log2(taille)) + entier gauche = 0; + entier t_tranche = 2**etape + tant que (gauche < taille): # O(taille) + fusion( + tab[gauche..gauche+t_tranche-1], + tab[gauche+t_tranche..gauche+2*t_tranche-1], + tab_tmp[gauche..gauche+2*t_tranche-1]) + gauche += 2*t_tranche + echanger(tab, tab_tmp) +``` + +. . . + +* Au final: $\mathcal{O}(N\log_2(N))$. + +# Complexité algorithmique du quick-sort (1/2) + +## Pseudocode: quicksort + +```python +rien quicksort(entier tableau[], entier ind_min, entier ind_max) + si (longueur(tab) > 1) + ind_pivot = partition(tableau, ind_min, ind_max) + si (longueur(tableau[ind_min:ind_pivot-1]) != 0) + quicksort(tableau, ind_min, pivot_ind - 1) + si (longueur(tableau[ind_pivot+1:ind_max-1]) != 0) + quicksort(tableau, ind_pivot + 1, ind_max) +``` + + + +# Complexité algorithmique du quick-sort (2/2) + +## Quelle est la complexité du tri rapide? + +. . . + +* Pire des cas: $\mathcal{O}(N^2)$ + * Quand le pivot sépare toujours le tableau de façon déséquilibrée ($N-1$ + éléments d'un côté $1$ de l'autre). + * $N$ boucles et $N$ comparaisons $\Rightarrow N^2$. +* Meilleur des cas (toujours le meilleur pivot): $\mathcal{O}(N\cdot \log_2(N))$. + * Chaque fois le tableau est séparé en $2$ parties égales. + * On a $\log_2(N)$ partitions, et $N$ boucles $\Rightarrow N\cdot + \log_2(N)$. +* En moyenne: $\mathcal{O}(N\cdot \log_2(N))$. + + diff --git a/slides/figs/Binary_search_complexity.svg b/slides/figs/Binary_search_complexity.svg new file mode 100644 index 0000000000000000000000000000000000000000..e7a1553983c3d08fb367c90eacb00e39bd9d1094 --- /dev/null +++ b/slides/figs/Binary_search_complexity.svg @@ -0,0 +1,318 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="401.301pt" height="167.04pt" viewBox="0 0 401.301 167.04" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 1.625 -4.5625 C 1.171875 -4.859375 1.125 -5.1875 1.125 -5.359375 C 1.125 -5.96875 1.78125 -6.390625 2.484375 -6.390625 C 3.203125 -6.390625 3.84375 -5.875 3.84375 -5.15625 C 3.84375 -4.578125 3.453125 -4.109375 2.859375 -3.765625 Z M 3.078125 -3.609375 C 3.796875 -3.984375 4.28125 -4.5 4.28125 -5.15625 C 4.28125 -6.078125 3.40625 -6.640625 2.5 -6.640625 C 1.5 -6.640625 0.6875 -5.90625 0.6875 -4.96875 C 0.6875 -4.796875 0.703125 -4.34375 1.125 -3.875 C 1.234375 -3.765625 1.609375 -3.515625 1.859375 -3.34375 C 1.28125 -3.046875 0.421875 -2.5 0.421875 -1.5 C 0.421875 -0.453125 1.4375 0.21875 2.484375 0.21875 C 3.609375 0.21875 4.5625 -0.609375 4.5625 -1.671875 C 4.5625 -2.03125 4.453125 -2.484375 4.0625 -2.90625 C 3.875 -3.109375 3.71875 -3.203125 3.078125 -3.609375 Z M 2.078125 -3.1875 L 3.3125 -2.40625 C 3.59375 -2.21875 4.0625 -1.921875 4.0625 -1.3125 C 4.0625 -0.578125 3.3125 -0.0625 2.5 -0.0625 C 1.640625 -0.0625 0.921875 -0.671875 0.921875 -1.5 C 0.921875 -2.078125 1.234375 -2.71875 2.078125 -3.1875 Z M 2.078125 -3.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 2.9375 -1.640625 L 2.9375 -0.78125 C 2.9375 -0.421875 2.90625 -0.3125 2.171875 -0.3125 L 1.96875 -0.3125 L 1.96875 0 C 2.375 -0.03125 2.890625 -0.03125 3.3125 -0.03125 C 3.734375 -0.03125 4.25 -0.03125 4.671875 0 L 4.671875 -0.3125 L 4.453125 -0.3125 C 3.71875 -0.3125 3.703125 -0.421875 3.703125 -0.78125 L 3.703125 -1.640625 L 4.6875 -1.640625 L 4.6875 -1.953125 L 3.703125 -1.953125 L 3.703125 -6.484375 C 3.703125 -6.6875 3.703125 -6.75 3.53125 -6.75 C 3.453125 -6.75 3.421875 -6.75 3.34375 -6.625 L 0.28125 -1.953125 L 0.28125 -1.640625 Z M 2.984375 -1.953125 L 0.5625 -1.953125 L 2.984375 -5.671875 Z M 2.984375 -1.953125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 1.265625 -0.765625 L 2.328125 -1.796875 C 3.875 -3.171875 4.46875 -3.703125 4.46875 -4.703125 C 4.46875 -5.84375 3.578125 -6.640625 2.359375 -6.640625 C 1.234375 -6.640625 0.5 -5.71875 0.5 -4.828125 C 0.5 -4.28125 1 -4.28125 1.03125 -4.28125 C 1.203125 -4.28125 1.546875 -4.390625 1.546875 -4.8125 C 1.546875 -5.0625 1.359375 -5.328125 1.015625 -5.328125 C 0.9375 -5.328125 0.921875 -5.328125 0.890625 -5.3125 C 1.109375 -5.96875 1.65625 -6.328125 2.234375 -6.328125 C 3.140625 -6.328125 3.5625 -5.515625 3.5625 -4.703125 C 3.5625 -3.90625 3.078125 -3.125 2.515625 -2.5 L 0.609375 -0.375 C 0.5 -0.265625 0.5 -0.234375 0.5 0 L 4.203125 0 L 4.46875 -1.734375 L 4.234375 -1.734375 C 4.171875 -1.4375 4.109375 -1 4 -0.84375 C 3.9375 -0.765625 3.28125 -0.765625 3.0625 -0.765625 Z M 1.265625 -0.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 2.9375 -6.375 C 2.9375 -6.625 2.9375 -6.640625 2.703125 -6.640625 C 2.078125 -6 1.203125 -6 0.890625 -6 L 0.890625 -5.6875 C 1.09375 -5.6875 1.671875 -5.6875 2.1875 -5.953125 L 2.1875 -0.78125 C 2.1875 -0.421875 2.15625 -0.3125 1.265625 -0.3125 L 0.953125 -0.3125 L 0.953125 0 C 1.296875 -0.03125 2.15625 -0.03125 2.5625 -0.03125 C 2.953125 -0.03125 3.828125 -0.03125 4.171875 0 L 4.171875 -0.3125 L 3.859375 -0.3125 C 2.953125 -0.3125 2.9375 -0.421875 2.9375 -0.78125 Z M 2.9375 -6.375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 2.890625 -3.515625 C 3.703125 -3.78125 4.28125 -4.46875 4.28125 -5.265625 C 4.28125 -6.078125 3.40625 -6.640625 2.453125 -6.640625 C 1.453125 -6.640625 0.6875 -6.046875 0.6875 -5.28125 C 0.6875 -4.953125 0.90625 -4.765625 1.203125 -4.765625 C 1.5 -4.765625 1.703125 -4.984375 1.703125 -5.28125 C 1.703125 -5.765625 1.234375 -5.765625 1.09375 -5.765625 C 1.390625 -6.265625 2.046875 -6.390625 2.40625 -6.390625 C 2.828125 -6.390625 3.375 -6.171875 3.375 -5.28125 C 3.375 -5.15625 3.34375 -4.578125 3.09375 -4.140625 C 2.796875 -3.65625 2.453125 -3.625 2.203125 -3.625 C 2.125 -3.609375 1.890625 -3.59375 1.8125 -3.59375 C 1.734375 -3.578125 1.671875 -3.5625 1.671875 -3.46875 C 1.671875 -3.359375 1.734375 -3.359375 1.90625 -3.359375 L 2.34375 -3.359375 C 3.15625 -3.359375 3.53125 -2.6875 3.53125 -1.703125 C 3.53125 -0.34375 2.84375 -0.0625 2.40625 -0.0625 C 1.96875 -0.0625 1.21875 -0.234375 0.875 -0.8125 C 1.21875 -0.765625 1.53125 -0.984375 1.53125 -1.359375 C 1.53125 -1.71875 1.265625 -1.921875 0.984375 -1.921875 C 0.734375 -1.921875 0.421875 -1.78125 0.421875 -1.34375 C 0.421875 -0.4375 1.34375 0.21875 2.4375 0.21875 C 3.65625 0.21875 4.5625 -0.6875 4.5625 -1.703125 C 4.5625 -2.515625 3.921875 -3.296875 2.890625 -3.515625 Z M 2.890625 -3.515625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 1.3125 -3.265625 L 1.3125 -3.515625 C 1.3125 -6.03125 2.546875 -6.390625 3.0625 -6.390625 C 3.296875 -6.390625 3.71875 -6.328125 3.9375 -5.984375 C 3.78125 -5.984375 3.390625 -5.984375 3.390625 -5.546875 C 3.390625 -5.234375 3.625 -5.078125 3.84375 -5.078125 C 4 -5.078125 4.3125 -5.171875 4.3125 -5.5625 C 4.3125 -6.15625 3.875 -6.640625 3.046875 -6.640625 C 1.765625 -6.640625 0.421875 -5.359375 0.421875 -3.15625 C 0.421875 -0.484375 1.578125 0.21875 2.5 0.21875 C 3.609375 0.21875 4.5625 -0.71875 4.5625 -2.03125 C 4.5625 -3.296875 3.671875 -4.25 2.5625 -4.25 C 1.890625 -4.25 1.515625 -3.75 1.3125 -3.265625 Z M 2.5 -0.0625 C 1.875 -0.0625 1.578125 -0.65625 1.515625 -0.8125 C 1.328125 -1.28125 1.328125 -2.078125 1.328125 -2.25 C 1.328125 -3.03125 1.65625 -4.03125 2.546875 -4.03125 C 2.71875 -4.03125 3.171875 -4.03125 3.484375 -3.40625 C 3.65625 -3.046875 3.65625 -2.53125 3.65625 -2.046875 C 3.65625 -1.5625 3.65625 -1.0625 3.484375 -0.703125 C 3.1875 -0.109375 2.734375 -0.0625 2.5 -0.0625 Z M 2.5 -0.0625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 4.46875 -2 C 4.46875 -3.1875 3.65625 -4.1875 2.578125 -4.1875 C 2.109375 -4.1875 1.671875 -4.03125 1.3125 -3.671875 L 1.3125 -5.625 C 1.515625 -5.5625 1.84375 -5.5 2.15625 -5.5 C 3.390625 -5.5 4.09375 -6.40625 4.09375 -6.53125 C 4.09375 -6.59375 4.0625 -6.640625 3.984375 -6.640625 C 3.984375 -6.640625 3.953125 -6.640625 3.90625 -6.609375 C 3.703125 -6.515625 3.21875 -6.3125 2.546875 -6.3125 C 2.15625 -6.3125 1.6875 -6.390625 1.21875 -6.59375 C 1.140625 -6.625 1.125 -6.625 1.109375 -6.625 C 1 -6.625 1 -6.546875 1 -6.390625 L 1 -3.4375 C 1 -3.265625 1 -3.1875 1.140625 -3.1875 C 1.21875 -3.1875 1.234375 -3.203125 1.28125 -3.265625 C 1.390625 -3.421875 1.75 -3.96875 2.5625 -3.96875 C 3.078125 -3.96875 3.328125 -3.515625 3.40625 -3.328125 C 3.5625 -2.953125 3.59375 -2.578125 3.59375 -2.078125 C 3.59375 -1.71875 3.59375 -1.125 3.34375 -0.703125 C 3.109375 -0.3125 2.734375 -0.0625 2.28125 -0.0625 C 1.5625 -0.0625 0.984375 -0.59375 0.8125 -1.171875 C 0.84375 -1.171875 0.875 -1.15625 0.984375 -1.15625 C 1.3125 -1.15625 1.484375 -1.40625 1.484375 -1.640625 C 1.484375 -1.890625 1.3125 -2.140625 0.984375 -2.140625 C 0.84375 -2.140625 0.5 -2.0625 0.5 -1.609375 C 0.5 -0.75 1.1875 0.21875 2.296875 0.21875 C 3.453125 0.21875 4.46875 -0.734375 4.46875 -2 Z M 4.46875 -2 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 4.75 -6.078125 C 4.828125 -6.1875 4.828125 -6.203125 4.828125 -6.421875 L 2.40625 -6.421875 C 1.203125 -6.421875 1.171875 -6.546875 1.140625 -6.734375 L 0.890625 -6.734375 L 0.5625 -4.6875 L 0.8125 -4.6875 C 0.84375 -4.84375 0.921875 -5.46875 1.0625 -5.59375 C 1.125 -5.65625 1.90625 -5.65625 2.03125 -5.65625 L 4.09375 -5.65625 C 3.984375 -5.5 3.203125 -4.40625 2.984375 -4.078125 C 2.078125 -2.734375 1.75 -1.34375 1.75 -0.328125 C 1.75 -0.234375 1.75 0.21875 2.21875 0.21875 C 2.671875 0.21875 2.671875 -0.234375 2.671875 -0.328125 L 2.671875 -0.84375 C 2.671875 -1.390625 2.703125 -1.9375 2.78125 -2.46875 C 2.828125 -2.703125 2.953125 -3.5625 3.40625 -4.171875 Z M 4.75 -6.078125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 4.578125 -3.1875 C 4.578125 -3.984375 4.53125 -4.78125 4.1875 -5.515625 C 3.734375 -6.484375 2.90625 -6.640625 2.5 -6.640625 C 1.890625 -6.640625 1.171875 -6.375 0.75 -5.453125 C 0.4375 -4.765625 0.390625 -3.984375 0.390625 -3.1875 C 0.390625 -2.4375 0.421875 -1.546875 0.84375 -0.78125 C 1.265625 0.015625 2 0.21875 2.484375 0.21875 C 3.015625 0.21875 3.78125 0.015625 4.21875 -0.9375 C 4.53125 -1.625 4.578125 -2.40625 4.578125 -3.1875 Z M 2.484375 0 C 2.09375 0 1.5 -0.25 1.328125 -1.203125 C 1.21875 -1.796875 1.21875 -2.71875 1.21875 -3.3125 C 1.21875 -3.953125 1.21875 -4.609375 1.296875 -5.140625 C 1.484375 -6.328125 2.234375 -6.421875 2.484375 -6.421875 C 2.8125 -6.421875 3.46875 -6.234375 3.65625 -5.25 C 3.765625 -4.6875 3.765625 -3.9375 3.765625 -3.3125 C 3.765625 -2.5625 3.765625 -1.890625 3.65625 -1.25 C 3.5 -0.296875 2.9375 0 2.484375 0 Z M 2.484375 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 3.65625 -3.171875 L 3.65625 -2.84375 C 3.65625 -0.515625 2.625 -0.0625 2.046875 -0.0625 C 1.875 -0.0625 1.328125 -0.078125 1.0625 -0.421875 C 1.5 -0.421875 1.578125 -0.703125 1.578125 -0.875 C 1.578125 -1.1875 1.34375 -1.328125 1.125 -1.328125 C 0.96875 -1.328125 0.671875 -1.25 0.671875 -0.859375 C 0.671875 -0.1875 1.203125 0.21875 2.046875 0.21875 C 3.34375 0.21875 4.5625 -1.140625 4.5625 -3.28125 C 4.5625 -5.96875 3.40625 -6.640625 2.515625 -6.640625 C 1.96875 -6.640625 1.484375 -6.453125 1.0625 -6.015625 C 0.640625 -5.5625 0.421875 -5.140625 0.421875 -4.390625 C 0.421875 -3.15625 1.296875 -2.171875 2.40625 -2.171875 C 3.015625 -2.171875 3.421875 -2.59375 3.65625 -3.171875 Z M 2.421875 -2.40625 C 2.265625 -2.40625 1.796875 -2.40625 1.5 -3.03125 C 1.3125 -3.40625 1.3125 -3.890625 1.3125 -4.390625 C 1.3125 -4.921875 1.3125 -5.390625 1.53125 -5.765625 C 1.796875 -6.265625 2.171875 -6.390625 2.515625 -6.390625 C 2.984375 -6.390625 3.3125 -6.046875 3.484375 -5.609375 C 3.59375 -5.28125 3.640625 -4.65625 3.640625 -4.203125 C 3.640625 -3.375 3.296875 -2.40625 2.421875 -2.40625 Z M 2.421875 -2.40625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d="M 2.21875 -3.65625 L 2.21875 -6.09375 C 2.21875 -6.4375 2.234375 -6.5 2.703125 -6.5 L 3.9375 -6.5 C 4.90625 -6.5 5.25 -5.65625 5.25 -5.125 C 5.25 -4.484375 4.765625 -3.65625 3.65625 -3.65625 Z M 4.5625 -3.5625 C 5.53125 -3.75 6.21875 -4.390625 6.21875 -5.125 C 6.21875 -5.984375 5.296875 -6.8125 4 -6.8125 L 0.359375 -6.8125 L 0.359375 -6.5 L 0.59375 -6.5 C 1.359375 -6.5 1.390625 -6.390625 1.390625 -6.03125 L 1.390625 -0.78125 C 1.390625 -0.421875 1.359375 -0.3125 0.59375 -0.3125 L 0.359375 -0.3125 L 0.359375 0 L 4.265625 0 C 5.59375 0 6.484375 -0.890625 6.484375 -1.828125 C 6.484375 -2.6875 5.671875 -3.4375 4.5625 -3.5625 Z M 3.953125 -0.3125 L 2.703125 -0.3125 C 2.234375 -0.3125 2.21875 -0.375 2.21875 -0.703125 L 2.21875 -3.421875 L 4.09375 -3.421875 C 5.078125 -3.421875 5.5 -2.5 5.5 -1.828125 C 5.5 -1.125 4.96875 -0.3125 3.953125 -0.3125 Z M 3.953125 -0.3125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 1.109375 -2.515625 C 1.171875 -4 2.015625 -4.25 2.359375 -4.25 C 3.375 -4.25 3.484375 -2.90625 3.484375 -2.515625 Z M 1.109375 -2.296875 L 3.890625 -2.296875 C 4.109375 -2.296875 4.140625 -2.296875 4.140625 -2.515625 C 4.140625 -3.5 3.59375 -4.46875 2.359375 -4.46875 C 1.203125 -4.46875 0.28125 -3.4375 0.28125 -2.1875 C 0.28125 -0.859375 1.328125 0.109375 2.46875 0.109375 C 3.6875 0.109375 4.140625 -1 4.140625 -1.1875 C 4.140625 -1.28125 4.0625 -1.3125 4 -1.3125 C 3.921875 -1.3125 3.890625 -1.25 3.875 -1.171875 C 3.53125 -0.140625 2.625 -0.140625 2.53125 -0.140625 C 2.03125 -0.140625 1.640625 -0.4375 1.40625 -0.8125 C 1.109375 -1.28125 1.109375 -1.9375 1.109375 -2.296875 Z M 1.109375 -2.296875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d="M 2.078125 -1.9375 C 2.296875 -1.890625 3.109375 -1.734375 3.109375 -1.015625 C 3.109375 -0.515625 2.765625 -0.109375 1.984375 -0.109375 C 1.140625 -0.109375 0.78125 -0.671875 0.59375 -1.53125 C 0.5625 -1.65625 0.5625 -1.6875 0.453125 -1.6875 C 0.328125 -1.6875 0.328125 -1.625 0.328125 -1.453125 L 0.328125 -0.125 C 0.328125 0.046875 0.328125 0.109375 0.4375 0.109375 C 0.484375 0.109375 0.5 0.09375 0.6875 -0.09375 C 0.703125 -0.109375 0.703125 -0.125 0.890625 -0.3125 C 1.328125 0.09375 1.78125 0.109375 1.984375 0.109375 C 3.125 0.109375 3.59375 -0.5625 3.59375 -1.28125 C 3.59375 -1.796875 3.296875 -2.109375 3.171875 -2.21875 C 2.84375 -2.546875 2.453125 -2.625 2.03125 -2.703125 C 1.46875 -2.8125 0.8125 -2.9375 0.8125 -3.515625 C 0.8125 -3.875 1.0625 -4.28125 1.921875 -4.28125 C 3.015625 -4.28125 3.078125 -3.375 3.09375 -3.078125 C 3.09375 -2.984375 3.1875 -2.984375 3.203125 -2.984375 C 3.34375 -2.984375 3.34375 -3.03125 3.34375 -3.21875 L 3.34375 -4.234375 C 3.34375 -4.390625 3.34375 -4.46875 3.234375 -4.46875 C 3.1875 -4.46875 3.15625 -4.46875 3.03125 -4.34375 C 3 -4.3125 2.90625 -4.21875 2.859375 -4.1875 C 2.484375 -4.46875 2.078125 -4.46875 1.921875 -4.46875 C 0.703125 -4.46875 0.328125 -3.796875 0.328125 -3.234375 C 0.328125 -2.890625 0.484375 -2.609375 0.75 -2.390625 C 1.078125 -2.140625 1.359375 -2.078125 2.078125 -1.9375 Z M 2.078125 -1.9375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 1.71875 -3.984375 L 3.15625 -3.984375 L 3.15625 -4.296875 L 1.71875 -4.296875 L 1.71875 -6.125 L 1.46875 -6.125 C 1.46875 -5.3125 1.171875 -4.25 0.1875 -4.203125 L 0.1875 -3.984375 L 1.03125 -3.984375 L 1.03125 -1.234375 C 1.03125 -0.015625 1.96875 0.109375 2.328125 0.109375 C 3.03125 0.109375 3.3125 -0.59375 3.3125 -1.234375 L 3.3125 -1.796875 L 3.0625 -1.796875 L 3.0625 -1.25 C 3.0625 -0.515625 2.765625 -0.140625 2.390625 -0.140625 C 1.71875 -0.140625 1.71875 -1.046875 1.71875 -1.21875 Z M 1.71875 -3.984375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 1.171875 -2.171875 C 1.171875 -3.796875 1.984375 -4.21875 2.515625 -4.21875 C 2.609375 -4.21875 3.234375 -4.203125 3.578125 -3.84375 C 3.171875 -3.8125 3.109375 -3.515625 3.109375 -3.390625 C 3.109375 -3.125 3.296875 -2.9375 3.5625 -2.9375 C 3.828125 -2.9375 4.03125 -3.09375 4.03125 -3.40625 C 4.03125 -4.078125 3.265625 -4.46875 2.5 -4.46875 C 1.25 -4.46875 0.34375 -3.390625 0.34375 -2.15625 C 0.34375 -0.875 1.328125 0.109375 2.484375 0.109375 C 3.8125 0.109375 4.140625 -1.09375 4.140625 -1.1875 C 4.140625 -1.28125 4.03125 -1.28125 4 -1.28125 C 3.921875 -1.28125 3.890625 -1.25 3.875 -1.1875 C 3.59375 -0.265625 2.9375 -0.140625 2.578125 -0.140625 C 2.046875 -0.140625 1.171875 -0.5625 1.171875 -2.171875 Z M 1.171875 -2.171875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 3.3125 -0.75 C 3.359375 -0.359375 3.625 0.0625 4.09375 0.0625 C 4.3125 0.0625 4.921875 -0.078125 4.921875 -0.890625 L 4.921875 -1.453125 L 4.671875 -1.453125 L 4.671875 -0.890625 C 4.671875 -0.3125 4.421875 -0.25 4.3125 -0.25 C 3.984375 -0.25 3.9375 -0.703125 3.9375 -0.75 L 3.9375 -2.734375 C 3.9375 -3.15625 3.9375 -3.546875 3.578125 -3.921875 C 3.1875 -4.3125 2.6875 -4.46875 2.21875 -4.46875 C 1.390625 -4.46875 0.703125 -4 0.703125 -3.34375 C 0.703125 -3.046875 0.90625 -2.875 1.171875 -2.875 C 1.453125 -2.875 1.625 -3.078125 1.625 -3.328125 C 1.625 -3.453125 1.578125 -3.78125 1.109375 -3.78125 C 1.390625 -4.140625 1.875 -4.25 2.1875 -4.25 C 2.6875 -4.25 3.25 -3.859375 3.25 -2.96875 L 3.25 -2.609375 C 2.734375 -2.578125 2.046875 -2.546875 1.421875 -2.25 C 0.671875 -1.90625 0.421875 -1.390625 0.421875 -0.953125 C 0.421875 -0.140625 1.390625 0.109375 2.015625 0.109375 C 2.671875 0.109375 3.125 -0.296875 3.3125 -0.75 Z M 3.25 -2.390625 L 3.25 -1.390625 C 3.25 -0.453125 2.53125 -0.109375 2.078125 -0.109375 C 1.59375 -0.109375 1.1875 -0.453125 1.1875 -0.953125 C 1.1875 -1.5 1.609375 -2.328125 3.25 -2.390625 Z M 3.25 -2.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 3.296875 2.390625 C 3.296875 2.359375 3.296875 2.34375 3.125 2.171875 C 1.890625 0.921875 1.5625 -0.96875 1.5625 -2.5 C 1.5625 -4.234375 1.9375 -5.96875 3.171875 -7.203125 C 3.296875 -7.328125 3.296875 -7.34375 3.296875 -7.375 C 3.296875 -7.453125 3.265625 -7.484375 3.203125 -7.484375 C 3.09375 -7.484375 2.203125 -6.796875 1.609375 -5.53125 C 1.109375 -4.4375 0.984375 -3.328125 0.984375 -2.5 C 0.984375 -1.71875 1.09375 -0.515625 1.640625 0.625 C 2.25 1.84375 3.09375 2.5 3.203125 2.5 C 3.265625 2.5 3.296875 2.46875 3.296875 2.390625 Z M 3.296875 2.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 4.6875 -2.140625 C 4.6875 -3.40625 3.703125 -4.46875 2.5 -4.46875 C 1.25 -4.46875 0.28125 -3.375 0.28125 -2.140625 C 0.28125 -0.84375 1.3125 0.109375 2.484375 0.109375 C 3.6875 0.109375 4.6875 -0.875 4.6875 -2.140625 Z M 2.5 -0.140625 C 2.0625 -0.140625 1.625 -0.34375 1.359375 -0.8125 C 1.109375 -1.25 1.109375 -1.859375 1.109375 -2.21875 C 1.109375 -2.609375 1.109375 -3.140625 1.34375 -3.578125 C 1.609375 -4.03125 2.078125 -4.25 2.484375 -4.25 C 2.921875 -4.25 3.34375 -4.03125 3.609375 -3.59375 C 3.875 -3.171875 3.875 -2.59375 3.875 -2.21875 C 3.875 -1.859375 3.875 -1.3125 3.65625 -0.875 C 3.421875 -0.421875 2.984375 -0.140625 2.5 -0.140625 Z M 2.5 -0.140625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 1.09375 -3.421875 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 C 0.671875 -0.015625 1.171875 -0.03125 1.453125 -0.03125 C 1.703125 -0.03125 2.21875 -0.015625 2.5625 0 L 2.5625 -0.3125 C 1.890625 -0.3125 1.78125 -0.3125 1.78125 -0.75 L 1.78125 -2.59375 C 1.78125 -3.625 2.5 -4.1875 3.125 -4.1875 C 3.765625 -4.1875 3.875 -3.65625 3.875 -3.078125 L 3.875 -0.75 C 3.875 -0.3125 3.765625 -0.3125 3.09375 -0.3125 L 3.09375 0 C 3.4375 -0.015625 3.953125 -0.03125 4.21875 -0.03125 C 4.46875 -0.03125 5 -0.015625 5.328125 0 L 5.328125 -0.3125 C 4.671875 -0.3125 4.5625 -0.3125 4.5625 -0.75 L 4.5625 -2.59375 C 4.5625 -3.625 5.265625 -4.1875 5.90625 -4.1875 C 6.53125 -4.1875 6.640625 -3.65625 6.640625 -3.078125 L 6.640625 -0.75 C 6.640625 -0.3125 6.53125 -0.3125 5.859375 -0.3125 L 5.859375 0 C 6.203125 -0.015625 6.71875 -0.03125 6.984375 -0.03125 C 7.25 -0.03125 7.765625 -0.015625 8.109375 0 L 8.109375 -0.3125 C 7.59375 -0.3125 7.34375 -0.3125 7.328125 -0.609375 L 7.328125 -2.515625 C 7.328125 -3.375 7.328125 -3.671875 7.015625 -4.03125 C 6.875 -4.203125 6.546875 -4.40625 5.96875 -4.40625 C 5.140625 -4.40625 4.6875 -3.8125 4.53125 -3.421875 C 4.390625 -4.296875 3.65625 -4.40625 3.203125 -4.40625 C 2.46875 -4.40625 2 -3.984375 1.71875 -3.359375 L 1.71875 -4.40625 L 0.3125 -4.296875 L 0.3125 -3.984375 C 1.015625 -3.984375 1.09375 -3.921875 1.09375 -3.421875 Z M 1.09375 -3.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 1.71875 -3.75 L 1.71875 -4.40625 L 0.28125 -4.296875 L 0.28125 -3.984375 C 0.984375 -3.984375 1.0625 -3.921875 1.0625 -3.484375 L 1.0625 1.171875 C 1.0625 1.625 0.953125 1.625 0.28125 1.625 L 0.28125 1.9375 C 0.625 1.921875 1.140625 1.90625 1.390625 1.90625 C 1.671875 1.90625 2.171875 1.921875 2.515625 1.9375 L 2.515625 1.625 C 1.859375 1.625 1.75 1.625 1.75 1.171875 L 1.75 -0.59375 C 1.796875 -0.421875 2.21875 0.109375 2.96875 0.109375 C 4.15625 0.109375 5.1875 -0.875 5.1875 -2.15625 C 5.1875 -3.421875 4.234375 -4.40625 3.109375 -4.40625 C 2.328125 -4.40625 1.90625 -3.96875 1.71875 -3.75 Z M 1.75 -1.140625 L 1.75 -3.359375 C 2.03125 -3.875 2.515625 -4.15625 3.03125 -4.15625 C 3.765625 -4.15625 4.359375 -3.28125 4.359375 -2.15625 C 4.359375 -0.953125 3.671875 -0.109375 2.9375 -0.109375 C 2.53125 -0.109375 2.15625 -0.3125 1.890625 -0.71875 C 1.75 -0.921875 1.75 -0.9375 1.75 -1.140625 Z M 1.75 -1.140625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-21"> +<path style="stroke:none;" d="M 1.671875 -3.3125 L 1.671875 -4.40625 L 0.28125 -4.296875 L 0.28125 -3.984375 C 0.984375 -3.984375 1.0625 -3.921875 1.0625 -3.421875 L 1.0625 -0.75 C 1.0625 -0.3125 0.953125 -0.3125 0.28125 -0.3125 L 0.28125 0 C 0.671875 -0.015625 1.140625 -0.03125 1.421875 -0.03125 C 1.8125 -0.03125 2.28125 -0.03125 2.6875 0 L 2.6875 -0.3125 L 2.46875 -0.3125 C 1.734375 -0.3125 1.71875 -0.421875 1.71875 -0.78125 L 1.71875 -2.3125 C 1.71875 -3.296875 2.140625 -4.1875 2.890625 -4.1875 C 2.953125 -4.1875 2.984375 -4.1875 3 -4.171875 C 2.96875 -4.171875 2.765625 -4.046875 2.765625 -3.78125 C 2.765625 -3.515625 2.984375 -3.359375 3.203125 -3.359375 C 3.375 -3.359375 3.625 -3.484375 3.625 -3.796875 C 3.625 -4.109375 3.3125 -4.40625 2.890625 -4.40625 C 2.15625 -4.40625 1.796875 -3.734375 1.671875 -3.3125 Z M 1.671875 -3.3125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-22"> +<path style="stroke:none;" d="M 1.765625 -4.40625 L 0.375 -4.296875 L 0.375 -3.984375 C 1.015625 -3.984375 1.109375 -3.921875 1.109375 -3.4375 L 1.109375 -0.75 C 1.109375 -0.3125 1 -0.3125 0.328125 -0.3125 L 0.328125 0 C 0.640625 -0.015625 1.1875 -0.03125 1.421875 -0.03125 C 1.78125 -0.03125 2.125 -0.015625 2.46875 0 L 2.46875 -0.3125 C 1.796875 -0.3125 1.765625 -0.359375 1.765625 -0.75 Z M 1.796875 -6.140625 C 1.796875 -6.453125 1.5625 -6.671875 1.28125 -6.671875 C 0.96875 -6.671875 0.75 -6.40625 0.75 -6.140625 C 0.75 -5.875 0.96875 -5.609375 1.28125 -5.609375 C 1.5625 -5.609375 1.796875 -5.828125 1.796875 -6.140625 Z M 1.796875 -6.140625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-23"> +<path style="stroke:none;" d="M 1.09375 -3.421875 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 C 0.671875 -0.015625 1.171875 -0.03125 1.453125 -0.03125 C 1.703125 -0.03125 2.21875 -0.015625 2.5625 0 L 2.5625 -0.3125 C 1.890625 -0.3125 1.78125 -0.3125 1.78125 -0.75 L 1.78125 -2.59375 C 1.78125 -3.625 2.5 -4.1875 3.125 -4.1875 C 3.765625 -4.1875 3.875 -3.65625 3.875 -3.078125 L 3.875 -0.75 C 3.875 -0.3125 3.765625 -0.3125 3.09375 -0.3125 L 3.09375 0 C 3.4375 -0.015625 3.953125 -0.03125 4.21875 -0.03125 C 4.46875 -0.03125 5 -0.015625 5.328125 0 L 5.328125 -0.3125 C 4.8125 -0.3125 4.5625 -0.3125 4.5625 -0.609375 L 4.5625 -2.515625 C 4.5625 -3.375 4.5625 -3.671875 4.25 -4.03125 C 4.109375 -4.203125 3.78125 -4.40625 3.203125 -4.40625 C 2.46875 -4.40625 2 -3.984375 1.71875 -3.359375 L 1.71875 -4.40625 L 0.3125 -4.296875 L 0.3125 -3.984375 C 1.015625 -3.984375 1.09375 -3.921875 1.09375 -3.421875 Z M 1.09375 -3.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-24"> +<path style="stroke:none;" d="M 2.875 -2.5 C 2.875 -3.265625 2.765625 -4.46875 2.21875 -5.609375 C 1.625 -6.828125 0.765625 -7.484375 0.671875 -7.484375 C 0.609375 -7.484375 0.5625 -7.4375 0.5625 -7.375 C 0.5625 -7.34375 0.5625 -7.328125 0.75 -7.140625 C 1.734375 -6.15625 2.296875 -4.578125 2.296875 -2.5 C 2.296875 -0.78125 1.9375 0.96875 0.703125 2.21875 C 0.5625 2.34375 0.5625 2.359375 0.5625 2.390625 C 0.5625 2.453125 0.609375 2.5 0.671875 2.5 C 0.765625 2.5 1.671875 1.8125 2.25 0.546875 C 2.765625 -0.546875 2.875 -1.65625 2.875 -2.5 Z M 2.875 -2.5 "/> +</symbol> +<symbol overflow="visible" id="glyph0-25"> +<path style="stroke:none;" d="M 9.0625 -5.828125 C 9.234375 -6.40625 9.671875 -6.5 10.0625 -6.5 L 10.0625 -6.8125 C 9.765625 -6.78125 9.453125 -6.78125 9.15625 -6.78125 C 8.859375 -6.78125 8.21875 -6.796875 7.96875 -6.8125 L 7.96875 -6.5 C 8.640625 -6.484375 8.828125 -6.15625 8.828125 -5.96875 C 8.828125 -5.90625 8.796875 -5.828125 8.78125 -5.765625 L 7.28125 -1.171875 L 5.6875 -6.046875 C 5.6875 -6.09375 5.65625 -6.15625 5.65625 -6.203125 C 5.65625 -6.5 6.234375 -6.5 6.5 -6.5 L 6.5 -6.8125 C 6.140625 -6.78125 5.46875 -6.78125 5.078125 -6.78125 C 4.703125 -6.78125 4.28125 -6.796875 3.875 -6.8125 L 3.875 -6.5 C 4.4375 -6.5 4.640625 -6.5 4.765625 -6.140625 L 4.984375 -5.4375 L 3.59375 -1.171875 L 2 -6.078125 C 1.984375 -6.09375 1.96875 -6.171875 1.96875 -6.203125 C 1.96875 -6.5 2.546875 -6.5 2.8125 -6.5 L 2.8125 -6.8125 C 2.453125 -6.78125 1.78125 -6.78125 1.390625 -6.78125 C 1.015625 -6.78125 0.59375 -6.796875 0.171875 -6.8125 L 0.171875 -6.5 C 0.921875 -6.5 0.96875 -6.453125 1.09375 -6.078125 L 3.078125 0.03125 C 3.109375 0.125 3.140625 0.21875 3.265625 0.21875 C 3.40625 0.21875 3.421875 0.15625 3.46875 0.015625 L 5.109375 -5.046875 L 6.765625 0.03125 C 6.796875 0.125 6.828125 0.21875 6.953125 0.21875 C 7.09375 0.21875 7.125 0.15625 7.15625 0.015625 Z M 9.0625 -5.828125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-26"> +<path style="stroke:none;" d="M 1.765625 -6.921875 L 0.328125 -6.8125 L 0.328125 -6.5 C 1.03125 -6.5 1.109375 -6.4375 1.109375 -5.9375 L 1.109375 -0.75 C 1.109375 -0.3125 1 -0.3125 0.328125 -0.3125 L 0.328125 0 C 0.65625 -0.015625 1.1875 -0.03125 1.4375 -0.03125 C 1.6875 -0.03125 2.171875 -0.015625 2.546875 0 L 2.546875 -0.3125 C 1.875 -0.3125 1.765625 -0.3125 1.765625 -0.75 Z M 1.765625 -6.921875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-27"> +<path style="stroke:none;" d="M 2.21875 -1.71875 C 1.34375 -1.71875 1.34375 -2.71875 1.34375 -2.9375 C 1.34375 -3.203125 1.359375 -3.53125 1.5 -3.78125 C 1.578125 -3.890625 1.8125 -4.171875 2.21875 -4.171875 C 3.078125 -4.171875 3.078125 -3.1875 3.078125 -2.953125 C 3.078125 -2.6875 3.078125 -2.359375 2.921875 -2.109375 C 2.84375 -2 2.609375 -1.71875 2.21875 -1.71875 Z M 1.0625 -1.328125 C 1.0625 -1.359375 1.0625 -1.59375 1.21875 -1.796875 C 1.609375 -1.515625 2.03125 -1.484375 2.21875 -1.484375 C 3.140625 -1.484375 3.828125 -2.171875 3.828125 -2.9375 C 3.828125 -3.3125 3.671875 -3.671875 3.421875 -3.90625 C 3.78125 -4.25 4.140625 -4.296875 4.3125 -4.296875 C 4.34375 -4.296875 4.390625 -4.296875 4.421875 -4.28125 C 4.3125 -4.25 4.25 -4.140625 4.25 -4.015625 C 4.25 -3.84375 4.390625 -3.734375 4.546875 -3.734375 C 4.640625 -3.734375 4.828125 -3.796875 4.828125 -4.03125 C 4.828125 -4.203125 4.71875 -4.515625 4.328125 -4.515625 C 4.125 -4.515625 3.6875 -4.453125 3.265625 -4.046875 C 2.84375 -4.375 2.4375 -4.40625 2.21875 -4.40625 C 1.28125 -4.40625 0.59375 -3.71875 0.59375 -2.953125 C 0.59375 -2.515625 0.8125 -2.140625 1.0625 -1.921875 C 0.9375 -1.78125 0.75 -1.453125 0.75 -1.09375 C 0.75 -0.78125 0.890625 -0.40625 1.203125 -0.203125 C 0.59375 -0.046875 0.28125 0.390625 0.28125 0.78125 C 0.28125 1.5 1.265625 2.046875 2.484375 2.046875 C 3.65625 2.046875 4.6875 1.546875 4.6875 0.765625 C 4.6875 0.421875 4.5625 -0.09375 4.046875 -0.375 C 3.515625 -0.640625 2.9375 -0.640625 2.328125 -0.640625 C 2.078125 -0.640625 1.65625 -0.640625 1.578125 -0.65625 C 1.265625 -0.703125 1.0625 -1 1.0625 -1.328125 Z M 2.5 1.828125 C 1.484375 1.828125 0.796875 1.3125 0.796875 0.78125 C 0.796875 0.328125 1.171875 -0.046875 1.609375 -0.0625 L 2.203125 -0.0625 C 3.0625 -0.0625 4.171875 -0.0625 4.171875 0.78125 C 4.171875 1.328125 3.46875 1.828125 2.5 1.828125 Z M 2.5 1.828125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-28"> +<path style="stroke:none;" d="M 4.078125 -2.296875 L 6.859375 -2.296875 C 7 -2.296875 7.1875 -2.296875 7.1875 -2.5 C 7.1875 -2.6875 7 -2.6875 6.859375 -2.6875 L 4.078125 -2.6875 L 4.078125 -5.484375 C 4.078125 -5.625 4.078125 -5.8125 3.875 -5.8125 C 3.671875 -5.8125 3.671875 -5.625 3.671875 -5.484375 L 3.671875 -2.6875 L 0.890625 -2.6875 C 0.75 -2.6875 0.5625 -2.6875 0.5625 -2.5 C 0.5625 -2.296875 0.75 -2.296875 0.890625 -2.296875 L 3.671875 -2.296875 L 3.671875 0.5 C 3.671875 0.640625 3.671875 0.828125 3.875 0.828125 C 4.078125 0.828125 4.078125 0.640625 4.078125 0.5 Z M 4.078125 -2.296875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M 3.84375 2.5 C 4 2.5 4.203125 2.5 4.203125 2.296875 C 4.203125 2.09375 4 2.09375 3.84375 2.09375 L 2.140625 2.09375 L 2.140625 -7.125 C 2.140625 -7.296875 2.140625 -7.484375 1.9375 -7.484375 C 1.734375 -7.484375 1.734375 -7.265625 1.734375 -7.125 L 1.734375 2.140625 C 1.734375 2.453125 1.78125 2.5 2.09375 2.5 Z M 3.84375 2.5 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 2.6875 -7.125 C 2.6875 -7.296875 2.6875 -7.484375 2.484375 -7.484375 C 2.28125 -7.484375 2.28125 -7.265625 2.28125 -7.125 L 2.28125 2.09375 L 0.5625 2.09375 C 0.421875 2.09375 0.203125 2.09375 0.203125 2.296875 C 0.203125 2.5 0.421875 2.5 0.5625 2.5 L 2.328125 2.5 C 2.65625 2.5 2.6875 2.46875 2.6875 2.140625 Z M 2.6875 -7.125 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 3.515625 -1.265625 L 3.28125 -1.265625 C 3.265625 -1.109375 3.1875 -0.703125 3.09375 -0.640625 C 3.046875 -0.59375 2.515625 -0.59375 2.40625 -0.59375 L 1.125 -0.59375 C 1.859375 -1.234375 2.109375 -1.4375 2.515625 -1.765625 C 3.03125 -2.171875 3.515625 -2.609375 3.515625 -3.265625 C 3.515625 -4.109375 2.78125 -4.625 1.890625 -4.625 C 1.03125 -4.625 0.4375 -4.015625 0.4375 -3.375 C 0.4375 -3.03125 0.734375 -2.984375 0.8125 -2.984375 C 0.96875 -2.984375 1.171875 -3.109375 1.171875 -3.359375 C 1.171875 -3.484375 1.125 -3.734375 0.765625 -3.734375 C 0.984375 -4.21875 1.453125 -4.375 1.78125 -4.375 C 2.484375 -4.375 2.84375 -3.828125 2.84375 -3.265625 C 2.84375 -2.65625 2.40625 -2.1875 2.1875 -1.9375 L 0.515625 -0.265625 C 0.4375 -0.203125 0.4375 -0.1875 0.4375 0 L 3.3125 0 Z M 3.515625 -1.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph3-0"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph3-1"> +<path style="stroke:none;" d="M 0.875 -0.59375 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.078125 0.109375 C 1.203125 0.109375 1.375 0.03125 1.453125 -0.171875 C 1.453125 -0.1875 1.578125 -0.65625 1.640625 -0.90625 L 1.859375 -1.796875 C 1.90625 -2.03125 1.96875 -2.25 2.03125 -2.46875 C 2.0625 -2.640625 2.140625 -2.9375 2.15625 -2.96875 C 2.296875 -3.28125 2.828125 -4.1875 3.78125 -4.1875 C 4.234375 -4.1875 4.3125 -3.8125 4.3125 -3.484375 C 4.3125 -2.875 3.828125 -1.59375 3.671875 -1.171875 C 3.578125 -0.9375 3.5625 -0.8125 3.5625 -0.703125 C 3.5625 -0.234375 3.921875 0.109375 4.390625 0.109375 C 5.328125 0.109375 5.6875 -1.34375 5.6875 -1.421875 C 5.6875 -1.53125 5.609375 -1.53125 5.578125 -1.53125 C 5.46875 -1.53125 5.46875 -1.5 5.421875 -1.34375 C 5.21875 -0.671875 4.890625 -0.109375 4.40625 -0.109375 C 4.234375 -0.109375 4.171875 -0.203125 4.171875 -0.4375 C 4.171875 -0.6875 4.25 -0.921875 4.34375 -1.140625 C 4.53125 -1.671875 4.953125 -2.765625 4.953125 -3.34375 C 4.953125 -4 4.53125 -4.40625 3.8125 -4.40625 C 2.90625 -4.40625 2.421875 -3.765625 2.25 -3.53125 C 2.203125 -4.09375 1.796875 -4.40625 1.328125 -4.40625 C 0.875 -4.40625 0.6875 -4.015625 0.59375 -3.84375 C 0.421875 -3.5 0.296875 -2.90625 0.296875 -2.875 C 0.296875 -2.765625 0.390625 -2.765625 0.40625 -2.765625 C 0.515625 -2.765625 0.515625 -2.78125 0.578125 -3 C 0.75 -3.703125 0.953125 -4.1875 1.3125 -4.1875 C 1.5 -4.1875 1.609375 -4.0625 1.609375 -3.734375 C 1.609375 -3.515625 1.578125 -3.40625 1.453125 -2.890625 Z M 0.875 -0.59375 "/> +</symbol> +<symbol overflow="visible" id="glyph4-0"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph4-1"> +<path style="stroke:none;" d="M 2.953125 -4.203125 C 2.984375 -4.28125 3.34375 -5 3.875 -5.46875 C 4.25 -5.8125 4.734375 -6.03125 5.296875 -6.03125 C 5.859375 -6.03125 6.0625 -5.609375 6.0625 -5.03125 C 6.0625 -4.21875 5.484375 -2.578125 5.1875 -1.8125 C 5.0625 -1.46875 4.984375 -1.28125 4.984375 -1.015625 C 4.984375 -0.375 5.4375 0.140625 6.125 0.140625 C 7.453125 0.140625 7.953125 -1.96875 7.953125 -2.046875 C 7.953125 -2.125 7.90625 -2.1875 7.8125 -2.1875 C 7.6875 -2.1875 7.671875 -2.140625 7.609375 -1.890625 C 7.265625 -0.71875 6.734375 -0.140625 6.171875 -0.140625 C 6.03125 -0.140625 5.796875 -0.15625 5.796875 -0.609375 C 5.796875 -0.96875 5.953125 -1.40625 6.03125 -1.609375 C 6.328125 -2.390625 6.921875 -4 6.921875 -4.8125 C 6.921875 -5.6875 6.421875 -6.328125 5.328125 -6.328125 C 4.0625 -6.328125 3.390625 -5.421875 3.125 -5.0625 C 3.078125 -5.875 2.5 -6.328125 1.859375 -6.328125 C 1.40625 -6.328125 1.09375 -6.046875 0.84375 -5.5625 C 0.59375 -5.046875 0.390625 -4.1875 0.390625 -4.125 C 0.390625 -4.078125 0.4375 -4 0.546875 -4 C 0.65625 -4 0.671875 -4.015625 0.765625 -4.34375 C 0.984375 -5.21875 1.25 -6.03125 1.828125 -6.03125 C 2.15625 -6.03125 2.265625 -5.8125 2.265625 -5.375 C 2.265625 -5.0625 2.125 -4.5 2.015625 -4.0625 L 1.625 -2.515625 C 1.5625 -2.234375 1.40625 -1.59375 1.328125 -1.328125 C 1.234375 -0.96875 1.078125 -0.28125 1.078125 -0.21875 C 1.078125 -0.015625 1.234375 0.140625 1.453125 0.140625 C 1.625 0.140625 1.828125 0.0625 1.9375 -0.15625 C 1.96875 -0.234375 2.09375 -0.734375 2.171875 -1.015625 L 2.484375 -2.3125 Z M 2.953125 -4.203125 "/> +</symbol> +<symbol overflow="visible" id="glyph5-0"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph5-1"> +<path style="stroke:none;" d="M 9.6875 -4.640625 C 9.890625 -4.640625 10.140625 -4.640625 10.140625 -4.90625 C 10.140625 -5.171875 9.890625 -5.171875 9.6875 -5.171875 L 1.234375 -5.171875 C 1.03125 -5.171875 0.78125 -5.171875 0.78125 -4.921875 C 0.78125 -4.640625 1.015625 -4.640625 1.234375 -4.640625 Z M 9.6875 -1.984375 C 9.890625 -1.984375 10.140625 -1.984375 10.140625 -2.234375 C 10.140625 -2.515625 9.890625 -2.515625 9.6875 -2.515625 L 1.234375 -2.515625 C 1.03125 -2.515625 0.78125 -2.515625 0.78125 -2.25 C 0.78125 -1.984375 1.015625 -1.984375 1.234375 -1.984375 Z M 9.6875 -1.984375 "/> +</symbol> +<symbol overflow="visible" id="glyph5-2"> +<path style="stroke:none;" d="M 4.125 -9.1875 C 4.125 -9.53125 4.125 -9.53125 3.84375 -9.53125 C 3.5 -9.15625 2.78125 -8.625 1.3125 -8.625 L 1.3125 -8.203125 C 1.640625 -8.203125 2.359375 -8.203125 3.140625 -8.578125 L 3.140625 -1.109375 C 3.140625 -0.59375 3.09375 -0.421875 1.84375 -0.421875 L 1.390625 -0.421875 L 1.390625 0 C 1.78125 -0.03125 3.171875 -0.03125 3.640625 -0.03125 C 4.109375 -0.03125 5.5 -0.03125 5.875 0 L 5.875 -0.421875 L 5.4375 -0.421875 C 4.171875 -0.421875 4.125 -0.59375 4.125 -1.109375 Z M 4.125 -9.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph5-3"> +<path style="stroke:none;" d="M 1.84375 -8.21875 C 2.453125 -8.015625 2.953125 -8 3.109375 -8 C 4.734375 -8 5.765625 -9.1875 5.765625 -9.390625 C 5.765625 -9.453125 5.734375 -9.53125 5.65625 -9.53125 C 5.625 -9.53125 5.59375 -9.53125 5.46875 -9.46875 C 4.65625 -9.125 3.96875 -9.078125 3.59375 -9.078125 C 2.65625 -9.078125 1.984375 -9.359375 1.703125 -9.484375 C 1.609375 -9.53125 1.578125 -9.53125 1.5625 -9.53125 C 1.453125 -9.53125 1.453125 -9.4375 1.453125 -9.203125 L 1.453125 -4.953125 C 1.453125 -4.6875 1.453125 -4.609375 1.625 -4.609375 C 1.6875 -4.609375 1.703125 -4.625 1.84375 -4.796875 C 2.25 -5.375 2.921875 -5.71875 3.640625 -5.71875 C 4.40625 -5.71875 4.78125 -5.015625 4.890625 -4.78125 C 5.140625 -4.21875 5.15625 -3.515625 5.15625 -2.96875 C 5.15625 -2.421875 5.15625 -1.609375 4.75 -0.96875 C 4.4375 -0.4375 3.875 -0.09375 3.234375 -0.09375 C 2.296875 -0.09375 1.359375 -0.734375 1.109375 -1.78125 C 1.171875 -1.75 1.265625 -1.734375 1.328125 -1.734375 C 1.578125 -1.734375 1.96875 -1.875 1.96875 -2.359375 C 1.96875 -2.765625 1.6875 -3 1.328125 -3 C 1.078125 -3 0.703125 -2.875 0.703125 -2.3125 C 0.703125 -1.09375 1.671875 0.296875 3.265625 0.296875 C 4.890625 0.296875 6.3125 -1.0625 6.3125 -2.890625 C 6.3125 -4.59375 5.15625 -6.015625 3.65625 -6.015625 C 2.84375 -6.015625 2.203125 -5.65625 1.84375 -5.25 Z M 1.84375 -8.21875 "/> +</symbol> +</g> +</defs> +<g id="surface1"> +<path style="fill-rule:nonzero;fill:rgb(89.99939%,89.99939%,100%);fill-opacity:1;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 11.34025 -0.00003125 C 11.34025 6.261687 6.262125 11.339812 0.00040625 11.339812 C -6.261313 11.339812 -11.339438 6.261687 -11.339438 -0.00003125 C -11.339438 -6.26175 -6.261313 -11.339875 0.00040625 -11.339875 C 6.262125 -11.339875 11.34025 -6.26175 11.34025 -0.00003125 Z M 11.34025 -0.00003125 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="229.95" y="20.418"/> +</g> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -73.702719 -42.519563 C -73.702719 -36.257844 -78.776938 -31.179719 -85.038656 -31.179719 C -91.304281 -31.179719 -96.3785 -36.257844 -96.3785 -42.519563 C -96.3785 -48.781281 -91.304281 -53.859406 -85.038656 -53.859406 C -78.776938 -53.859406 -73.702719 -48.781281 -73.702719 -42.519563 Z M -73.702719 -42.519563 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-2" x="144.911" y="62.937"/> +</g> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -10.319906 -5.160188 L -74.72225 -37.359406 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -116.22225 -85.039094 C -116.22225 -78.777375 -121.296469 -73.703156 -127.562094 -73.703156 C -133.823813 -73.703156 -138.898031 -78.777375 -138.898031 -85.039094 C -138.898031 -91.300813 -133.823813 -96.378938 -127.562094 -96.378938 C -121.296469 -96.378938 -116.22225 -91.300813 -116.22225 -85.039094 Z M -116.22225 -85.039094 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-3" x="102.391" y="105.457"/> +</g> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -93.198813 -50.679719 L -119.401938 -76.882844 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,89.99939%,89.99939%);fill-opacity:1;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -137.480063 -127.562531 C -137.480063 -121.296906 -142.558188 -116.222688 -148.819906 -116.222688 C -155.081625 -116.222688 -160.15975 -121.296906 -160.15975 -127.562531 C -160.15975 -133.82425 -155.081625 -138.898469 -148.819906 -138.898469 C -142.558188 -138.898469 -137.480063 -133.82425 -137.480063 -127.562531 Z M -137.480063 -127.562531 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-4" x="81.131" y="147.977"/> +</g> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -132.72225 -95.359406 L -143.65975 -117.242219 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,89.99939%,89.99939%);fill-opacity:1;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -94.960531 -127.562531 C -94.960531 -121.296906 -100.038656 -116.222688 -106.300375 -116.222688 C -112.562094 -116.222688 -117.640219 -121.296906 -117.640219 -127.562531 C -117.640219 -133.82425 -112.562094 -138.898469 -106.300375 -138.898469 C -100.038656 -138.898469 -94.960531 -133.82425 -94.960531 -127.562531 Z M -94.960531 -127.562531 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-5" x="123.651" y="147.977"/> +</g> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -122.401938 -95.359406 L -111.460531 -117.242219 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -31.183188 -85.039094 C -31.183188 -78.777375 -36.257406 -73.703156 -42.519125 -73.703156 C -48.780844 -73.703156 -53.858969 -78.777375 -53.858969 -85.039094 C -53.858969 -91.300813 -48.780844 -96.378938 -42.519125 -96.378938 C -36.257406 -96.378938 -31.183188 -91.300813 -31.183188 -85.039094 Z M -31.183188 -85.039094 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-6" x="187.43" y="105.457"/> +</g> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -76.882406 -50.679719 L -50.679281 -76.882844 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,89.99939%,89.99939%);fill-opacity:1;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -52.441 -127.562531 C -52.441 -121.296906 -57.519125 -116.222688 -63.780844 -116.222688 C -70.042563 -116.222688 -75.120688 -121.296906 -75.120688 -127.562531 C -75.120688 -133.82425 -70.042563 -138.898469 -63.780844 -138.898469 C -57.519125 -138.898469 -52.441 -133.82425 -52.441 -127.562531 Z M -52.441 -127.562531 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="166.17" y="147.977"/> +</g> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -47.679281 -95.359406 L -58.620688 -117.242219 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,89.99939%,89.99939%);fill-opacity:1;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -9.921469 -127.562531 C -9.921469 -121.296906 -14.999594 -116.222688 -21.261313 -116.222688 C -27.523031 -116.222688 -32.59725 -121.296906 -32.59725 -127.562531 C -32.59725 -133.82425 -27.523031 -138.898469 -21.261313 -138.898469 C -14.999594 -138.898469 -9.921469 -133.82425 -9.921469 -127.562531 Z M -9.921469 -127.562531 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-8" x="208.69" y="147.977"/> +</g> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -37.358969 -95.359406 L -26.421469 -117.242219 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 96.379312 -42.519563 C 96.379312 -36.257844 91.301187 -31.179719 85.039469 -31.179719 C 78.77775 -31.179719 73.703531 -36.257844 73.703531 -42.519563 C 73.703531 -48.781281 78.77775 -53.859406 85.039469 -53.859406 C 91.301187 -53.859406 96.379312 -48.781281 96.379312 -42.519563 Z M 96.379312 -42.519563 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-4" x="312.499" y="62.937"/> + <use xlink:href="#glyph0-3" x="317.4803" y="62.937"/> +</g> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 10.320719 -5.160188 L 74.719156 -37.359406 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 53.859781 -85.039094 C 53.859781 -78.777375 48.781656 -73.703156 42.519937 -73.703156 C 36.258219 -73.703156 31.180094 -78.777375 31.180094 -85.039094 C 31.180094 -91.300813 36.258219 -96.378938 42.519937 -96.378938 C 48.781656 -96.378938 53.859781 -91.300813 53.859781 -85.039094 Z M 53.859781 -85.039094 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-4" x="269.979" y="105.457"/> + <use xlink:href="#glyph0-9" x="274.9603" y="105.457"/> +</g> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 76.883219 -50.679719 L 50.680094 -76.882844 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,89.99939%,89.99939%);fill-opacity:1;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 32.598062 -127.562531 C 32.598062 -121.296906 27.523844 -116.222688 21.258219 -116.222688 C 14.9965 -116.222688 9.922281 -121.296906 9.922281 -127.562531 C 9.922281 -133.82425 14.9965 -138.898469 21.258219 -138.898469 C 27.523844 -138.898469 32.598062 -133.82425 32.598062 -127.562531 Z M 32.598062 -127.562531 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-10" x="251.21" y="147.977"/> +</g> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 37.359781 -95.359406 L 26.418375 -117.242219 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,89.99939%,89.99939%);fill-opacity:1;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 75.117594 -127.562531 C 75.117594 -121.296906 70.043375 -116.222688 63.781656 -116.222688 C 57.519937 -116.222688 52.441812 -121.296906 52.441812 -127.562531 C 52.441812 -133.82425 57.519937 -138.898469 63.781656 -138.898469 C 70.043375 -138.898469 75.117594 -133.82425 75.117594 -127.562531 Z M 75.117594 -127.562531 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-4" x="291.239" y="147.977"/> + <use xlink:href="#glyph0-4" x="296.2203" y="147.977"/> +</g> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 47.680094 -95.359406 L 58.6215 -117.242219 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 138.898844 -85.039094 C 138.898844 -78.777375 133.824625 -73.703156 127.559 -73.703156 C 121.297281 -73.703156 116.223062 -78.777375 116.223062 -85.039094 C 116.223062 -91.300813 121.297281 -96.378938 127.559 -96.378938 C 133.824625 -96.378938 138.898844 -91.300813 138.898844 -85.039094 Z M 138.898844 -85.039094 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-4" x="355.018" y="105.457"/> + <use xlink:href="#glyph0-2" x="359.9993" y="105.457"/> +</g> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 93.199625 -50.679719 L 119.40275 -76.882844 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,89.99939%,89.99939%);fill-opacity:1;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 117.641031 -127.562531 C 117.641031 -121.296906 112.562906 -116.222688 106.301187 -116.222688 C 100.039469 -116.222688 94.961344 -121.296906 94.961344 -127.562531 C 94.961344 -133.82425 100.039469 -138.898469 106.301187 -138.898469 C 112.562906 -138.898469 117.641031 -133.82425 117.641031 -127.562531 Z M 117.641031 -127.562531 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-4" x="333.759" y="147.977"/> + <use xlink:href="#glyph0-5" x="338.7403" y="147.977"/> +</g> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 122.40275 -95.359406 L 111.461344 -117.242219 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,89.99939%,89.99939%);fill-opacity:1;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 160.160562 -127.562531 C 160.160562 -121.296906 155.082437 -116.222688 148.820719 -116.222688 C 142.559 -116.222688 137.480875 -121.296906 137.480875 -127.562531 C 137.480875 -133.82425 142.559 -138.898469 148.820719 -138.898469 C 155.082437 -138.898469 160.160562 -133.82425 160.160562 -127.562531 Z M 160.160562 -127.562531 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-4" x="376.278" y="147.977"/> + <use xlink:href="#glyph0-7" x="381.2593" y="147.977"/> +</g> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 132.719156 -95.359406 L 143.660562 -117.242219 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-11" x="107.029" y="19.698"/> + <use xlink:href="#glyph0-12" x="114.08551" y="19.698"/> + <use xlink:href="#glyph0-13" x="118.512889" y="19.698"/> + <use xlink:href="#glyph0-14" x="122.442138" y="19.698"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-15" x="129.634139" y="19.698"/> + <use xlink:href="#glyph0-16" x="134.061519" y="19.698"/> + <use xlink:href="#glyph0-13" x="139.042819" y="19.698"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-12" x="142.982031" y="19.698"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-17" x="150.726956" y="19.698"/> + <use xlink:href="#glyph0-4" x="154.601411" y="19.698"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-15" x="162.900257" y="19.698"/> + <use xlink:href="#glyph0-18" x="167.327637" y="19.698"/> + <use xlink:href="#glyph0-19" x="172.308937" y="19.698"/> + <use xlink:href="#glyph0-20" x="180.610771" y="19.698"/> + <use xlink:href="#glyph0-16" x="186.145992" y="19.698"/> + <use xlink:href="#glyph0-21" x="191.127292" y="19.698"/> + <use xlink:href="#glyph0-22" x="195.029642" y="19.698"/> + <use xlink:href="#glyph0-13" x="197.797252" y="19.698"/> + <use xlink:href="#glyph0-18" x="201.726502" y="19.698"/> + <use xlink:href="#glyph0-23" x="206.707802" y="19.698"/> + <use xlink:href="#glyph0-24" x="212.243022" y="19.698"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-25" x="5.669" y="134.97"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-18" x="15.081664" y="134.97"/> + <use xlink:href="#glyph0-21" x="20.062964" y="134.97"/> + <use xlink:href="#glyph0-13" x="23.965315" y="134.97"/> + <use xlink:href="#glyph0-14" x="27.894564" y="134.97"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-15" x="35.086565" y="134.97"/> + <use xlink:href="#glyph0-16" x="39.513945" y="134.97"/> + <use xlink:href="#glyph0-13" x="44.495245" y="134.97"/> + <use xlink:href="#glyph0-12" x="48.424494" y="134.97"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-17" x="5.669" y="146.925"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="9.544" y="146.925"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-26" x="13.972" y="146.925"/> + <use xlink:href="#glyph0-18" x="16.73961" y="146.925"/> + <use xlink:href="#glyph0-27" x="21.72091" y="146.925"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="26.84" y="149.36"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-17" x="31.309" y="146.925"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph3-1" x="35.184" y="146.925"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-24" x="41.164" y="146.925"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-28" x="47.319891" y="146.925"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-4" x="57.360199" y="146.925"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-2" x="62.337" y="146.925"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-15" x="5.669" y="158.88"/> + <use xlink:href="#glyph0-18" x="10.096379" y="158.88"/> + <use xlink:href="#glyph0-19" x="15.077679" y="158.88"/> + <use xlink:href="#glyph0-20" x="23.379514" y="158.88"/> + <use xlink:href="#glyph0-16" x="28.914735" y="158.88"/> + <use xlink:href="#glyph0-21" x="33.896035" y="158.88"/> + <use xlink:href="#glyph0-22" x="37.798385" y="158.88"/> + <use xlink:href="#glyph0-13" x="40.565995" y="158.88"/> + <use xlink:href="#glyph0-18" x="44.495245" y="158.88"/> + <use xlink:href="#glyph0-23" x="49.476545" y="158.88"/> + <use xlink:href="#glyph0-13" x="55.011765" y="158.88"/> + <use xlink:href="#glyph0-24" x="58.941015" y="158.88"/> +</g> +<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 92.125406 -11.339875 L 162.992594 -11.339875 L 162.992594 11.339812 L 92.125406 11.339812 Z M 92.125406 -11.339875 " transform="matrix(1,0,0,-1,232.441,17.207)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph4-1" x="339.336" y="21.83"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph5-1" x="351.706" y="21.83"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph5-2" x="366.62031" y="21.83"/> + <use xlink:href="#glyph5-3" x="373.644209" y="21.83"/> +</g> +</g> +</svg> diff --git a/slides/figs/quicksort.svg b/slides/figs/quicksort.svg new file mode 100644 index 0000000000000000000000000000000000000000..baf72d568ad4f0f3094a254a2440fb194a2df326 --- /dev/null +++ b/slides/figs/quicksort.svg @@ -0,0 +1,1118 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="713.48926pt" + height="191.66698pt" + viewBox="0 0 713.48927 191.66697" + version="1.2" + id="svg314" + sodipodi:docname="quicksort.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview316" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:document-units="pt" + showgrid="false" + inkscape:snap-intersection-paths="true" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" + inkscape:zoom="0.93162321" + inkscape:cx="852.46369" + inkscape:cy="106.38199" + inkscape:window-width="944" + inkscape:window-height="1022" + inkscape:window-x="962" + inkscape:window-y="44" + inkscape:window-maximized="1" + inkscape:current-layer="svg314" /> + <defs + id="defs67"> + <g + id="g50"> + <symbol + overflow="visible" + id="glyph0-0"> + <path + style="stroke:none" + d="" + id="path2" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-1"> + <path + style="stroke:none" + d="m 0.28125,-11.578125 c 1.34375,0.140625 1.5,0.3125 1.515625,1.625 V -2.15625 C 1.78125,-0.625 1.65625,-0.46875 0.28125,-0.34375 V 0 H 5.328125 V -0.34375 C 3.90625,-0.375 3.65625,-0.625 3.640625,-1.96875 V -5.234375 C 4.109375,-5.203125 4.40625,-5.1875 4.875,-5.1875 c 1.421875,0 2.375,-0.171875 3.15625,-0.609375 C 9.109375,-6.375 9.75,-7.46875 9.75,-8.65625 c 0,-0.75 -0.25,-1.4375 -0.734375,-1.96875 -0.71875,-0.78125 -2.28125,-1.296875 -3.96875,-1.296875 H 0.28125 Z m 3.359375,0.9375 c 0,-0.484375 0.125,-0.609375 0.609375,-0.609375 2.421875,0 3.546875,0.84375 3.546875,2.703125 0,1.75 -1.0625,2.640625 -3.140625,2.640625 -0.359375,0 -0.609375,-0.015625 -1.015625,-0.046875 z m 0,0" + id="path5" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-2"> + <path + style="stroke:none" + d="M 5.671875,-5.65625 5.59375,-8.125 H 5.40625 C 5.3125,-7.96875 5.21875,-7.921875 5.109375,-7.921875 5,-7.921875 4.828125,-7.953125 4.625,-8.046875 4.21875,-8.1875 3.796875,-8.28125 3.359375,-8.28125 c -1.421875,0 -2.4375,0.9375 -2.4375,2.234375 0,1 0.578125,1.734375 2.109375,2.59375 l 1.03125,0.59375 C 4.703125,-2.5 5,-2.0625 5,-1.515625 5,-0.71875 4.421875,-0.21875 3.515625,-0.21875 c -1.25,0 -1.875,-0.6875 -2.296875,-2.515625 H 0.9375 v 2.8125 h 0.234375 c 0.125,-0.1875 0.203125,-0.21875 0.40625,-0.21875 C 1.78125,-0.140625 2,-0.109375 2.40625,0 c 0.484375,0.109375 0.953125,0.1875 1.3125,0.1875 1.40625,0 2.546875,-1.046875 2.546875,-2.3125 0,-0.90625 -0.4375,-1.5 -1.515625,-2.140625 L 2.8125,-5.421875 C 2.296875,-5.71875 2.03125,-6.15625 2.03125,-6.640625 c 0,-0.734375 0.5625,-1.21875 1.390625,-1.21875 1.03125,0 1.5625,0.59375 1.984375,2.203125 z m 0,0" + id="path8" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-3"> + <path + style="stroke:none" + d="M 8.625,-0.90625 H 8.53125 C 7.65625,-0.9375 7.53125,-1.078125 7.5,-1.921875 V -8.09375 H 4.65625 v 0.296875 C 5.78125,-7.734375 6,-7.5625 6,-6.65625 v 4.21875 c 0,0.515625 -0.09375,0.765625 -0.34375,0.96875 -0.484375,0.390625 -1.046875,0.609375 -1.59375,0.609375 -0.703125,0 -1.265625,-0.609375 -1.265625,-1.375 V -8.09375 H 0.15625 v 0.25 c 0.859375,0.03125 1.109375,0.28125 1.125,1.140625 v 4.546875 c 0,1.421875 0.859375,2.34375 2.171875,2.34375 0.671875,0 1.375,-0.296875 1.859375,-0.78125 L 6.078125,-1.375 v 1.5 L 6.15625,0.15625 C 7.0625,-0.203125 7.703125,-0.390625 8.625,-0.640625 Z m 0,0" + id="path11" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-4"> + <path + style="stroke:none" + d="m 0.28125,0 h 4.265625 v -0.265625 c -1.1875,-0.09375 -1.3125,-0.25 -1.328125,-1.578125 v -6.375 l -0.0625,-0.0625 -2.796875,0.984375 v 0.28125 L 0.5,-7.03125 c 0.21875,-0.046875 0.4375,-0.0625 0.609375,-0.0625 0.4375,0 0.59375,0.296875 0.59375,1.078125 V -1.84375 C 1.671875,-0.5 1.515625,-0.328125 0.28125,-0.265625 Z m 2.015625,-12.296875 c -0.484375,0 -0.890625,0.421875 -0.890625,0.921875 0,0.515625 0.390625,0.921875 0.890625,0.921875 0.546875,0 0.9375,-0.40625 0.9375,-0.921875 0,-0.515625 -0.40625,-0.921875 -0.9375,-0.921875 z m 0,0" + id="path14" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-5"> + <path + style="stroke:none" + d="M 4.59375,-8.09375 H 2.765625 v -2.09375 c 0,-0.1875 -0.03125,-0.234375 -0.125,-0.234375 -1.03125,1.515625 -1.578125,2.125 -2.09375,2.4375 -0.203125,0.125 -0.3125,0.21875 -0.3125,0.328125 0,0.0625 0.015625,0.09375 0.078125,0.125 h 0.953125 v 5.421875 c 0,1.515625 0.53125,2.296875 1.59375,2.296875 0.890625,0 1.5625,-0.4375 2.15625,-1.375 L 4.78125,-1.390625 C 4.390625,-0.921875 4.109375,-0.75 3.703125,-0.75 c -0.65625,0 -0.9375,-0.484375 -0.9375,-1.625 V -7.53125 H 4.59375 Z m 0,0" + id="path17" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-6"> + <path + style="stroke:none" + d="M 7.34375,-2.953125 C 6.484375,-1.578125 5.703125,-1.0625 4.546875,-1.0625 3.53125,-1.0625 2.75,-1.578125 2.234375,-2.609375 1.90625,-3.296875 1.78125,-3.875 1.75,-4.984375 H 7.296875 C 7.140625,-6.15625 6.96875,-6.671875 6.515625,-7.25 5.96875,-7.90625 5.140625,-8.28125 4.21875,-8.28125 c -0.90625,0 -1.75,0.328125 -2.4375,0.9375 C 0.9375,-6.609375 0.453125,-5.328125 0.453125,-3.859375 0.453125,-1.375 1.75,0.1875 3.8125,0.1875 5.53125,0.1875 6.875,-0.875 7.625,-2.828125 Z M 1.78125,-5.5625 c 0.203125,-1.40625 0.8125,-2.0625 1.90625,-2.0625 1.09375,0 1.53125,0.5 1.765625,2.0625 z m 0,0" + id="path20" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-7"> + <path + style="stroke:none" + d="" + id="path23" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-8"> + <path + style="stroke:none" + d="m 0.09375,0 h 4.3125 V -0.265625 C 3.203125,-0.3125 2.921875,-0.5625 2.875,-1.625 v -4.046875 c 0,-0.578125 0.765625,-1.46875 1.265625,-1.46875 0.109375,0 0.265625,0.078125 0.46875,0.265625 0.265625,0.265625 0.484375,0.359375 0.71875,0.359375 0.4375,0 0.703125,-0.3125 0.703125,-0.8125 0,-0.59375 -0.375,-0.953125 -0.984375,-0.953125 -0.765625,0 -1.265625,0.390625 -2.171875,1.6875 V -8.25 L 2.796875,-8.28125 C 1.78125,-7.890625 1.140625,-7.625 0.125,-7.3125 v 0.296875 c 0.25,-0.0625 0.421875,-0.078125 0.625,-0.078125 0.453125,0 0.625,0.296875 0.625,1.078125 v 4.5 c -0.046875,0.9375 -0.15625,1.046875 -1.28125,1.25 z m 0,0" + id="path26" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-9"> + <path + style="stroke:none" + d="M 7.34375,-2.953125 C 6.484375,-1.578125 5.703125,-1.0625 4.546875,-1.0625 3.53125,-1.0625 2.75,-1.578125 2.234375,-2.609375 1.90625,-3.296875 1.78125,-3.875 1.75,-4.984375 H 7.296875 C 7.140625,-6.15625 6.96875,-6.671875 6.515625,-7.25 5.96875,-7.90625 5.140625,-8.28125 4.21875,-8.28125 c -0.90625,0 -1.75,0.328125 -2.4375,0.9375 C 0.9375,-6.609375 0.453125,-5.328125 0.453125,-3.859375 0.453125,-1.375 1.75,0.1875 3.8125,0.1875 5.53125,0.1875 6.875,-0.875 7.625,-2.828125 Z M 1.78125,-5.5625 c 0.203125,-1.40625 0.8125,-2.0625 1.90625,-2.0625 1.09375,0 1.53125,0.5 1.765625,2.0625 z m 1.625,-3.5625 2.75,-1.75 c 0.390625,-0.25 0.5625,-0.46875 0.5625,-0.75 0,-0.359375 -0.234375,-0.578125 -0.640625,-0.578125 -0.265625,0 -0.421875,0.09375 -0.75,0.40625 L 2.6875,-9.125 Z m 0,0" + id="path29" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-10"> + <path + style="stroke:none" + d="m 2.75,-5.9375 c 1.0625,0 1.484375,0.03125 1.890625,0.203125 1.140625,0.40625 1.828125,1.421875 1.828125,2.65625 0,1.53125 -1.015625,2.6875 -2.34375,2.6875 -0.5,0 -0.859375,-0.125 -1.53125,-0.5625 C 2.0625,-1.28125 1.765625,-1.40625 1.453125,-1.40625 c -0.40625,0 -0.671875,0.25 -0.671875,0.625 0,0.640625 0.765625,1.03125 2.03125,1.03125 1.359375,0 2.78125,-0.46875 3.65625,-1.203125 C 7.3125,-1.6875 7.765625,-2.734375 7.765625,-3.9375 7.765625,-4.875 7.46875,-5.703125 6.96875,-6.265625 6.59375,-6.65625 6.25,-6.875 5.46875,-7.21875 6.703125,-8.0625 7.140625,-8.734375 7.140625,-9.703125 c 0,-1.46875 -1.125,-2.46875 -2.796875,-2.46875 -0.90625,0 -1.703125,0.3125 -2.34375,0.890625 -0.546875,0.5 -0.8125,0.953125 -1.1875,2.03125 l 0.265625,0.0625 c 0.71875,-1.328125 1.53125,-1.90625 2.671875,-1.90625 1.1875,0 1.96875,0.78125 1.96875,1.9375 0,0.640625 -0.265625,1.265625 -0.71875,1.734375 -0.53125,0.546875 -1.046875,0.8125 -2.265625,1.25 z m 0,0" + id="path32" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-11"> + <path + style="stroke:none" + d="m 2.125,0 h 4.96875 v -0.265625 c -1.390625,0 -1.6875,-0.203125 -1.71875,-1.0625 V -12.125 L 5.234375,-12.171875 2,-10.53125 v 0.25 c 0.703125,-0.265625 1.125,-0.390625 1.296875,-0.390625 0.375,0 0.53125,0.265625 0.53125,0.84375 v 8.15625 c -0.03125,1.125 -0.34375,1.390625 -1.703125,1.40625 z m 0,0" + id="path35" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-12"> + <path + style="stroke:none" + d="M 8.546875,-2.46875 8.3125,-2.5625 C 7.65625,-1.515625 7.453125,-1.390625 6.609375,-1.375 h -4.3125 l 3.03125,-3.15625 C 6.9375,-6.203125 7.625,-7.578125 7.625,-8.984375 c 0,-1.796875 -1.453125,-3.1875 -3.328125,-3.1875 -0.984375,0 -1.921875,0.40625 -2.59375,1.125 -0.5625,0.609375 -0.84375,1.1875 -1.140625,2.453125 L 0.9375,-8.5 c 0.71875,-1.765625 1.34375,-2.328125 2.609375,-2.328125 1.53125,0 2.53125,1.015625 2.53125,2.53125 C 6.078125,-6.875 5.25,-5.21875 3.75,-3.625 L 0.546875,-0.21875 V 0 H 7.5625 Z m 0,0" + id="path38" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-13"> + <path + style="stroke:none" + d="M 8.5,-4.15625 H 6.65625 v -8.015625 H 5.875 L 0.21875,-4.15625 V -3 h 5.0625 v 3 h 1.375 V -3 H 8.5 Z m -3.25,0 H 0.9375 L 5.25,-10.328125 Z m 0,0" + id="path41" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-14"> + <path + style="stroke:none" + d="M 3.265625,-10.5 H 6.78125 c 0.3125,0 0.359375,-0.01563 0.421875,-0.15625 l 0.6875,-1.609375 -0.171875,-0.125 c -0.265625,0.359375 -0.421875,0.46875 -0.828125,0.46875 H 3.125 L 1.171875,-7.65625 C 1.15625,-7.609375 1.15625,-7.59375 1.15625,-7.5625 c 0,0.109375 0.0625,0.140625 0.21875,0.140625 0.5625,0 1.265625,0.125 2.03125,0.359375 2.0625,0.671875 3,1.765625 3,3.578125 0,1.71875 -1.078125,3.078125 -2.5,3.078125 -0.359375,0 -0.640625,-0.140625 -1.1875,-0.53125 C 2.140625,-1.375 1.75,-1.53125 1.328125,-1.53125 c -0.5,0 -0.75,0.21875 -0.75,0.671875 0,0.671875 0.828125,1.109375 2.1875,1.109375 1.5,0 2.796875,-0.484375 3.71875,-1.40625 0.8125,-0.8125 1.1875,-1.828125 1.1875,-3.203125 0,-1.296875 -0.34375,-2.125 -1.234375,-3.015625 C 5.65625,-8.171875 4.625,-8.59375 2.5,-8.96875 Z m 0,0" + id="path44" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-15"> + <path + style="stroke:none" + d="m 8.078125,-11.921875 h -6.65625 l -1.0625,2.65625 0.3125,0.140625 C 1.40625,-10.328125 1.75,-10.5625 2.75,-10.578125 H 6.65625 L 3.09375,0.140625 H 4.265625 L 8.078125,-11.625 Z m 0,0" + id="path47" /> + </symbol> + </g> + <clipPath + id="clip1"> + <path + d="m 217,23 h 37.69922 V 61 H 217 Z m 0,0" + id="path52" /> + </clipPath> + <clipPath + id="clip2"> + <path + d="m 218,168 h 36.69922 v 37 H 218 Z m 0,0" + id="path55" /> + </clipPath> + <clipPath + id="clip3"> + <path + d="m 217,167 h 37.69922 v 38 H 217 Z m 0,0" + id="path58" /> + </clipPath> + <clipPath + id="clip4"> + <path + d="m 91,285 h 70 v 13 H 91 Z m 0,0" + id="path61" /> + </clipPath> + <clipPath + id="clip5"> + <path + d="m 217,95 h 37.69922 v 38 H 217 Z m 0,0" + id="path64" /> + </clipPath> + </defs> + <path + style="clip-rule:nonzero;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 301.4265,53.320324 h 36 v -36 h -36 z m 0,0" + id="path71" /> + <use + xlink:href="#glyph0-1" + x="230" + y="19" + id="use91" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.12572,-7.07812)" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="M 85.426502,53.320324 H 121.4265 v -36 H 85.426502 Z m 0,0" + id="path165" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 121.4265,53.320324 h 36 v -36 h -36 z m 0,0" + id="path167" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 157.4265,53.320324 h 36 v -36 h -36 z m 0,0" + id="path169" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 193.4265,53.320324 h 36 v -36 h -36 z m 0,0" + id="path171" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 229.4265,53.320324 h 36 v -36 h -36 z m 0,0" + id="path173" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 265.4265,53.320324 h 36 v -36 h -36 z m 0,0" + id="path175" /> + <use + xlink:href="#glyph0-10" + x="15.8" + y="46.900002" + id="use211" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.12572,-7.07812)" /> + <use + xlink:href="#glyph0-10" + x="82.400002" + y="46.900002" + id="use215" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.12572,-7.07812)" /> + <use + xlink:href="#glyph0-11" + x="91.400002" + y="46.900002" + id="use217" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.12572,-7.07812)" /> + <use + xlink:href="#glyph0-11" + x="51.799999" + y="47.799999" + id="use221" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.12572,-7.07812)" /> + <use + xlink:href="#glyph0-13" + x="117.5" + y="47.799999" + id="use225" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.12572,-7.07812)" /> + <use + xlink:href="#glyph0-11" + x="126.5" + y="47.799999" + id="use227" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.12572,-7.07812)" /> + <use + xlink:href="#glyph0-14" + x="158" + y="46.900002" + id="use231" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.12572,-7.07812)" /> + <use + xlink:href="#glyph0-15" + x="195.8" + y="46.900002" + id="use235" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.12572,-7.07812)" /> + <use + xlink:href="#glyph0-11" + x="225.5" + y="46.900002" + id="use239" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.12572,-7.07812)" /> + <use + xlink:href="#glyph0-12" + x="234.5" + y="46.900002" + id="use241" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.12572,-7.07812)" /> + <path + style="clip-rule:nonzero;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 301.4265,110.70068 h 36 V 74.700678 h -36 z m 0,0" + id="path71-3" /> + <use + xlink:href="#glyph0-1" + x="230" + y="19" + id="use91-6" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.125722,50.302238)" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="M 85.426503,110.70068 H 121.4265 V 74.700678 H 85.426503 Z m 0,0" + id="path165-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 121.4265,110.70068 h 36 V 74.700678 h -36 z m 0,0" + id="path167-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 157.4265,110.70068 h 36 V 74.700678 h -36 z m 0,0" + id="path169-3" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 193.4265,110.70068 h 36 V 74.700678 h -36 z m 0,0" + id="path171-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 229.4265,110.70068 h 36 V 74.700678 h -36 z m 0,0" + id="path173-6" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 265.4265,110.70068 h 36 V 74.700678 h -36 z m 0,0" + id="path175-2" /> + <use + xlink:href="#glyph0-10" + x="15.8" + y="46.900002" + id="use211-9" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.125722,50.302238)" /> + <g + id="g2349" + transform="translate(207.57456,110.72604)"> + <use + xlink:href="#glyph0-10" + x="82.400002" + y="46.900002" + id="use215-1" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(-13.713096,-60.423802)" /> + <use + xlink:href="#glyph0-11" + x="91.400002" + y="46.900002" + id="use217-2" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(-13.713096,-60.423802)" /> + </g> + <use + xlink:href="#glyph0-11" + x="51.799999" + y="47.799999" + id="use221-7" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.125722,50.302238)" /> + <use + xlink:href="#glyph0-13" + x="117.5" + y="47.799999" + id="use225-0" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.125722,50.302238)" /> + <use + xlink:href="#glyph0-11" + x="126.5" + y="47.799999" + id="use227-9" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.125722,50.302238)" /> + <use + xlink:href="#glyph0-14" + x="158" + y="46.900002" + id="use231-3" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.125722,50.302238)" /> + <use + xlink:href="#glyph0-15" + x="195.8" + y="46.900002" + id="use235-6" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(-25.397549,50.302238)" /> + <use + xlink:href="#glyph0-11" + x="225.5" + y="46.900002" + id="use239-0" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.125722,50.302238)" /> + <use + xlink:href="#glyph0-12" + x="234.5" + y="46.900002" + id="use241-6" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.125722,50.302238)" /> + <path + style="clip-rule:nonzero;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 301.4265,168.08105 h 36 v -36 h -36 z m 0,0" + id="path71-3-6" /> + <use + xlink:href="#glyph0-1" + x="230" + y="19" + id="use91-6-1" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.12572,107.68261)" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="M 85.426501,168.08105 H 121.4265 v -36 H 85.426501 Z m 0,0" + id="path165-7-8" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 121.4265,168.08105 h 36 v -36 h -36 z m 0,0" + id="path167-5-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 157.4265,168.08105 h 36 v -36 h -36 z m 0,0" + id="path169-3-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 193.4265,168.08105 h 36 v -36 h -36 z m 0,0" + id="path171-5-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 229.4265,168.08105 h 36 v -36 h -36 z m 0,0" + id="path173-6-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 265.4265,168.08105 h 36 v -36 h -36 z m 0,0" + id="path175-2-2" /> + <use + xlink:href="#glyph0-10" + x="15.8" + y="46.900002" + id="use211-9-3" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.353064,109.14198)" /> + <g + id="g2349-7" + transform="translate(207.57456,168.10641)"> + <use + xlink:href="#glyph0-10" + x="82.400002" + y="46.900002" + id="use215-1-5" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(-13.713096,-60.423802)" /> + <use + xlink:href="#glyph0-11" + x="91.400002" + y="46.900002" + id="use217-2-9" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(-13.713096,-60.423802)" /> + </g> + <use + xlink:href="#glyph0-11" + x="51.799999" + y="47.799999" + id="use221-7-2" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.079627,108.36698)" /> + <g + id="g3515" + transform="translate(124.95013,113.83811)"> + <use + xlink:href="#glyph0-13" + x="117.5" + y="47.799999" + id="use225-0-2" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(-2.49492,-6.155504)" /> + <use + xlink:href="#glyph0-11" + x="126.5" + y="47.799999" + id="use227-9-8" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(-2.49492,-6.155504)" /> + </g> + <use + xlink:href="#glyph0-14" + x="158" + y="46.900002" + id="use231-3-9" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(49.192125,109.25136)" /> + <use + xlink:href="#glyph0-15" + x="195.8" + y="46.900002" + id="use235-6-7" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(-24.592249,109.07167)" /> + <use + xlink:href="#glyph0-11" + x="225.5" + y="46.900002" + id="use239-0-3" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.12572,107.68261)" /> + <use + xlink:href="#glyph0-12" + x="234.5" + y="46.900002" + id="use241-6-6" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(83.12572,107.68261)" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 521.41341,53.320315 h 36 v -36 h -36 z m 0,0" + id="path69" /> + <use + xlink:href="#glyph0-1" + x="230.89999" + y="91" + id="use95" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-79.078125)" /> + <use + xlink:href="#glyph0-1" + x="122.9" + y="91" + id="use99" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-79.078125)" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 377.41341,53.320315 h 36 v -36 h -36 z m 0,0" + id="path147" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 413.41341,53.320315 h 36 v -36 h -36 z m 0,0" + id="path149" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 449.41341,53.320315 h 36 v -36 h -36 z m 0,0" + id="path151" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 557.41341,53.320315 h 36 v -36 h -36 z m 0,0" + id="path153" /> + <path + style="clip-rule:nonzero;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 593.41341,53.320315 h 36 v -36 h -36 z m 0,0" + id="path159" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 485.41341,53.320315 h 36 v -36 h -36 z m 0,0" + id="path163" /> + <use + xlink:href="#glyph0-10" + x="15.8" + y="118.9" + id="use177" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-79.078125)" /> + <use + xlink:href="#glyph0-11" + x="51.799999" + y="119.8" + id="use181" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-79.078125)" /> + <use + xlink:href="#glyph0-11" + x="150.8" + y="118.9" + id="use193" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-79.078125)" /> + <use + xlink:href="#glyph0-12" + x="159.8" + y="118.9" + id="use195" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-79.078125)" /> + <use + xlink:href="#glyph0-13" + x="227.3" + y="118.9" + id="use199" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-79.078125)" /> + <use + xlink:href="#glyph0-11" + x="236.3" + y="118.9" + id="use201" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-79.078125)" /> + <use + xlink:href="#glyph0-10" + x="191.3" + y="118.9" + id="use205" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-79.078125)" /> + <use + xlink:href="#glyph0-11" + x="200.3" + y="118.9" + id="use207" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-79.078125)" /> + <use + xlink:href="#glyph0-15" + x="86" + y="119.8" + id="use245" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-79.078125)" /> + <use + xlink:href="#glyph0-14" + x="121.1" + y="119.8" + id="use249" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-79.078125)" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 521.41341,108.90067 h 36 V 72.900675 h -36 z m 0,0" + id="path75" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 557.41341,108.90067 h 36 V 72.900675 h -36 z m 0,0" + id="path77" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 449.41341,108.90067 h 36 V 72.900675 h -36 z m 0,0" + id="path79" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 485.41341,108.90067 h 36 V 72.900675 h -36 z m 0,0" + id="path81" /> + <path + style="clip-rule:nonzero;fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:none" + d="m 593.41341,108.90067 h 36 V 72.900675 h -36 z m 0,0" + id="path83" /> + <path + style="clip-rule:nonzero;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 593.41341,108.90067 h 36 V 72.900675 h -36 z m 0,0" + id="path87" /> + <use + xlink:href="#glyph0-1" + x="50.900002" + y="164.8" + id="use103" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-95.497765)" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 377.41341,108.90067 h 36 V 72.900675 h -36 z m 0,0" + id="path155" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 413.41341,108.90067 h 36 V 72.900675 h -36 z m 0,0" + id="path157" /> + <use + xlink:href="#glyph0-10" + x="15.8" + y="190.89999" + id="use185" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-95.497765)" /> + <use + xlink:href="#glyph0-11" + x="51.799999" + y="191.8" + id="use189" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-95.497765)" /> + <use + xlink:href="#glyph0-11" + x="150.8" + y="190.89999" + id="use253" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-95.497765)" /> + <use + xlink:href="#glyph0-12" + x="159.8" + y="190.89999" + id="use255" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-95.497765)" /> + <use + xlink:href="#glyph0-13" + x="226.39999" + y="191.8" + id="use259" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-95.497765)" /> + <use + xlink:href="#glyph0-11" + x="235.39999" + y="191.8" + id="use261" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-95.497765)" /> + <use + xlink:href="#glyph0-10" + x="192.2" + y="190" + id="use265" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-95.497765)" /> + <use + xlink:href="#glyph0-11" + x="201.2" + y="190" + id="use267" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-95.497765)" /> + <use + xlink:href="#glyph0-15" + x="121.1" + y="190.89999" + id="use271" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-95.497765)" /> + <use + xlink:href="#glyph0-14" + x="84.199997" + y="190.89999" + id="use275" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(375.11263,-95.497765)" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 593.41341,168.08104 h 36 v -36 h -36 z m 0,0" + id="path107" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 557.41341,168.08104 h 36 v -36 h -36 z m 0,0" + id="path109" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 521.41341,168.08104 h 36 v -36 h -36 z m 0,0" + id="path111" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 485.41341,168.08104 h 36 v -36 h -36 z m 0,0" + id="path113" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 449.41341,168.08104 h 36 v -36 h -36 z m 0,0" + id="path115" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 413.41341,168.08104 h 36 v -36 h -36 z m 0,0" + id="path117" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 377.41341,168.08104 h 36 v -36 h -36 z m 0,0" + id="path119" /> + <g + style="clip-rule:nonzero;fill:#000000;fill-opacity:1" + id="g143" + transform="translate(376.91341,-106.52052)"> + <use + xlink:href="#glyph0-2" + x="90.5" + y="298" + id="use121" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-3" + x="97.501999" + y="298" + id="use123" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-4" + x="106.502" + y="298" + id="use125" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-5" + x="111.506" + y="298" + id="use127" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-6" + x="116.51" + y="298" + id="use129" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-7" + x="124.502" + y="298" + id="use131" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-5" + x="129.002" + y="298" + id="use133" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-8" + x="134.006" + y="298" + id="use135" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-4" + x="140" + y="298" + id="use137" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-9" + x="145.004" + y="298" + id="use139" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-6" + x="152.996" + y="298" + id="use141" + width="100%" + height="100%" /> + </g> + <use + xlink:href="#glyph0-11" + x="13.1" + y="261.10001" + id="use279" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(376.91341,-106.52052)" /> + <use + xlink:href="#glyph0-10" + x="48.200001" + y="260.20001" + id="use283" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(376.91341,-106.52052)" /> + <use + xlink:href="#glyph0-14" + x="83.300003" + y="260.20001" + id="use287" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(376.91341,-106.52052)" /> + <use + xlink:href="#glyph0-15" + x="121.1" + y="259.29999" + id="use291" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(376.91341,-106.52052)" /> + <use + xlink:href="#glyph0-11" + x="150.8" + y="260.20001" + id="use295" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(376.91341,-106.52052)" /> + <use + xlink:href="#glyph0-12" + x="159.8" + y="260.20001" + id="use297" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(376.91341,-106.52052)" /> + <use + xlink:href="#glyph0-13" + x="225.5" + y="260.20001" + id="use301" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(376.91341,-106.52052)" /> + <use + xlink:href="#glyph0-11" + x="234.5" + y="260.20001" + id="use303" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(376.91341,-106.52052)" /> + <use + xlink:href="#glyph0-10" + x="187.7" + y="260.20001" + id="use307" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(376.91341,-106.52052)" /> + <use + xlink:href="#glyph0-11" + x="196.7" + y="260.20001" + id="use309" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(376.91341,-106.52052)" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;stroke-width:0.469796" + x="-0.65625" + y="38.630871" + id="text7734"><tspan + sodipodi:role="line" + id="tspan7732" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.469796" + x="-0.65625" + y="38.630871">i: 2, j: 5</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;stroke-width:0.520546" + x="-1.0429688" + y="96.011223" + id="text7734-7"><tspan + sodipodi:role="line" + id="tspan7732-5" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.520546" + x="-1.0429688" + y="96.011223">i: 3, j: 4</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;stroke-width:0.520546;fill:#ff00ff" + x="-0.71484375" + y="153.3916" + id="text7734-3"><tspan + sodipodi:role="line" + id="tspan7732-8" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.520546;fill:#ff00ff" + x="-0.71484375" + y="153.3916">i: 4, j: 3</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;stroke-width:0.520546;fill:#ff00ff" + x="642.02246" + y="38.630863" + id="text7734-31"><tspan + sodipodi:role="line" + id="tspan7732-89" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.520546;fill:#ff00ff" + x="642.02246" + y="38.630863">i: 2, j: 2</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;stroke-width:0.520546;fill:#ff00ff" + x="642.02246" + y="94.21122" + id="text7734-6"><tspan + sodipodi:role="line" + id="tspan7732-4" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.520546;fill:#ff00ff" + x="642.02246" + y="94.21122">i: 0, j: 0</tspan></text> +</svg> diff --git a/slides/figs/tri_bulles.svg b/slides/figs/tri_bulles.svg new file mode 100644 index 0000000000000000000000000000000000000000..cfa88e4040f495213cc19556229bc9e1abe78a36 --- /dev/null +++ b/slides/figs/tri_bulles.svg @@ -0,0 +1,2173 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="692.09924pt" + height="411.75079pt" + viewBox="0 0 692.09924 411.75081" + version="1.2" + id="svg775" + sodipodi:docname="tri_bulles.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview777" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:document-units="pt" + showgrid="false" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" + inkscape:zoom="0.95971775" + inkscape:cx="409.4954" + inkscape:cy="214.12546" + inkscape:window-width="1920" + inkscape:window-height="1080" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg775" /> + <defs + id="defs88"> + <g + id="g68"> + <symbol + overflow="visible" + id="glyph0-0"> + <path + style="stroke:none" + d="" + id="path2" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-1"> + <path + style="stroke:none" + d="m 2.75,-5.9375 c 1.0625,0 1.484375,0.03125 1.890625,0.203125 1.140625,0.40625 1.828125,1.421875 1.828125,2.65625 0,1.53125 -1.015625,2.6875 -2.34375,2.6875 -0.5,0 -0.859375,-0.125 -1.53125,-0.5625 C 2.0625,-1.28125 1.765625,-1.40625 1.453125,-1.40625 c -0.40625,0 -0.671875,0.25 -0.671875,0.625 0,0.640625 0.765625,1.03125 2.03125,1.03125 1.359375,0 2.78125,-0.46875 3.65625,-1.203125 C 7.3125,-1.6875 7.765625,-2.734375 7.765625,-3.9375 7.765625,-4.875 7.46875,-5.703125 6.96875,-6.265625 6.59375,-6.65625 6.25,-6.875 5.46875,-7.21875 6.703125,-8.0625 7.140625,-8.734375 7.140625,-9.703125 c 0,-1.46875 -1.125,-2.46875 -2.796875,-2.46875 -0.90625,0 -1.703125,0.3125 -2.34375,0.890625 -0.546875,0.5 -0.8125,0.953125 -1.1875,2.03125 l 0.265625,0.0625 c 0.71875,-1.328125 1.53125,-1.90625 2.671875,-1.90625 1.1875,0 1.96875,0.78125 1.96875,1.9375 0,0.640625 -0.265625,1.265625 -0.71875,1.734375 -0.53125,0.546875 -1.046875,0.8125 -2.265625,1.25 z m 0,0" + id="path5" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-2"> + <path + style="stroke:none" + d="M 3.265625,-10.5 H 6.78125 c 0.3125,0 0.359375,-0.01563 0.421875,-0.15625 l 0.6875,-1.609375 -0.171875,-0.125 c -0.265625,0.359375 -0.421875,0.46875 -0.828125,0.46875 H 3.125 L 1.171875,-7.65625 C 1.15625,-7.609375 1.15625,-7.59375 1.15625,-7.5625 c 0,0.109375 0.0625,0.140625 0.21875,0.140625 0.5625,0 1.265625,0.125 2.03125,0.359375 2.0625,0.671875 3,1.765625 3,3.578125 0,1.71875 -1.078125,3.078125 -2.5,3.078125 -0.359375,0 -0.640625,-0.140625 -1.1875,-0.53125 C 2.140625,-1.375 1.75,-1.53125 1.328125,-1.53125 c -0.5,0 -0.75,0.21875 -0.75,0.671875 0,0.671875 0.828125,1.109375 2.1875,1.109375 1.5,0 2.796875,-0.484375 3.71875,-1.40625 0.8125,-0.8125 1.1875,-1.828125 1.1875,-3.203125 0,-1.296875 -0.34375,-2.125 -1.234375,-3.015625 C 5.65625,-8.171875 4.625,-8.59375 2.5,-8.96875 Z m 0,0" + id="path8" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-3"> + <path + style="stroke:none" + d="M 8.5,-4.15625 H 6.65625 v -8.015625 H 5.875 L 0.21875,-4.15625 V -3 h 5.0625 v 3 h 1.375 V -3 H 8.5 Z m -3.25,0 H 0.9375 L 5.25,-10.328125 Z m 0,0" + id="path11" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-4"> + <path + style="stroke:none" + d="m 2.125,0 h 4.96875 v -0.265625 c -1.390625,0 -1.6875,-0.203125 -1.71875,-1.0625 V -12.125 L 5.234375,-12.171875 2,-10.53125 v 0.25 c 0.703125,-0.265625 1.125,-0.390625 1.296875,-0.390625 0.375,0 0.53125,0.265625 0.53125,0.84375 v 8.15625 c -0.03125,1.125 -0.34375,1.390625 -1.703125,1.40625 z m 0,0" + id="path14" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-5"> + <path + style="stroke:none" + d="m 5.21875,-6.671875 c 1.796875,-0.984375 2.40625,-1.71875 2.40625,-2.9375 0,-1.5 -1.265625,-2.5625 -3.09375,-2.5625 -1.953125,0 -3.421875,1.203125 -3.421875,2.84375 0,1.171875 0.34375,1.703125 2.234375,3.359375 -1.953125,1.484375 -2.328125,2.015625 -2.328125,3.25 0,1.765625 1.390625,2.96875 3.453125,2.96875 2.15625,0 3.546875,-1.1875 3.546875,-3.046875 0,-1.375 -0.625,-2.25 -2.796875,-3.875 z m -0.328125,1.84375 c 1.3125,0.9375 1.75,1.59375 1.75,2.59375 C 6.640625,-1.0625 5.828125,-0.25 4.65625,-0.25 3.296875,-0.25 2.375,-1.296875 2.375,-2.84375 2.375,-4.015625 2.75,-4.75 3.8125,-5.609375 Z M 4.703125,-7 c -1.609375,-1.046875 -2.25,-1.875 -2.25,-2.875 0,-1.046875 0.8125,-1.78125 1.9375,-1.78125 1.21875,0 2,0.78125 2,2.03125 0,1.09375 -0.46875,1.8125 -1.6875,2.625 z m 0,0" + id="path17" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-6"> + <path + style="stroke:none" + d="m 4.578125,-12.171875 c -1,0 -1.75,0.296875 -2.421875,0.9375 -1.046875,1.015625 -1.71875,3.078125 -1.71875,5.1875 0,1.984375 0.59375,4.0625 1.4375,5.078125 C 2.53125,-0.1875 3.453125,0.25 4.5,0.25 c 0.921875,0 1.6875,-0.296875 2.34375,-0.9375 1.046875,-0.984375 1.71875,-3.078125 1.71875,-5.25 0,-3.6875 -1.625,-6.234375 -3.984375,-6.234375 z m -0.0625,0.46875 c 1.515625,0 2.328125,2.03125 2.328125,5.796875 0,3.765625 -0.796875,5.6875 -2.34375,5.6875 -1.546875,0 -2.34375,-1.921875 -2.34375,-5.671875 0,-3.828125 0.8125,-5.8125 2.359375,-5.8125 z m 0,0" + id="path20" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-7"> + <path + style="stroke:none" + d="m 8.078125,-11.921875 h -6.65625 l -1.0625,2.65625 0.3125,0.140625 C 1.40625,-10.328125 1.75,-10.5625 2.75,-10.578125 H 6.65625 L 3.09375,0.140625 H 4.265625 L 8.078125,-11.625 Z m 0,0" + id="path23" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-8"> + <path + style="stroke:none" + d="M 7.953125,-1.1875 C 7.65625,-0.9375 7.4375,-0.84375 7.15625,-0.84375 6.75,-0.84375 6.625,-1.09375 6.625,-1.890625 V -5.40625 c 0,-0.9375 -0.09375,-1.453125 -0.359375,-1.890625 C 5.875,-7.9375 5.09375,-8.28125 4.03125,-8.28125 c -1.6875,0 -3.015625,0.890625 -3.015625,2.015625 0,0.421875 0.328125,0.78125 0.765625,0.78125 0.4375,0 0.8125,-0.359375 0.8125,-0.765625 0,-0.0625 -0.015625,-0.15625 -0.03125,-0.28125 C 2.515625,-6.703125 2.5,-6.84375 2.5,-6.96875 c 0,-0.484375 0.578125,-0.875 1.296875,-0.875 0.890625,0 1.375,0.515625 1.375,1.484375 V -5.25 C 2.40625,-4.15625 2.09375,-4 1.3125,-3.3125 0.921875,-2.953125 0.671875,-2.34375 0.671875,-1.75 c 0,1.140625 0.78125,1.9375 1.890625,1.9375 0.78125,0 1.53125,-0.390625 2.625,-1.328125 C 5.28125,-0.1875 5.59375,0.1875 6.34375,0.1875 c 0.609375,0 0.984375,-0.21875 1.609375,-0.90625 z m -2.78125,-1.03125 c 0,0.546875 -0.09375,0.75 -0.46875,0.953125 -0.453125,0.25 -0.9375,0.40625 -1.3125,0.40625 C 2.75,-0.859375 2.25,-1.46875 2.25,-2.25 v -0.078125 c 0.015625,-1.078125 0.8125,-1.765625 2.921875,-2.5 z m 0,0" + id="path26" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-9"> + <path + style="stroke:none" + d="M 8.625,-0.90625 H 8.53125 C 7.65625,-0.9375 7.53125,-1.078125 7.5,-1.921875 V -8.09375 H 4.65625 v 0.296875 C 5.78125,-7.734375 6,-7.5625 6,-6.65625 v 4.21875 c 0,0.515625 -0.09375,0.765625 -0.34375,0.96875 -0.484375,0.390625 -1.046875,0.609375 -1.59375,0.609375 -0.703125,0 -1.265625,-0.609375 -1.265625,-1.375 V -8.09375 H 0.15625 v 0.25 c 0.859375,0.03125 1.109375,0.28125 1.125,1.140625 v 4.546875 c 0,1.421875 0.859375,2.34375 2.171875,2.34375 0.671875,0 1.375,-0.296875 1.859375,-0.78125 L 6.078125,-1.375 v 1.5 L 6.15625,0.15625 C 7.0625,-0.203125 7.703125,-0.390625 8.625,-0.640625 Z m 0,0" + id="path29" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-10"> + <path + style="stroke:none" + d="m 7.15625,-2.8125 c -0.859375,1.265625 -1.5,1.703125 -2.53125,1.703125 -1.65625,0 -2.78125,-1.453125 -2.78125,-3.515625 0,-1.875 0.984375,-3.140625 2.4375,-3.140625 0.65625,0 0.890625,0.1875 1.0625,0.875 L 5.453125,-6.5 c 0.140625,0.53125 0.46875,0.828125 0.859375,0.828125 0.46875,0 0.84375,-0.34375 0.84375,-0.75 0,-1.015625 -1.25,-1.859375 -2.765625,-1.859375 -0.875,0 -1.796875,0.359375 -2.53125,1.015625 -0.90625,0.78125 -1.40625,2.015625 -1.40625,3.453125 0,2.3125 1.421875,4 3.421875,4 0.8125,0 1.53125,-0.296875 2.171875,-0.859375 0.484375,-0.40625 0.828125,-0.90625 1.375,-1.96875 z m 0,0" + id="path32" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-11"> + <path + style="stroke:none" + d="m 0.328125,0 h 3.8125 v -0.265625 c -0.90625,-0.0625 -1.1875,-0.296875 -1.1875,-0.9375 v -5.0625 c 0.859375,-0.8125 1.265625,-1.03125 1.859375,-1.03125 0.875,0 1.3125,0.5625 1.3125,1.75 v 3.765625 c -0.046875,1.171875 -0.25,1.453125 -1.140625,1.515625 V 0 h 3.75 V -0.265625 C 7.84375,-0.359375 7.65625,-0.578125 7.625,-1.453125 v -4.125 c 0,-1.6875 -0.78125,-2.703125 -2.109375,-2.703125 -0.828125,0 -1.390625,0.3125 -2.625,1.453125 V -8.25 l -0.125,-0.03125 C 1.84375,-7.9375 1.21875,-7.734375 0.28125,-7.46875 v 0.3125 c 0.125,-0.0625 0.296875,-0.078125 0.5,-0.078125 0.5,0 0.65625,0.265625 0.65625,1.15625 V -1.625 c -0.015625,1.0625 -0.21875,1.296875 -1.109375,1.359375 z m 0,0" + id="path35" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-12"> + <path + style="stroke:none" + d="" + id="path38" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-13"> + <path + style="stroke:none" + d="M 7.34375,-2.953125 C 6.484375,-1.578125 5.703125,-1.0625 4.546875,-1.0625 3.53125,-1.0625 2.75,-1.578125 2.234375,-2.609375 1.90625,-3.296875 1.78125,-3.875 1.75,-4.984375 H 7.296875 C 7.140625,-6.15625 6.96875,-6.671875 6.515625,-7.25 5.96875,-7.90625 5.140625,-8.28125 4.21875,-8.28125 c -0.90625,0 -1.75,0.328125 -2.4375,0.9375 C 0.9375,-6.609375 0.453125,-5.328125 0.453125,-3.859375 0.453125,-1.375 1.75,0.1875 3.8125,0.1875 5.53125,0.1875 6.875,-0.875 7.625,-2.828125 Z M 1.78125,-5.5625 c 0.203125,-1.40625 0.8125,-2.0625 1.90625,-2.0625 1.09375,0 1.53125,0.5 1.765625,2.0625 z m 1.625,-3.5625 2.75,-1.75 c 0.390625,-0.25 0.5625,-0.46875 0.5625,-0.75 0,-0.359375 -0.234375,-0.578125 -0.640625,-0.578125 -0.265625,0 -0.421875,0.09375 -0.75,0.40625 L 2.6875,-9.125 Z m 0,0" + id="path41" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-14"> + <path + style="stroke:none" + d="M 8.765625,-0.265625 C 7.796875,-0.4375 7.703125,-0.5625 7.6875,-1.84375 v -3.578125 c 0,-1.890625 -0.734375,-2.859375 -2.21875,-2.859375 -1.0625,0 -1.8125,0.4375 -2.640625,1.515625 v -5.46875 l -0.09375,-0.0625 c -0.625,0.21875 -1.078125,0.359375 -2.0625,0.65625 L 0.1875,-11.5 v 0.28125 c 0.0625,-0.01563 0.09375,-0.01563 0.203125,-0.01563 0.78125,0 0.921875,0.140625 0.921875,0.921875 v 8.46875 C 1.28125,-0.54688 1.1875,-0.39063 0.15625,-0.26563 V 0 H 4.046875 V -0.265625 C 3,-0.359375 2.859375,-0.5625 2.828125,-1.84375 V -6.171875 C 3.578125,-7 4.125,-7.3125 4.84375,-7.3125 c 0.875,0 1.328125,0.65625 1.328125,1.90625 v 3.5625 C 6.140625,-0.5625 5.96875,-0.359375 4.953125,-0.265625 V 0 h 3.8125 z m 0,0" + id="path44" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-15"> + <path + style="stroke:none" + d="M 8.453125,-6.984375 V -7.6875 h -1.375 c -0.375,0 -0.640625,-0.046875 -1,-0.171875 L 5.6875,-8.015625 C 5.21875,-8.1875 4.71875,-8.28125 4.25,-8.28125 c -1.671875,0 -3.015625,1.28125 -3.015625,2.9375 0,1.125 0.46875,1.8125 1.6875,2.40625 L 2.453125,-2.5 c -0.390625,0.359375 -0.59375,0.5625 -0.65625,0.625 -0.375,0.40625 -0.484375,0.59375 -0.484375,0.90625 0,0.390625 0.203125,0.59375 0.953125,0.953125 C 0.96875,0.921875 0.5,1.515625 0.5,2.171875 c 0,0.953125 1.390625,1.75 3.125,1.75 1.34375,0 2.75,-0.46875 3.6875,-1.21875 C 7.984375,2.140625 8.296875,1.5625 8.296875,0.875 c 0,-1.109375 -0.84375,-1.84375 -2.171875,-1.921875 L 3.796875,-1.15625 c -0.96875,-0.03125 -1.40625,-0.1875 -1.40625,-0.484375 0,-0.359375 0.59375,-0.984375 1.078125,-1.125 0.65625,0.046875 1,0.078125 1.03125,0.078125 0.671875,0 1.390625,-0.265625 1.9375,-0.75 0.59375,-0.5 0.875,-1.140625 0.875,-2.03125 0,-0.53125 -0.09375,-0.9375 -0.34375,-1.515625 z m -5.8125,7.015625 c 0.625,0.125 2.015625,0.234375 2.9375,0.234375 1.625,0 2.21875,0.234375 2.21875,0.890625 0,1.046875 -1.375,1.734375 -3.40625,1.734375 -1.59375,0 -2.625,-0.515625 -2.625,-1.3125 0,-0.40625 0.15625,-0.671875 0.875,-1.546875 z m 0.09375,-6.109375 c 0,-1.0625 0.5,-1.703125 1.328125,-1.703125 0.5625,0 1.03125,0.3125 1.3125,0.84375 0.34375,0.640625 0.546875,1.453125 0.546875,2.171875 0,1 -0.5,1.640625 -1.328125,1.640625 -1.125,0 -1.859375,-1.171875 -1.859375,-2.90625 z m 0,0" + id="path47" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-16"> + <path + style="stroke:none" + d="M 7.34375,-2.953125 C 6.484375,-1.578125 5.703125,-1.0625 4.546875,-1.0625 3.53125,-1.0625 2.75,-1.578125 2.234375,-2.609375 1.90625,-3.296875 1.78125,-3.875 1.75,-4.984375 H 7.296875 C 7.140625,-6.15625 6.96875,-6.671875 6.515625,-7.25 5.96875,-7.90625 5.140625,-8.28125 4.21875,-8.28125 c -0.90625,0 -1.75,0.328125 -2.4375,0.9375 C 0.9375,-6.609375 0.453125,-5.328125 0.453125,-3.859375 0.453125,-1.375 1.75,0.1875 3.8125,0.1875 5.53125,0.1875 6.875,-0.875 7.625,-2.828125 Z M 1.78125,-5.5625 c 0.203125,-1.40625 0.8125,-2.0625 1.90625,-2.0625 1.09375,0 1.53125,0.5 1.765625,2.0625 z m 0,0" + id="path50" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-17"> + <path + style="stroke:none" + d="m 9.609375,-6.953125 h -9.0625 v 1.1875 h 9.0625 z m 0,3.609375 h -9.0625 v 1.1875 h 9.0625 z m 0,0" + id="path53" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-18"> + <path + style="stroke:none" + d="M 5.671875,-5.65625 5.59375,-8.125 H 5.40625 C 5.3125,-7.96875 5.21875,-7.921875 5.109375,-7.921875 5,-7.921875 4.828125,-7.953125 4.625,-8.046875 4.21875,-8.1875 3.796875,-8.28125 3.359375,-8.28125 c -1.421875,0 -2.4375,0.9375 -2.4375,2.234375 0,1 0.578125,1.734375 2.109375,2.59375 l 1.03125,0.59375 C 4.703125,-2.5 5,-2.0625 5,-1.515625 5,-0.71875 4.421875,-0.21875 3.515625,-0.21875 c -1.25,0 -1.875,-0.6875 -2.296875,-2.515625 H 0.9375 v 2.8125 h 0.234375 c 0.125,-0.1875 0.203125,-0.21875 0.40625,-0.21875 C 1.78125,-0.140625 2,-0.109375 2.40625,0 c 0.484375,0.109375 0.953125,0.1875 1.3125,0.1875 1.40625,0 2.546875,-1.046875 2.546875,-2.3125 0,-0.90625 -0.4375,-1.5 -1.515625,-2.140625 L 2.8125,-5.421875 C 2.296875,-5.71875 2.03125,-6.15625 2.03125,-6.640625 c 0,-0.734375 0.5625,-1.21875 1.390625,-1.21875 1.03125,0 1.5625,0.59375 1.984375,2.203125 z m 0,0" + id="path56" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-19"> + <path + style="stroke:none" + d="m 0.28125,0 h 4.265625 v -0.265625 c -1.1875,-0.09375 -1.3125,-0.25 -1.328125,-1.578125 v -6.375 l -0.0625,-0.0625 -2.796875,0.984375 v 0.28125 L 0.5,-7.03125 c 0.21875,-0.046875 0.4375,-0.0625 0.609375,-0.0625 0.4375,0 0.59375,0.296875 0.59375,1.078125 V -1.84375 C 1.671875,-0.5 1.515625,-0.328125 0.28125,-0.265625 Z m 2.015625,-12.296875 c -0.484375,0 -0.890625,0.421875 -0.890625,0.921875 0,0.515625 0.390625,0.921875 0.890625,0.921875 0.546875,0 0.9375,-0.40625 0.9375,-0.921875 0,-0.515625 -0.40625,-0.921875 -0.9375,-0.921875 z m 0,0" + id="path59" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-20"> + <path + style="stroke:none" + d="M 4.59375,-8.09375 H 2.765625 v -2.09375 c 0,-0.1875 -0.03125,-0.234375 -0.125,-0.234375 -1.03125,1.515625 -1.578125,2.125 -2.09375,2.4375 -0.203125,0.125 -0.3125,0.21875 -0.3125,0.328125 0,0.0625 0.015625,0.09375 0.078125,0.125 h 0.953125 v 5.421875 c 0,1.515625 0.53125,2.296875 1.59375,2.296875 0.890625,0 1.5625,-0.4375 2.15625,-1.375 L 4.78125,-1.390625 C 4.390625,-0.921875 4.109375,-0.75 3.703125,-0.75 c -0.65625,0 -0.9375,-0.484375 -0.9375,-1.625 V -7.53125 H 4.59375 Z m 0,0" + id="path62" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-21"> + <path + style="stroke:none" + d="m 0.09375,0 h 4.3125 V -0.265625 C 3.203125,-0.3125 2.921875,-0.5625 2.875,-1.625 v -4.046875 c 0,-0.578125 0.765625,-1.46875 1.265625,-1.46875 0.109375,0 0.265625,0.078125 0.46875,0.265625 0.265625,0.265625 0.484375,0.359375 0.71875,0.359375 0.4375,0 0.703125,-0.3125 0.703125,-0.8125 0,-0.59375 -0.375,-0.953125 -0.984375,-0.953125 -0.765625,0 -1.265625,0.390625 -2.171875,1.6875 V -8.25 L 2.796875,-8.28125 C 1.78125,-7.890625 1.140625,-7.625 0.125,-7.3125 v 0.296875 c 0.25,-0.0625 0.421875,-0.078125 0.625,-0.078125 0.453125,0 0.625,0.296875 0.625,1.078125 v 4.5 c -0.046875,0.9375 -0.15625,1.046875 -1.28125,1.25 z m 0,0" + id="path65" /> + </symbol> + </g> + <clipPath + id="clip1"> + <path + d="m 0,374 h 37 v 37.80078 H 0 Z m 0,0" + id="path70" /> + </clipPath> + <clipPath + id="clip2"> + <path + d="m 72,374 h 37 v 37.80078 H 72 Z m 0,0" + id="path73" /> + </clipPath> + <clipPath + id="clip3"> + <path + d="m 36,374 h 37 v 37.80078 H 36 Z m 0,0" + id="path76" /> + </clipPath> + <clipPath + id="clip4"> + <path + d="m 108,374 h 37 v 37.80078 h -37 z m 0,0" + id="path79" /> + </clipPath> + <clipPath + id="clip5"> + <path + d="m 180,374 h 37 v 37.80078 h -37 z m 0,0" + id="path82" /> + </clipPath> + <clipPath + id="clip6"> + <path + d="m 144,374 h 37 v 37.80078 h -37 z m 0,0" + id="path85" /> + </clipPath> + </defs> + <g + id="surface1314" + transform="translate(-0.05)"> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 1453.9844,743 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path90" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 1453.9844,1463 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path92" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 1093.9844,1463 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path94" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 1093.9844,2183 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path96" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 733.98437,2183 h 360.00003 v 360 H 733.98437 Z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path98" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 3838.9844,1463 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path100" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 3478.9844,1463 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path102" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 3118.9844,2183 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path104" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 3118.9844,2903 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path106" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 2758.9844,2903 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path108" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 733.98437,2903 h 360.00003 v 360 H 733.98437 Z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path110" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 2398.9844,3623 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path112" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 373.98437,2903 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path114" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 373.98437,3623 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path116" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="M 13.984375,3623 H 373.98437 v 360 H 13.984375 Z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path118" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 1813.9844,743 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path120" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 5098.9844,3623 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path122" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 2758.9844,3623 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path124" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 3478.9844,2183 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path126" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 5818.9844,2183 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path128" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 5458.9844,2183 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path130" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 5458.9844,2903 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path132" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 4738.9844,3623 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path134" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 5098.9844,2903 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path136" /> + <g + style="fill:#000000;fill-opacity:1" + id="g140"> + <use + xlink:href="#glyph0-1" + x="14.9" + y="324" + id="use138" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g144"> + <use + xlink:href="#glyph0-2" + x="50.900002" + y="324" + id="use142" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g150"> + <use + xlink:href="#glyph0-3" + x="190.39999" + y="398.70001" + id="use146" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-4" + x="199.39999" + y="398.70001" + id="use148" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g156"> + <use + xlink:href="#glyph0-3" + x="155.3" + y="324" + id="use152" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-4" + x="164.3" + y="324" + id="use154" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g160"> + <use + xlink:href="#glyph0-5" + x="157.10001" + y="398.70001" + id="use158" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g166"> + <use + xlink:href="#glyph0-4" + x="115.7" + y="397.79999" + id="use162" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-6" + x="124.7" + y="397.79999" + id="use164" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g170"> + <use + xlink:href="#glyph0-7" + x="86" + y="397.79999" + id="use168" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g174"> + <use + xlink:href="#glyph0-2" + x="50" + y="397.79999" + id="use172" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g178"> + <use + xlink:href="#glyph0-1" + x="14" + y="397.79999" + id="use176" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g182"> + <use + xlink:href="#glyph0-5" + x="194" + y="324" + id="use180" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g188"> + <use + xlink:href="#glyph0-4" + x="116.6" + y="324" + id="use184" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-6" + x="125.6" + y="324" + id="use186" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g192"> + <use + xlink:href="#glyph0-7" + x="86.900002" + y="324" + id="use190" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g196"> + <use + xlink:href="#glyph0-2" + x="82.400002" + y="36" + id="use194" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g200"> + <use + xlink:href="#glyph0-7" + x="118.4" + y="36" + id="use198" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g206"> + <use + xlink:href="#glyph0-4" + x="154.39999" + y="36" + id="use202" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-6" + x="163.39999" + y="36" + id="use204" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g210"> + <use + xlink:href="#glyph0-5" + x="190.39999" + y="36" + id="use208" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g216"> + <use + xlink:href="#glyph0-4" + x="154.39999" + y="108" + id="use212" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-6" + x="163.39999" + y="108" + id="use214" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g220"> + <use + xlink:href="#glyph0-5" + x="190.39999" + y="108" + id="use218" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g226"> + <use + xlink:href="#glyph0-3" + x="46.400002" + y="108" + id="use222" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-4" + x="55.400002" + y="108" + id="use224" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g230"> + <use + xlink:href="#glyph0-1" + x="14.9" + y="108" + id="use228" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g236"> + <use + xlink:href="#glyph0-4" + x="154.39999" + y="180" + id="use232" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-6" + x="163.39999" + y="180" + id="use234" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g240"> + <use + xlink:href="#glyph0-5" + x="190.39999" + y="180" + id="use238" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g244"> + <use + xlink:href="#glyph0-1" + x="14.9" + y="180" + id="use242" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g248"> + <use + xlink:href="#glyph0-5" + x="190.39999" + y="252" + id="use246" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g252"> + <use + xlink:href="#glyph0-1" + x="14.9" + y="252" + id="use250" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g256"> + <use + xlink:href="#glyph0-2" + x="50.900002" + y="252" + id="use254" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g260"> + <use + xlink:href="#glyph0-7" + x="86.900002" + y="252" + id="use258" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g264"> + <use + xlink:href="#glyph0-7" + x="122" + y="108" + id="use262" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g268"> + <use + xlink:href="#glyph0-2" + x="84.199997" + y="108" + id="use266" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g272"> + <use + xlink:href="#glyph0-2" + x="48.200001" + y="180.89999" + id="use270" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g278"> + <use + xlink:href="#glyph0-3" + x="81.5" + y="180.89999" + id="use274" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-4" + x="90.5" + y="180.89999" + id="use276" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g282"> + <use + xlink:href="#glyph0-7" + x="122.9" + y="180" + id="use280" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g288"> + <use + xlink:href="#glyph0-3" + x="117.5" + y="252" + id="use284" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-4" + x="126.5" + y="252" + id="use286" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g294"> + <use + xlink:href="#glyph0-4" + x="152.60001" + y="252" + id="use290" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-6" + x="161.60001" + y="252" + id="use292" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g298"> + <use + xlink:href="#glyph0-5" + x="396.5" + y="36" + id="use296" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g302"> + <use + xlink:href="#glyph0-2" + x="289.39999" + y="252" + id="use300" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g306"> + <use + xlink:href="#glyph0-7" + x="325.39999" + y="252" + id="use304" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g312"> + <use + xlink:href="#glyph0-3" + x="428.89999" + y="252" + id="use308" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-4" + x="437.89999" + y="252" + id="use310" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g318"> + <use + xlink:href="#glyph0-4" + x="392.89999" + y="252" + id="use314" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-6" + x="401.89999" + y="252" + id="use316" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g322"> + <use + xlink:href="#glyph0-5" + x="361.39999" + y="252" + id="use320" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g326"> + <use + xlink:href="#glyph0-1" + x="487.39999" + y="36" + id="use324" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g330"> + <use + xlink:href="#glyph0-2" + x="523.40002" + y="36" + id="use328" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g334"> + <use + xlink:href="#glyph0-7" + x="559.40002" + y="36" + id="use332" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g340"> + <use + xlink:href="#glyph0-3" + x="661.09998" + y="35.099998" + id="use336" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-4" + x="670.09998" + y="35.099998" + id="use338" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g344"> + <use + xlink:href="#glyph0-1" + x="487.39999" + y="108" + id="use342" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g348"> + <use + xlink:href="#glyph0-1" + x="487.39999" + y="180" + id="use346" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g352"> + <use + xlink:href="#glyph0-2" + x="520.70001" + y="180.89999" + id="use350" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g356"> + <use + xlink:href="#glyph0-7" + x="559.40002" + y="179.10001" + id="use354" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g360"> + <use + xlink:href="#glyph0-2" + x="523.40002" + y="108" + id="use358" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g364"> + <use + xlink:href="#glyph0-7" + x="559.40002" + y="108" + id="use362" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g370"> + <use + xlink:href="#glyph0-3" + x="662.90002" + y="108" + id="use366" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-4" + x="671.90002" + y="108" + id="use368" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g376"> + <use + xlink:href="#glyph0-3" + x="662.90002" + y="180" + id="use372" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-4" + x="671.90002" + y="180" + id="use374" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g380"> + <use + xlink:href="#glyph0-5" + x="595.40002" + y="108" + id="use378" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g384"> + <use + xlink:href="#glyph0-5" + x="595.40002" + y="180" + id="use382" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g388"> + <use + xlink:href="#glyph0-5" + x="595.40002" + y="36" + id="use386" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g394"> + <use + xlink:href="#glyph0-4" + x="625.09998" + y="180" + id="use390" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-6" + x="634.09998" + y="180" + id="use392" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g400"> + <use + xlink:href="#glyph0-4" + x="624.20001" + y="107.1" + id="use396" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-6" + x="633.20001" + y="107.1" + id="use398" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g406"> + <use + xlink:href="#glyph0-4" + x="623.29999" + y="35.099998" + id="use402" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-6" + x="632.29999" + y="35.099998" + id="use404" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g410"> + <use + xlink:href="#glyph0-1" + x="253.39999" + y="252" + id="use408" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g414"> + <use + xlink:href="#glyph0-1" + x="253.39999" + y="36" + id="use412" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g418"> + <use + xlink:href="#glyph0-2" + x="289.39999" + y="36" + id="use416" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g422"> + <use + xlink:href="#glyph0-7" + x="325.39999" + y="36" + id="use420" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g428"> + <use + xlink:href="#glyph0-4" + x="356.89999" + y="36" + id="use424" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-6" + x="365.89999" + y="36" + id="use426" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g434"> + <use + xlink:href="#glyph0-3" + x="427.10001" + y="35.099998" + id="use430" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-4" + x="436.10001" + y="35.099998" + id="use432" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g438"> + <use + xlink:href="#glyph0-1" + x="253.39999" + y="108" + id="use436" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g442"> + <use + xlink:href="#glyph0-1" + x="253.39999" + y="180" + id="use440" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g446"> + <use + xlink:href="#glyph0-2" + x="286.70001" + y="180.89999" + id="use444" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g450"> + <use + xlink:href="#glyph0-7" + x="325.39999" + y="179.10001" + id="use448" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g454"> + <use + xlink:href="#glyph0-2" + x="289.39999" + y="108" + id="use452" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g458"> + <use + xlink:href="#glyph0-7" + x="325.39999" + y="108" + id="use456" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g464"> + <use + xlink:href="#glyph0-4" + x="356.89999" + y="108" + id="use460" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-6" + x="365.89999" + y="108" + id="use462" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g468"> + <use + xlink:href="#glyph0-5" + x="397.39999" + y="108" + id="use466" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g474"> + <use + xlink:href="#glyph0-3" + x="428.89999" + y="108" + id="use470" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-4" + x="437.89999" + y="108" + id="use472" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g480"> + <use + xlink:href="#glyph0-4" + x="356.89999" + y="180" + id="use476" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-6" + x="365.89999" + y="180" + id="use478" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g484"> + <use + xlink:href="#glyph0-5" + x="397.39999" + y="180" + id="use482" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g490"> + <use + xlink:href="#glyph0-3" + x="428.89999" + y="180" + id="use486" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-4" + x="437.89999" + y="180" + id="use488" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g494"> + <use + xlink:href="#glyph0-1" + x="254.3" + y="324" + id="use492" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g498"> + <use + xlink:href="#glyph0-2" + x="290.29999" + y="324" + id="use496" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g502"> + <use + xlink:href="#glyph0-7" + x="326.29999" + y="324" + id="use500" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g508"> + <use + xlink:href="#glyph0-3" + x="429.79999" + y="324" + id="use504" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-4" + x="438.79999" + y="324" + id="use506" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g514"> + <use + xlink:href="#glyph0-4" + x="393.79999" + y="324" + id="use510" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-6" + x="402.79999" + y="324" + id="use512" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g518"> + <use + xlink:href="#glyph0-5" + x="362.29999" + y="324" + id="use516" + width="100%" + height="100%" /> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="M 6178.9844,2678 V 2093" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path520" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 1453.9844,2183 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path522" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 1813.9844,2183 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path524" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 373.98437,2183 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path526" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="M 13.984375,1463 H 373.98437 v 360 H 13.984375 Z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path528" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 733.98437,1463 h 360.00003 v 360 H 733.98437 Z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path530" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 1813.9844,1463 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path532" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 373.98437,1463 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path534" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="M 13.984375,743 H 373.98437 v 360 H 13.984375 Z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path536" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 733.98437,743 h 360.00003 v 360 H 733.98437 Z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path538" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 373.98437,743 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path540" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 1093.9844,743 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path542" /> + <g + clip-path="url(#clip1)" + clip-rule="nonzero" + id="g546"> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="M 5,4.992188 H 365 V 364.99219 H 5 Z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path544" /> + </g> + <g + clip-path="url(#clip2)" + clip-rule="nonzero" + id="g550"> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 725,4.992188 h 360 V 364.99219 H 725 Z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path548" /> + </g> + <g + clip-path="url(#clip3)" + clip-rule="nonzero" + id="g554"> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="M 365,4.992188 H 725 V 364.99219 H 365 Z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path552" /> + </g> + <g + clip-path="url(#clip4)" + clip-rule="nonzero" + id="g558"> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 1085,4.992188 h 360 V 364.99219 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path556" /> + </g> + <g + clip-path="url(#clip5)" + clip-rule="nonzero" + id="g562"> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 1805,4.992188 h 360 V 364.99219 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path560" /> + </g> + <g + clip-path="url(#clip6)" + clip-rule="nonzero" + id="g566"> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 1445,4.992188 h 360 V 364.99219 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path564" /> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 3118.9844,3623 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path568" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 3478.9844,3623 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path570" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="M 13.984375,2183 H 373.98437 v 360 H 13.984375 Z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path572" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 4756.9922,1463 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path574" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 5476.9922,1463 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path576" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 5116.9922,1463 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path578" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 5836.9922,1463 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path580" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 6196.9922,1463 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path582" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 6556.9922,1463 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path584" /> + <g + style="fill:#000000;fill-opacity:1" + id="g588"> + <use + xlink:href="#glyph0-1" + x="489.20001" + y="252" + id="use586" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g592"> + <use + xlink:href="#glyph0-2" + x="525.20001" + y="252" + id="use590" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g596"> + <use + xlink:href="#glyph0-7" + x="561.20001" + y="252" + id="use594" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g602"> + <use + xlink:href="#glyph0-3" + x="664.70001" + y="252" + id="use598" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-4" + x="673.70001" + y="252" + id="use600" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g608"> + <use + xlink:href="#glyph0-4" + x="624.20001" + y="252" + id="use604" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-6" + x="633.20001" + y="252" + id="use606" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g612"> + <use + xlink:href="#glyph0-5" + x="597.20001" + y="252" + id="use610" + width="100%" + height="100%" /> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 733.98437,3623 h 360.00003 v 360 H 733.98437 Z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path614" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 1093.9844,3623 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path616" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 1453.9844,3623 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path618" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 1813.9844,3623 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path620" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="M 13.984375,2903 H 373.98437 v 360 H 13.984375 Z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path622" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 1093.9844,2903 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path624" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 1453.9844,2903 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path626" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 1813.9844,2903 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path628" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 2398.9844,2903 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path630" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 4198.9844,1463 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path632" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 2758.9844,1463 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path634" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="M 4198.9844,1958 V 1373" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path636" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 5458.9844,3623 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path638" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 5818.9844,3623 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path640" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 4738.9844,2903 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path642" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 5818.9844,2903 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path644" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 6178.9844,2903 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path646" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 6538.9844,2903 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path648" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 4738.9844,2183 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path650" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 6178.9844,2183 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path652" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 6538.9844,2183 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path654" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 5098.9844,2183 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path656" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 6178.9844,3623 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path658" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 6538.9844,3623 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path660" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="M 6178.9844,3353 V 2768" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path662" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="M 6178.9844,4073 V 3488" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path664" /> + <g + style="fill:#000000;fill-opacity:1" + id="g720"> + <use + xlink:href="#glyph0-8" + x="487.39999" + y="287.10001" + id="use666" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-9" + x="495.392" + y="287.10001" + id="use668" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-10" + x="504.392" + y="287.10001" + id="use670" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-9" + x="512.38397" + y="287.10001" + id="use672" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-11" + x="521.38397" + y="287.10001" + id="use674" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-12" + x="530.38397" + y="287.10001" + id="use676" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-13" + x="534.88397" + y="287.10001" + id="use678" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-10" + x="542.87598" + y="287.10001" + id="use680" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-14" + x="550.86798" + y="287.10001" + id="use682" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-8" + x="559.86798" + y="287.10001" + id="use684" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-11" + x="567.85999" + y="287.10001" + id="use686" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-15" + x="576.85999" + y="287.10001" + id="use688" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-16" + x="585.85999" + y="287.10001" + id="use690" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-12" + x="593.85199" + y="287.10001" + id="use692" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-17" + x="598.35199" + y="287.10001" + id="use694" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-12" + x="608.50403" + y="287.10001" + id="use696" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-18" + x="613.00403" + y="287.10001" + id="use698" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-9" + x="620.00598" + y="287.10001" + id="use700" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-19" + x="629.00598" + y="287.10001" + id="use702" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-20" + x="634.01001" + y="287.10001" + id="use704" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-16" + x="639.01398" + y="287.10001" + id="use706" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-12" + x="647.00598" + y="287.10001" + id="use708" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-20" + x="651.50598" + y="287.10001" + id="use710" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-21" + x="656.51001" + y="287.10001" + id="use712" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-19" + x="662.50403" + y="287.10001" + id="use714" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-13" + x="667.508" + y="287.10001" + id="use716" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-16" + x="675.5" + y="287.10001" + id="use718" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g726"> + <use + xlink:href="#glyph0-3" + x="10.4" + y="36" + id="use722" + width="100%" + height="100%" /> + <use + xlink:href="#glyph0-4" + x="19.4" + y="36" + id="use724" + width="100%" + height="100%" /> + </g> + <g + style="fill:#000000;fill-opacity:1" + id="g730"> + <use + xlink:href="#glyph0-1" + x="46.400002" + y="36" + id="use728" + width="100%" + height="100%" /> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 3118.9844,1463 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path732" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 3478.9844,2903 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path734" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 3838.9844,2903 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path736" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 4198.9844,2903 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path738" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 2398.9844,2183 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path740" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 3838.9844,2183 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path742" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 4198.9844,2183 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path744" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 2758.9844,2183 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path746" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 3838.9844,3623 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path748" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 4198.9844,3623 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path750" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="M 4198.9844,4118 V 3533" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path752" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="M 4198.9844,3398 V 2813" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path754" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="M 4198.9844,2678 V 2093" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path756" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 2408.0078,743 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path758" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 3128.0078,743 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path760" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 4208.0078,743 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path762" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 2768.0078,743 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path764" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 3848.0078,743 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path766" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 3488.0078,743 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path768" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="M 4208.0078,1238 V 653" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path770" /> + <path + style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 2398.9844,1463 h 360 v 360 h -360 z m 0,0" + transform="matrix(0.1,0,0,-0.1,0,411.8)" + id="path772" /> + </g> +</svg> diff --git a/slides/figs/tri_insertion.svg b/slides/figs/tri_insertion.svg new file mode 100644 index 0000000000000000000000000000000000000000..d5f3fdd8e6f793609bf3fcf4321a20875aeb683b --- /dev/null +++ b/slides/figs/tri_insertion.svg @@ -0,0 +1,1037 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="456.11932pt" + height="169.28424pt" + viewBox="0 0 456.11934 169.28424" + version="1.2" + id="svg451" + sodipodi:docname="tri_insertion.svg" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview453" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:document-units="pt" + showgrid="false" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" + inkscape:zoom="1.3787842" + inkscape:cx="127.64869" + inkscape:cy="70.351836" + inkscape:window-width="1920" + inkscape:window-height="1007" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg451" + inkscape:showpageshadow="2" + inkscape:deskcolor="#d1d1d1" /> + <defs + id="defs118"> + <g + id="g50"> + <symbol + overflow="visible" + id="glyph0-0"> + <path + style="stroke:none" + d="" + id="path2" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-1"> + <path + style="stroke:none" + d="M 8.5,-4.15625 H 6.65625 v -8.015625 H 5.875 L 0.21875,-4.15625 V -3 h 5.0625 v 3 h 1.375 V -3 H 8.5 Z m -3.25,0 H 0.9375 L 5.25,-10.328125 Z m 0,0" + id="path5" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-2"> + <path + style="stroke:none" + d="m 2.125,0 h 4.96875 v -0.265625 c -1.390625,0 -1.6875,-0.203125 -1.71875,-1.0625 V -12.125 L 5.234375,-12.171875 2,-10.53125 v 0.25 c 0.703125,-0.265625 1.125,-0.390625 1.296875,-0.390625 0.375,0 0.53125,0.265625 0.53125,0.84375 v 8.15625 c -0.03125,1.125 -0.34375,1.390625 -1.703125,1.40625 z m 0,0" + id="path8" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-3"> + <path + style="stroke:none" + d="M 3.265625,-10.5 H 6.78125 c 0.3125,0 0.359375,-0.01563 0.421875,-0.15625 l 0.6875,-1.609375 -0.171875,-0.125 c -0.265625,0.359375 -0.421875,0.46875 -0.828125,0.46875 H 3.125 L 1.171875,-7.65625 C 1.15625,-7.609375 1.15625,-7.59375 1.15625,-7.5625 c 0,0.109375 0.0625,0.140625 0.21875,0.140625 0.5625,0 1.265625,0.125 2.03125,0.359375 2.0625,0.671875 3,1.765625 3,3.578125 0,1.71875 -1.078125,3.078125 -2.5,3.078125 -0.359375,0 -0.640625,-0.140625 -1.1875,-0.53125 C 2.140625,-1.375 1.75,-1.53125 1.328125,-1.53125 c -0.5,0 -0.75,0.21875 -0.75,0.671875 0,0.671875 0.828125,1.109375 2.1875,1.109375 1.5,0 2.796875,-0.484375 3.71875,-1.40625 0.8125,-0.8125 1.1875,-1.828125 1.1875,-3.203125 0,-1.296875 -0.34375,-2.125 -1.234375,-3.015625 C 5.65625,-8.171875 4.625,-8.59375 2.5,-8.96875 Z m 0,0" + id="path11" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-4"> + <path + style="stroke:none" + d="m 8.078125,-11.921875 h -6.65625 l -1.0625,2.65625 0.3125,0.140625 C 1.40625,-10.328125 1.75,-10.5625 2.75,-10.578125 H 6.65625 L 3.09375,0.140625 H 4.265625 L 8.078125,-11.625 Z m 0,0" + id="path14" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-5"> + <path + style="stroke:none" + d="m 2.75,-5.9375 c 1.0625,0 1.484375,0.03125 1.890625,0.203125 1.140625,0.40625 1.828125,1.421875 1.828125,2.65625 0,1.53125 -1.015625,2.6875 -2.34375,2.6875 -0.5,0 -0.859375,-0.125 -1.53125,-0.5625 C 2.0625,-1.28125 1.765625,-1.40625 1.453125,-1.40625 c -0.40625,0 -0.671875,0.25 -0.671875,0.625 0,0.640625 0.765625,1.03125 2.03125,1.03125 1.359375,0 2.78125,-0.46875 3.65625,-1.203125 C 7.3125,-1.6875 7.765625,-2.734375 7.765625,-3.9375 7.765625,-4.875 7.46875,-5.703125 6.96875,-6.265625 6.59375,-6.65625 6.25,-6.875 5.46875,-7.21875 6.703125,-8.0625 7.140625,-8.734375 7.140625,-9.703125 c 0,-1.46875 -1.125,-2.46875 -2.796875,-2.46875 -0.90625,0 -1.703125,0.3125 -2.34375,0.890625 -0.546875,0.5 -0.8125,0.953125 -1.1875,2.03125 l 0.265625,0.0625 c 0.71875,-1.328125 1.53125,-1.90625 2.671875,-1.90625 1.1875,0 1.96875,0.78125 1.96875,1.9375 0,0.640625 -0.265625,1.265625 -0.71875,1.734375 -0.53125,0.546875 -1.046875,0.8125 -2.265625,1.25 z m 0,0" + id="path17" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-6"> + <path + style="stroke:none" + d="m 5.21875,-6.671875 c 1.796875,-0.984375 2.40625,-1.71875 2.40625,-2.9375 0,-1.5 -1.265625,-2.5625 -3.09375,-2.5625 -1.953125,0 -3.421875,1.203125 -3.421875,2.84375 0,1.171875 0.34375,1.703125 2.234375,3.359375 -1.953125,1.484375 -2.328125,2.015625 -2.328125,3.25 0,1.765625 1.390625,2.96875 3.453125,2.96875 2.15625,0 3.546875,-1.1875 3.546875,-3.046875 0,-1.375 -0.625,-2.25 -2.796875,-3.875 z m -0.328125,1.84375 c 1.3125,0.9375 1.75,1.59375 1.75,2.59375 C 6.640625,-1.0625 5.828125,-0.25 4.65625,-0.25 3.296875,-0.25 2.375,-1.296875 2.375,-2.84375 2.375,-4.015625 2.75,-4.75 3.8125,-5.609375 Z M 4.703125,-7 c -1.609375,-1.046875 -2.25,-1.875 -2.25,-2.875 0,-1.046875 0.8125,-1.78125 1.9375,-1.78125 1.21875,0 2,0.78125 2,2.03125 0,1.09375 -0.46875,1.8125 -1.6875,2.625 z m 0,0" + id="path20" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-7"> + <path + style="stroke:none" + d="m 4.578125,-12.171875 c -1,0 -1.75,0.296875 -2.421875,0.9375 -1.046875,1.015625 -1.71875,3.078125 -1.71875,5.1875 0,1.984375 0.59375,4.0625 1.4375,5.078125 C 2.53125,-0.1875 3.453125,0.25 4.5,0.25 c 0.921875,0 1.6875,-0.296875 2.34375,-0.9375 1.046875,-0.984375 1.71875,-3.078125 1.71875,-5.25 0,-3.6875 -1.625,-6.234375 -3.984375,-6.234375 z m -0.0625,0.46875 c 1.515625,0 2.328125,2.03125 2.328125,5.796875 0,3.765625 -0.796875,5.6875 -2.34375,5.6875 -1.546875,0 -2.34375,-1.921875 -2.34375,-5.671875 0,-3.828125 0.8125,-5.8125 2.359375,-5.8125 z m 0,0" + id="path23" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-8"> + <path + style="stroke:none" + d="M 5.671875,-5.65625 5.59375,-8.125 H 5.40625 C 5.3125,-7.96875 5.21875,-7.921875 5.109375,-7.921875 5,-7.921875 4.828125,-7.953125 4.625,-8.046875 4.21875,-8.1875 3.796875,-8.28125 3.359375,-8.28125 c -1.421875,0 -2.4375,0.9375 -2.4375,2.234375 0,1 0.578125,1.734375 2.109375,2.59375 l 1.03125,0.59375 C 4.703125,-2.5 5,-2.0625 5,-1.515625 5,-0.71875 4.421875,-0.21875 3.515625,-0.21875 c -1.25,0 -1.875,-0.6875 -2.296875,-2.515625 H 0.9375 v 2.8125 h 0.234375 c 0.125,-0.1875 0.203125,-0.21875 0.40625,-0.21875 C 1.78125,-0.140625 2,-0.109375 2.40625,0 c 0.484375,0.109375 0.953125,0.1875 1.3125,0.1875 1.40625,0 2.546875,-1.046875 2.546875,-2.3125 0,-0.90625 -0.4375,-1.5 -1.515625,-2.140625 L 2.8125,-5.421875 C 2.296875,-5.71875 2.03125,-6.15625 2.03125,-6.640625 c 0,-0.734375 0.5625,-1.21875 1.390625,-1.21875 1.03125,0 1.5625,0.59375 1.984375,2.203125 z m 0,0" + id="path26" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-9"> + <path + style="stroke:none" + d="M 8.625,-0.90625 H 8.53125 C 7.65625,-0.9375 7.53125,-1.078125 7.5,-1.921875 V -8.09375 H 4.65625 v 0.296875 C 5.78125,-7.734375 6,-7.5625 6,-6.65625 v 4.21875 c 0,0.515625 -0.09375,0.765625 -0.34375,0.96875 -0.484375,0.390625 -1.046875,0.609375 -1.59375,0.609375 -0.703125,0 -1.265625,-0.609375 -1.265625,-1.375 V -8.09375 H 0.15625 v 0.25 c 0.859375,0.03125 1.109375,0.28125 1.125,1.140625 v 4.546875 c 0,1.421875 0.859375,2.34375 2.171875,2.34375 0.671875,0 1.375,-0.296875 1.859375,-0.78125 L 6.078125,-1.375 v 1.5 L 6.15625,0.15625 C 7.0625,-0.203125 7.703125,-0.390625 8.625,-0.640625 Z m 0,0" + id="path29" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-10"> + <path + style="stroke:none" + d="m 0.28125,0 h 4.265625 v -0.265625 c -1.1875,-0.09375 -1.3125,-0.25 -1.328125,-1.578125 v -6.375 l -0.0625,-0.0625 -2.796875,0.984375 v 0.28125 L 0.5,-7.03125 c 0.21875,-0.046875 0.4375,-0.0625 0.609375,-0.0625 0.4375,0 0.59375,0.296875 0.59375,1.078125 V -1.84375 C 1.671875,-0.5 1.515625,-0.328125 0.28125,-0.265625 Z m 2.015625,-12.296875 c -0.484375,0 -0.890625,0.421875 -0.890625,0.921875 0,0.515625 0.390625,0.921875 0.890625,0.921875 0.546875,0 0.9375,-0.40625 0.9375,-0.921875 0,-0.515625 -0.40625,-0.921875 -0.9375,-0.921875 z m 0,0" + id="path32" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-11"> + <path + style="stroke:none" + d="M 4.59375,-8.09375 H 2.765625 v -2.09375 c 0,-0.1875 -0.03125,-0.234375 -0.125,-0.234375 -1.03125,1.515625 -1.578125,2.125 -2.09375,2.4375 -0.203125,0.125 -0.3125,0.21875 -0.3125,0.328125 0,0.0625 0.015625,0.09375 0.078125,0.125 h 0.953125 v 5.421875 c 0,1.515625 0.53125,2.296875 1.59375,2.296875 0.890625,0 1.5625,-0.4375 2.15625,-1.375 L 4.78125,-1.390625 C 4.390625,-0.921875 4.109375,-0.75 3.703125,-0.75 c -0.65625,0 -0.9375,-0.484375 -0.9375,-1.625 V -7.53125 H 4.59375 Z m 0,0" + id="path35" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-12"> + <path + style="stroke:none" + d="M 7.34375,-2.953125 C 6.484375,-1.578125 5.703125,-1.0625 4.546875,-1.0625 3.53125,-1.0625 2.75,-1.578125 2.234375,-2.609375 1.90625,-3.296875 1.78125,-3.875 1.75,-4.984375 H 7.296875 C 7.140625,-6.15625 6.96875,-6.671875 6.515625,-7.25 5.96875,-7.90625 5.140625,-8.28125 4.21875,-8.28125 c -0.90625,0 -1.75,0.328125 -2.4375,0.9375 C 0.9375,-6.609375 0.453125,-5.328125 0.453125,-3.859375 0.453125,-1.375 1.75,0.1875 3.8125,0.1875 5.53125,0.1875 6.875,-0.875 7.625,-2.828125 Z M 1.78125,-5.5625 c 0.203125,-1.40625 0.8125,-2.0625 1.90625,-2.0625 1.09375,0 1.53125,0.5 1.765625,2.0625 z m 0,0" + id="path38" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-13"> + <path + style="stroke:none" + d="" + id="path41" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-14"> + <path + style="stroke:none" + d="m 0.09375,0 h 4.3125 V -0.265625 C 3.203125,-0.3125 2.921875,-0.5625 2.875,-1.625 v -4.046875 c 0,-0.578125 0.765625,-1.46875 1.265625,-1.46875 0.109375,0 0.265625,0.078125 0.46875,0.265625 0.265625,0.265625 0.484375,0.359375 0.71875,0.359375 0.4375,0 0.703125,-0.3125 0.703125,-0.8125 0,-0.59375 -0.375,-0.953125 -0.984375,-0.953125 -0.765625,0 -1.265625,0.390625 -2.171875,1.6875 V -8.25 L 2.796875,-8.28125 C 1.78125,-7.890625 1.140625,-7.625 0.125,-7.3125 v 0.296875 c 0.25,-0.0625 0.421875,-0.078125 0.625,-0.078125 0.453125,0 0.625,0.296875 0.625,1.078125 v 4.5 c -0.046875,0.9375 -0.15625,1.046875 -1.28125,1.25 z m 0,0" + id="path44" /> + </symbol> + <symbol + overflow="visible" + id="glyph0-15"> + <path + style="stroke:none" + d="M 7.34375,-2.953125 C 6.484375,-1.578125 5.703125,-1.0625 4.546875,-1.0625 3.53125,-1.0625 2.75,-1.578125 2.234375,-2.609375 1.90625,-3.296875 1.78125,-3.875 1.75,-4.984375 H 7.296875 C 7.140625,-6.15625 6.96875,-6.671875 6.515625,-7.25 5.96875,-7.90625 5.140625,-8.28125 4.21875,-8.28125 c -0.90625,0 -1.75,0.328125 -2.4375,0.9375 C 0.9375,-6.609375 0.453125,-5.328125 0.453125,-3.859375 0.453125,-1.375 1.75,0.1875 3.8125,0.1875 5.53125,0.1875 6.875,-0.875 7.625,-2.828125 Z M 1.78125,-5.5625 c 0.203125,-1.40625 0.8125,-2.0625 1.90625,-2.0625 1.09375,0 1.53125,0.5 1.765625,2.0625 z m 1.625,-3.5625 2.75,-1.75 c 0.390625,-0.25 0.5625,-0.46875 0.5625,-0.75 0,-0.359375 -0.234375,-0.578125 -0.640625,-0.578125 -0.265625,0 -0.421875,0.09375 -0.75,0.40625 L 2.6875,-9.125 Z m 0,0" + id="path47" /> + </symbol> + </g> + <clipPath + id="clip1"> + <path + d="m 180,301 h 36.89844 v 37 H 180 Z m 0,0" + id="path52" /> + </clipPath> + <clipPath + id="clip2"> + <path + d="m 180,300 h 36.89844 v 38 H 180 Z m 0,0" + id="path55" /> + </clipPath> + <clipPath + id="clip3"> + <path + d="M 18,3 H 55 V 5 H 18 Z m 0,0" + id="path58" /> + </clipPath> + <clipPath + id="clip4"> + <path + d="M -0.800781,410.39844 H 218.19922 V -1.601562 H -0.800781 Z M 17.601562,0.5 v 7.199219 h 17.21875 L 20.417969,4.101562 34.820312,0.5 Z m 0,0" + id="path61" /> + </clipPath> + <clipPath + id="clip5"> + <path + d="m 180,12 h 36.89844 V 50 H 180 Z m 0,0" + id="path64" /> + </clipPath> + <clipPath + id="clip6"> + <path + d="m 49,147 h 78 v 2 H 49 Z m 0,0" + id="path67" /> + </clipPath> + <clipPath + id="clip7"> + <path + d="M -0.800781,410.39844 H 218.19922 V -1.601562 H -0.800781 Z M 49.101562,144.5 v 7.19922 h 17.21875 L 51.917969,148.10156 66.320312,144.5 Z m 0,0" + id="path70" /> + </clipPath> + <clipPath + id="clip8"> + <path + d="m 180,156 h 36.89844 v 38 H 180 Z m 0,0" + id="path73" /> + </clipPath> + <clipPath + id="clip9"> + <path + d="m 180,84 h 36.89844 v 38 H 180 Z m 0,0" + id="path76" /> + </clipPath> + <clipPath + id="clip10"> + <path + d="m 54,75 h 37 v 2 H 54 Z m 0,0" + id="path79" /> + </clipPath> + <clipPath + id="clip11"> + <path + d="M -0.800781,410.39844 H 218.19922 V -1.601562 H -0.800781 Z M 53.601562,72.5 v 7.199219 h 17.21875 L 56.417969,76.101562 70.820312,72.5 Z m 0,0" + id="path82" /> + </clipPath> + <clipPath + id="clip12"> + <path + d="m 126,219 h 37 v 2 h -37 z m 0,0" + id="path85" /> + </clipPath> + <clipPath + id="clip13"> + <path + d="M -0.800781,410.39844 H 218.19922 V -1.601562 H -0.800781 Z M 125.60156,216.5 v 7.19922 h 17.21875 L 128.42187,220.10156 142.82031,216.5 Z m 0,0" + id="path88" /> + </clipPath> + <clipPath + id="clip14"> + <path + d="m 180,372 h 36.89844 v 37.60156 H 180 Z m 0,0" + id="path91" /> + </clipPath> + <clipPath + id="clip15"> + <path + d="m 144,372 h 37 v 37.60156 h -37 z m 0,0" + id="path94" /> + </clipPath> + <clipPath + id="clip16"> + <path + d="m 108,372 h 37 v 37.60156 h -37 z m 0,0" + id="path97" /> + </clipPath> + <clipPath + id="clip17"> + <path + d="m 36,372 h 37 v 37.60156 H 36 Z m 0,0" + id="path100" /> + </clipPath> + <clipPath + id="clip18"> + <path + d="m 72,372 h 37 v 37.60156 H 72 Z m 0,0" + id="path103" /> + </clipPath> + <clipPath + id="clip19"> + <path + d="m 0,372 h 37 v 37.60156 H 0 Z m 0,0" + id="path106" /> + </clipPath> + <clipPath + id="clip20"> + <path + d="m 121,291 h 78 v 2 h -78 z m 0,0" + id="path109" /> + </clipPath> + <clipPath + id="clip21"> + <path + d="M -0.800781,410.39844 H 218.19922 V -1.601562 H -0.800781 Z M 121.10156,288.5 v 7.19922 h 17.21875 L 123.92188,292.10156 138.32031,288.5 Z m 0,0" + id="path112" /> + </clipPath> + <clipPath + id="clip22"> + <path + d="m 180,228 h 36.89844 v 38 H 180 Z m 0,0" + id="path115" /> + </clipPath> + </defs> + <use + xlink:href="#glyph0-13" + x="70.501999" + y="364.10001" + id="use382" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(-0.05000001,0.07642544)" /> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 36.45,49.177985 h 36 v -36 h -36 z m 0,0" + id="path132" /> + <use + xlink:href="#glyph0-1" + x="9.5" + y="35.599998" + id="use136" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(-0.05000001,0.07642544)" /> + <use + xlink:href="#glyph0-2" + x="18.5" + y="35.599998" + id="use138" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(-0.05000001,0.07642544)" /> + <use + xlink:href="#glyph0-2" + x="153.5" + y="35.599998" + id="use214" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(-0.05000001,0.07642544)" /> + <use + xlink:href="#glyph0-7" + x="162.5" + y="35.599998" + id="use216" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(-0.05000001,0.07642544)" /> + <use + xlink:href="#glyph0-5" + x="45.5" + y="35.599998" + id="use220" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(-0.05000001,0.07642544)" /> + <use + xlink:href="#glyph0-6" + x="189.5" + y="35.599998" + id="use288" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(-0.05000001,0.07642544)" /> + <use + xlink:href="#glyph0-4" + x="117.5" + y="35.599998" + id="use296" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(-31.26875,0.07642544)" /> + <use + xlink:href="#glyph0-3" + x="81.5" + y="35.599998" + id="use300" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(40.715625,0.07642544)" /> + <path + style="clip-rule:evenodd;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 54.45,4.1779854 h -36" + id="path304" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 34.770312,0.57642544 -14.402343,3.60155996 14.402343,3.59766 z m 0,0" + id="path310" /> + <path + style="clip-rule:nonzero;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 180.45,49.177985 h 36 v -36 h -36 z m 0,0" + id="path312" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 144.45,49.177985 h 36 v -36 h -36 z m 0,0" + id="path316" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 108.45,49.177985 h 36 v -36 h -36 z m 0,0" + id="path318" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 72.45,49.177985 h 36 v -36 h -36 z m 0,0" + id="path320" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="M 0.44999999,49.177985 H 36.45 v -36 H 0.44999999 Z m 0,0" + id="path322" /> + <g + id="g4165" + transform="translate(-0.05000001,0.07642544)"> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 108.5,168.75781 h 36 v -36 h -36 z m 0,0" + id="path128" /> + <use + xlink:href="#glyph0-3" + x="117.5" + y="179.60001" + id="use142" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(0,-24.34375)" /> + <use + xlink:href="#glyph0-4" + x="45.5" + y="179.60001" + id="use146" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(0,-24.34375)" /> + <use + xlink:href="#glyph0-1" + x="77" + y="179.60001" + id="use150" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(0,-24.34375)" /> + <use + xlink:href="#glyph0-2" + x="86" + y="179.60001" + id="use152" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(0,-24.34375)" /> + <use + xlink:href="#glyph0-5" + x="14" + y="179.60001" + id="use156" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(0,-24.34375)" /> + <use + xlink:href="#glyph0-6" + x="189.5" + y="179.60001" + id="use160" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(0,-24.34375)" /> + <use + xlink:href="#glyph0-2" + x="153.5" + y="179.60001" + id="use164" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(0,-24.34375)" /> + <use + xlink:href="#glyph0-7" + x="162.5" + y="179.60001" + id="use166" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(0,-24.34375)" /> + <path + style="clip-rule:evenodd;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="M 126.5,123.75781 H 50" + id="path324" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 66.320312,120.15625 -14.402343,3.60156 14.402343,3.59766 z m 0,0" + id="path330" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 36.5,168.75781 h 36 v -36 h -36 z m 0,0" + id="path332" /> + <path + style="clip-rule:nonzero;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 180.5,168.75781 h 36 v -36 h -36 z m 0,0" + id="path334" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 144.5,168.75781 h 36 v -36 h -36 z m 0,0" + id="path338" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 72.5,168.75781 h 36 v -36 h -36 z m 0,0" + id="path340" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 0.5,168.75781 h 36 v -36 h -36 z m 0,0" + id="path342" /> + </g> + <g + id="g1537" + transform="translate(-0.05000001,-12.09545)"> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 72.5,121.10156 h 36 v -36 h -36 z m 0,0" + id="path130" /> + <use + xlink:href="#glyph0-3" + x="122" + y="107.6" + id="use170" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" /> + <use + xlink:href="#glyph0-4" + x="86" + y="107.6" + id="use174" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" /> + <use + xlink:href="#glyph0-5" + x="14" + y="107.6" + id="use178" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" /> + <use + xlink:href="#glyph0-1" + x="45.5" + y="107.6" + id="use182" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" /> + <use + xlink:href="#glyph0-2" + x="54.5" + y="107.6" + id="use184" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" /> + <use + xlink:href="#glyph0-6" + x="189.5" + y="107.6" + id="use188" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" /> + <use + xlink:href="#glyph0-2" + x="153.5" + y="107.6" + id="use208" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" /> + <use + xlink:href="#glyph0-7" + x="162.5" + y="107.6" + id="use210" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 36.5,121.10156 h 36 v -36 h -36 z m 0,0" + id="path344" /> + <path + style="clip-rule:nonzero;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 180.5,121.10156 h 36 v -36 h -36 z m 0,0" + id="path346" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 144.5,121.10156 h 36 v -36 h -36 z m 0,0" + id="path350" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 108.5,121.10156 h 36 v -36 h -36 z m 0,0" + id="path352" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 0.5,121.10156 h 36 v -36 h -36 z m 0,0" + id="path354" /> + <path + style="clip-rule:evenodd;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 90.5,76.10156 h -36" + id="path356" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 70.820312,72.5 -14.402343,3.60156 14.402343,3.59766 z m 0,0" + id="path362" /> + </g> + <g + id="g4147" + transform="translate(-20.122045,-17.779335)"> + <use + xlink:href="#glyph0-1" + x="189.5" + y="395.60001" + id="use192" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-222.48799)" /> + <use + xlink:href="#glyph0-2" + x="198.5" + y="395.60001" + id="use194" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-222.48799)" /> + <use + xlink:href="#glyph0-2" + x="149" + y="395.60001" + id="use198" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-222.48799)" /> + <use + xlink:href="#glyph0-7" + x="158" + y="395.60001" + id="use200" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-222.48799)" /> + <use + xlink:href="#glyph0-6" + x="122" + y="395.60001" + id="use204" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-222.48799)" /> + <use + xlink:href="#glyph0-3" + x="50" + y="395.60001" + id="use224" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-222.48799)" /> + <use + xlink:href="#glyph0-5" + x="14" + y="395.60001" + id="use228" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-222.48799)" /> + <use + xlink:href="#glyph0-4" + x="86" + y="395.60001" + id="use292" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-222.48799)" /> + <use + xlink:href="#glyph0-8" + x="36.5" + y="364.10001" + id="use372" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-222.48799)" /> + <use + xlink:href="#glyph0-9" + x="43.501999" + y="364.10001" + id="use374" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-222.48799)" /> + <use + xlink:href="#glyph0-10" + x="52.501999" + y="364.10001" + id="use376" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-222.48799)" /> + <use + xlink:href="#glyph0-11" + x="57.506001" + y="364.10001" + id="use378" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-222.48799)" /> + <use + xlink:href="#glyph0-12" + x="62.509998" + y="364.10001" + id="use380" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-222.48799)" /> + <use + xlink:href="#glyph0-11" + x="75.001999" + y="364.10001" + id="use384" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-222.48799)" /> + <use + xlink:href="#glyph0-14" + x="80.005997" + y="364.10001" + id="use386" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-222.48799)" /> + <use + xlink:href="#glyph0-10" + x="86" + y="364.10001" + id="use388" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-222.48799)" /> + <use + xlink:href="#glyph0-15" + x="91.003998" + y="364.10001" + id="use390" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-222.48799)" /> + <use + xlink:href="#glyph0-12" + x="98.996002" + y="364.10001" + id="use392" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-222.48799)" /> + <path + style="clip-rule:nonzero;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 439.79137,186.61357 h 36 v -36 h -36 z m 0,0" + id="path396" /> + <path + style="clip-rule:nonzero;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 403.79137,186.61357 h 36 v -36 h -36 z m 0,0" + id="path400" /> + <path + style="clip-rule:nonzero;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 367.79137,186.61357 h 36 v -36 h -36 z m 0,0" + id="path404" /> + <path + style="clip-rule:nonzero;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 295.79137,186.61357 h 36 v -36 h -36 z m 0,0" + id="path408" /> + <path + style="clip-rule:nonzero;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 331.79137,186.61357 h 36 v -36 h -36 z m 0,0" + id="path412" /> + <path + style="clip-rule:nonzero;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 259.79137,186.61357 h 36 v -36 h -36 z m 0,0" + id="path416" /> + </g> + <g + id="g4103" + transform="translate(-20.122045,-0.60408956)"> + <path + style="clip-rule:nonzero;fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:none" + d="m 439.79137,109.6102 h 36 V 73.610197 h -36 z m 0,0" + id="path120" /> + <path + style="clip-rule:nonzero;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 439.79137,109.6102 h 36 V 73.610197 h -36 z m 0,0" + id="path124" /> + <use + xlink:href="#glyph0-2" + x="117.5" + y="323.60001" + id="use232" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-227.49136)" /> + <use + xlink:href="#glyph0-7" + x="126.5" + y="323.60001" + id="use234" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-227.49136)" /> + <use + xlink:href="#glyph0-1" + x="153.5" + y="323.60001" + id="use238" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-227.49136)" /> + <use + xlink:href="#glyph0-2" + x="162.5" + y="323.60001" + id="use240" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-227.49136)" /> + <use + xlink:href="#glyph0-6" + x="189.5" + y="323.60001" + id="use244" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-227.49136)" /> + <use + xlink:href="#glyph0-4" + x="86" + y="323.60001" + id="use248" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-227.49136)" /> + <use + xlink:href="#glyph0-3" + x="50" + y="323.60001" + id="use252" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-227.49136)" /> + <use + xlink:href="#glyph0-5" + x="14" + y="323.60001" + id="use256" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-227.49136)" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 403.79137,109.6102 h 36 V 73.610197 h -36 z m 0,0" + id="path420" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 367.79137,109.6102 h 36 V 73.610197 h -36 z m 0,0" + id="path422" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 295.79137,109.6102 h 36 V 73.610197 h -36 z m 0,0" + id="path424" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 331.79137,109.6102 h 36 V 73.610197 h -36 z m 0,0" + id="path426" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 259.79137,109.6102 h 36 V 73.610197 h -36 z m 0,0" + id="path428" /> + <path + style="clip-rule:evenodd;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 457.79137,64.610197 h -76.5" + id="path430" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 397.61168,61.008637 -14.39843,3.60156 14.39843,3.59766 z m 0,0" + id="path436" /> + </g> + <g + id="g4121" + transform="translate(-20.122045,0.56441844)"> + <path + style="fill:#85cfff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 403.79137,48.613567 h 36 v -36 h -36 z m 0,0" + id="path134" /> + <use + xlink:href="#glyph0-1" + x="117.5" + y="251.60001" + id="use260" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-216.48799)" /> + <use + xlink:href="#glyph0-2" + x="126.5" + y="251.60001" + id="use262" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-216.48799)" /> + <use + xlink:href="#glyph0-4" + x="86" + y="251.60001" + id="use266" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-216.48799)" /> + <use + xlink:href="#glyph0-3" + x="50" + y="251.60001" + id="use270" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-216.48799)" /> + <use + xlink:href="#glyph0-5" + x="14" + y="251.60001" + id="use274" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-216.48799)" /> + <use + xlink:href="#glyph0-6" + x="189.5" + y="251.60001" + id="use278" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-216.48799)" /> + <use + xlink:href="#glyph0-2" + x="153.5" + y="251.60001" + id="use282" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-216.48799)" /> + <use + xlink:href="#glyph0-7" + x="162.5" + y="251.60001" + id="use284" + width="100%" + height="100%" + style="fill:#000000;fill-opacity:1" + transform="translate(259.29137,-216.48799)" /> + <path + style="clip-rule:evenodd;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 421.79137,3.6135668 h -36" + id="path364" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 402.11168,0.01200676 -14.39843,3.60156004 14.39843,3.59766 z m 0,0" + id="path370" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 367.79137,48.613567 h 36 v -36 h -36 z m 0,0" + id="path438" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 295.79137,48.613567 h 36 v -36 h -36 z m 0,0" + id="path440" /> + <path + style="clip-rule:nonzero;fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 439.79137,48.613567 h 36 v -36 h -36 z m 0,0" + id="path442" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 331.79137,48.613567 h 36 v -36 h -36 z m 0,0" + id="path446" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" + d="m 259.79137,48.613567 h 36 v -36 h -36 z m 0,0" + id="path448" /> + </g> +</svg>