Initial commit
This commit is contained in:
commit
05cd190c53
155 changed files with 49378 additions and 0 deletions
59
content/blog/minitel/index.eo.md
Normal file
59
content/blog/minitel/index.eo.md
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
+++
|
||||
title = "Minitel kiel terminalo GNU/Linux"
|
||||
date = 2022-05-15
|
||||
description = "Ankoraŭ provo uzi Minitel kiel terminalo."
|
||||
draft=true
|
||||
[taxonomies]
|
||||
tags = ["Minitel", "retro", "Arduino"]
|
||||
+++
|
||||
|
||||
**Celo: uzi unu [Minitel](https://eo.wikipedia.org/wiki/Minitel) kiel terminalo de sistemo GNU/Linux.**
|
||||
|
||||
{{ float_img(alt="Minitel elmontranta la logotipon de Rust.", src="minitel_rust.jpg", style="max-height:100vh;max-width:min(800px,100%)") }}
|
||||
|
||||
Ĉi tio artikolo publikiĝis en la franclingva revuo [_Programmez!_ #256](https://www.programmez.com/magazine/programmez-253-pdf), kio enhavas multajn artikolojn pri la Minitel kaj sia interfacaĵo.
|
||||
|
||||
## 😎 La erao de la ĉirkaŭ-komputiko {#ĉirkaŭ-komputiko}
|
||||
|
||||
La Minitel enhavas ĉirkaŭ-komputikan kontaktilon (france "prise péri-informatique"), kiu estas eneligo. Por komuniki kun ĝi, sufiĉas seria interfaco. Do mi uzis Arduinon kiel ponto inter Minitel kaj komputilo. Zorgu tamen, necesas Arduino kun multaj seriaj interfacoj (ekzemple la Mega). Ĉi tio evitas al ni programi serian pelilon. La normo ĉirkaŭ-komputiko uzas preskaŭ ASCII 7-bitoj en bitokoj. La fortpeza bito estas la kontrolsumo.
|
||||
|
||||
## 🔌 Elektroniko {#elektroniko}
|
||||
|
||||
{{ float_img(alt="Konektoskemo", src="minitel_wiring.svg", style="width:300px;background-color:#fff") }}
|
||||
|
||||
* Konektu la GND de la Minitel (stifto 2, en la medio) al GND de la Arduino;
|
||||
* Konektu la RX de la Minitel (stifto 1, en la tute maldekstro de GND) al TX1 de la Arduino;
|
||||
* Konektu la RX1 de la Arduino al TX de la Minitel (stifto 3, en la tute dekstro de GND) tra 220Ω rezistilo, kaj al +5V tra _pull-up_ 2200Ω rezistilo (ĉiu valoro inter 1kΩ kaj 20kΩ devus funkcii). La rezistilo necesas ĉar la eligo de la Minitel estas +8,5V.
|
||||
|
||||
## 💻️ Programaro {#programaro}
|
||||
|
||||
Unue mi programis kontrolilon en Python. Ĝi simulas terminalon, kun USB kiel eneligo. Ĝi legas komandan linion, kaj ĝin efektivigas kiam la klavo "Sendo" frapiĝas.
|
||||
|
||||
{{ float_img(alt="Minitel ekmontranta la logotipon de Rust.", src="minitel_fortune.jpg", style="max-height:100vh;max-width:min(800px,100%)") }}
|
||||
|
||||
Tio sola malfaciligis:
|
||||
|
||||
* Ne estas klavo "Novan Linion". Nur klavo "Ĉaretrevenigo". Sed feliĉe estas la bitoko "Novan Linion", ni do povas uzi CRLF.
|
||||
* Il n'y a pas de touche Nouvelle Ligne. Seulement une touche Retour Chariot. Mais par miracle le caractère Nouvelle Ligne existe, on peut donc utiliser du CRLF. Ça veut dire qu'il faut interpréter la touche Envoi (qui a un code sur deux octets) comme LF, et transformer les LF venant de Linux en CRLF.
|
||||
* Les accents ne sont pas standard. Une lettre accentuée fait trois octets : un qui indique un caractère spécial, un qui spécifie l'accent, et la lettre. Et attention ! On a droit aux majuscules accentuées (coucou Windows, le Minitel fait une chose mieux que toi), mais seulement les accents franchouillards. La piñata et le glacier [würmien](https://fr.wiktionary.org/wiki/würmien) n'ont pas la nationalité.
|
||||
* Le clavier est en majuscule, et les minuscules demandent l'appui de Maj. Si on veut inverser ce comportement, on doit pour chaque lettre arrivant au contrôleur, renvoyer un retour arrière puis la lettre en casse inversée. On voit le clignotement à l'écran et ça oblige à taper assez lentement pour que la réécriture ait le temps de s'opérer.
|
||||
* Le port péri-informatique supporte 1200 bit/s, soit un rafraîchissement complet de l'écran en plus de 6 secondes. Certains modèles sont plus rapides, jusqu'à 9600 bit/s. Cette lenteur oblige à optimiser l'affichage pour plus d'immédiateté. On ne peut pas rafraîchir tout l'écran en permanence, il faut envoyer uniquement les caractères qui changent. Donc s'il y a un bug (un imprévu dans le programme, un problème de signal, un utilisateur qui tape trop vite), l'écran ne sera pas dans l'état attendu, et le programme, qui n'a aucun moyen de le savoir, continuera même s'il écrit n'importe quoi.
|
||||
* En mode semi-graphique, les caractères sont remplacés par une grille de 2×3 pixels. On peut alors dessiner, en convertissant les images correctement. On a même quelques nuances de gris ! (pas 50 mais c'est déjà bien) L'inconvénient, c'est que le changement de couleur agit sur le caractère entier, soit 6 pixels, et non sur chaque pixel individuellement. La gestion de la couleur est donc un peu délicate.
|
||||
* Si l'affichage est modifié en permanence, par exemple dans un jeu de Snake pour déplacer le serpent, l'appui de n'importe quelle touche peut interférer avec un caractère spécial de plusieurs octets envoyé par le contrôleur. Il en résulte un comportement imprévisible, et souvent un caractère aléatoire qui s'affiche. C'est pourquoi dans le Snake et dans le Tetris que j'ai faits, l'écran se retrouve vite constellé de caractères. J'ai essayé de nettoyer des petites parties différentes de l'écran en permanence, par exemple ligne par ligne, mais cela prend trop de temps, réduit la réactivité du jeu et n'est pas très efficace.
|
||||
* L'écran est très petit, 40×24 caractères seulement. Aussi, il ne défile pas mais reboucle en haut quand le curseur arrive en bas. Il n'est donc pas vraiment adapté à un terminal de type Unix. Il faut soit créer un système de pagination, qui nettoie l'écran à chaque page, soit accepter de reboucler et nettoyer la fin de la ligne.
|
||||
* Certains caractères manquent, comme la barre verticale `|`. Cette dernière étant indispensable dans un terminal, j'ai décidé de la substituer aux accents circonflexes `^` qui sont bizarrement affichés `↑` sur le Minitel.
|
||||
* Côté Linux ce n'est pas facile non plus... Il faut pouvoir indiquer aux programmes la taille du terminal, qu'ils comprennent qu'ils sont dans un terminal et non dans un script, pour que par exemple bash écrive son invite de commande (_prompt_), gérer le retour arrière (qui n'est pas géré directement par bash), etc.
|
||||
|
||||
Toutes ces contraintes rendent la conception d'un terminal générique compliquée. Il faut que chaque programme adapte sa gestion du clavier et de l'affichage, car les besoins sont différents pour un utilitaire en ligne de commande, un éditeur de texte, une messagerie instantanée ou un jeu en temps réel.
|
||||
|
||||
On m'a donc donné l'idée d'une approche différente : plutôt que d'envoyer la sortie des programmes au Minitel, on garde un tampon de l'écran du Minitel en mémoire. C'est un tableau de l'état de chaque caractère, dont le mode texte ou semi-graphique, la couleur, le clignotement, le code du caractère, etc. Les programmes écrivent dedans, puis demandent au contrôleur de l'envoyer. Au prix de calculs plus lents (ce qui reste négligeable), l'algorithme cherche alors à envoyer le moins de données possibles. Les caractères inchangés ne sont pas renvoyés, on profite de l'instruction plaçant le curseur à la position donnée et de celle permettant de répéter les N derniers caractères.
|
||||
|
||||
J'ai implémenté ce nouveau contrôleur en [Rust](https://www.rust-lang.org/) (un langage bas-niveau offrant des abstractions haut-niveau sans coût et la sécurité de la mémoire), ce qui permet un code plus propre, sûr et rapide qu'en Python. C'est une bibliothèque réutilisable (publiée sous licence libre GNU AGPL), que j'ai pu utiliser pour faire un terminal, un Tetris et un Snake.
|
||||
|
||||
Au prix de [quelques nanosieverts](https://en.wikipedia.org/w/index.php?title=Cathode-ray_tube&oldid=1087446467#Ionizing_radiation) et d'un ultrason désagréable, cette petite aventure rétro m'a plongé dans une époque que je n'ai pas connue, [quoique j'y vis peut-être encore](https://framatube.org/w/9a8642c0-62f0-4060-95e4-088de9c5db00).
|
||||
|
||||
Ressources utiles :
|
||||
* [Dépôt Git du code du projet](https://git.jeunes-science.asso.fr/tuxmain/Minitel)
|
||||
* [Notice du Minitel 1 Bistandard (PDF)](https://wiki.labomedia.org/images/c/c7/Minitel1BAlcatel1.pdf)
|
||||
* [Table des codes de programmation du Minitel](http://millevaches.hydraule.org/info/minitel/specs/codes.htm)
|
||||
* [Jeunes-Science Bordeaux](https://www.jeunes-science.asso.fr/), club de loisirs scientifiques, disposant entre autres de pièces de collection telles que le Minitel qui a été utilisé pour réaliser ce projet.
|
||||
57
content/blog/minitel/index.fr.md
Normal file
57
content/blog/minitel/index.fr.md
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
+++
|
||||
title = "Le Minitel comme terminal GNU/Linux"
|
||||
date = 2022-07-02
|
||||
description = "Encore une tentative d'utilisation d'un Minitel comme terminal."
|
||||
[taxonomies]
|
||||
tags = ["Minitel", "rétro", "Arduino"]
|
||||
+++
|
||||
|
||||
**Objectif : utiliser un [Minitel](https://fr.wikipedia.org/wiki/Minitel) comme terminal d'un système GNU/Linux.**
|
||||
|
||||
{{ float_img(alt="Minitel affichant le logo de Rust.", src="minitel_rust.jpg", style="max-height:100vh;max-width:min(800px,100%)") }}
|
||||
|
||||
Cet article est paru dans le magazine [_Programmez!_ #256](https://www.programmez.com/magazine/programmez-253-pdf), qui contient plusieurs autres articles concernant le Minitel et son interfaçage.
|
||||
|
||||
## 😎 L'ère de la péri-informatique {#péri-informatique}
|
||||
|
||||
Le Minitel dispose d'une prise "péri-informatique", qui est un port série d'entrée-sortie. Il suffit pour communiquer avec d'une interface série. J'ai donc utilisé une Arduino comme pont entre le Minitel et l'ordinateur. Mais attention, il faut un Arduino possédant plusieurs interfaces série (comme le Mega). Cela nous évite d'avoir à coder un pilote série logiciel. Le standard péri-informatique utilise à peu près de l'ASCII 7 bits et un découpage en octets. Le bit de poids fort est la somme de contrôle des 7 autres.
|
||||
|
||||
## 🔌 Électronique {#électronique}
|
||||
|
||||
{{ float_img(alt="Schéma du branchement", src="minitel_wiring.svg", style="width:300px;background-color:#fff") }}
|
||||
|
||||
* Connectez le GND du Minitel (pin 2, celui du milieu) au GND de l'Arduino ;
|
||||
* Connectez le RX du Minitel (pin 1, tout à gauche du GND) au TX1 de l'Arduino ;
|
||||
* Connectez le RX1 de l'Arduino au TX du Minitel (pin 3, tout à droite du GND) à travers une résistance de 220Ω, et au +5V à travers une résistance pull-up de 2200Ω (toute valeur entre 1kΩ et 20kΩ devrait marcher). La résistance est nécessaire car la sortie du Minitel est en +8,5V.
|
||||
|
||||
## 💻️ Logiciel {#logiciel}
|
||||
|
||||
J'ai d'abord codé un contrôleur en Python. C'est une sorte d'émulateur de terminal, avec le port USB comme entrée-sortie. Il prend une ligne de commande et l'exécute à l'appui de la touche Envoi.
|
||||
|
||||
{{ float_img(alt="Minitel affichant le logo de Rust.", src="minitel_fortune.jpg", style="max-height:100vh;max-width:min(800px,100%)") }}
|
||||
|
||||
Rien que ça demandait de surmonter plusieurs difficultés :
|
||||
|
||||
* Il n'y a pas de touche Nouvelle Ligne. Seulement une touche Retour Chariot. Mais par miracle le caractère Nouvelle Ligne existe, on peut donc utiliser du CRLF. Ça veut dire qu'il faut interpréter la touche Envoi (qui a un code sur deux octets) comme LF, et transformer les LF venant de Linux en CRLF.
|
||||
* Les accents ne sont pas standard. Une lettre accentuée fait trois octets : un qui indique un caractère spécial, un qui spécifie l'accent, et la lettre. Et attention ! On a droit aux majuscules accentuées (coucou Windows, le Minitel te surpasse), mais seulement les accents franchouillards. La piñata et le glacier [würmien](https://fr.wiktionary.org/wiki/würmien) n'ont pas la nationalité.
|
||||
* Le clavier est en majuscule, et les minuscules demandent l'appui de Maj. Si on veut inverser ce comportement, on doit pour chaque lettre arrivant au contrôleur, renvoyer un retour arrière puis la lettre en casse inversée. On voit le clignotement à l'écran et ça oblige à taper assez lentement pour que la réécriture ait le temps de s'opérer.
|
||||
* Le port péri-informatique supporte 1200 bit/s, soit un rafraîchissement complet de l'écran en plus de 6 secondes. Certains modèles sont plus rapides, jusqu'à 9600 bit/s. Cette lenteur oblige à optimiser l'affichage pour plus d'immédiateté. On ne peut pas rafraîchir tout l'écran en permanence, il faut envoyer uniquement les caractères qui changent. Donc s'il y a un bug (un imprévu dans le programme, un problème de signal, un utilisateur qui tape trop vite), l'écran ne sera pas dans l'état attendu, et le programme, qui n'a aucun moyen de le savoir, continuera même s'il écrit n'importe quoi.
|
||||
* En mode semi-graphique, les caractères sont remplacés par une grille de 2×3 pixels. On peut alors dessiner, en convertissant les images correctement. On a même quelques nuances de gris ! (pas 50 mais c'est déjà bien) L'inconvénient, c'est que le changement de couleur agit sur le caractère entier, soit 6 pixels, et non sur chaque pixel individuellement. La gestion de la couleur est donc un peu délicate.
|
||||
* Si l'affichage est modifié en permanence, par exemple dans un jeu de Snake pour déplacer le serpent, l'appui de n'importe quelle touche peut interférer avec un caractère spécial de plusieurs octets envoyé par le contrôleur. Il en résulte un comportement imprévisible, et souvent un caractère aléatoire qui s'affiche. C'est pourquoi dans le Snake et dans le Tetris que j'ai faits, l'écran se retrouve vite constellé de caractères. J'ai essayé de nettoyer des petites parties différentes de l'écran en permanence, par exemple ligne par ligne, mais cela prend trop de temps, réduit la réactivité du jeu et n'est pas très efficace.
|
||||
* L'écran est très petit, 40×24 caractères seulement. Aussi, il ne défile pas mais reboucle en haut quand le curseur arrive en bas. Il n'est donc pas vraiment adapté à un terminal de type Unix. Il faut soit créer un système de pagination, qui nettoie l'écran à chaque page, soit accepter de reboucler et nettoyer la fin de la ligne.
|
||||
* Certains caractères manquent, comme la barre verticale `|`. Cette dernière étant indispensable dans un terminal, j'ai décidé de la substituer aux accents circonflexes `^` qui sont bizarrement affichés `↑` sur le Minitel.
|
||||
* Côté Linux ce n'est pas facile non plus... Il faut pouvoir indiquer aux programmes la taille du terminal, qu'ils comprennent qu'ils sont dans un terminal et non dans un script, pour que par exemple bash écrive son invite de commande (_prompt_), gérer le retour arrière (qui n'est pas géré directement par bash), etc.
|
||||
|
||||
Toutes ces contraintes rendent la conception d'un terminal générique compliquée. Il faut que chaque programme adapte sa gestion du clavier et de l'affichage, car les besoins sont différents pour un utilitaire en ligne de commande, un éditeur de texte, une messagerie instantanée ou un jeu en temps réel.
|
||||
|
||||
On m'a donc donné l'idée d'une approche différente : plutôt que d'envoyer la sortie des programmes au Minitel, on garde un tampon de l'écran du Minitel en mémoire. C'est un tableau de l'état de chaque caractère, dont le mode texte ou semi-graphique, la couleur, le clignotement, le code du caractère, etc. Les programmes écrivent dedans, puis demandent au contrôleur de l'envoyer. Au prix de calculs plus lents (ce qui reste négligeable), l'algorithme cherche alors à envoyer le moins de données possibles. Les caractères inchangés ne sont pas renvoyés, on profite de l'instruction plaçant le curseur à la position donnée et de celle permettant de répéter les N derniers caractères.
|
||||
|
||||
J'ai implémenté ce nouveau contrôleur en [Rust](https://www.rust-lang.org/) (un langage bas-niveau offrant des abstractions haut-niveau sans coût et la sécurité de la mémoire), ce qui permet un code plus propre, sûr et rapide qu'en Python. C'est une bibliothèque réutilisable (publiée sous licence libre GNU AGPL), que j'ai pu utiliser pour faire un terminal, un Tetris et un Snake.
|
||||
|
||||
Au prix de [quelques nanosieverts](https://en.wikipedia.org/w/index.php?title=Cathode-ray_tube&oldid=1087446467#Ionizing_radiation) et d'un ultrason désagréable, cette petite aventure rétro m'a plongé dans une époque que je n'ai pas connue, [quoique j'y vis peut-être encore](https://framatube.org/w/9a8642c0-62f0-4060-95e4-088de9c5db00).
|
||||
|
||||
Ressources utiles :
|
||||
* [Dépôt Git du code du projet](https://git.jeunes-science.asso.fr/tuxmain/Minitel)
|
||||
* [Notice du Minitel 1 Bistandard (PDF)](https://wiki.labomedia.org/images/c/c7/Minitel1BAlcatel1.pdf)
|
||||
* [Table des codes de programmation du Minitel](http://millevaches.hydraule.org/info/minitel/specs/codes.htm)
|
||||
* [Jeunes-Science Bordeaux](https://www.jeunes-science.asso.fr/), club de loisirs scientifiques, disposant entre autres de pièces de collection telles que le Minitel qui a été utilisé pour réaliser ce projet.
|
||||
BIN
content/blog/minitel/minitel_fortune.jpg
Normal file
BIN
content/blog/minitel/minitel_fortune.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 MiB |
BIN
content/blog/minitel/minitel_rust.jpg
Normal file
BIN
content/blog/minitel/minitel_rust.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.1 MiB |
BIN
content/blog/minitel/minitel_snake.jpg
Normal file
BIN
content/blog/minitel/minitel_snake.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.3 MiB |
BIN
content/blog/minitel/minitel_tetris.jpg
Normal file
BIN
content/blog/minitel/minitel_tetris.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.4 MiB |
749
content/blog/minitel/minitel_wiring.svg
Normal file
749
content/blog/minitel/minitel_wiring.svg
Normal file
|
|
@ -0,0 +1,749 @@
|
|||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
version="1.1"
|
||||
width="4.000500cm" height="4.000500cm" viewBox="0 0 15750 15750">
|
||||
<title>SVG Picture created as minitel_wiring.svg date 2022/05/09 20:38:52 </title>
|
||||
<desc>Picture generated by Eeschema-SVG </desc>
|
||||
<g style="fill:#000000; fill-opacity:1.000000;stroke:#000000; stroke-opacity:1.000000;
|
||||
stroke-linecap:round; stroke-linejoin:round;"
|
||||
transform="translate(0 0) scale(1 1)">
|
||||
</g>
|
||||
<g style="fill:#000000; fill-opacity:0.0;
|
||||
stroke:#000000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<g >
|
||||
</g>
|
||||
<g style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
</g>
|
||||
<g style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:100.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<path d="M4000.012296 10499.962942 A2018.228346 2018.228346 0.0 0 0 5699.029252 12499.834408" />
|
||||
</g>
|
||||
<g style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<circle cx="4800.000000" cy="10500.000000" r="200.000000" />
|
||||
<circle cx="5100.000000" cy="9600.000000" r="200.000000" />
|
||||
<path style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;fill:none"
|
||||
d="M 4000.000000,10500.000000
|
||||
4600.000000,10500.000000
|
||||
" />
|
||||
<path style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;fill:none"
|
||||
d="M 6000.000000,8500.000000
|
||||
6000.000000,9000.000000
|
||||
" />
|
||||
<path style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;fill:none"
|
||||
d="M 8000.000000,10500.000000
|
||||
7400.000000,10500.000000
|
||||
" />
|
||||
<path style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;fill:none"
|
||||
d="M 4000.000000,9500.000000
|
||||
4300.000000,9500.000000
|
||||
4900.000000,9600.000000
|
||||
" />
|
||||
<path style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;fill:none"
|
||||
d="M 8000.000000,9500.000000
|
||||
7700.000000,9500.000000
|
||||
7100.000000,9600.000000
|
||||
" />
|
||||
</g>
|
||||
<g style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:100.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<path style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:100.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;fill:none"
|
||||
d="M 5700.000000,12450.000000
|
||||
5700.000000,12150.000000
|
||||
6300.000000,12150.000000
|
||||
6300.000000,12450.000000
|
||||
" />
|
||||
</g>
|
||||
<g style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<circle cx="6000.000000" cy="9200.000000" r="200.000000" />
|
||||
</g>
|
||||
<g style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:100.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<path d="M6301.115055 12499.813369 A2005.826772 2005.826772 0.0 0 0 8000.002364 10500.094507" />
|
||||
</g>
|
||||
<g style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<circle cx="6900.000000" cy="9600.000000" r="200.000000" />
|
||||
<circle cx="7200.000000" cy="10500.000000" r="200.000000" />
|
||||
</g>
|
||||
<g style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:100.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<path d="M7999.996954 10496.509343 A2000.000000 2000.000000 0.0 0 0 4000.003046 10496.509343" />
|
||||
</g>
|
||||
<g style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<path d="M4000 10500
|
||||
L3000 10500
|
||||
" />
|
||||
<text x="3500.000000" y="10400.000000"
|
||||
textLength="606.181102" font-size="666.653543" lengthAdjust="spacingAndGlyphs"
|
||||
text-anchor="middle" opacity="0">1</text>
|
||||
<g class="stroked-text"><desc>1</desc>
|
||||
<path d="M3642 10376
|
||||
L3357 10376
|
||||
" />
|
||||
<path d="M3500 10376
|
||||
L3500 9876
|
||||
L3452 9947
|
||||
L3404 9995
|
||||
L3357 10019
|
||||
" />
|
||||
</g><path d="M6000 8500
|
||||
L6000 7500
|
||||
" />
|
||||
<g transform="rotate(-90.000000 5900.000000 8000.000000)">
|
||||
<text x="5900.000000" y="8000.000000"
|
||||
textLength="536.181102" font-size="666.653543" lengthAdjust="spacingAndGlyphs"
|
||||
text-anchor="middle" opacity="0">2</text>
|
||||
</g>
|
||||
<g class="stroked-text"><desc>2</desc>
|
||||
<path d="M5423 8142
|
||||
L5400 8119
|
||||
L5376 8071
|
||||
L5376 7952
|
||||
L5400 7904
|
||||
L5423 7880
|
||||
L5471 7857
|
||||
L5519 7857
|
||||
L5590 7880
|
||||
L5876 8166
|
||||
L5876 7857
|
||||
" />
|
||||
</g><path d="M8000 10500
|
||||
L9000 10500
|
||||
" />
|
||||
<text x="8500.000000" y="10400.000000"
|
||||
textLength="536.181102" font-size="666.653543" lengthAdjust="spacingAndGlyphs"
|
||||
text-anchor="middle" opacity="0">3</text>
|
||||
<g class="stroked-text"><desc>3</desc>
|
||||
<path d="M8333 9876
|
||||
L8642 9876
|
||||
L8476 10066
|
||||
L8547 10066
|
||||
L8595 10090
|
||||
L8619 10114
|
||||
L8642 10161
|
||||
L8642 10280
|
||||
L8619 10328
|
||||
L8595 10352
|
||||
L8547 10376
|
||||
L8404 10376
|
||||
L8357 10352
|
||||
L8333 10328
|
||||
" />
|
||||
</g><path d="M4000 9500
|
||||
L3000 9500
|
||||
" />
|
||||
<text x="3500.000000" y="9400.000000"
|
||||
textLength="536.181102" font-size="666.653543" lengthAdjust="spacingAndGlyphs"
|
||||
text-anchor="middle" opacity="0">4</text>
|
||||
<g class="stroked-text"><desc>4</desc>
|
||||
<path d="M3595 9042
|
||||
L3595 9376
|
||||
" />
|
||||
<path d="M3476 8852
|
||||
L3357 9209
|
||||
L3666 9209
|
||||
" />
|
||||
</g><path d="M8000 9500
|
||||
L9000 9500
|
||||
" />
|
||||
<text x="8500.000000" y="9400.000000"
|
||||
textLength="536.181102" font-size="666.653543" lengthAdjust="spacingAndGlyphs"
|
||||
text-anchor="middle" opacity="0">5</text>
|
||||
<g class="stroked-text"><desc>5</desc>
|
||||
<path d="M8619 8876
|
||||
L8380 8876
|
||||
L8357 9114
|
||||
L8380 9090
|
||||
L8428 9066
|
||||
L8547 9066
|
||||
L8595 9090
|
||||
L8619 9114
|
||||
L8642 9161
|
||||
L8642 9280
|
||||
L8619 9328
|
||||
L8595 9352
|
||||
L8547 9376
|
||||
L8428 9376
|
||||
L8380 9352
|
||||
L8357 9328
|
||||
" />
|
||||
</g></g>
|
||||
<g style="fill:#008484; fill-opacity:0.0;
|
||||
stroke:#008484; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<text x="6000.039370" y="13749.960630"
|
||||
textLength="2536.181102" font-size="666.653543" lengthAdjust="spacingAndGlyphs"
|
||||
text-anchor="middle" opacity="0">Minitel</text>
|
||||
<g class="stroked-text"><desc>Minitel</desc>
|
||||
<path d="M4880 13726
|
||||
L4880 13226
|
||||
L5047 13583
|
||||
L5214 13226
|
||||
L5214 13726
|
||||
" />
|
||||
<path d="M5452 13726
|
||||
L5452 13392
|
||||
" />
|
||||
<path d="M5452 13226
|
||||
L5428 13249
|
||||
L5452 13273
|
||||
L5476 13249
|
||||
L5452 13226
|
||||
L5452 13273
|
||||
" />
|
||||
<path d="M5690 13392
|
||||
L5690 13726
|
||||
" />
|
||||
<path d="M5690 13440
|
||||
L5714 13416
|
||||
L5761 13392
|
||||
L5833 13392
|
||||
L5880 13416
|
||||
L5904 13464
|
||||
L5904 13726
|
||||
" />
|
||||
<path d="M6142 13726
|
||||
L6142 13392
|
||||
" />
|
||||
<path d="M6142 13226
|
||||
L6119 13249
|
||||
L6142 13273
|
||||
L6166 13249
|
||||
L6142 13226
|
||||
L6142 13273
|
||||
" />
|
||||
<path d="M6309 13392
|
||||
L6500 13392
|
||||
" />
|
||||
<path d="M6380 13226
|
||||
L6380 13654
|
||||
L6404 13702
|
||||
L6452 13726
|
||||
L6500 13726
|
||||
" />
|
||||
<path d="M6857 13702
|
||||
L6809 13726
|
||||
L6714 13726
|
||||
L6666 13702
|
||||
L6642 13654
|
||||
L6642 13464
|
||||
L6666 13416
|
||||
L6714 13392
|
||||
L6809 13392
|
||||
L6857 13416
|
||||
L6880 13464
|
||||
L6880 13511
|
||||
L6642 13559
|
||||
" />
|
||||
<path d="M7166 13726
|
||||
L7119 13702
|
||||
L7095 13654
|
||||
L7095 13226
|
||||
" />
|
||||
</g></g>
|
||||
</g>
|
||||
<g style="fill:#008484; fill-opacity:0.0;
|
||||
stroke:#008484; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<g >
|
||||
</g>
|
||||
<g style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<path style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;fill:none"
|
||||
d="M 9700.000000,4000.000000
|
||||
10000.000000,3500.000000
|
||||
" />
|
||||
<path style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;fill:none"
|
||||
d="M 10000.000000,4500.000000
|
||||
10000.000000,3500.000000
|
||||
" />
|
||||
<path style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;fill:none"
|
||||
d="M 10000.000000,3500.000000
|
||||
10300.000000,4000.000000
|
||||
" />
|
||||
</g>
|
||||
<g style="fill:#008484; fill-opacity:0.0;
|
||||
stroke:#008484; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<text x="10000.000000" y="2749.960630"
|
||||
textLength="1583.818898" font-size="666.653543" lengthAdjust="spacingAndGlyphs"
|
||||
text-anchor="middle" opacity="0">+5V</text>
|
||||
<g class="stroked-text"><desc>+5V</desc>
|
||||
<path d="M9357 2535
|
||||
L9738 2535
|
||||
" />
|
||||
<path d="M9547 2726
|
||||
L9547 2345
|
||||
" />
|
||||
<path d="M10214 2226
|
||||
L9976 2226
|
||||
L9952 2464
|
||||
L9976 2440
|
||||
L10023 2416
|
||||
L10142 2416
|
||||
L10190 2440
|
||||
L10214 2464
|
||||
L10238 2511
|
||||
L10238 2630
|
||||
L10214 2678
|
||||
L10190 2702
|
||||
L10142 2726
|
||||
L10023 2726
|
||||
L9976 2702
|
||||
L9952 2678
|
||||
" />
|
||||
<path d="M10380 2226
|
||||
L10547 2726
|
||||
L10714 2226
|
||||
" />
|
||||
</g></g>
|
||||
</g>
|
||||
<g style="fill:#008484; fill-opacity:0.0;
|
||||
stroke:#008484; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<g >
|
||||
</g>
|
||||
<g style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
</g>
|
||||
<g style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:100.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<rect x="9600.000000" y="5000.000000" width="800.000000" height="2000.000000" rx="0.000000" />
|
||||
</g>
|
||||
<g style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<path d="M10000 5000
|
||||
L10000 4500
|
||||
" />
|
||||
<path d="M10000 7000
|
||||
L10000 7500
|
||||
" />
|
||||
</g>
|
||||
<g style="fill:#008484; fill-opacity:0.0;
|
||||
stroke:#008484; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<text x="11519.330709" y="5749.921260"
|
||||
textLength="1036.181102" font-size="666.653543" lengthAdjust="spacingAndGlyphs"
|
||||
text-anchor="middle" opacity="0">R2</text>
|
||||
<g class="stroked-text"><desc>R2</desc>
|
||||
<path d="M11435 5726
|
||||
L11269 5487
|
||||
" />
|
||||
<path d="M11150 5726
|
||||
L11150 5226
|
||||
L11340 5226
|
||||
L11388 5249
|
||||
L11412 5273
|
||||
L11435 5321
|
||||
L11435 5392
|
||||
L11412 5440
|
||||
L11388 5464
|
||||
L11340 5487
|
||||
L11150 5487
|
||||
" />
|
||||
<path d="M11626 5273
|
||||
L11650 5249
|
||||
L11697 5226
|
||||
L11816 5226
|
||||
L11864 5249
|
||||
L11888 5273
|
||||
L11912 5321
|
||||
L11912 5368
|
||||
L11888 5440
|
||||
L11602 5726
|
||||
L11912 5726
|
||||
" />
|
||||
</g><text x="11983.622047" y="6749.921260"
|
||||
textLength="1964.763780" font-size="666.653543" lengthAdjust="spacingAndGlyphs"
|
||||
text-anchor="middle" opacity="0">2200</text>
|
||||
<g class="stroked-text"><desc>2200</desc>
|
||||
<path d="M11126 6273
|
||||
L11150 6249
|
||||
L11197 6226
|
||||
L11316 6226
|
||||
L11364 6249
|
||||
L11388 6273
|
||||
L11412 6321
|
||||
L11412 6368
|
||||
L11388 6440
|
||||
L11102 6726
|
||||
L11412 6726
|
||||
" />
|
||||
<path d="M11602 6273
|
||||
L11626 6249
|
||||
L11674 6226
|
||||
L11793 6226
|
||||
L11840 6249
|
||||
L11864 6273
|
||||
L11888 6321
|
||||
L11888 6368
|
||||
L11864 6440
|
||||
L11578 6726
|
||||
L11888 6726
|
||||
" />
|
||||
<path d="M12197 6226
|
||||
L12245 6226
|
||||
L12293 6249
|
||||
L12316 6273
|
||||
L12340 6321
|
||||
L12364 6416
|
||||
L12364 6535
|
||||
L12340 6630
|
||||
L12316 6678
|
||||
L12293 6702
|
||||
L12245 6726
|
||||
L12197 6726
|
||||
L12150 6702
|
||||
L12126 6678
|
||||
L12102 6630
|
||||
L12078 6535
|
||||
L12078 6416
|
||||
L12102 6321
|
||||
L12126 6273
|
||||
L12150 6249
|
||||
L12197 6226
|
||||
" />
|
||||
<path d="M12674 6226
|
||||
L12721 6226
|
||||
L12769 6249
|
||||
L12793 6273
|
||||
L12816 6321
|
||||
L12840 6416
|
||||
L12840 6535
|
||||
L12816 6630
|
||||
L12793 6678
|
||||
L12769 6702
|
||||
L12721 6726
|
||||
L12674 6726
|
||||
L12626 6702
|
||||
L12602 6678
|
||||
L12578 6630
|
||||
L12555 6535
|
||||
L12555 6416
|
||||
L12578 6321
|
||||
L12602 6273
|
||||
L12626 6249
|
||||
L12674 6226
|
||||
" />
|
||||
</g></g>
|
||||
</g>
|
||||
<g style="fill:#008484; fill-opacity:0.0;
|
||||
stroke:#008484; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<g >
|
||||
</g>
|
||||
<g style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<path style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;fill:none"
|
||||
d="M 7500.000000,4500.000000
|
||||
7500.000000,5000.000000
|
||||
8000.000000,5000.000000
|
||||
7500.000000,5500.000000
|
||||
7000.000000,5000.000000
|
||||
7500.000000,5000.000000
|
||||
" />
|
||||
</g>
|
||||
<g style="fill:#008484; fill-opacity:0.0;
|
||||
stroke:#008484; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<text x="7500.000000" y="6749.960630"
|
||||
textLength="1583.818898" font-size="666.653543" lengthAdjust="spacingAndGlyphs"
|
||||
text-anchor="middle" opacity="0">GND</text>
|
||||
<g class="stroked-text"><desc>GND</desc>
|
||||
<path d="M7119 6249
|
||||
L7071 6226
|
||||
L7000 6226
|
||||
L6928 6249
|
||||
L6880 6297
|
||||
L6857 6345
|
||||
L6833 6440
|
||||
L6833 6511
|
||||
L6857 6607
|
||||
L6880 6654
|
||||
L6928 6702
|
||||
L7000 6726
|
||||
L7047 6726
|
||||
L7119 6702
|
||||
L7142 6678
|
||||
L7142 6511
|
||||
L7047 6511
|
||||
" />
|
||||
<path d="M7357 6726
|
||||
L7357 6226
|
||||
L7642 6726
|
||||
L7642 6226
|
||||
" />
|
||||
<path d="M7880 6726
|
||||
L7880 6226
|
||||
L8000 6226
|
||||
L8071 6249
|
||||
L8119 6297
|
||||
L8142 6345
|
||||
L8166 6440
|
||||
L8166 6511
|
||||
L8142 6607
|
||||
L8119 6654
|
||||
L8071 6702
|
||||
L8000 6726
|
||||
L7880 6726
|
||||
" />
|
||||
</g></g>
|
||||
</g>
|
||||
<g style="fill:#008484; fill-opacity:0.0;
|
||||
stroke:#008484; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<g >
|
||||
</g>
|
||||
<g style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
</g>
|
||||
<g style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:100.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<rect x="9600.000000" y="8000.000000" width="800.000000" height="2000.000000" rx="0.000000" />
|
||||
</g>
|
||||
<g style="fill:#840000; fill-opacity:0.0;
|
||||
stroke:#840000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<path d="M10000 8000
|
||||
L10000 7500
|
||||
" />
|
||||
<path d="M10000 10000
|
||||
L10000 10500
|
||||
" />
|
||||
</g>
|
||||
<g style="fill:#008484; fill-opacity:0.0;
|
||||
stroke:#008484; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<text x="11519.330709" y="8749.921260"
|
||||
textLength="1036.181102" font-size="666.653543" lengthAdjust="spacingAndGlyphs"
|
||||
text-anchor="middle" opacity="0">R1</text>
|
||||
<g class="stroked-text"><desc>R1</desc>
|
||||
<path d="M11435 8726
|
||||
L11269 8487
|
||||
" />
|
||||
<path d="M11150 8726
|
||||
L11150 8226
|
||||
L11340 8226
|
||||
L11388 8249
|
||||
L11412 8273
|
||||
L11435 8321
|
||||
L11435 8392
|
||||
L11412 8440
|
||||
L11388 8464
|
||||
L11340 8487
|
||||
L11150 8487
|
||||
" />
|
||||
<path d="M11912 8726
|
||||
L11626 8726
|
||||
" />
|
||||
<path d="M11769 8726
|
||||
L11769 8226
|
||||
L11721 8297
|
||||
L11674 8345
|
||||
L11626 8368
|
||||
" />
|
||||
</g><text x="11745.551181" y="9749.921260"
|
||||
textLength="1488.582677" font-size="666.653543" lengthAdjust="spacingAndGlyphs"
|
||||
text-anchor="middle" opacity="0">220</text>
|
||||
<g class="stroked-text"><desc>220</desc>
|
||||
<path d="M11126 9273
|
||||
L11150 9249
|
||||
L11197 9226
|
||||
L11316 9226
|
||||
L11364 9249
|
||||
L11388 9273
|
||||
L11412 9321
|
||||
L11412 9368
|
||||
L11388 9440
|
||||
L11102 9726
|
||||
L11412 9726
|
||||
" />
|
||||
<path d="M11602 9273
|
||||
L11626 9249
|
||||
L11674 9226
|
||||
L11793 9226
|
||||
L11840 9249
|
||||
L11864 9273
|
||||
L11888 9321
|
||||
L11888 9368
|
||||
L11864 9440
|
||||
L11578 9726
|
||||
L11888 9726
|
||||
" />
|
||||
<path d="M12197 9226
|
||||
L12245 9226
|
||||
L12293 9249
|
||||
L12316 9273
|
||||
L12340 9321
|
||||
L12364 9416
|
||||
L12364 9535
|
||||
L12340 9630
|
||||
L12316 9678
|
||||
L12293 9702
|
||||
L12245 9726
|
||||
L12197 9726
|
||||
L12150 9702
|
||||
L12126 9678
|
||||
L12102 9630
|
||||
L12078 9535
|
||||
L12078 9416
|
||||
L12102 9321
|
||||
L12126 9273
|
||||
L12150 9249
|
||||
L12197 9226
|
||||
" />
|
||||
</g></g>
|
||||
</g>
|
||||
<g style="fill:#008484; fill-opacity:0.0;
|
||||
stroke:#008484; stroke-width:62.519685; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
</g>
|
||||
<g style="fill:#008484; fill-opacity:0.0;
|
||||
stroke:#008484; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
</g>
|
||||
<g style="fill:#000000; fill-opacity:0.0;
|
||||
stroke:#000000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<text x="2000.000000" y="6862.480315"
|
||||
textLength="1393.346457" font-size="666.653543" lengthAdjust="spacingAndGlyphs"
|
||||
text-anchor="start" opacity="0">TX1</text>
|
||||
<g class="stroked-text"><desc>TX1</desc>
|
||||
<path d="M2077 6338
|
||||
L2363 6338
|
||||
" />
|
||||
<path d="M2220 6838
|
||||
L2220 6338
|
||||
" />
|
||||
<path d="M2482 6338
|
||||
L2815 6838
|
||||
" />
|
||||
<path d="M2815 6338
|
||||
L2482 6838
|
||||
" />
|
||||
<path d="M3268 6838
|
||||
L2982 6838
|
||||
" />
|
||||
<path d="M3125 6838
|
||||
L3125 6338
|
||||
L3077 6410
|
||||
L3030 6457
|
||||
L2982 6481
|
||||
" />
|
||||
</g></g>
|
||||
<g style="fill:#000000; fill-opacity:0.0;
|
||||
stroke:#000000; stroke-width:62.519685; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
</g>
|
||||
<g style="fill:#000000; fill-opacity:0.0;
|
||||
stroke:#000000; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<text x="13500.000000" y="7362.480315"
|
||||
textLength="1512.362205" font-size="666.653543" lengthAdjust="spacingAndGlyphs"
|
||||
text-anchor="start" opacity="0">RX1</text>
|
||||
<g class="stroked-text"><desc>RX1</desc>
|
||||
<path d="M13934 7338
|
||||
L13768 7100
|
||||
" />
|
||||
<path d="M13649 7338
|
||||
L13649 6838
|
||||
L13839 6838
|
||||
L13887 6862
|
||||
L13910 6886
|
||||
L13934 6933
|
||||
L13934 7005
|
||||
L13910 7052
|
||||
L13887 7076
|
||||
L13839 7100
|
||||
L13649 7100
|
||||
" />
|
||||
<path d="M14101 6838
|
||||
L14434 7338
|
||||
" />
|
||||
<path d="M14434 6838
|
||||
L14101 7338
|
||||
" />
|
||||
<path d="M14887 7338
|
||||
L14601 7338
|
||||
" />
|
||||
<path d="M14744 7338
|
||||
L14744 6838
|
||||
L14696 6910
|
||||
L14649 6957
|
||||
L14601 6981
|
||||
" />
|
||||
</g></g>
|
||||
<g style="fill:#008400; fill-opacity:0.0;
|
||||
stroke:#008400; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<path d="M6000 7500
|
||||
L6000 4500
|
||||
" />
|
||||
<path d="M9000 10500
|
||||
L10000 10500
|
||||
" />
|
||||
<path d="M2000 10500
|
||||
L2000 7000
|
||||
" />
|
||||
<path d="M6000 4500
|
||||
L7500 4500
|
||||
" />
|
||||
<path d="M3000 10500
|
||||
L2000 10500
|
||||
" />
|
||||
<path d="M10000 7500
|
||||
L13500 7500
|
||||
" />
|
||||
</g>
|
||||
<g style="fill:#008400; fill-opacity:1.0;
|
||||
stroke:#008400; stroke-width:60.000000; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<circle cx="10000.000000" cy="7500.000000" r="180.000000" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 17 KiB |
Loading…
Add table
Add a link
Reference in a new issue