From aa4d24b7d669bcf3fbbc85e07382c838ff3ad3d8 Mon Sep 17 00:00:00 2001 From: Pascal Le Merrer Date: Thu, 18 Dec 2025 21:37:39 +0100 Subject: [PATCH] Add first version of the website --- .gitignore | 2 + Makefile | 75 +++++ content/.DS_Store | Bin 0 -> 6148 bytes content/images/LogoCraftLetter-800px.png | Bin 0 -> 29125 bytes content/images/craftletter.svg | 70 ++++ content/license.xml | 7 + content/newsletter/craft-letter-1.md | 77 +++++ content/newsletter/craft-letter-2.md | 87 +++++ content/pages/confirmation.md | 14 + content/pages/index.md | 55 ++++ content/robots.txt | 22 ++ devbox.json | 13 + devbox.lock | 93 ++++++ logo/Logo craftletter - fond transparent.png | Bin 0 -> 9782 bytes logo/Logo craftletter vert.svg | 70 ++++ logo/LogoCraftLetter - 800 - no borderpx.png | Bin 0 -> 45139 bytes logo/LogoCraftLetter - 800px.png | Bin 0 -> 29125 bytes logo/LogoCraftLetter - large.png | Bin 0 -> 43908 bytes pelicanconf.py | 47 +++ publishconf.py | 24 ++ seo_report.html | 324 +++++++++++++++++++ tasks.py | 145 +++++++++ 22 files changed, 1125 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 content/.DS_Store create mode 100644 content/images/LogoCraftLetter-800px.png create mode 100644 content/images/craftletter.svg create mode 100644 content/license.xml create mode 100644 content/newsletter/craft-letter-1.md create mode 100644 content/newsletter/craft-letter-2.md create mode 100644 content/pages/confirmation.md create mode 100644 content/pages/index.md create mode 100644 content/robots.txt create mode 100644 devbox.json create mode 100644 devbox.lock create mode 100644 logo/Logo craftletter - fond transparent.png create mode 100644 logo/Logo craftletter vert.svg create mode 100644 logo/LogoCraftLetter - 800 - no borderpx.png create mode 100644 logo/LogoCraftLetter - 800px.png create mode 100644 logo/LogoCraftLetter - large.png create mode 100644 pelicanconf.py create mode 100644 publishconf.py create mode 100644 seo_report.html create mode 100644 tasks.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..923ae3f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +output +__pycache__ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..202fa45 --- /dev/null +++ b/Makefile @@ -0,0 +1,75 @@ +PY?= +PELICAN?=pelican +PELICANOPTS= + +BASEDIR=$(CURDIR) +INPUTDIR=$(BASEDIR)/content +OUTPUTDIR=$(BASEDIR)/output +CONFFILE=$(BASEDIR)/pelicanconf.py +PUBLISHCONF=$(BASEDIR)/publishconf.py + + +DEBUG ?= 0 +ifeq ($(DEBUG), 1) + PELICANOPTS += -D +endif + +RELATIVE ?= 0 +ifeq ($(RELATIVE), 1) + PELICANOPTS += --relative-urls +endif + +SERVER ?= "0.0.0.0" + +PORT ?= 0 +ifneq ($(PORT), 0) + PELICANOPTS += -p $(PORT) +endif + + +help: + @echo 'Makefile for a pelican Web site ' + @echo ' ' + @echo 'Usage: ' + @echo ' make html (re)generate the web site ' + @echo ' make clean remove the generated files ' + @echo ' make regenerate regenerate files upon modification ' + @echo ' make publish generate using production settings ' + @echo ' make serve [PORT=8000] serve site at http://localhost:8000' + @echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 ' + @echo ' make devserver [PORT=8000] serve and regenerate together ' + @echo ' make devserver-global regenerate and serve on 0.0.0.0 ' + @echo ' ' + @echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html ' + @echo 'Set the RELATIVE variable to 1 to enable relative urls ' + @echo ' ' + +html: + "$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) + +clean: + [ ! -d "$(OUTPUTDIR)" ] || rm -rf "$(OUTPUTDIR)" + +regenerate: + "$(PELICAN)" -r "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) + +serve: + "$(PELICAN)" -l "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) + +serve-global: + "$(PELICAN)" -l "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) -b $(SERVER) + +devserver: + "$(PELICAN)" -lr "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) + +devserver-global: + "$(PELICAN)" -lr "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) -b 0.0.0.0 + +publish: + "$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(PUBLISHCONF)" $(PELICANOPTS) + rsync -e ssh -av --delete-after /Users/pascal/Documents/craft-letter/output/ craftletter@ssh-craftletter.alwaysdata.net:/home/craftletter/www + +ssh: + ssh craftletter@ssh-craftletter.alwaysdata.net + +.PHONY: html help clean regenerate serve serve-global devserver devserver-global publish diff --git a/content/.DS_Store b/content/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0538521330fb2eb16a5098aa06c1fbe7341bdfef GIT binary patch literal 6148 zcmeHK!AiqG5Pe&VMntF=@t7ZIpq4uFU%*g9nMg~+(*hP2djKy*IG3SE?#V8zGeKQJJB zcY+KHjBvwU``o_?ZC&)y!xZ^dS!Lt08q-@ol?!U`%?o?LKJMr>LczUXuKB)l{ArtS zS@eflHJ$q`p=sorR%xp9MyHR*=g-R*nS0GA|IufD`~5r*!^NzuW(9NeOExhEi~(a{ z#~IL*E;`!rb=vZb0b}6z49NKqQw0;nI-ox~*!U8F*rwSF`|^V*F|lHzSO???#f4B} z2z6RwxDZZztbU1N9WaE$Y4PE7W~UX3^RqL5?A_s#fYurV#z2#Sz3|$R`~Px#{of3- zH)FsU*eM2FI~}G2E=lj!jm61b8&j{TBH~vE{0L#kU&Zv5tN4uSh4xrF#6+ literal 0 HcmV?d00001 diff --git a/content/images/LogoCraftLetter-800px.png b/content/images/LogoCraftLetter-800px.png new file mode 100644 index 0000000000000000000000000000000000000000..c4122308ba4a68c4187a7b888783058f1df58810 GIT binary patch literal 29125 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 + + + + + + + + + + + + + + + + + + + + + diff --git a/content/license.xml b/content/license.xml new file mode 100644 index 0000000..82ab24d --- /dev/null +++ b/content/license.xml @@ -0,0 +1,7 @@ + + + + ai-train ai-input + + + diff --git a/content/newsletter/craft-letter-1.md b/content/newsletter/craft-letter-1.md new file mode 100644 index 0000000..ab32183 --- /dev/null +++ b/content/newsletter/craft-letter-1.md @@ -0,0 +1,77 @@ +Title: Lettre n°1 +Date: 2025-12-08 10:20 +Category: Newsletter + + + + + + +## Édito + +J'ai découvert le développement logiciel alors que je n'étais qu'un adolescent. Cela m'a passionné, au point que j'en ai fait mon métier, et après plusieurs décennies, je le pratique avec un plaisir toujours renouvelé. Si mon intérêt pour le développement logiciel ne s'est pas émoussé au fil du temps, c'est grâce à la combinaison de plusieurs facteurs. + +Tout d'abord, j'apprends en permanence ; être toujours à jour en termes de technologies, d'outils et de pratiques me permet non seulement de rester pertinent, mais aussi de ne pas sombrer dans une routine dont je me lasserais inévitablement. Cela implique de pratiquer une veille technologique constante, sous de multiples formes : lecture d'articles de blogs, de livres, conférences, ateliers, projets personnels... Par chance, tout cela aussi est un plaisir pour moi. + + +Ensuite, j'essaie de créer des logiciels dont je suis fier : je mets en pratique certaines bonnes idées que je découvre au fil de ma veille, qu'elles soient techniques ou méthodologiques. Et je fais en sorte que les clients et utilisateurs de ces logiciels soient satisfaits. + +Enfin, je partage ce que j'apprends : j'ai donné plus d'une centaine de conférences, des dizaines de formations, écrit un livre, et je contribue à l'organisation d'événements : Meetup Software Craft Rennes, SoCraTes Rennes, Breizhcamp... J'apprécie particulièrement l'aspect social du développement, aussi bien le travail en équipe que les échanges au sein de communautés de professionnels. + + +Améliorer constamment ses compétences et connaissances, se montrer professionnel, et partager : c'est l'essence de l'artisanat logiciel —le _software craft_. Je suis un _crafter_, pour employer un de ces anglicismes dont nous sommes si friands dans ce milieu. + +Depuis plus de 15 ans, je partage une partie de mes trouvailles avec les gens qui m'entourent, que ce soient des collègues, ou les gens qui viennent voir mes conférences. La publication d'une newsletter participe de la même envie de diffuser ce qui a retenu mon attention récemment. Mes centres d'intérêt sont assez variés, cela devrait se refléter dans le contenu de la lettre au fil des semaines. Vous y trouverez des articles relatifs au développement logiciel d'une façon générale, qu'il soit front-end, back-end ou autre. Mais aussi des articles consacrés à l'architecture logicielle, la méthodologie, les outils, des projets open source, des conférences... Bref, tout ce qui fait le quotidien d'une développeuse ou d'un développeur. + +Bonne lecture ! + +Pascal + +## Quitter Github pour Codeberg + +[Ce retour d'expérience](https://eldred.fr/blog/forge-migration/) consacré à la migration de dépôts Git de Github vers Codeberg m'a interpelé, car j'ai migré récemment mes projets de Github vers une instance de Gitea (hébergée par Zaclys). Toutefois l'auteur de l'article est allé plus loin que le simple transfert de dépôts Git, car il a aussi migré des pipelines de CI, et les pages hébergées avec Github Pages. Il existe de nombreux scripts pour migrer tous vos dépôts d'un coup, de Github [vers ForgeJo](https://github.com/PatNei/GITHUB2FORGEJO) ou [vers Gitea](https://github.com/situ2001/gitea-bulk-migration). Je suis parti de celui-là, mais il en existe une version améliorée. + +Eldred Habert n'est le seul a avoir quitté Github : [les développeurs du langage Zig ont fait de même](https://ziglang.org/news/migrating-from-github-to-codeberg/), mettant en avant la dégradation du service qu'ils ont constaté ces dernières années. Mais cela engendre un risque sur le financement du projet, qui reposait en grande partie sur Github sponsors. + +## Gérer les effets de bord en 30 ligne de JavaScript + +Comment tester simplement un code qui fait des appels à des services externes, comme une base de données, ou une API ? La mise en oeuvre d'une [architecture functional core - imperative shell, en seulement 30 lignes de Javascript](https://lackofimagination.org/2025/11/managing-side-effects-a-javascript-effect-system-in-30-lines-or-less/), permet de tester la logique métier, sans base de données de test ni mocks. + +## L'opérateur pipe se répand + +A propos d'emprunts à la programmation fonctionnelle, l'opérateur pipe |> fait partie des [nouveautés de PHP 8.5](https://les-tilleuls.coop/blog/sortie-de-php-8-5-ce-quil-faut-retenir), et il est déjà [disponible en JavaScript](https://blog.openreplay.com/fr/javascript-pipeline-operateur-signifie/) (via Babel). C'est une des choses qui me manque le plus quand je code en Python ou d'autres langages non fonctionnels (le jeu de mot est volontaire). Il change totalement la façon de penser les fonctions, et les rend bien plus simples à lire une fois qu'on a assimilé la syntaxe. + +## Pourquoi GCC utilise-t-il des ou exclusifs pour mettre à 0 des registres ? + +Dans un [article court et abordable](https://xania.org/202512/01-xor-eax-eax) même quand on y connait pas grand chose en assembleur, Matt Godbolt explique avec beaucoup de pédagogie une optimisation effectuée par GCC. Et si vous vous piquez d'intérêt pour le sujet, il a lancé un calendrier de l'avent dédié à l'[optimisation lors de la compilation de code C ou C++](https://www.youtube.com/playlist?list=PL2HVqYf7If8cY4wLk7JUQ2f0JXY_xMQm2). + +## Le calendrier de l'avent HTMHell est de retour + +[Ce site](https://htmhell.dev/adventcalendar/?s=hell) initié par [Manuel Matuzović](https://mastodon.social/@matuzo@front-end.social) propose chaque jour jusqu'à Noël un article sur la sécurité, l'accessibilité, l'expérience utilisateur, ou les performances des pages Web. + +## Se protéger des attaques supply-chain en Javascript et en Python + +[Aikido Safe Chain](https://www.npmjs.com/package/@aikidosec/safe-chain) est un outil qui filtre les demandes de téléchargement de paquets JS et Python, et vérifie si le paquet demandé ne contient pas de code malveillant. A son lancement, en Juillet dernier, il était compatible avec npm, npx, et yarn ; aujourd'hui il fonctionne avec pnpm, pnpx, bun, bunx, mais aussi des outils du monde Python comme uv, pip , ou pip3. Et d'autres gestionnaires de paquets sont prévus. + +## Meilleur que JSON + +Dans [Meilleur que JSON](https://aloisdeniel.com/blog/better-than-json), Aloïs Deniel explique pourquoi il préfère Protobuf à l'omniprésent JSON : les données sont typées, leur format est vérifié et décrit par un schéma ; la compacité du format binaire améliore les performances. Et l'expérience développeur est améliorée par les générateurs de code. Ce qu'il ne mentionne pas, c'est qu'il existe d'autres formats du même type, comme [Apache Avro](https://avro.apache.org/). JsonToTable fournit une [comparaison détaillée des deux formats](https://jsontotable.org/blog/protobuf/protobuf-vs-avro), et indique dans quels cas d'usage chacun est plus pertinent. Spoiler : aucun des deux n'est meilleur dans tous les cas, mais les deux surpassent JSON. + + +Et voilà, c'est tout pour cette première lettre ! diff --git a/content/newsletter/craft-letter-2.md b/content/newsletter/craft-letter-2.md new file mode 100644 index 0000000..dda171b --- /dev/null +++ b/content/newsletter/craft-letter-2.md @@ -0,0 +1,87 @@ +Title: Lettre n°2 +Date: 2025-12-15 09:00 +Category: Newsletter + + + + + + + + + + + +## Édito + +Alors que je publie ce second numéro de la Craft Letter, il s'est écoulé moins de deux semaines depuis j'ai eu l'idée de publier une newsletter. Dans un état d'esprit marqué par l'Agile des origines —pas l'adoption superfielle qualifiée de [Faux Agile](https://www.zdnet.fr/actualites/le-developpement-agile-plus-une-pretention-qu-une-realite-39870168.htm) 🇫🇷— et par Getting Real —dont je parle ci-dessous—, j'ai publié le premier numéro rapidement, avec le strict nécessaire. Le logo que j'ai créé ne me satisfait pas complètement ? Ce n'est pas grave, j'en changerai plus tard. Je n'avais pas le temps de créer [un site Web](https://www.craftletter.fr) ? Je l'ai fait après la publication du premier numéro. L'essentiel était là : j'avais du contenu intéressant à partager avec vous. + +Voici les articles et projets qui m'ont marqué cette semaine, agrémentés parfois de quelques réflexions issues de mon expérience ou des recherches que j'ai faites. + +Bonne lecture ! + + + +## Bebop + +Dans le premier numéro de la Craft Letter était citées des alternatives à Json, telles que Protobuf et Apache Avro. Ce sont des protocoles binaires et typés, donc plus compacts et performants que Json. Le typage permet une expérience développeur sympathique. [Bebop](https://bebop.sh), dont la première version date de 2020, se présente comme une version plus moderne de Protobuf, sorti en 2001 —mais [qui continue d'évoluer](https://protobuf.dev/news/). + +## Une comparaison de Go, Rust et Zig + +[Sinclair Target compare Go, Rust et Zig](https://sinclairtarget.com/blog/2025/08/thoughts-on-go-vs.-rust-vs.-zig/) 🇬🇧, après quelques quelques mois d'expérimentation sur ces trois langages. Ses réflexions sont intéressantes, bien qu'il n'ait pas pratiqué ces langages dans un cadre professionnel ni sur une longue durée. Il explique notamment ce qui rend Rust si compliqué à apprendre d'après lui : ce ne serait pas la gestion de la mémoire, mais la multplicité des concepts du langage. + +## Un algorithme de calcul de date hyper rapide + +Ben Joffe est un passionné d'algorithmie, et plus particulièrement d'algorithmes de calcul de date. Il vient de présenter un nouvel algorithme nettement plus rapide que l'état de l'art, pour calculer la date à partir du nombre de jours écoulés depuis le 1er Janvier 1970. + +Dans [A Very Fast 64–Bit Date Algorithm: 30–40% faster](https://www.benjoffe.com/fast-date-64) 🇬🇧, il décrit en détail le fonctionnement de ce nouvel algorithme, les nouveautés qui le distinguent des précédents, et ce qui le rend aussi rapide. + +## Pourquoi quitter Github ? + +Un billet sur le blog d'[Iroco](https://iroco.co/), un service mail Français éthique, nous explique pourquoi ils pensent qu'[il faut quitter Github](https://blog.iroco.co/pourquoi-quitter-github/) **:** ça parle d'IA générative, de souveraineté numérique, de colonialisme, de techno-autoritarisme... + +## Aerospace, un gestionnaire de fenêtre pour MacOS + +Si comme moi vous n'appréciez pas le gestionnaire de fenêtres de MacOS, vous serez peut-être intéressé·e par cet article de Seg6 qui explique, selon lui, comment [rendre MacOS supportable](https://seg6.space/posts/making-macos-bearable/) 🇬🇧. Seg6 y présente plusieurs outils pour se passer de la souris dans de nombreux cas, comme Aerospace et Vimium. [Aerospace](https://github.com/nikitabobko/AeroSpace) est inspiré de [i3](https://i3wm.org/), un gestionnaire de fenêtres pour Linux**.** [Vimium](https://vimium.github.io/) est une extension pour navigateur qui permet de naviguer presque uniquement au clavier. + +## Retour d'expérience sur Shape-up + +Shape-up est une alternative aux méthodes Agiles telles que Scrum, Kanban ou XP. Elle a été imaginée chez [37Signals](https://37signals.com) 🇬🇧, l'entreprise derrière Basecamp, et décrite dans un [livre disponible en ligne](https://basecamp.com/shapeup) 🇬🇧, gratuitement. Ce [résumé](https://www.le-ticket.fr/resume-shape-up-basecamp/2821/) 🇫🇷 vous donnera un aperçu, avant de découvrir le [retour d'expérience de Scale X](https://scalex.dev/blog/2-years-with-shape-up/) 🇬🇧. + +Un ouvrage de 37Signals qui m'a beaucoup influencé est [Getting Real](https://basecamp.com/books#gettingreal) 🇬🇧, le premier livre qui décrivait leur façon de travailler, bien avant qu'ils inventent Shape-Up. Les chapitres sont très courts, chacun présentant une idée souvent aussi iconoclaste que radicale, sur des sujets aussi divers que le financement d'une start-up, la priorisation des fonctionnalités, le recrutement, l'UX, etc. Contrairement à Shape-Up, ce n'est pas une méthode. Il s'agit plutôt une collection de trucs et astuces dont chacun peut être adopté indépendamment, et utilisé en complément de Scrum, XP ou autre. + +[Rework](https://basecamp.com/books#rework) 🇬🇧, paru quelques années après, reprend une grande partie du contenu de Getting Real, et n'y apporte pas grand chose de nouveau sur le fond. + +## Vous n'avez pas besoin de framework CSS + +Si vous n'avez pas suivi les évolutions du langage CSS ces dernières années, vous risquez d'être surpris·e par cette analyse de trois sites développés par 37Signals (oui, ceux qui ont créé Shape-up, mais ça n'a rien à voir les articles cités ci-dessus). Dans [Vanilla CSS is all you need](https://www.zolkos.com/2025/12/03/vanilla-css-is-all-you-need) 🇬🇧, Rob Zolkos montre comment 37Signals utilise les fonctionnalités récentes de CSS pour se passer de framework, de pré-processeur, et parfois de JavaScript ou d'images. + +La première question qui m'est venue à l'esprit à la lecture de cet article, c'est celle du support de ces fonctionnalités par les navigateurs. Une rapide recherche sur [Can I Use](https://caniuse.com) m'a permis d'identifier depuis quand elles sont supportées par les principaux navigateurs : + +- Native [custom properties](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties) (variables) : 2017 +- Native [nesting](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_nesting) : 2023 +- [Container queries](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_container_queries) : 2023 +- [:has()](https://developer.mozilla.org/en-US/docs/Web/CSS/:has) : 2023 +- [CSS Layers](https://developer.mozilla.org/en-US/docs/Web/CSS/@layer) : 2022 +- [color-mix()](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color-mix) : 2023 +- [clamp()](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/clamp), [min()](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/min), [max()](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/max) : 2020 + +## 100 000 transactions par seconde : l'efficacité déraisonnable de Sqlite + +Anders Murphy a réalisé un benchmark dans lequel il montre que [Sqlite peut être d'une efficacité redoutable](https://andersmurphy.com/2025/12/02/100000-tps-over-a-billion-rows-the-unreasonable-effectiveness-of-sqlite.html) 🇬🇧 par rapport aux SGBD traditionnels, du fait de l'absence de communications réseau. Il faut cependant garder à l'esprit que [Sqlite](https://sqlite.org/index.html), bien que ce soit [la base de donnée la plus utilisée au monde](https://sqlite.org/mostdeployed.html) 🇬🇧, n'est pas adaptée à tous les cas d'usage, et n'offre pas exactement les mêmes fonctionnalités. Juste à titre d'exemple, vous n'y trouverez pas d'ID auto-incrémenté. diff --git a/content/pages/confirmation.md b/content/pages/confirmation.md new file mode 100644 index 0000000..1017afe --- /dev/null +++ b/content/pages/confirmation.md @@ -0,0 +1,14 @@ +Title: Vous n'êtes pas encore abonné·e ! +Date: 2025-12-15 23:20 +URL: +save_as: confirmation.html +Category: None +status: hidden + + +Vous devez d'abord confirmer votre adresse +en cliquant sur le bouton dans le mail que vous aller recevoir. + +_Pensez à vérifier dans les mails indésirables, +et à le marquer comme provenant d'un expéditeur de confiance +si nécessaire_ diff --git a/content/pages/index.md b/content/pages/index.md new file mode 100644 index 0000000..3e33eca --- /dev/null +++ b/content/pages/index.md @@ -0,0 +1,55 @@ +Title: Accueil +Date: 2025-12-08 10:20 +URL: +save_as: index.html +Category: Home + + + + + +La Craft Letter est une newsletter hebdomadaire dans laquelle je partage des articles +issues de ma veille technologique. Vous y trouverez des articles relatifs au développement logiciel d'une façon générale, qu'il soit front-end, back-end ou autre. Mais aussi des articles consacrés à l'architecture logicielle, la méthodologie, les outils, des projets open source, des conférences... + +Pour savoir qui je suis, ou pourquoi j'écris cette lettre, je vous invite à vous lire l'édito du [premier numéro]({filename}/newsletter/craft-letter-1.md). + + + + +
+ +--- + +# Archives + +* [Lettre n°2]({filename}/newsletter/craft-letter-2.md) +* [Lettre n°1]({filename}/newsletter/craft-letter-1.md) diff --git a/content/robots.txt b/content/robots.txt new file mode 100644 index 0000000..176a9a3 --- /dev/null +++ b/content/robots.txt @@ -0,0 +1,22 @@ +User-agent: GPTBot +Disallow: / + +User-agent: ClaudeBot +Disallow: / + +User-agent: CCBot +Disallow: / + +User-agent: Google-Extended +Disallow: / + +User-agent: Bytespider +Disallow: / + +User-agent: PerplexityBot +Disallow: / + +User-agent: * +Sitemap: https://www.craftletter.fr/sitemap.xml + +License: https://example.com/license.xml diff --git a/devbox.json b/devbox.json new file mode 100644 index 0000000..498d337 --- /dev/null +++ b/devbox.json @@ -0,0 +1,13 @@ +{ + "$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.16.0/.schema/devbox.schema.json", + "packages": ["python313Packages.pip@latest"], + "shell": { + "init_hook": [ + ". venv/bin/activate.fish" ], + "scripts": { + "preview": [ + "pelican -r -l" + ] + } + } +} diff --git a/devbox.lock b/devbox.lock new file mode 100644 index 0000000..6090e38 --- /dev/null +++ b/devbox.lock @@ -0,0 +1,93 @@ +{ + "lockfile_version": "1", + "packages": { + "github:NixOS/nixpkgs/nixpkgs-unstable": { + "last_modified": "2025-11-26T06:22:50Z", + "resolved": "github:NixOS/nixpkgs/bb813de6d2241bcb1b5af2d3059f560c66329967?lastModified=1764138170&narHash=sha256-2bCmfCUZyi2yj9FFXYKwsDiaZmizN75cLhI%2FeWmf3tk%3D" + }, + "python313Packages.pip@latest": { + "last_modified": "2025-11-23T21:50:36Z", + "resolved": "github:NixOS/nixpkgs/ee09932cedcef15aaf476f9343d1dea2cb77e261#python313Packages.pip", + "source": "devbox-search", + "version": "25.0.1", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/mrzr287djclm6qbgcsq3gnslrz1xq9gk-python3.13-pip-25.0.1", + "default": true + }, + { + "name": "man", + "path": "/nix/store/z869269snssh427n3d4ymdbgv6z2s98m-python3.13-pip-25.0.1-man", + "default": true + }, + { + "name": "dist", + "path": "/nix/store/1iacclxznnylaldv1r8bbf79l5w6fbzl-python3.13-pip-25.0.1-dist" + } + ], + "store_path": "/nix/store/mrzr287djclm6qbgcsq3gnslrz1xq9gk-python3.13-pip-25.0.1" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/vvll99x1khg8v8biyckj3xwb1ca4ppvn-python3.13-pip-25.0.1", + "default": true + }, + { + "name": "man", + "path": "/nix/store/m6wzxsnzm3ip6zgmm9cdbpbklz4acgp1-python3.13-pip-25.0.1-man", + "default": true + }, + { + "name": "dist", + "path": "/nix/store/whzw332j5np5034pk6jv441bb11cqw3z-python3.13-pip-25.0.1-dist" + } + ], + "store_path": "/nix/store/vvll99x1khg8v8biyckj3xwb1ca4ppvn-python3.13-pip-25.0.1" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/qqqsqw0iwdmxn45lr4dk00wh699ny6py-python3.13-pip-25.0.1", + "default": true + }, + { + "name": "man", + "path": "/nix/store/qmis4qangig7vrbn4idpmlz5pcjf77l1-python3.13-pip-25.0.1-man", + "default": true + }, + { + "name": "dist", + "path": "/nix/store/nzs1j69si6pmj10hqrnv86s6p6n3wqad-python3.13-pip-25.0.1-dist" + } + ], + "store_path": "/nix/store/qqqsqw0iwdmxn45lr4dk00wh699ny6py-python3.13-pip-25.0.1" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/6k8ghavfzfpcgs6angp98gy71xh2mrip-python3.13-pip-25.0.1", + "default": true + }, + { + "name": "man", + "path": "/nix/store/pm073whyjzrvh7sgjydf72j99ffm10wb-python3.13-pip-25.0.1-man", + "default": true + }, + { + "name": "dist", + "path": "/nix/store/6yc20w1yzz150ma4vgcagb3p8kg4ck7c-python3.13-pip-25.0.1-dist" + } + ], + "store_path": "/nix/store/6k8ghavfzfpcgs6angp98gy71xh2mrip-python3.13-pip-25.0.1" + } + } + } + } +} diff --git a/logo/Logo craftletter - fond transparent.png b/logo/Logo craftletter - fond transparent.png new file mode 100644 index 0000000000000000000000000000000000000000..dfb895acb379c7c8d22bc2b45f159bb418a11b79 GIT binary patch literal 9782 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 literal 0 HcmV?d00001 diff --git a/logo/Logo craftletter vert.svg b/logo/Logo craftletter vert.svg new file mode 100644 index 0000000..0f300a0 --- /dev/null +++ b/logo/Logo craftletter vert.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/logo/LogoCraftLetter - 800 - no borderpx.png b/logo/LogoCraftLetter - 800 - no borderpx.png new file mode 100644 index 0000000000000000000000000000000000000000..c50b13eccf0b3b74f31e00677c0a4565bc186437 GIT binary patch literal 45139 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�b$-uNFD|&ifqSR!HpvB(+BQJBl<(nvTaMK#(*NTjFrovwllx4RS$K5TfEt|c zH}m{7=4W#Y^P%!ni;{#Z#(mo2VilRuk;)S^*s^f=oAMb?pfI(TuZ46=v;e`K;S8^b zxkVo(>P+_~NNZozDWBK(n-qbjpQ?nX+3IT4S6bgh3o==#^&B!)8PrVPlk;=QPDVjB zazhhh z7>*kdp(iTG9Tg89dAQe$__RUgqbruO-a}ae@M?=8#;`6dVj2w!@{^HJ6t5LE4*oy> CMA_#6 literal 0 HcmV?d00001 diff --git a/logo/LogoCraftLetter - 800px.png b/logo/LogoCraftLetter - 800px.png new file mode 100644 index 0000000000000000000000000000000000000000..c4122308ba4a68c4187a7b888783058f1df58810 GIT binary patch literal 29125 zcmdqIRa;!a7A;CbkPzIR1P|Uw2rhxfrEv+?xVu{j!QCAKjXMN)_dsxhySqDgW$%6N z%lQYVzYn_MVRg+pt7eTFV^oNuyaXBwF$x?U9GaA*m=YWu{14#sGV*KS_x`x1KJfO+ zQAtAd)!#uTU*M0oc9NQoaB%oE|9)OcDN&!o!P#3#iHWGVr60Dw{i^ae<;Hi}DIC=I zhhc(q9s9^AcEo5qBc)~VF-~eCg*!#cgndsoag;h`gnDoE+QkF%N+j|7>&1Dp!q!5l zgg7RaeK#6jjGP!2*54cNmC*I)vDY+|X7&UYYj-~K7a~pj%Z_6L!zcVZ={q8%z<~a} z=8%mJQ2+Z8E{p&Z_TP`+e#3$O1qQt4Q2$^4XQeVoOIur6M<+np({o{WuCVMEJdlTr zo}NqJ)X(L`zixEB4}PET`~O9-rA>blH5$7ABB3KB`?Z$QC1J6Wo!W!_D00DR^LCbV z&$h>;)tjI1@$2$n7m_Q*>`IBH``paZr_bygU>qErTU~_}G$5gNK8GsdYN`T#9!_pX z+jaD}_cunsKRPQYV&kLm8b#9MJz9#=y)(qwQR~YvQcD@@HVR;cl?3pmH1r z4}9;t(2UUW)YR1RDv-^*9Wq?UcY~_HNI5&2tFnjDZ6703Caf4i>2x)Oy-xwep8`n) zL?g-_x*6Or_sxl&Ji2`KXt-C$8V1phvjeXT`hKs0AD7hquQYloSrHmn(XZ%S`kpDz zzFO#->#7R!qF83&meD!e4dTR{shm90@Z zngWQowZ11wCNvGAkxxB0u}~AYw!Ux=?ns#T{Y-cT2ltsVOeI`imX8|rMRwgcc~Gq} z1ai?c(BMAD899k8zp)MBkjKgY3l_g1RfmUr=vOigJJ441N)B$pBM}XubkYTUb-Yd?HdSSYS5W$p50ubCUb@UUj{ZJKR)v zHrMw{!ZmA?vJhwH-PrA~cB!^XnxoKti}C3RiGYMFSK|5NCQpehO)#f_7;%S4<TP!L^Ovxh(w?}xSse%v08PMEB+Q{ zpCN6-6cGDEVklw_l-3n~s|_p}u}ti@C6o*QF_}&Wt5Hg#wtCcK1HR6TYC{1!oKd?8JT&??F6+T zv36qYi0@7TSIp@dwMlP>|4L}@yaDQ&VkZi+AZjhK=}h}uTaSZOQI^;WO7ht9Bw6Z>9sRjR7<&ZHwP!*U%Dae#9p(Ydv#C> zZCc`3ZZr3OCz=)`9Nf3u&k2OJ;Y4Kq-KmV?k~U(?q3WVJRg^Vr*wkU)B_oC1Kl&I9 zH0Uh#u$!yXQs_fEwNT8dw5hlQNsc5!%8ke~>cBc4iod1mw4H`J?&5vxcbZMQ<0Sdx zND0YENQtZu_pPC6nt21jp4GA5?cPH_>Ebrh(LHC1LGfiF2Z-Nu&M%HQ@#|Kg+=%pk zfuJ1=#;~!?gqX#_cX)iF($Q(xtDHZCi{MxV%@@3S#r5&Mt3n(df2wp&=v1m@ z9Y&;z(n73w1ox2{T$BtcBf>)%69gct}P`5BlIxLvg zw>=WFxQw<)<6Z21#&P*bLsj3nG5L^vO4MQHM4;b!@V(De> zfAHX3NbS(3f3kcSXZ${>@c2Ny&dWI;=N*XXl6p0;8mL&En%%56BK4Q$G``k%WQvD# zVxIfY#I*MOpHzreQJXHd$9Dco)jQuv!K<;Dk6CkZ!i%kU^yAG~n*%WJknnq@pDs8y z?I#pcZEE!9=s+LA$3tfYGaH~%)Hy$;F`yl^$QevzDqtsn-K~3t|4rLF&#nhG8{IF! zpDQu7eA$@KP{+svQm44_5kJOkw%KOV#bINNsxiCnS5ll+#4}V=^>nc0CByFe0#anAPI^8md+*w9-s~{ZU)kO# zp07=S{iIcB;OI7TZs|1tYI74+3R$*JqLeuv(S)Bl?b3|ZLk~>*xzCk^wS@BP zwuwKFin)xwR#m_VSxJXqJk*))C$oP%vdgpcVZv$Xb6MFfJ{IIUnl(=d#J3YVXVYCM zz7J7wIrUoh&%b^(*>J^UPC@KGHJ_jkX%^ypDHtzMHw@Uxd*3xBp{n>r{#L5s;x)TN zCH56+REms^ppYLS0vsGBnFJmz5hCo|2o|tKZviFKU$ca3;wdm6Ctu5?z$PT@NUuYu)X< zh7m0DdKe5CZRc8{w-uCs(8E)kcqAwNPsqEUa|ykrLu?}MWgBAj9;rzfAY*J)^X2y` z9}MkA{%s!`m>OJsuI(sy^!&HQRSBG@$zifDMFMAAWjcq|7iex_LQka(WErbXfx90( zu(Ixm{?l>iNYFomQ-~wRTEptZP!?}Y;x@@G#GX@G$#~}{xH~$d5t(phACFp-qv{v~ zg2%6>@OD!sq$4%H{DvAGhNMv!k-!H-fQ9MVebz%yqNuP^CMGyEyKRR_CGC(vvM7pn zyeaID_0rScJSZN#62bZ)T}d85c+Bl;$Cml(9kL~#_Fy0c&lV)D<5%okD0Mao}q|sG!ZnMbkh@XDwORcP7^m)=)hl;b<-5^|P$yTdDg3<+ch5 zAN#mYI(fkNzZhbA=;LgFZmK8XKq~WPxqFb5Jzh*wi>Q=tf07Z%Y!dnB`>5g?ihYjd zP`-=&5AZK-_opCSav3ign-FT~bey7sk|S60>S zxX`E0FM7jFm3xwuzg;^R3+yCYp#G=4t!t7{T#iqj)^da3<~=}> zMrA{f;R5e|<|&USB5gvUx{4bZ-4ma1;9J0tknw(<){<))mUk0p+NvE;r$*U!TK;@3 z>GsRm*Z+D!$FdzEXz2cF(v>`?Z1Ybny>xuK1qN3+`ix=3Z3R{OI$QND)5g=;1H(rr8NyVHxQ zt=Gu_{Z8`p!2f1oQVj~ z3q)M_PyjDwxN%`;Z>#?8-wLkeCjAobFok%rJpOJ#V(&vNE1d(nq4reP#+X{&O{F$} z3Ag+oG60OjMzd$u&KA_Y_e8jMk_)2B4AdyL9YJ`368o~hH;a&ky==$wDPA*% z%VBDUe>cYc&%}|OYbG>q^uuXf^R_Y zg5hs;ad4Y`l4GBD4vsR4?Y&+fEp4R|5fO(#g6sxtW4nsT{yiP_l+)zz^j~dI{&z$i zX;Nx(pHl++Wq~?4>$C!$WXpQVS;yP@$se8y2BXD!Mt#oRODPrnJNn@_Rq(rD$aPK+ zE=-=c9soZY`iFYqvB%Fw_B`|0ji9fEnodKFN}DlZ^#yu*UzsN8+VkHA5W1wd3_Tyo z!q4_hQnneIZQ58n&SaeH?3_Q-?LBhCl%8!|(`lZbG8-z$1g|UZ!}aJgRy+kyJT&p1 z?G|d}nxH1(S}a-KWw$H8pT20AC8}`iwCWW#svTzd9QA`zR+RFeH)0I+mXm@n8VyWG zq`wM?<_KX!HSjDhQKRmLb*l94+1An^bjxf;ZO(^K$(i4V?l++f7AG@xQ%+aETPnQ6 zlrUlGb5JMI@Lgq~(S6eigM6yH2@m(CVn@L6dp*W1M{a%txz9C9+s(`4FxNaZMqBb0 zU|Ot`yh+96IwO%`F1EBAaeA`vZYxc*rJoFbn7)a6Pk~@RMO-M(zNGy2h2|R=^HgoM ziqu-&SHT{tupN;;bf39~6<67nQYH6&T*zdfgqX$BN`ao9FWGsLd+l&GM_!*Su*D3q zB`3Nf_6-;EpV$_J7+IEtJ@q#S>PQk5sI=`&aeI2PdxI}s6dhTY$~ZgK+LVK{-qS2d zvG8%D;$Io)OD%~=x#YIRlng7_(pAH&Ev&q)S2AO$zJ}96Ko->yc%X=O?1x(6)oT}1 z89^GtR=8d^gK{<<8@rZ4k+sTci?1aShnat@gz5Zjsg?1$?|XKvzs|(_uy*jn&BVbm;AGf8-{k6pwuFk;>$~#DB3}{ls?0(B7Ekj(tN>>np$7PQJ-Oq5oJxF#arUH zAB#S8IRzmG^x;l(+P7TG@Hb1X8hE;8W0_R-rgf4{CgSv$|RKmB>C{4*t{P;dvklXK;=j?GUVPLGMxvXY)KiUV-D z6?G^2W+089mV-p&+EebuUyNd;{!BvYJAoM7&nbk)QOe`X5#KM(WZo1-%uL-`Ls$_k z)Ze+CuyAUTfG%vqa2Mec8hDUQmTLYNq9;DgsPbc>IX2BQ_SxkgY%VTgn8kX-G)<_K z(}Cfjs&Bp}j__JcN^g$H-^FZ*c)o#v=t2W=9x3n(hePs5C&T0zJxM7UEt)7@0_+G; zRB<&UeYIjyT4T}+wg%SY&o zRu8R~ff7}A0DUnbPp|u_Hi+%l?(n%8|Gkfq`d96CRa#-bA6s|xFy6I1kbpr#RGnBp zfxv2}Hj~vVtGU&Sv=|D$w#Lz0P8Ds=#q;+|=iVU+Iv2srgM!zUjThW!rn5i#S0CRC z;YTKvwuIqf`eiA06TPR~bSWHnNjRLUjqJo4&Ag<~SD_v*{GGAcTMuOlrKY0_=W^)KYt(?xJEVtxCSGIk z>EqUfBT7KTeWNOxB!0vr*8#!602Rj7FBNppe|B;E2%l zKG>o2fi8{r?(RqLqEXisw-wjMInMd~8z%0*VIKLb9}9uCDfMt%oI*6deZQigx-BeA z`^CYLa3x6%PRTw<3yMS^!%_^wn>|XUEfv!-=8aOc@6xN<6d`S6@LvDbaEID==uh^A z>IL8VH3IUIER&Abm~8Hcz#QJUa(Z+!jJ~8A1`OB!h9tMpCKbD3U4Q^ z8NXlI81${s>bb3v=_NnM$3BgLOoxaU+~cEQVUYASRgtDBvd=@JZ~TG%T_0pv0F8&) zC_gIbiVLFny&fQAB-cyOo5vfC@$>@n%C{dWniFP<^CofH9T(ppN&agr^sksE6sqFF zu=5vSC5f9y7sUjn6+H1^BMEct>zvYh8ZwuKbN$-`)9AVk!oGrH0t!XC>0YY0aXI{{ zs`Z{CO6{8!;1h|&=~}ysEE?V>LYk-8tb4k^@bVbY=!cssfCvl@de_xpfL{)<prxH^D2Z-3dHhF^v zEVHlu$0ea5?}Lp)_E-b%0i>}ir#39EgRP=LEu3ci{*;h=e{!`~ihA7S=xAI1*r2br z^Pc7*wwQOP%5d&Gkg5q*>#%#aCx((g>ofnTy#6kq-razpTDSNs%ujs{f!K6Rdg}Sk zA^Yw=YccZS>B%91SA9TS8y7ea}|UU4bed@cn3css!RK4$5*q^o3!IUWDq*XktDt`Ys;0jOv8Wo z?MX$K1(ycp;A==QgksBkf7ZMWJHlJ=TI<98``0^vw&&M*%-NBT>I$R7NyixjH$ou_ zTC~mbU)RsBdHM-pBxYL*`5)*=n=FAoff)%8qfzl~|Zx>Oa%TV=lE65xK8*x+wX*)q8=1MX{i& zZl;Pm{&~Lv8h?}pQKTT?pU;Pdjn|%=Ew-_!O@(Mv04XQM0!UfBBLOq@mS$O2qi{_e z>?ft@ShxW%|m3s~JdoTfXx?Du9r@_UhEr z3;24|F8SWwr+Jeaxhkn-Wjgl96U7&H!C|X|eyqq`Xgm+;sep4t+I*W!aRce_WJK4{ z%Uy`o&Xu~ax^Gj^i8)k_cAWc|k~P!9is7C=Owm?@3olzYM?zOZ-DE6DV7uqnBwsn9 zb3uM5K&jh6LLvML&+E&#+2bHcF~Es@`vR;@PMol8W~_sNkPpz)i_i%j)(`4Vb_?(% zWfelj57~b^1wP(L}ik*uz(oIe?!OoF4pCnD+bjoE$_+l@Cokj zjjKxbB8wxj=XnL~7}dwm4e@q)^TMLjB>aW5H+k$!GJaZ#iHLiNgO|hpR~3rQOW>-d zJx|5)m;N86BKy9&@x*&Sp-x;&(hnigyQ70Y%`SZGg79HXO;7b)dsL3MH^6y8LuC#q z32%b`qsr^26kAkofc8frkI~UYZ#9Td!`4lrn8^{M5P7y(XFLD9S+LH>39dk&ft@DD z=A(NNY+ON$e&<{s^{m#%Ih93kG|LXQ`3Ee$$neXc^>J{7XAR5Aw;&t5YWg^J>JS|n zKQSYT-An$0{qsq((r07&2dhNJt%J%wu%N8?qYta-GDi%U07N&5tN^YW$;+bM7GCN$ z!FG~}=lvH+0za|L%NV)fCt*2%ev~fkwC9b7I6(r7xfTw@*}@{D+>a*vJ8?BU{NVVx zOSi;o_r!xSkI5AG4&S@O(YZXod7%Pba>qlPe~q6MX#75Mac$I!&C(r}AR=p4#hafY z4UVqpAT5=ZdwA>ng(_1YoVbw5iamv4)^>Iy{kz_i%?H|jm(~03)J_o2JW;cfhw`N5 zZ6t+Q221+hij!_7EBWu{pcY*Gt3&CCRFciWJa)1(#3&&2BP-0A?myldKg6n;Vp>*lkHD~dZ~)jX_D39ALA@~F|i z(Um901%ZWI2wp&>WM6*y>2wN)fX2Ni7eqjIlzokf~9&j5^vp zJHgfK)0+FJ@6ocWpWB_?r8o(&OxA#s>(ufsizhdGmgcFw*-Jc9DBoLm)L0M%$;ny(;J_j-UK2VWYlj?=_UC$r4J-e5O zxHZLnl(GL>id@1Otp4LT@rjuEtiqr8zLXAJ7EhTo}OW zi0{abG-_J2_9mMNStE$FM0hEig;L5dUi9x1~pPSZC@CB`>kEl>wQ2M}H{&P@8 zEL(2i_j@(@$|YjoJM}ZoU4P^nodB=tm!Hy;Iz#>J^=-{Bf8V7QoiL=+EBxK0WeV{& zNo}nwZQLO93Og#6>w@O2pSypQya`ycXZH3_CtLuN0Z>DZm_UZyK{TJTrEM$AootNJ z?F6y!Lg4avttPGa@%*1?${*Gm3h9KAap{W%nDc>K_Heq2_a8h&v9Dw2DWLifl8Ok`4s-4|F28L7iy$291{JxPK7GQ1D1xDR1nJ@L`Y?<@dDf8(2hqVX4!4 z+8Ed{q(l(qOrgu?J55!}%K4hsQJPB|c_A}Mdj>%WZkMYu$=^(HfcE&QY%g|R_>G-} z>QLD9Ft`iIWpcXz*^KlJj5V@vdH={ZV`1@rGs~sV3yYwu{I+?WY_pntMS1o|2n0GQ zAdRssLZ|>F8DggeYCqdHAOU?v7V`CKyZ)2-+>@f;hk~v!erMOQ=9KxYc z!FK%;mJR-5MX&UkglfOWQ4aRhL{uifTJok?z^hOHVYsRp*i&=uV{~ZT$rb0r{U}O) zKTTdOas5PP1nWvfK7W{zEOm_`kXuHH^@`W{@~cKx1FdsKhrCqc1RRaS|2W}^wd?u- zakCokh(oSLhvP?`P{YmK7Qqk@*qzehAoEI84D@Gt( zL|8k-KD2mfoAh3-Ikz$tH%n&m@ZwWs>@U7$l$WXD7P36r) zCKD5%&x4QXu}*gcU#ewqjCv@#5y7Eg7C~YHiPL?cEjZHkzP5casX--wqcv%RCgs@o zB%)nM*Lw$|V=vAe^`l+mwlcr8Zk$#N{eLW94Rk6l@O9K!L8d=`1YyD``+k>;;B9f6 z$EKUPBT_RgPycVBRV(2YG7b4j0uMF0AN*0ep(dcihy(1W7cM2dE0yDKyy4%vmzMZf|-(t_&@ekISitwx}Sl9-cv{@9X}`bH1$%> zGZ^VNHW$OA2a+zY<2uK_I@pwi#y=mDa6Gws;p4|YzCpu+J*V1QDmbG@Iee$^{hoR6 ziyxV1Dj4Bwg~I@L1`Z9xM&%@mh!V`8`=pyd6ac3FL_oh--0H z8VY7i^RGOUH8ClM7nMs7b1dHET z39SlkPS!||jwH%2mX-i4bBLsM zb)$*_MyG?7hcB?Y%`)g70wE@qc?j|EC-y|jbd-De@z-8qo$gA_YTY@|TsoY*Hib~` z4G85wbZMlW18C@L7+>PzTEs5Y>HJTuy2|cU)lK7&y)M*={d3}3jli4!oDcA{-lCct zgot~Rcnf_T_&SlFTg84O*owQ{d+Kgt`5=Y2w(*#0^7pj=hC;7 z2WCY0GoKt;iCuSSz*5LL%rSj3?yN1P^pzLejz!B=Z_6FsYT8_XR{tt!DLe3SlrT5c zmhv9XXxi3Pwzr=2@4Ke@duJAeI17@%h3SR>8twQ0(5DnY7xTcJmEW(4mH1Z?N|s5E zl|u(&g{uIB0r1vj@793!9l;vNE!Q=T&l?eAXF*kpi9Fw^V*9V6?2}>sv0rvGTG>Ze zhWOdz!@(9Tm&5gDP>Rq*`ePbZf6}3x@LClhW{P-hR*3tg?&JwCF*^N|8G_*d|5X%! zMaAy)X*<*NJB| zDzw;0omrTCy|7n5NvLLc+WJn>lYWPsmWDOLotvx_$3Qays4 z7bnTf0zlu){#Af>SrC+7fQ$ERtJ^OY=TbLRtVAZt zdwcz<-v%kFtw`Vw{wjSBEw!yox_M>3H-w?rBw3WC$-~fg>BZYB|6$pUk{6(Lc-;V6 z=Zj4TFY1`;OaQS!cR2ZoE+cotM2)mOzd{+hy9hS@r8N^c?*CMQDqSnwgE3xxH@V8J zr;y$gd^QWH4<$FWYy>wm1k07?Erw<_K!G>zLVUoBNzlgmfrh*7jX)g@yMd5Qu+P4+ zNRylaK$L-J75#DjltjXL@&7lA3h-c4bTR9vf4|y*LLiXDy}#zJR|%A(Sal0ps5wjB zRGO|7t=W75F45L-2LozoR5PUIEs;b#wS)o~(Ek$CPpeZ%N8kMy0+*a#7_T2-rGax8AZz#bWcxl}K$sEULCxLpMq-S6 zO^K#z?}pBgaO*!g5B@P33K>(RI)`}BWRk%MzM}dE(gRIZE52J^XX9|0X{dUZ+k)5a z1IAr(OuLC=1D1?Hb3(QYCAglD{f#Er->Jekna$$$f0wQ>DKL}SgN{}dbL&tmBceuy ztb(g$Pei=KbiKtW)&KqyPig%VWW6LbT>vYCkcgsb=$;C$wM7qJL#L2|KzF-9ptP)7 z@qxIXBz2>2;pRU4gHlH!u5V}Fk)AIZ^VaaSRcA19FZ?RUe#Zbt&;+soOG4cHM9M$U zEe-EHe;=~_{c0y^s06|mGfL7Oj{e~bGZ#)zA=)bt!$(;U`M@zQR^2^>EjYM~f5*02 z=YqsH7V2;LJgP(PTUl+*Ht=Hz@r;OQEHAaGRHqR9A`JV+&<j z;RhIe_7h_Kkx;qY;1OjGx+8X<1{iM`8^wRgvf7Q&$D9Zjucy+E>LO`J{WT9kZ~@=E716MArS>SRrif>%TL_l_r33#o*d5NZiD-jk;NVfeWC4d zh7$QUZ=q{x5wYznA(~82orFM_zUi8(=F7~96S9TonT-0;Jc&vJdU|*lT^5uSSol@)tfFB%Y;bBp37;U zh97VS_d{hB7EA8vLtNhh{7|`{)@DVSxuYA%qO-@|+Mh}_qqUUue8@7^HX$(MxA(zr zfN$ScCF{7M2ai?n7N(!CeZt{HOT!+w| z6L68g=IhCI>#u`gmE|eFgg`?MlR_ri6I>)9Uev@M7D=r7UO1*$|nNJ`*3A zm?k4z%2@HZpV%j0%)Bj_unzfe<8mdAzsK97@?* z<8bnKQNTQ@zBlWRKy|)fNLH+~hIH9*>nHViVAjW=h?+NcNdXV0fUySvac=lPh!_h^ zNG&rp5yWa~drd*En-gR?=-5jNRYIKzi$4zn>DZ+ZLiU`+jh ziqSrvi?g&>Mx7DZj>x^~o&dkZ0_oM{Ed^>p$Sc`7r9;GOrHUbX_nyC5 zP1s~~_^{HA^1WRV1F)YmZhB>O@6~>Sz5w}GA>a2rOdB3j-j*kS>{bc~hfD>PwL*e+ z(B6Z|Ffm~>-3+pp3KS?@ZD7Owb&KxH8HPK4l;7q(yHU_lF9yZ1gKu;d4*yg}M}q<= zuH&s0%M8lv`iSy^{%#DDfxD9H-vY^2wLF39WQ53gVs;)1WsA`M;X9>wJmq|^qRR1G^0nI1@nW6%#}iH)So3? z_aWN#TlaA}lc6J(Pyp#bShLO+vEZjfI_FqDNJKg7>#6zdpQ6Jd_-`%}+5RjqlK{RW(+ckSwW$Ra$0;FJI zI8JSEd+25U8y{dLM888YZrHOyk6K%L%O0^MvS@1Y&hkjoP|D9S6p|WIx9o#!<)&)J z)iH_vyH>(E9ggV#9*`wSYko0O6!r2F$Tue4y6>F!nlsaa)xl0IE-)iBja6H&aAa&$ zLZ10QDeIE~W&F35c;N&?5`jIg<14^C)Sk+FB}T{i(NvVZt=ReH>Sy1hB#P;2i)WRKEeB={7*_(p#3Ki`2scK?wE52lQHao~ z@m{mly@T7cyD$iU$=!QV$FooM$d|yX{df9`CiWzN0hZ9Lxg-F5;q2~s(Om3pBcKvA-tLtH7d>5b_5eU^4)Y~;A)1HrN-aEL;f%J& zkL^P$n|N0M4yG5rxC-7N8!3wBT#Eh`I-VI*m1VAwLuRo&Q>uDy1|>oZE6R;L2H=7D zn|#1^LCM++*2SSV#e`8nK^9t-R$&O9UPlql0}>yMp#FL*6YvrXNP(x*vJIjdt&Z_; zZrE8z5FPB{KtpgKUOf#=KE|}ZH+Q)yL9;vJ$Sfb!D#t!DYGvY}t7p0}gBy$RAJ%xV ziB|B+AjrguOYVyiM zK3uuVs;$e1wb=5`S(bJl|4KS|Szu~a)Hc-DCa3v#PC2gq#HE-#J$P@d4K(R{Fj*Ck zyRPCVi&zIXNm8|cjgsX(9_@&vXCaVbcsel1(6|P)_j$6FsUhu`zCok_k#-B z%cb;4V!qR@Da%n^Q&G?Ygzs|!j6h|_Hg6}&7{MinhbCkE*KaNzY^wwi?3( z^aL88#vrnBgfB5p~sRa~(4u0Gb z8yY$)n_{$&oPxzby!_jR(3&Te`i--dP4glr)kr`kRBT+o!N zBm!#qkds@R-(*SWJr|&vy(0d4bNU9cmB6nBm%iupX#h7%dA6Ltu-N9r13IXIY2CSj zDB$1yx|e>>3f}3rfOnlY=9-=_)u%9~aez1NVV!Hn;wGO#9&Sd)phTJM55~F>bJm_s zi47GZAA3GtgEe%$r=an8K|T+qOz;gNMlcg3Ds;}6;aoKGc$Ap1tNW9`2GhbfdBjlF zl2o(tG1l=`Kbd6i*6o8K7~U(-x?X28dtU}^zNIOw?A`k4~sPj1nJL$02_Nxc?QNV7(=_R=gk z5-imCaU}Qvgg)RC zRS=X^;CrwA88;T;T^7;Mu(CKYBoL<$I_NDP4ro-35FPU4P8{UP_tvLxZFuzWadeB6 zF!`#1fncVWy?kjGaFc97Y!i0`^_YBrgb%U@o74zXW^zPMO*5?0ZQb=u;6)Zv@GnlEHmsP6^*WNWXD|% zTHGZ!aWeKERq5Iaf0v#>cbu9y?3Byjiq}wox9JBn=8{Wa3O^iMhx@n8+88k`qw5{~ z;l$Y;oeZksFi-`Dgs8LH?|&9&o9gQl9gq_-TAQgF?HGE8IG2^kzC1>hv21d(>;Z&@ z>;_2LeY6Stx!s=%mgd@rj0K3Mi&L+OiSx;uwu&T2{;HrKGbX9pwW^jjV`)*%XKUqnE-hzhr&0^r(o+!2=Gq;@GcOC;qD}*jh)@&_ znYvb{#<8!lE9w1F&|h)m#VMk%d_ABZdcU^pKjEZ{L}$z8+@2?x78(-r^@Vo*HD|&O ziqbBkBAVhdremviD}cV$;2vI%i;>*t2?jSK1vNh)*#oqZcH@iHvBGrGK-47@u#Gj4 zX&JJmowMa3^SV3F$Av&dO)gAb`&h7yh`8SS9trFdEz9dOehsAJQE>EP|}=x?%` zjZ>R$oj7h$hwJl{3y%)}x-gMo_*rfl`3Idg?SK`OpQ1p9;Ta~{b6vPB;P$}Y-NKC! zh|LgXrqkrSfRN*$Vih*I_t~X0*{`?O5s!1D8vIT5*9tbI*gCP*er(%)WSb@T>!XB= zF>P$txqoq38w_c*j1Z_u*AYvek? z0-`K6q;`O}84F>bMSaHc-RJDuMP&8y!b2}Hb+@lZ_s&!A>DVl8ICLUjVH7otGGR<) zGsloz)6p$592Gd~?^(S+Y$9uYl9Xo%>~J-b@@-|rcm14n+F;STCwWgp3=+d2GXlim&Z7E#h35Yg}-SXGA?2NAoGYWss#xu7+&%#)V|hAiqaD zZ_%qMb~JlUyY@H26*GdfLf&IjBCz+SMUmLG>albnB_bsd+uz;Dr1IHpkWBw>8CNc9 z@6I<@`tLtN_B^EiJOP+X?2jeql)>UwmyN6)Zf@knwK7M>_^-y-|Up1*# zBs3nEuLTsvt^dR(ta6Is!u$;l-^CbK8PM1jRFNUzXfHWxhw7HjS{rvo5R94I*RR^Y zzgv9jXX;*`L3QDR$A>MWU?nBvGhzLLe!KQ8R*7Rf7|kUtGw;i|(=uodvQChcL7kdm zUTt%{m?FkHu3fyQGbCyXOx4fzQ7W}RvunhanJ9y-sAr87SpLQq;A%GE!-uiAHoMKw zXMm}0eh;|&lyNDzTb?P5bz(G&=HobwI(W>BaoGK;j`TP7fanJ#t1kshoH;ukgzR3C zySii=5xmp<_#WQBJvCGw;Vi;4JSzWlzkdjcrpyRbu|(m!6jir9Bo5-DGJs_Ym!GLNiieC8ZaQ#v5<8J(FSe zt8qn`?|tp#eqa7^+jZw!CSp7y5DMX(!Nqv0F+%LV#!5EKCV(a$(5T`lC58&=)!&tQ#t4 z0IrJc*UuBX<{yY~EnT3~XC##hcSwx8;+Clto1sYoC+RzZ2#Ss_sT1@P{RqFL^(%@9eI_FW8F5%_-c2F&K#l(vyD?75*#YXk1HRFQt> zPeWp_Mzn}o#Ps}CNeWT4_JaxPLIjiJvc0dcCy^ zjsMYp4moVJ(~ftr`wEiok^8o7nR+QWk4hsn^Che#zvRZVn6rjCbdOpJX+<;c9Tz;- z7^*gvZS|SqHc&qsUVUA!`mary0ny>>FP9@rOh}Ep=(hB48@7{V>%XoE4h>b}suF zxSIgKl)oXLPcfkewhrV0GG8t)@nz$pa_LRk%*lurh@YNIrAM`_n|YiaAC*}Ac| zRBMNYawj3DO9L4?x?=JKvlO4LTy=@*ko9v@juD%AfFsQM@oPY$QOb%jjZa76wwBlW zb`QDlKldzb=F=WRKH#+T6dl20X$k6n&1qvL$6P!H6qrL*qMPNgaQ3k3n0^o%&)Sd> zJ`Z)m=oMvGbeS||SMeWiMA79l*NjBh+PtBtmSIyKh3Q4Yn%d8qF$& zHt1zWW|1_jSF#(Wt_n{@W&yt;?fg!>8aE0P8ej-hiI>=~z^|HTs#N1gno(jADy2Dw zzUIul2F=TpzrLRRc{(R0z%ZePAHoDr90(Y7t(T&cd! zGaC6jCmjGCHpPtQ6omJYyl6@19znHHP@P&ed9@!x{8`-Bi`zBHy@gx%fV69tmfVJW z_@N5^S*rfTe&S>s(3GzE+6c?6PDDQ-erQ|Flef}wFs>v|ayKYLUiKx^3SXDnDEN{S z!*nmA9Mq9x=LBjZ8q;41YjCRn9(Qhci9@qr05G{s<8O{W$dxl9nhCaXX9tq!;N@M! z1FA1rhxfTz5aw_5rrs!V2_#tmX5u1ptDK8Dscx~_JA(2{@tbF%A?6T zhCFkrJao9ZpM0O^3Sb_e|1R>K7PY=*fx6w}9?&%5u-ZIwbb~vieuxR#=mjfR0R?#3 zSpA0uL%Rts?8)l7GhmYkgg(lf^!9F6#%X`Vr2wB3aM3vQ{ZT&#^(=BE>;PDItlP2{GXlI^pCGxZ-N0&cPNW=JAZi0{ znID%@4il82D$cE9@szRXz#XZ@sW7V}l1Ftp-gAge-IZ>ldu`5@Rl)~J)3denN3H4s zAp7`4GVXP3iJE}aMwPg~ zzX#`at=q11zcoFx?7I+m)lNT8Q{S+MRkcJXt(SyORhv{V8_6NO0`Y31lkQ}B5Mkui z>6F$xeYXW?&ByrQMa7V}T+%lVAYt{}vMSQkV)dF;03OWyNzTqELBTLNx*xNls+@C! zwEJS-R9Ao6V!$ZQc-=xQVexBO9^wO~z1h8mbigG9#w%>PhN{msgw8OZ?`=-IW;!R| zPIKJwT{<&k#!ncOV=AQMy>r}Vj<7z-Okx^Ggz+5B=rZE!5>Ffv>F{h>a{~Nu>m=u_ zu&x@y>S_jm5iqgwacitz*;xUt%bC&NaKm$KXN|j+Gx#>7c40Jt(<%kMK0P`-J@W1c zJfL?r%FM0~a8oM(L9Y#pxGWr=k}{2gA7u81e=^+g1;~Sfx(jbs&P`QLls`))bRR14 zJD$=spqD2%eK*MO{0tp6AiEC7l{y2W``!D4^fsK|)?8>Zbz}oyEn?^zKW>&qYoZGq)O7Hv1)|^e;0=muiSB&y5tT<>c7)l(-f(rdcmXrrhalMl!Kn0}IZfox^2ds6S`moSKeg+^$zcb4`d zG~W8vrGQV29$96+k&W8SM$R(zPgmnF%Ox6!)^rd|>tkQtwex(hzz{C~}TWkVd>wrz|MG`LIf;AvbM z2<{NvAvD2)G{N1S#@&Ovy9a`6aCZpq&=B-h_P*!5`x9<`s!vtbYfW2ojxicUB$r)Z zo_)tt@Q`+o(jm7oYS$#!@YPATXX;1QLpSdIVTN+O*pl$N&-o_61%Zdvl&SNj3Bznl z&#Ty3JpA0Mt+PqHt+rhE876*v1Q9!!NIM4KzJEDU!8uWfYn?IuqPq}bMsKCqTEyoT zS9l@dl51ns1V=xV8!egnQXr+Ei#n6u!@pkKDvG#tb#F{vG2#op4GIJgm;x&^wXe5_ zac-b+f&tL)~;cVF8=s??1kRR@dIxzs zyG@paw^Z7`TY2^{1vm*3YY?HF92p9k>(!bP1*m~85^tS?_2WUhZPE99OvbEeQ-z1f zZ@PVJHs+!SD|QW1r7cG?6sZ++&BE@-dK5k9VzAe{;4gfMyc2_;Gm^g;@{UdVQ6kih z+^`(v+8ejo?&CZGGoDM>n`LumP6bK{!UW8=!t(9eZ(7uj_voBR_=Z$hzX$7sHn{fk zZUQNBWd}kEF3bhqNffXX64d7-9feYPCgC#(vbn|ck1ZYMT$~V|fF9N9A3GS0T^X<6 zR&Lkxqm`kkdjt8QV;Ot(Xbo~HCQNvd*Hs~?sc_zWD9_{6G01UrYjW{Q8XNmCaj&5l zTS@DdQ}>4W73^a-#zBSQv`M=F(p~HASIpZNmi?Xq$&kEA8%&7})VrdA>C&b> z-2qu8MhOl_b@bU1;sF9sCMr`RQmE8nm-Z)biBG(15ceG$chBTg+oaB1L;+oaSFd=| zmU?RSu9$m57FE7&(S@bgp)7EiY~3sAT$2|KU8A{=RCRx*pJZJnUH##-{NubVqWyWT z(4Sbum_#xu{d%v2+8Ag@mEcnFiV&7!LxU^%nEo@Nz6_28ow*{5(#Yx^vc;nA_kHL^ z*~kx+6*f_FWCy*7H&q9 zjJQS<+IF;ljx3J@TB!LXT-6g0ZwCzE3gEP*QF}LKjam^6PX;|9`=cvGjEch~p9_}l zeIq&#Gm%`bPpQ9;;JwN*r zUZ0h6m9h(aGOX4ziVQyA5lhw4o}A`iZFtINqrfjYITqzNntgRKwS-4=yXapNd!dFh zw(@P^$@mFud&Y%S+OL6FQP8W@ljp857v-P&b@rFk?5|VUlmHLxuC3lDi=2S%4CWh@ zW|Q+eScux7A8OXa+-3BLJ7AT;h)exx!ws{~R?7X=p6*1bZ%v3&VBRYEhwvTMsdn5< zaZ7DLTmXH-DmPG>8!7uR>NLjoWk#^&4*}L?#Ea?vxXX>8<;x`yU2pGx+Mw(GJAi}K z0$MV=xa4lxwCT&@bBnDB0H#KRHD1H^)coXs%;!oM^k8`$w_F3h{Cb2_Ykj&ktn{Fh zl^?N$J;TFtat~ME+{WA_S%1+-eVts25AXS;WU@2n$!m@w3wx~l8LFgiie-DUvEtnz zoDO^cJf%a(y*9*Zy0Y0&N3gI}*W03>uidSuUmsIwarS^$cVqUbvESb@KMS|2c7$y4Upp@DEu}6h(BX&RWEtFKCEd-UyVv zrL#4}T^;R-=dLYY%Ydzu5(LDd=gUbCu%q>>gyU-sU%x^yaYCwVcq3E&smO(GDR-K-A-L(%1tOZ;CG+|GN#R|&O@tC2hrI;5BYSpG9Y4TDsJx?q#| z@}R#^t2)_(G?P|6W5`Q<=yvF7(o@8M95X}3(Jo1qPDTroFW_S|4YjxZ4vJGDrkMRE9vMrI*d zTJtbvu$)=Td~`m2o}y6P%u`~Jw=MdRf96}q4bI0Nq_U5PKTcC%%=t{061Ck>W%AmaaYL{)Y z=T&**t+mN>th%K9PO{3n0!18<_T)^@y!8gdtAtI8$(xR_cM_4h?FIw$TD+CRB-tff zt=Ie@C&Zm1I|ok*o*52h6!KH+ENc!}e+PpKV)xuAh%v{6Nn#8c6oqYSGc(}vcK-&+ ziHG$h0%fFCNqH4G_70Y%qJ~|G@P-Lh2KGw6x2|=f%SoFIQ$k^)w+EbYoF^C#D?NBvHc&HA1fA#(j1B^8PYBLa(e; zvCV;dcWe48n(h-u$n&rj-ou(T3FE5nT?0c6ddFIHMNf_?NDi>X`H-hkuxo1-bw2sR+N3!))k$?@I|!JrrbG z>l*#{67wQ6iEx_w%6_Zt#DGF3JkVg0gGUZ@cxpyyZf4S{p`EiXSHxrUxZJJ*pxIps zc#iX*l{(4gJGsxmjquM5M8=kuGSe%XzFl9o^<5J$Xt&()y$%Y>%y?1FNgA@k$9}n> zR-MCgwfE=&+XPsn#oGL_$b(&@E9bHU@Ce=q>UAgAOJ9Ti?aI>B<|Q|L@)`98hmEfv zj0Bm#2oG16vJ1#IcGX^83VpR!r1#X6*@QBGIb${f4F={dPKWnr9;U1{R3)WH@pzqp z=q%HWR@=0df+R=kTHzHfK`};hP`b4EDQV_lr9itdC6gXGR#)$Odgr^u?{`VlmgF_3 z`O!8dI4+ETc!hNobF3xOTEtoC;t6nT9c}`U4CY^Q6GFEU`)W!GX2`w;fX1!ZT>u<~ zCXK}MF403|jJYc^DiAQ^SzJ_UP7t$khY3YIU?E+A# zI2%B!ncHTnBj`!=pwWzsf2dl#mRB)mYr+kGtks8ACnpP16Z|NtHTIav>XgnzP;Ro%v)9tLdJ_H0L3&EK}}e}qk|bCuF$6T9&>-$9)HTh%zN26MB z1sc=6{0c8eC_xSep^?udNB}^BFx2~|1 zxZ_um``rI@*I7Kb%`CPrshG%_KRMfwLan_h5r8vcZC*k+=sQpqLvJ|Im_pQF9q5UK zt4-~cpY}ntWSHNJ>QMe6HG*KO)z`Vl-dB#`{3#v;*qpWfBh#PiysNZ0<>ikT&Nce&8 z6&O}$kEU>8WIXr0ChSLnz5uQ_E0bN&4vK5 zA1%OsM6DE`49Mg>Ln?Ok>h->i1%RtEf~L2Etn}W49hoa!h%Q{uB7-71t5vqL6KZiF zQvpXW&O;a69M6}gOSS&O`Nj0Z&y`|-sTiaDRe{lDVp0GNx~|)T>yJY1V)y>=Pp;tQ zwW-UMzgKTisG#C^jCKm%m!I0B58I{cK?1f2)f8xYj&2E9e{BEi$pY1gsZ{Qc^&0hK zP{<8};F}YZJl3;?$HDK}19!|VM0dgRr+bg4(U4@o*h3zCj#bC{3Amj=qp~msJP|WF z;})Y@{(qJRDBCDDB_wr$nZ{~1DeH|Ib(wz74!k-G0q zMF&L*=Vr%$CqW3{*tEzLmfC}+sYi(;>AGBZC%>@P!S#(8>5328?b4tVyjwXKYrz`P zcb|q|4`D2`g{o0~lPAZ!D2#7p@KPWIz9hz5(`P{*lb-2omB3WP&dYx-Rt0EDjW=rf z){C7^x|c}XJ5UzL?C%9LCJ^Kis^|_%u7EeET7sf+C!!{2<+H!+0^&SufF=V(f{s>D zs-?^A4*4SIGQ>kVvZa5IrmFkB1;kC^%ccuahqzz3GyLXwy_C}Shrv=do*s!UhQoMNa7cv-z0OT1UTizk^B4Xx{pgCQRhRF6S_81LB zhBub8kuH!v6^c%+HC#IELYIUE2OaL&@MIjTAHnN~-W=s802(Sy8CJdcHX_19JQ|Mm z&2h+rm9xwTYNp_b9vPa#8`JVYI2(np2=FT!K9e;&>s%`1IVF2mKXaf%?9+Eg{nkvN zCwrHtcD~y*;mXw4Ab!N}5MJXqXaayApMS1;mrY>hfC1v8r|Ok6P|BxRp<>~EoAuB_ z)mP&7`V>L3cSLg;S@DLC2im)MeRi>lU_F0#4D%I%yQ^@xAbc@W`70==JL65ccdQbLDS+y=Q`yY8M< zZI;Q7X8vQZn9-;8xt@kdz56x-B!itu`uSDmOkIX|Ml5U(=K^N}v7IK}ECLugI6F8w zho24X=sYMPnzH9E&Nyo2ZJ^6jrar#JsBo8frqcq*s7=0(#5^7E&uH~3#|u=&pxc|TbF z>fuuiyP~A?X@3qHw2=V~PAS@UzGS+)Il@XVFA;;{^ORxz`h4b;h`2XHB6W;SFB5=J z1&1|{Biydiq~X%3dT;*gWk5#*tp$=ww;V8c8?E0R_osl!;tj=b@)mjPsmAllyx5l@ z20{Qr8IYD)vm@pkH+ad?vgsNGkX*4?uU7_%BljEsXapi1V4ig5y#}zoOn7)%1jba> zgXuwCBSP@xrM;EL7>SJ~;(u){eDL>))^G;)yaH+IlWJ0xlhoGHRCchElWXu}--60= ztp2h1P{!t8z7ZZuSI>L2@p6L(#`>a$Ogn$UxbQ}#KgKuF>0|dbF_!#PnETLK4!d^} zG(cwGjkaruO7zWq(sNTNF^7$8caFCmT4p+L(}ohz81A;=><6@-(a*Zi^HijGUPDZph{7d}@D~>9Y@aibK9v*_lV!;;?cg3g!(T zjus0NoPSeEErbKEUQ`pRR4fIm#QrYx|pY3-t2e&Q!dK|1wti zaaLh#cLHdHU&!$C7ruu7n=gXjOAwRFz-aLWZDs^=4mln+)urvpfSL?DY&;mn1&GHQ zuNL>rZ-Kep?()xB8S?0c&yKCX-(mg}DJso+c9C`j* z8l(+~vwXSbd;ytksa#IBeJS5tWRU-4*Q>Z$8%daXhrh`_3mSzpZ!*zO1^e1(s^?ut z29tQZx$gN8H~L@Fz%&IG_8X;5u zW<)$X><70F3FH8BHn7q?XjUS4XaEP#0BOc(JJGeFx;C$-vJ)N-DK@XgpK4Hdx(d~| z2CNw%l)>@IA(&W&Y**dK-kMKU8zlx^_uPMlF?f6t!j9jmDXq_TL52xx@( z?+_DTU3k?riq84(n78kr=Q}P6j`}`_s8arG?P4J9*=+(y9Ei=@lU)$yXidn|*&opN ze7_x^jkF(*@RkA|o9l-1H=WZ1uuY%naSe28R_qUoi&EqaJHoi_DFc@EE_PAPfK|l5 z`Oi+2&l9Q~yh~6*31V51&{raJf1q!UE==8jf(bF+;&HeE@!+p#0u}d8$d1jj)2Kx)7mQ{}HgdO_~SL;#xrDl=;h%07_32LI)<$ zAo|y-hR*`E!lO?gAG9GP)4EI*+jt`wf1ApF1jdj{7&}n#D7Kt^NA|$DA~FCCzJPj) zSUXRR|D5l$lLo5Tf4?!H$DGjE#gdfZQQ-@+I@WP(yjT*ZRXCq5SE5}MBK~L`!I7lx zruOrQsu?ANSJP$bX-0URIV4F~&5KJuT@VAbnTu7f z(99v(Xy>q3I!?DY3IE-Gv09iqe+1BwJ8#;&5#P$$I$B*+vv%f{YB>C8Yq$Dthi8oC z6&z;O_Fz`pAkX6LUC;PO;D$p9H@VJCB3gRL zZ1vef>Kg4&h-$DBZ*^mSv|SqC1rwFY#Yv>Tm?r}_MfQkJ)yam{9sLV9pQG_I&Kw8V zCqzYY2j;XIZnXct1~`Ur*~7Cxrbm5d-zt^(4!6LhZ)4hszEot*TBSWWj_`6sMelH> z-j4Or)>w(Cs#HExVz86p=__I%gKRW@haCVC)0{LNw(kT9@27>r1dOUv>n!1X*0UT) zS{&~pB^)7zk8$?ao#>$X;{R`~nymm=mxPSFBiMC9YKu%nD+AX;!^xFdf(i5Uu z{7lqC2m80^6+F(D#v4{~UX$;X2J1_zkE1uWVvb4D^#kzQQHB3&jx-V)0e!0Du{FbG zwP;n3^Ygn&N~#e(-L&lx-#kF>WUHc0ZMk2XeRrd;8dd2!mA@HLl84xw$8iYr!hbAe zs9$nmk#d(IQlDb70BV}=j&w}p9NgE4aUX7S}f?V^d!f+<8>vEQ2@XO7jhW^UwPq^ zacR=(Gk-iGpYNZQJ&{u2MueEB*>s zOZ;_uuJRwdSUE18mZD+RBWs4#;p5R!xvwSl49W7w_0_SZ=blo2Xg4Y1h(4a&%in`3 zSuuYR8r*z*?Nai64J9hb8=UI&GX284UX3L0B#*W0TBV>ljqG;C&GS0Vt$oMIYsV?+ zz)7ZgI443cr);&lWjAy!^9w^!Rg-(hYhWk|MAb@N3|5I{Ed}9g0u{0Gc>j&!haCoZ zW<^{cHI7EFr^nS-yP%^yNvcOvH^q2l;nARn5%gw`@$1_g*xmBO{aSXbM~$G#W2WEc z%>6*(B-;VH_H78WZ*TB{9Fp4cS)U>Ks z)Y@Puu**DK7>7O2O7W7V->rq6$|hD?V1%bS=D}N9-XeAGk6a=IL~zq-IHCoQBLG#H z_qH!JBo3cKPPF$Wg_yjMomI}GS>BmM2wg3O_mHw0P4Q{XOtsgnRagF`zW4Of?KH+;^f4Iu z(Rf8=g)Yy@P<~fRCGcL^tF+Y`QlG%u)XA4jH01y%U{QDNHhq)n^(S&*-Xmv|YrHw_ z>Hho(PjK4?dzRBo*C7cGeM{0}zvJ_8b8$kXSnC5c+J~zTRu%iH^^C;he5CZp2xijY zY-ykjs3L{5;D*Mknz8XwU86IKBv$d1`k^pWT|;%+XcgIV525w< zO&_uy+#w_ItcZ@=`y#FiFB7B=S;TxoOfIg+l|;#bxs%IhU?WhrWJnLCeTeB0F&P}z zR>)%YQj}YpFLqSpk%wM(t{ne`8gYC+bCn6j#HZD>{@>abr*;9Rnb^q)1L+9kL)|MdWBOS(xdb|?iJU#<5~w6a51wtg0Xdjn9p>q|Mya!haQKh=M16t{>NxN2r)XXrN_@Jgc}7Tzkms_D zp3^^MW3(dJOiiOnbNHbrlYu72{(gI7i#FfNXl5WG!-s17DoavPC15>M&VM1F02}kx zS}~(1h(`7ad+}bHghooHhfpp zr*UigncriLKTaBuvKHjCEp~c;mk?`3gD-6?ux<8$zZxYl{^dTD~lZ^q}aA) zCj8l5O6tg@U-jEzT!Qadg3v2nJx;~3ZA1ScJV;>V0boBUDQhDJom^hdI>1#q>JmA* zaMfml@O3>Ez0$sZqOA8-O-)MO(MeEKQnZO`-VOW$^1Z0jJR5PN)X?F_JJGzLr77W8 z%A+7E9yp{CW54kDzCR)*P}GQD0}~MWVZ@c?6Q)vX$6tGm7E|A#ZaPITDL4}CS_G|1lB^F)>_IF5|Ho10`9nL)5pA#>hhkAV<%_6&eM-;W$ zx8e_G74(09elnhfC@OD}C~t4H#&t+m85JSDKmc_Z!;@xW--*s-w%^Cix=Vg^z7Dq3 z;?(^st1uKmLnUE;x$d~!v47D=x6`JZNDKtK4G#yFV%FN2(J#8=L=&?}$qu2YZw;f`|?DYqYZkD33KLIF^{1nkI~@-H z!nTlQQ5cYpxVn&f+;Y+%i52;vCqnzD0V7pL;QQ9oOX5_W#1Up=ao?#gCI zqv2W+KPP-oJWx;}Z+;%a4h;d7g>kiG7SV;q;y%a(__)_dCs)(V91YR(A8%Tc0V8T%F{vrXs_WO^wL9Gf*+mGR|5d&`I9r%`9zaZY1U>(kLr`! zCq@RO6h8t^*AOXjCc`Z3lQ+zO0e;@A{L=m2!QWCI-1C}jCu8(pl4@qaiyI$9@1W*` zt33ts^&32Hj>WD1OB@#Sk6Ha2ef6y!?kzp>`D;gIrwdjC9zhEDnaT7rP4dW9U6H3Y zHgl|kqHkthStIz`D@)b$e>EPF=JO?(bT+}Cff%TOlOGd)0*v6w2y(g5rk?r+x65k| z^g(R$b%43MezdSt*+i|fp|i(zmI*!BkoB$5_`|U$MQbSu4mLB zV!FNgxZ`r5hH&HrPeP;W1X=b4D<3z%4?#R8aJEc9krjniJ8TEeUgxiRQ2USvql6`_ zJl`irQ)m5jUsyX`0NsBXQp>doF%jy%NSN`6Qmoy|zI5 z{3hfQzu4a@Bz05S7|LD}Z|}toYxm*bQn%PMJXZQO>%Kh&K3sDz1mXIf{tE|6FMNw0r9WJp;#AwLR=(q-)Jl zaF<;eO~vo@zp6Z(<%21Ob{d!8n=*{7u~yfgdz@DoIc$JB$PZgX^I#=t zLNCom|16eZd{b|=oF>%;E2eQxhSe3ln|vlw?5-!5PjTHDp{ezXQ)?DW;9_yiu{xB} zbxO9`K6MnA&CXfW@aCJcIxBgZo-v~JeRhDa+k6?Jx}mnWQ7de8@Y(KkwW zy-nKbrD_xDC0uNYNf<_4@l%&FRpNK8M;{Kz^G*&LXm5LxW}53wT^NdJ7rXfolFP+N zI(}UiD%w)br7q?5CUi&-W8Kd$`azd}I10DC2350WW(Al%@^7koNM5VV?vebj4IW1u z#*a~3Hq-Hzytq6BNzxVAGC<2IWWuB--usa|AT*6aRzUVSL=+;DqmMv&;k(egJ|Nwf z+DMS3bvF(D!}O3_$!spLh}Mt5qRhtqu3?iCVR~0A@R(oCwV))@AciS_-I0K#fi|s4 zrp{w)HC*Y>!nP#qvRrw@A zQh9mk6)h?vU2y0RMFiqDw)NMOL>^9v{-eL zjW|BZBpQpU=>Az22zvFDi;L{Xz3jarW`8f@{Cu{0`DmbXuX^`$9Y*P&Pl;}|tr0c(|9zr@^G! zIQ-aX)3W_iF9V}6doRk&E`FuV8cJua^m>9Rd!Z|fn z%BaQl%q>FWEvF!NnMR%8HEQ|9ONg{6n74|P$Q{Kk7RgCvwPI?XOcG8>_5BauH+$$t z@6)9o#?bx%;o6(#g;$hE@er<{(2rG{HdmUs_;(Jb9X<6?k-yD@{2Jgo=w5b56dEc83|JaQw(=_z=3WKY1A!}$ft+TEg24-?i-@W35? z3>*pVus5Vd(Hf;%tsGiq99F@`o{$O1K=e-sp-IxQlID33&;1QDo{!5e=WwrjM*FuN z4=Wa{!p{A8$QSL=A%fD zjsb~@o~XFss>!u17SizmR3Kb+{EPvms;DKbT$Rg7Zdl!(;)O%=Epuz?B;_4;B!Q#F z#_z2|7P5fqHz~I-01b^Fwmw3=?aeMib*(Hp`!nlQR6Niy-Z$x; zXCXl7A24MUWXF9oPHU)xMM$SELD+-ZU=38qzg|uxHzinrd*{U+R=jM&Pgc zhK6=2HLmU-3fTPKSB$Cge};>R!I*Aw9OPQZQycD_@(#;OMx6Ug;iXO`m?x>gtCWQY|68mye_MTmaYPAz@`AlF|VcU ztUyKxw1tG}x?d6gE4rS!-a^dGoE1g6Bh}e*EJT*>;N%K5T#jGgdn+E2DQdKNuVg27 z+($~kCG1hy+Ftlb28D-}G|3_ZG4Yu@v10g@=*)l)sX#$F=cC}={p}4Z+gHB5r!cPa zmE_wYQG?`)DfMM5E6AeTLb5jMP~307P2k^YBGs3ncjvkRijV}vi+x^0^4k)E3paX% zy}Vg#@a`cYX#=?z=HMs(NyU`xBB#n*{Y4);+^6qjPEHK16MkhRPeZwf9;SmOsSDb3 z{66!s@)TBxFKNbl?icq=+{X60VY^ zl$7c#DJgnYNBj4dHfBgjav$P#FmyF~$Wsl}Utto4`Na(-(LZGLizC!W+K?uU|AdOk z_#-IYRF;Cw5E}McTIV_G40gAvl#z>>+IFc~MS5i=2l;ky5~1W5?-kEOZ>P1E+vM}L zWT&;c`g=%OQuMJanfge}uMSr#7?8KIdRT1KDd_J}7SFXx(`$A^hKGre65397SNdK2 z@~7E8vX=Os+)iY&6SD;&(GL^mMUb|OhWVl**^~D!pCb{PeX9GK%BitXL%7wO5lE<0 z1j?lpC;~N5nrzm6h+cVqg^9$iME}VgC4K6iyQ}{*lFetYt6TM0Kg%(kgiZ=@+81Ij zo)gZzpb}(~${BohE5meXpSU5Fi1K`uP`hiyq}!i3_^Hmb!&}9!TMqa7-Zmkd*EwcA zQg5}mIvT}#zfqR9^M=j88hw;SKaPyl$(ZTmN%r21MT+FtNq&iHTcFUrr(skdOs%EWzD-iy9U!2V_VaEW0&6rx{@8BSF$#E?cQBDi~uD-8-lqtG4b@tu4lS>me6=k)9?6Hq?@Dd` zUB4oWRkV7M_P7kvHf4Hw-QzFZG0``{RMeZ@UO!&{^E|eJ(?s-<$uajqZtweE#&3G( zHXJan?>5bv>%8GRi`$Fnepa_?zH`Q%N4sp8MaOJ)dtfB5kEh4S*GKU zP|D9X=Vw$;kvh{!i&3{E(I!!91Fgy_s8R9KA0(qn1meJnA?S7;W20E9{5gGHXX3;U%2GJP((8`Z)Fm%Y(~s9*9ie#O z?MS9&G~I9IeMbI1M97pnGF18vi!S<;u2oY;-3QviV{er9giP9m%k8$sl)rxyqyh)A z36iR`2A}bIaWvzWwHEDrT=Dv#wM3u7O)#AUh}!(&(r}U|gxpx8Se-%K?aJ+M+8>;8 zxDd|~et1bf9I}o)-}%mz-+|oWfdh#H-9BnX%Gsw$g@-Y?a`=zw)Jb1S_A-&h@_#z{ z^f8trR`}I!H|0BxN*tlD$uAN*ihBK57Xal8^^+uW1;JIp(xJ7&|+nn7!c zF@_D@E!2%LXYvi3389?BPanA0zl!F5s{d3U=pHgvpzy0^cxCJTR>CG?%yx8Vcy!ol zOyO5jhE4%kvn(*UqFB#Mo5LDyi+)RZs{?b12u8F>q#*k%3L?5#awF&M>s{gV;YR%0 z`hpI368$;45PA_VB`$(;G2|qKD`XT;fGU-1o3=n?#4{W8uBSWjkuT4SsO>1zsP_+S z1+4fs`S`i;xe^}OKNB~D*|u}<3-s{oSv&S+|BSQTv}WZpvi5)-5!BKq{Twj+Ql(Pm z*%#UOqCf8aOy6{$c;d`grmqy=c6nN?pVz>3-{}_DSX8W6@YYb<3(ZuH9|*98lXbEF zv}zjDE2#u6Z==u!r#fl%o3G-C94(HupsBOEKDvqE<6V|6_OSt6XFvTqq7wfHajXD zHkb8vaCI7RnOpGkj2!q{&L#ae@kgU`1(>Kov%!!?fsRVlb#C%U1*aj6VP|QQk$nT# z><=irtF^=BHe!JTT;{ZUP<|wLIJxc+nDz6+>eHpKw(3h{J@Y3MzToG&9?lKnSoc- zS!*4ynaiZRY~eJ>J*Xc`ghm-B8mA1?m+%c8L$n2D^hW}!miJdFaz%2M@1#h>7G+C5 zG*H=+h_PSf-8WTqRy6Bdn&hgedOP@oYbp2p&PPuYI>MHRH?9G;0o)mkF)?2gbz{%? zS)N(CsCNYoldLL2KG}SI`pQm`A?I=Kw&F(0eO`yz?*p23zZQRO#o9dS|LW{hxv&iD zkNJ)gkB&5B3wUyC ze^S5eto&$cJUXtl6%+as%u3k#So&=<$JMaC)--F2#vJD!d;U{50WpV*j0e*^**yB@ z(}RY>hp*m%76_{L^xE~&WXEo2=9odeoe3wvQ1^M4D){BsA5&+u3r_ z7*FAJVxOr@Z7{BH&JxXRbO>AtiKi0RdZ%Srgqshm8@5;)iLw{?z;86S-BNECv7a!) zPFE{mI|n1LENSj-D6|oA@N7Hj5+MdBU;7_Q^(%Lzp;KLdK|cbVSw*|KXz?#y!4}^uY>Ve z?z-L)fP;omMFjh4QzTJ6p9kkz5iqBU?X-gR5ppChRxnPuWp z5x4m^;&}NhNJB@ZE7?wj#Ag*Y*d~!C{8P;HDtWMe_0V`N`l|grXCdG+_(HpGyrZSz z+5^(xRC1Hq)%imq^-JP(R}CF>8+^VT-^wOovSQK%Vn5KoJPz6tu+N@bhp;r9A88{> zC|by_PWDf(M1n*Z!8M44S)K-+W9aPer7%q7;~YWb`~^LtZ6~xnbdZ*X)_c?N=<5w+ z`@=?TVjhP|5;OqHam}?KJz!pGP6v&+{dMEC;cjfQ2}+P!okpMG_^F#OQJIsUGI=>P6X1gHs6b{c4uIxdw$m< zNaZ0Hk(x-E8%W*xX1cH5D=8td0_T`WsK}H^XuugVaEK#Q{W+IGW=6XA`#K5|Qm7>o z>c7t@1HX5lPrz~a&Og8RK8GM-0Dln!hg&+z|DHxgq~H7BIr1HDq~{t^uU-Ma8gCuV z%Vh?{mAq~>C%{sHnoI4{kd-a1->oGtC`=VIzi|6kQ|GINx&w*_!Ii~r@)um!+JYRi`@n!qn0WxqdRz&A5+-2DQFC~Iu{G$3;#C$C;U*K|YPp2ct@ z9h=736A=3p6qJgTaZ2m4D=nPyiU_&Fe_iXjjoZ$#77DLoQ0rsTgkkdRZ*U~zB`u!T;st^=!jHfFnUiU>;QziS}%Ka1m?_7MJjBTOg7 z#MwEFhQINdIM$_WpMY7BQSdtsKI@AW!R{g&_2kWXmgg%d*Dhr^*g?SJ|A)g*3k~-0 z;Q$O9(VM_7J2y9{T_Xu)_~&i|PWB#iy~M-Jjc6XV>LfafOjDP#Kryt7J?19X6?ye6 zY_ojnPC_ec{od4$3eLYk?}!uXH}j1r&nW;pG<2}Mv0>SjF-i6h-H?!F(Gq9{r6XMF za!9DBzqubC9b^}-C}_lno8@b*aFc4+W`9cxY>@gx158QDIKP>V(Y#8o5oOJ^bnf5u zhi9U2dHvklrU|v|Ow9^`-4tRJ2@Iy`K-C{u4MZ!C{e0UjDmJ8s{&!t|Kd~W3P*--5 zXU~SrsKP@2rD7!cq&tGR|IC|iN6d9#y>Q*wM<|t|Od+NBSDrB$tHyVg(*rg7zhID1 z`<}uR;^X6^wBGi^g7Zaw-;yH>gE*$l869Kn)V+QUE)&OEnX!P5mAqKMD^zzdo+YRH zF9iBeEq(?AsNnP6K$U;VO;|1^srTSy=@@ExT-x#7m#%6_ZfjdVWvzp1xRJx9L@gCo zJZe)-`ade(35hEfJ)|lEN912x9Z-C&xTe1@cOb~g$z5rAB%bqpr+s}&If@9jpnoT` z|6{u(Eea;$z^`rQHzkpfJyD6(M>js4Td#lr#_Wk-wcXsyOB2C_pEYt5%x>)$@?T!0 z(<7sT(XbYr{*h8iWRyJ9vf)@Kol&jSQT!xZ6eYK|a1{)fhXcERbmbqs?wGp55Rv;d z3S1w0oFB0V5}zmJQit@=k%MXisQb(^-ZnTl5R# zR8rz~S+a06b&Fx7;^Z$~XrXm?WP>EO>KnT)MoDk6r1;vst}=pW4L9YxcM`&$Sc^P3 z`H!TRr~8=&KszXwEPOSe(tP}w^(cnR+26#viHu!4NFME6V=7ZRU$mu^#xQv^h&0bs z_mzsZM=~8iY(EZ^G`nf3L;mgIoToah*)KoP>tB4AbnF6&=xl0Nqy6QFN>a*0oY#3@%o9%}QvE12!!d3?3cy;Ll84#D1VJWW``-8_h9{Cu*`7%kr zhlSyKCn>a%+Qm+7(dz#jctntlX_1 zrlJqaY)is_)x4LsBGt!k>HAuWq4ow-vQ-|%#BNTZYJ9g+Jyy%Q=t~_%Nvddom-{r9 z&A-h5myb6nx%dblG3OAUIj6Xf$>Du1@lP(RKc#W<6&d>@iZnh5YqFbHPG>dTy=G|e z`l9yU(N3bohe{)8ihfP0c|-$mjwjAj`3$mW12}(87+f7C7YFgtxZ#Bpm?ozmLs{KQ zK2gEtM-!#Si9fPZYCB$L0M2>$37wmODtr}oP(^AL5Ro2d}I zzk~)X1G8=`Z`*7L3B~%Q?d8VVxBLKul>kq-z22IVEv<}UQS}V%4O5QE7ra<^EVMy3 zV?5}}WzQ-uemX@4)I_I6!>?wDX5Fh(lHmH8R{y2Mr$_YSkffHi`~3^89Q^#o9~0a7 z3N)K}#b)bS_=*T^KuW5jcO0|Egvkx2`FX`&NP7hm!_|YkR94)?PVXXD;O8-9;{fCZ=kFtO;szKCH~4` ziRYw*U-f{{fAbZh^ty9_=V�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 + + + SEO Report + + + + +
+

SEO report - Craft Letter

+
+ +
+ + +
+ +
+

lettre-ndeg2.html

+ + 2025-12-15 09:00 + +
+ + + +

Page title analysis

+ + + + + + + + + + + + + + + + + + + + + + +
GoodYou have declared a title. Nice job!
To improveYour title is too short. The recommended length is 70 characters.
+ + + +

Page description analysis

+ + + + + + + + + + + + + + + +
ProblemsYou need to declare a description to improve SEO.
+ + + +

Content title analysis

+ + + + + + + + + + + + + + + +
ProblemsYou're missing a content title.
+ + + +

Internal link analysis

+ + + + + + + + + + + + + + + +
GoodYou've included 1 internal links. Nice job!
+ + + +
+ +
+ +
+

lettre-ndeg1.html

+ + 2025-12-08 10:20 + +
+ + + +

Page title analysis

+ + + + + + + + + + + + + + + + + + + + + + +
GoodYou have declared a title. Nice job!
To improveYour title is too short. The recommended length is 70 characters.
+ + + +

Page description analysis

+ + + + + + + + + + + + + + + +
ProblemsYou need to declare a description to improve SEO.
+ + + +

Content title analysis

+ + + + + + + + + + + + + + + +
ProblemsYou're missing a content title.
+ + + +

Internal link analysis

+ + + + + + + + + + + + + + + +
ProblemsIt's better to include internal links.
+ + + +
+ +
+ +
+

+ + 2025-12-08 10:20 + +
+ + + +

Page title analysis

+ + + + + + + + + + + + + + + + + + + + + + +
GoodYou have declared a title. Nice job!
To improveYour title is too short. The recommended length is 70 characters.
+ + + +

Page description analysis

+ + + + + + + + + + + + + + + +
ProblemsYou need to declare a description to improve SEO.
+ + + +

Content title analysis

+ + + + + + + + + + + + + + + +
GoodYou have declared a content title. Nice job!
+ + + +

Internal link analysis

+ + + + + + + + + + + + + + + +
GoodYou've included 3 internal links. Nice job!
+ + + +
+ + +
+ + + + + \ No newline at end of file diff --git a/tasks.py b/tasks.py new file mode 100644 index 0000000..bed1437 --- /dev/null +++ b/tasks.py @@ -0,0 +1,145 @@ +import os +import shlex +import shutil +import sys + +from invoke import task +from invoke.main import program +from pelican import main as pelican_main +from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer +from pelican.settings import DEFAULT_CONFIG, get_settings_from_file + +OPEN_BROWSER_ON_SERVE = True +SETTINGS_FILE_BASE = "pelicanconf.py" +SETTINGS = {} +SETTINGS.update(DEFAULT_CONFIG) +LOCAL_SETTINGS = get_settings_from_file(SETTINGS_FILE_BASE) +SETTINGS.update(LOCAL_SETTINGS) + +CONFIG = { + "settings_base": SETTINGS_FILE_BASE, + "settings_publish": "publishconf.py", + # Output path. Can be absolute or relative to tasks.py. Default: 'output' + "deploy_path": SETTINGS["OUTPUT_PATH"], + # Host and port for `serve` + "host": "localhost", + "port": 8000, +} + + +@task +def clean(c): + """Remove generated files""" + if os.path.isdir(CONFIG["deploy_path"]): + shutil.rmtree(CONFIG["deploy_path"]) + os.makedirs(CONFIG["deploy_path"]) + + +@task +def build(c): + """Build local version of site""" + pelican_run("-s {settings_base}".format(**CONFIG)) + + +@task +def rebuild(c): + """`build` with the delete switch""" + pelican_run("-d -s {settings_base}".format(**CONFIG)) + + +@task +def regenerate(c): + """Automatically regenerate site upon file modification""" + pelican_run("-r -s {settings_base}".format(**CONFIG)) + + +@task +def serve(c): + """Serve site at http://$HOST:$PORT/ (default is localhost:8000)""" + + class AddressReuseTCPServer(RootedHTTPServer): + allow_reuse_address = True + + server = AddressReuseTCPServer( + CONFIG["deploy_path"], + (CONFIG["host"], CONFIG["port"]), + ComplexHTTPRequestHandler, + ) + + if OPEN_BROWSER_ON_SERVE: + # Open site in default browser + import webbrowser + + webbrowser.open("http://{host}:{port}".format(**CONFIG)) + + sys.stderr.write("Serving at {host}:{port} ...\n".format(**CONFIG)) + server.serve_forever() + + +@task +def reserve(c): + """`build`, then `serve`""" + build(c) + serve(c) + + +@task +def preview(c): + """Build production version of site""" + pelican_run("-s {settings_publish}".format(**CONFIG)) + +@task +def livereload(c): + """Automatically reload browser tab upon file modification.""" + from livereload import Server + + def cached_build(): + cmd = "-s {settings_base} -e CACHE_CONTENT=true LOAD_CONTENT_CACHE=true" + pelican_run(cmd.format(**CONFIG)) + + cached_build() + server = Server() + theme_path = SETTINGS["THEME"] + watched_globs = [ + CONFIG["settings_base"], + f"{theme_path}/templates/**/*.html", + ] + + content_file_extensions = [".md", ".rst"] + for extension in content_file_extensions: + content_glob = "{}/**/*{}".format(SETTINGS["PATH"], extension) + watched_globs.append(content_glob) + + static_file_extensions = [".css", ".js"] + for extension in static_file_extensions: + static_file_glob = f"{theme_path}/static/**/*{extension}" + watched_globs.append(static_file_glob) + + for glob in watched_globs: + server.watch(glob, cached_build) + + if OPEN_BROWSER_ON_SERVE: + # Open site in default browser + import webbrowser + + webbrowser.open("http://{host}:{port}".format(**CONFIG)) + + server.serve(host=CONFIG["host"], port=CONFIG["port"], root=CONFIG["deploy_path"]) + + +@task +def publish(c): + """Publish to production via rsync""" + pelican_run("-s {settings_publish}".format(**CONFIG)) + c.run( + 'rsync --delete --exclude ".DS_Store" -pthrvz -c ' + '-e "ssh -p {ssh_port}" ' + "{} {ssh_user}@{ssh_host}:{ssh_path}".format( + CONFIG["deploy_path"].rstrip("/") + "/", **CONFIG + ) + ) + + +def pelican_run(cmd): + cmd += " " + program.core.remainder # allows to pass-through args to pelican + pelican_main(shlex.split(cmd))