From 052a3bf978a3203366e4dd81cf01fe2bffcba308 Mon Sep 17 00:00:00 2001 From: Ethan Puyaubreau Date: Sat, 30 May 2026 20:39:15 +0200 Subject: [PATCH] =?UTF-8?q?Rapport=20:=20int=C3=A8gre=20les=20ajouts=20du?= =?UTF-8?q?=20bin=C3=B4me=20+=20passe=20de=20relecture?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Sommaire, exemple tactique Q4 (figure 6) et note « pas de bibliothèque d'ouvertures » repris du commit d'Antonin et portés dans report/rapport.html (source du PDF), jusque-là seulement dans RAPPORT.md. - Exemple Q4 vérifié contre TILE_MAP : liserés D4/F6=2, E5=1, A2/C2=3 et chemin de capture C2→D2→D1→C1 (3 pas = liseré de C2) tous corrects. - Relecture du style sur tout le rapport ; correction de deux coquilles (« énnoncé », ancre de sommaire). HTML et RAPPORT.md tenus en miroir. - PDF régénéré (9 pages, sommaire inclus) ; chiffres mesurés inchangés. Co-Authored-By: Claude Opus 4.8 (1M context) --- RAPPORT.md | 428 ++++++++------- dist/Puyaubreau_Russac.jar | Bin 27456 -> 27456 bytes dist/Puyaubreau_Russac.tgz | Bin 52138 -> 52149 bytes dist/Puyaubreau_Russac/Puyaubreau_Russac.jar | Bin 27456 -> 27456 bytes dist/Puyaubreau_Russac_rapport.pdf | Bin 691017 -> 728321 bytes report/rapport.html | 542 ++++++++++--------- tools/make_report_pdf.py | 12 +- 7 files changed, 534 insertions(+), 448 deletions(-) diff --git a/RAPPORT.md b/RAPPORT.md index 8494eea..a743d2c 100644 --- a/RAPPORT.md +++ b/RAPPORT.md @@ -13,8 +13,8 @@ Joueur : `escampe.JoueurPuyaubreauRussac` ## Sommaire 1. [Présentation et règles](#1-présentation-et-règles) -2. [Analyse des caractéristiques du jeu (Q1–Q7)](#2-analyse-des-caractéristiques-du-jeu-q1q7) -3. [Modélisation : la classe `EscampeBoard`](#3-modélisation--la-classe-escapeboard) +2. [Analyse des caractéristiques du jeu (Q1 à Q7)](#2-analyse-des-caractéristiques-du-jeu) +3. [Modélisation : la classe `EscampeBoard`](#3-modélisation--la-classe-escampeboard) 4. [Intégration au tournoi : protocole de l'arbitre](#4-intégration-au-tournoi--protocole-de-larbitre) 5. [Placement d'ouverture](#5-placement-douverture) 6. [Moteur de décision](#6-moteur-de-décision) @@ -31,33 +31,43 @@ Joueur : `escampe.JoueurPuyaubreauRussac` Escampe se joue sur un plateau de 36 cases (6×6). Chaque case porte un liseré *simple*, *double* ou *triple*. Chaque joueur dispose d'une **licorne** et de cinq -**paladins** (noirs ou blancs). Lignes numérotées de 1 à 6, colonnes de A à F. Le -but est de **prendre la licorne adverse**. +**paladins** (noirs ou blancs). Les lignes vont de 1 à 6, les colonnes de A à F, et +le but est de **prendre la licorne adverse**. -Règle caractéristique — la **contrainte de liseré** : la pièce jouée doit partir -d'une case dont le liseré est *identique* à celui de la case d'arrivée du coup -adverse précédent. Le liseré de départ fixe le nombre de pas (1, 2 ou 3), -orthogonaux, sans traverser ni revisiter de case. On ne capture qu'en se posant, -au dernier pas, sur la licorne adverse (paladins imprenables). Sans coup possible, -on passe son tour. Toute la difficulté consiste donc à "coincer" son adversaire. +Ce qui fait l'originalité du jeu, c'est la **contrainte de liseré** : la pièce qu'on +joue doit partir d'une case dont le liseré est le même que celui de la case où +l'adversaire vient de poser sa pièce. Ce liseré de départ fixe aussi le nombre de pas +(1, 2 ou 3), orthogonaux, sans traverser ni repasser sur une case déjà visitée. On ne +capture qu'en s'arrêtant, au dernier pas, sur la licorne adverse ; les paladins, eux, +sont imprenables. Un joueur qui ne peut rien jouer passe son tour. Toute la difficulté +revient donc à coincer l'adversaire en lui imposant des liserés qui le bloquent. -Déroulement : Noir place ses six pièces sur les deux lignes d'un bord (spécifié dans l'énnoncé : haut ou bas) ; Blanc sur le bord opposé ; **Blanc joue le premier coup**. +Pour le déroulement, Noir place d'abord ses six pièces sur les deux lignes d'un bord +de son choix (haut ou bas), puis Blanc fait de même sur le bord opposé, et c'est +**Blanc qui joue le premier coup**. --- -## 2. Analyse des caractéristiques du jeu (Q1–Q7) +## 2. Analyse des caractéristiques du jeu + +Nous reprenons les sept questions de la première partie, cette fois à la lumière du +code que nous avons réellement écrit. ### Q1 — Modélisation d'un état -Plateau `int[6][6]` (`board[ligne][colonne]`, ligne 0 = ligne 1 en bas, colonne -0 = A). Chaque case : `EMPTY`, `WHITE_LICORNE`, `WHITE_PALADIN`, `BLACK_LICORNE`, -`BLACK_PALADIN`. État hors-plateau : `lastTileType` (liseré imposé, `-1` = libre), -`currentPlayer`, `blackPlaced`/`whitePlaced`, `blackRows` (bord de Noir). +Le plateau est un tableau `int[6][6]` (`board[ligne][colonne]`, ligne 0 = ligne 1 en +bas, colonne 0 = A). Chaque case vaut `EMPTY`, `WHITE_LICORNE`, `WHITE_PALADIN`, +`BLACK_LICORNE` ou `BLACK_PALADIN`. Quatre informations que le tableau ne porte pas, +mais dont la règle a besoin, sont gardées à côté : `lastTileType` (le liseré imposé, +`-1` quand il n'y a pas de contrainte), `currentPlayer`, les drapeaux +`blackPlaced`/`whitePlaced`, et `blackRows` (le bord de Noir, qui détermine celui de +Blanc). -- **Avantages** : accès O(1), copie immédiate pour l'arbre de recherche, - sérialisation triviale, et surtout `make/unmake` sans allocation (clé de la - vitesse, §6). -- **Inconvénient** : la contrainte de liseré est un état séparé à maintenir - (encapsulé dans `play`). +Le tableau d'entiers donne un accès en O(1) à n'importe quelle case et se copie sans +effort, ce qui compte pour l'arbre de recherche ; il se sérialise aussi directement +vers le format de fichier. Surtout, il autorise un schéma `make`/`unmake` qui n'alloue +rien (voir §6). Le seul point gênant est que la contrainte de liseré vit en dehors du +tableau : il faut penser à la mettre à jour à chaque coup, ce que nous centralisons +dans `play`. Carte des liserés `TILE_MAP` (figure 4, ligne 1 en bas) : @@ -71,113 +81,126 @@ Carte des liserés `TILE_MAP` (figure 4, ligne 1 en bas) : 1 1 2 2 3 1 2 ``` -> **Vérifié** : cette carte est identique, case pour case, à celle utilisée en -> interne par l'arbitre (extraite par réflexion de la classe de jeu du serveur), -> et cohérente avec l'exemple tactique de la figure 6. Point critique : une carte -> divergente aurait produit des coups jugés illégaux. +> Nous avons extrait par réflexion la carte qu'utilise l'arbitre dans sa propre classe +> de jeu, et elle coïncide case pour case avec la nôtre (elle colle aussi à l'exemple +> de la figure 6). La vérification valait le coup : une carte fausse aurait fait +> rejeter nos coups par l'arbitre. ### Q2 — Détection de fin de partie -Partie finie dès qu'une licorne disparaît (seul cas, pas de nul). Balayage O(1) -(`gameOver`) ; le moteur détecte la capture au moment où elle est jouée. +La partie s'arrête dès qu'une des deux licornes quitte le plateau ; il n'y a pas +d'autre cas, donc pas de nul. Le test (`gameOver`) est un simple balayage en O(1). En +recherche, le moteur n'attend même pas ce balayage : il repère la capture à l'instant +où le coup la produit. ### Q3 — Sources de difficulté et facteur de branchement -Difficultés : contrainte de liseré (mobilité variable), dépendance entre tours -(la case d'arrivée détermine les options adverses), asymétrie du plateau, risque -de blocage / pass forcé. +Quatre choses rendent le jeu retors : la contrainte de liseré, qui fait varier +fortement la mobilité ; la dépendance entre tours, puisque la case d'arrivée qu'on +choisit dicte les pièces que l'adversaire pourra bouger ; l'asymétrie du plateau, avec +des zones riches en liserés triples (mobiles) et d'autres en liserés simples ; et le +risque qu'une pièce, voire un joueur entier, se retrouve bloqué et doive passer. -**Facteur de branchement.** Borne théorique lâche estimée en partie 1 : ~120. La -mesure réelle (utilitaire `escampe.Branching`, 30 000 parties aléatoires) est bien -plus basse car la contrainte de liseré ne laisse jouables que les pièces du bon -liseré : +Côté **facteur de branchement**, nous avions avancé en première partie une borne +théorique de l'ordre de 120 (six pièces, jusqu'à une vingtaine de destinations sur un +liseré triple). En pratique c'est beaucoup moins, parce que la contrainte de liseré ne +laisse jouables que les pièces du bon type. Une simulation de 30 000 parties aléatoires +(utilitaire `escampe.Branching`) donne : | Situation | Branchement max observé | |---|---| | Coup contraint (un liseré imposé) | **45** | -| Coup libre (1er coup ou après pass) | **49** | +| Coup libre (1er coup ou après un pass) | **49** | | Branchement moyen (toutes positions) | **≈ 8,9** | -Le branchement effectif modeste explique les profondeurs élevées atteintes par -l'alpha-bêta (§6). +Avec une moyenne sous 10, l'alpha-bêta descend profond en quelques secondes (§6). ### Q4 — Coups imparables +Il n'y a pas de coup gagnant à coup sûr dès le départ : comme l'adversaire choisit sa +case d'arrivée, donc le liseré qu'il nous impose, il peut toujours désamorcer une +menace au mauvais moment. Ce qui existe, en revanche, ce sont des positions de +**zugzwang partiel**, où il est forcé d'imposer précisément le liseré qui ouvre la +capture. -Pas d'« imparable » universel garanti dès le départ : la contrainte de liseré peut -toujours bloquer une menace, car l'adversaire choisit sa case d'arrivée et donc le -liseré qu'il impose au tour suivant. En revanche, certaines configurations créent -un **zugzwang partiel** — l'adversaire est forcé d'imposer précisément le liseré -qui autorise la capture. +L'énoncé en donne un cas net (figure 6). Noir vient de jouer en D4, une case à liseré +double, donc Blanc doit partir d'une case double : il choisit **F6 – E5** (F6 est +double). Noir est alors contraint de jouer depuis un liseré simple comme E5, et son +seul coup raisonnable est **A1 – A2**. Or A2 est à liseré triple : Blanc enchaîne +**C2 × C1**, son paladin en C2 parcourant les trois pas C2 → D2 → D1 → C1 pour prendre +la licorne noire. La séquence est imparable localement : une fois Noir poussé en A2, +il ne peut plus empêcher la prise. -**Exemple concret (figure 6 de l'énoncé).** Noir vient de poser sa pièce en D4 (liseré double, -TILE\_MAP = 2). Blanc doit donc jouer depuis une case à liseré double. Il choisit -**F6–E5** (F6 est à liseré double). Noir doit maintenant jouer depuis une case à -liseré simple (E5 = 1) : son seul coup raisonnable est **A1–A2**. A2 est à liseré -triple (TILE\_MAP = 3). Blanc joue alors **C2×C1** : le paladin en C2 (liseré 3) -effectue les trois pas C2→D2→D1→C1 et capture la licorne noire. La séquence -F6–E5 / A1–A2 / C2×C1 est donc un « imparable local » : dès que Noir est forcé -d'atterrir en A2, la capture est inévitable. - -Ce type de combinaison est inexploitable de façon générale depuis le début de la -partie (trop de degrés de liberté), mais notre alpha-bêta le détecte et le joue -dès qu'il est à portée d'horizon. +Ce genre de combinaison ne se construit pas mécaniquement depuis l'ouverture, il y a +trop de degrés de liberté ; mais notre alpha-bêta la trouve et la joue dès qu'elle +entre dans son horizon de recherche. ### Q5 — Critères pour l'heuristique -Cinq critères identifiés : distance à la licorne adverse, mobilité différentielle, -contrôle du liseré imposé, protection de sa licorne, avancée. Retenu en pratique -(§7) : proximité des paladins à la licorne adverse (attaque) et éloignement des -paladins adverses de notre licorne (défense) — le reste est largement pris en -charge par la recherche. +Cinq critères nous semblaient pertinents : la distance à la licorne adverse, la +mobilité différentielle, le contrôle du liseré qu'on impose, la protection de sa +propre licorne et l'avancée des pièces. Au final (§7), l'évaluation retenue tient +surtout à deux d'entre eux, la proximité de nos paladins à la licorne adverse (attaque) +et l'éloignement des paladins adverses de la nôtre (défense) ; le reste, la recherche +s'en charge assez bien toute seule. ### Q6 — Stratégie selon la phase -- **Début (placement)** : irréversible ; protéger la licorne, garantir de toujours - pouvoir jouer (§5). -- **Milieu** : manœuvrer pour menacer la licorne adverse en contrôlant le liseré - imposé ; chercher le zugzwang partiel. -- **Fin** : dès qu'une capture est à portée, le calcul tactique prime. +- **Ouverture (placement)** : c'est irréversible, donc on sécurise d'emblée la licorne + et on s'arrange pour pouvoir toujours jouer (§5). +- **Milieu** : on manœuvre pour menacer la licorne adverse tout en gardant la main sur + le liseré qu'on impose, en visant le zugzwang partiel. +- **Finale** : dès qu'une capture est en vue, c'est le calcul tactique qui décide. ### Q7 — Majorant du nombre de coups et gestion du temps -Aucune pièce ne disparaît avant la capture finale : borne raisonnable ~400–600 -demi-coups. Pour tenir les 300 s/joueur : approfondissement itératif, alpha-bêta, -budget par coup dérivé du temps restant (§8). +Aucune pièce ne disparaît avant la prise finale, donc une partie peut traîner. En +bornant le branchement par tour sur quelques dizaines de tours, on arrive à un ordre de +grandeur de 400 à 600 demi-coups. Pour rester dans les 300 s par joueur, on s'appuie sur +l'approfondissement itératif, l'élagage alpha-bêta et un budget par coup calculé à +partir du temps restant (§8). --- ## 3. Modélisation : la classe `EscampeBoard` -`EscampeBoard` implémente `Partie1` (`setFromFile`/`saveToFile`, -`isValidMove`, `possiblesMoves`, `play`, `gameOver`). Conventions de l'arbitre : -coup `"B1-D1"`, placement `"C6/A6/B5/D5/E6/F5"` (licorne en tête), pass `"E"`. +`EscampeBoard` implémente l'interface fournie `Partie1` (`setFromFile`/`saveToFile`, +`isValidMove`, `possiblesMoves`, `play`, `gameOver`) et suit les conventions de +l'arbitre : coup régulier `"B1-D1"`, placement `"C6/A6/B5/D5/E6/F5"` avec la licorne +en tête puis les cinq paladins, et pass `"E"`. -**Format fichier** : 6 lignes de plateau (bas→haut), `N/n` `B/b` `-`, encadrées -d'un numéro ; lignes `%` = commentaires (où l'on stocke l'état hors-plateau pour -un rechargement fidèle). +Le format de fichier reprend celui de l'énoncé : six lignes de plateau du bas vers le +haut, avec `N/n` pour le noir, `B/b` pour le blanc et `-` pour le vide, chaque ligne +encadrée de son numéro ; les lignes en `%` sont des commentaires. Nous y rangeons +justement l'état hors-plateau (liseré courant, joueur, bord de Noir), de sorte qu'une +sauvegarde se recharge à l'identique. -**Génération des coups** : DFS avec retour arrière (exactement N pas, intermédiaires -vides, dernière case vide ou licorne adverse). `possiblesMoves` filtre le bon -liseré et renvoie `["E"]` si bloqué. Une méthode `main` illustre placements, -liseré, pass, round-trip fichier, capture. +Pour générer les coups, on part d'une case et on énumère les arrivées par un parcours +en profondeur avec retour arrière : exactement N pas (N = liseré de départ), cases +intermédiaires vides, et case finale soit vide soit occupée par la licorne adverse, +auquel cas c'est une capture. `possiblesMoves` ne garde que les pièces sur le bon +liseré et renvoie `["E"]` quand plus rien n'est jouable. Une méthode `main` fait la +démonstration sur des exemples : placements, contrainte de liseré, pass, aller-retour +fichier et capture. -> Bug latent corrigé en partie 3 : un placement légal sur une seule ligne faisait -> planter le calcul du bord de Noir (supposait deux lignes). Le bord est désormais -> déduit de la ligne de la licorne. +> Un bug s'était glissé là et nous l'avons corrigé en partie 3 : un placement légal +> mais aligné sur une seule ligne faisait planter le calcul du bord de Noir, qui +> supposait toujours deux lignes. Le bord se déduit maintenant de la ligne de la +> licorne. --- ## 4. Intégration au tournoi : protocole de l'arbitre -`JoueurPuyaubreauRussac implements IJoueur` enveloppe un `EscampeBoard` tenu à jour -à chaque coup (le nôtre via `play`, l'adverse via `mouvementEnnemi`). Trois -adaptations, dont deux **vérifiées par analyse du jar obfusqué** : +`JoueurPuyaubreauRussac implements IJoueur` garde à jour un `EscampeBoard` à chaque +coup, le nôtre via `play`, celui de l'adversaire reçu par `mouvementEnnemi`. Trois +détails ont demandé une adaptation, et deux d'entre eux ont dû être confirmés en +regardant dans le jar de l'arbitre, qui est obfusqué : -- **Couleurs** : `IJoueur` en entiers (`NOIR=1`, `BLANC=-1`), `EscampeBoard` en - `"noir"`/`"blanc"`. -- **Pass = `"E"`, pas `"PASSE"`** : le Javadoc d'`IJoueur` dit `"PASSE"`, mais la - classe serveur teste `move.equals("E")` (et `"PASSE"` est absent du jar). - Envoyer `"PASSE"` = défaite sur coup illégal. -- **Carte des liserés** identique au serveur (cf. Q1). +- **Les couleurs** : `IJoueur` raisonne en entiers (`NOIR=1`, `BLANC=-1`) alors que + `EscampeBoard` utilise les chaînes `"noir"` et `"blanc"`. +- **Le pass se note `"E"`, pas `"PASSE"`** : le Javadoc d'`IJoueur` annonce `"PASSE"`, + mais le serveur teste bel et bien `move.equals("E")`, et `"PASSE"` n'apparaît nulle + part dans le jar. Suivre le Javadoc nous aurait coûté la partie sur coup illégal. +- **La carte des liserés** doit être celle du serveur (cf. Q1). -**Machine à états** : placement et coups passent par le même canal. Premier -`choixMouvement` = placement, suivants = coups ; phase détectée via -`blackPlaced`/`whitePlaced`. Séquence (déduite de `Solo`) : +Placement et coups passent par le même canal : le premier `choixMouvement` renvoie un +placement, les suivants des coups, la phase se lisant sur `blackPlaced`/`whitePlaced`. +En lisant la classe `Solo` fournie, on reconstitue l'ordre des appels : ``` Noir : choixMouvement(placement) -> mvtEnnemi(placement Blanc) @@ -186,7 +209,11 @@ Blanc : mvtEnnemi(placement Noir) -> choixMouvement(placement) -> choixMouvement(1er coup, Blanc rejoue) -> mvtEnnemi(coup Noir) -> ... ``` -**Exécution** (3 processus) : +Comme on rejoue chaque coup sur l'`EscampeBoard` interne dans cet ordre, le joueur au +trait reste synchronisé avec l'arbitre sans traitement particulier. + +Côté lancement, il faut trois processus, le serveur et deux clients : + ``` java -cp escampeobf.jar escampe.ServeurJeu 1234 1 java -cp Puyaubreau_Russac.jar escampe.ClientJeu escampe.JoueurPuyaubreauRussac localhost 1234 @@ -197,17 +224,22 @@ java -cp escampeobf.jar escampe.ClientJeu escampe.JoueurAleatoire ## 5. Placement d'ouverture -Constat issu de l'auto-jeu : une licorne mal placée peut se retrouver seule pièce -jouable et bloquée sur le liseré imposé → passes successifs → perte d'initiative. -Trois principes : +Le placement ne se rejoue pas, donc autant le soigner. Le constat est venu de +l'auto-jeu : une licorne mal posée peut devenir la seule pièce jouable sur le liseré +imposé, et se retrouver bloquée, ce qui force des passes à répétition et abandonne +l'initiative. Trois principes répondent à ça : -1. **Licorne dans un coin** — un coin n'a que 2 voisines, donc 2 cases d'attaque. -2. **Murs** — on occupe ces 2 voisines par des paladins : licorne incapturable - tant que les murs tiennent. -3. **Couverture des liserés** — les 3 paladins restants sur des liserés 1, 2 et 3 - distincts : jamais de pass forcé, jamais besoin de bouger un mur ou la licorne. +1. **La licorne dans un coin.** Un coin n'a que deux voisines, donc seulement deux + cases d'où l'adversaire peut venir la prendre. +2. **Deux murs.** On occupe ces deux voisines avec des paladins, et la licorne devient + imprenable tant que les murs tiennent, puisqu'on ne peut pas finir son dernier pas + sur une case occupée. +3. **Trois liserés couverts.** Les trois paladins restants se posent sur des cases de + liserés 1, 2 et 3 différents. Quel que soit le liseré imposé, il reste une pièce + mobile, et on n'a jamais à passer ni à déranger un mur ou la licorne. -Dispositions retenues (Blanc joue le bord complémentaire de Noir) : +Voici les deux dispositions retenues (Blanc prend le bord opposé à Noir) ; nous en +avons vérifié la légalité et les trois propriétés ci-dessus : ``` Bord bas A1/A2/B1/E1/F1/C2 Bord haut A6/A5/B6/C5/F5/E6 @@ -215,103 +247,127 @@ Bord bas A1/A2/B1/E1/F1/C2 Bord haut A6/A5/B6/C5/F5/E6 mobiles E1·F1·C2 = liserés 1·2·3 mobiles C5·F5·E6 = liserés 1·2·3 ``` -Nous n'utilisons pas de bibliothèque d'ouvertures de coups. La raison principale est que la contrainte de liseré rend l'arbre d'ouverture très sensible au placement adverse : une séquence pré-calculée contre un placement différent du nôtre perdrait toute pertinence dès le deuxième coup. De plus, le branchement moyen (~8,9) est suffisamment faible pour que l'alpha-bêta atteigne la profondeur 12–15 dès les premiers coups, rendant une bibliothèque peu utile. Le placement fixe ci-dessus suffit à garantir une position solide et reproductible dès le début. +Nous n'avons pas de bibliothèque d'ouvertures. Elle aurait peu de valeur ici : la +contrainte de liseré rend toute séquence pré-calculée caduque dès que le placement +adverse diffère du cas prévu, souvent au deuxième coup. Et comme le branchement moyen +(~8,9) laisse l'alpha-bêta atteindre la profondeur 12 à 15 d'entrée, le placement fixe +ci-dessus suffit à démarrer sur une position saine et reproductible. --- ## 6. Moteur de décision -Negamax + élagage alpha-bêta + approfondissement itératif (`Moteur`), sur une -**copie** du plateau. Capture de licorne = nœud terminal `WIN - ply` (gagner vite). +Le choix du coup repose sur un negamax avec élagage alpha-bêta et approfondissement +itératif (classe `Moteur`). La recherche travaille sur une copie du plateau, jamais sur +l'état réel. Une capture de licorne compte comme une feuille de valeur `WIN - ply`, ce +qui pousse à gagner tôt plutôt que tard. -**Astuces de performance :** -- **Coups en entier** (case = `ligne*6+colonne`, coup = `départ*36+arrivée`) : pas - de chaîne dans la boucle chaude. -- **DFS sur masque de bits `long`** (36 cases ⊂ 64 bits) : ensembles visité/ - atteignable en masques, sans allocation par appel. -- **`make`/`unmake` sans allocation** : un petit jeton d'annulation → millions de - nœuds sans pression GC. -- **Buffers de coups pré-alloués**, un par profondeur. -- **Ordonnancement** : capture de licorne essayée en premier ; meilleur coup - d'une itération replacé en tête de la suivante. +Plusieurs choix tirent la vitesse vers le haut : -> Cohérence : le chemin « entier » du moteur double le chemin « chaîne » vérifié. -> `VerifMoves` (§9) prouve qu'ils produisent les mêmes coups et états — optimiser -> n'a pas changé les règles. +- **Coups codés sur un entier** (case = `ligne*6+colonne`, coup = `départ*36+arrivée`), + pour ne manipuler aucune chaîne dans la boucle chaude. +- **DFS sur masque de bits** : les 36 cases tiennent dans un `long`, et les ensembles + « visité » et « atteignable » sont de simples masques, sans tableau alloué à chaque + appel. +- **`make`/`unmake` sans allocation** : un petit jeton suffit à défaire un coup, donc + on explore des millions de nœuds sans solliciter le ramasse-miettes. +- **Buffers de coups réservés** à l'avance, un par profondeur. +- **Ordre des coups** : on essaie d'abord toute prise de licorne (coupure immédiate), + et on remet en tête le meilleur coup de l'itération précédente. -**Performance mesurée** : ~4–5 M nœuds/s ; profondeur 12–15 demi-coups en 6 s -(plus dans les positions étroites). Les gains forcés annoncés se concrétisent par -une capture. +> Le moteur a sa propre génération de coups en entiers, en parallèle de celle, vérifiée, +> d'`EscampeBoard` en chaînes. Pour être sûr qu'elles ne divergent pas en silence, le +> test `VerifMoves` (§9) confronte les deux et exige les mêmes coups et les mêmes états : +> c'est ce qui nous garantit qu'optimiser n'a pas modifié les règles au passage. + +En pratique, le moteur explore de l'ordre de **4 à 5 M nœuds/s**. En milieu de partie, +l'approfondissement itératif atteint 12 à 15 demi-coups en 6 s, davantage dans les +positions étroites. Quand il annonce un gain forcé, la capture a bien lieu dans les +parties de contrôle. --- ## 7. Heuristique d'évaluation -Matériel constant → évaluation purement positionnelle, du point de vue du joueur -au trait, à partir des distances de Manhattan : +Le matériel ne bouge pas (paladins imprenables, licornes en place jusqu'à la prise), +donc évaluer une position non terminale revient à juger un placement. L'évaluation se +fait du point de vue du joueur au trait, à partir de distances de Manhattan, et combine +deux idées : -- **Attaque** : proximité de nos paladins à la licorne adverse — terme *somme* - (pression globale) + terme *minimum* (l'attaquant le plus proche pèse plus) ; -- **Défense** : éloignement des paladins adverses de notre licorne — mêmes termes, - signe opposé. +- la **pression d'attaque**, c'est-à-dire la proximité de nos paladins à la licorne + adverse, avec un terme de somme (pression d'ensemble) et un terme de minimum (le + paladin le plus proche pèse plus lourd) ; +- la **sécurité**, soit l'éloignement des paladins adverses de notre licorne, avec les + deux mêmes termes mais de signe opposé. + +Avec les poids retenus (2 pour les sommes, 8 pour les minimums) : -Avec les poids retenus (somme = 2, minimum = 8) : ``` eval = 2·Σ(10−d_attaque) − 2·Σ(10−d_défense) + 8·(10−min d_attaque) − 8·(10−min d_défense) ``` -**Heuristiques testées et choix** (réglage par auto-jeu déterministe + matchs vs -aléatoire) : (a) somme seule → jeu trop diffus ; (b) **somme + minimum (retenue)** -→ le terme minimum fortement pondéré oriente les paladins vers la licorne adverse -et améliore le taux de capture ; (c) terme défensif symétrique conservé (évite -d'exposer notre licorne). Le fort poids du minimum reflète que c'est l'attaquant -le plus avancé qui décide d'une prise. +Pour régler ces poids, nous avons fait jouer le moteur contre lui-même et contre le +joueur aléatoire fourni, en comparant trois variantes. Avec la somme seule, le jeu +restait trop diffus et le moteur tardait à concentrer une menace. La somme plus le +minimum, que nous avons gardée, recentre les paladins vers la licorne adverse grâce au +fort poids du minimum et fait monter le taux de capture. L'ajout d'un terme défensif +symétrique a été conservé aussi : il évite d'exposer notre licorne sans pénaliser +l'attaque. Ce poids élevé sur le minimum traduit une réalité du jeu, où c'est le paladin +le plus avancé qui conclut une prise. -> Limite assumée : poids validés contre l'aléatoire et en auto-jeu, faute -> d'adversaires IA tiers. Les tactiques à court terme sont gérées par la recherche, -> ce qui rend le joueur robuste malgré une évaluation simple. +> Une limite que nous assumons : faute d'autres IA disponibles avant le tournoi, ces +> poids sont calés contre l'aléatoire et en auto-jeu, pas contre des joueurs forts. Cela +> dit, les prises à courte échéance relèvent de la recherche, ce qui rend le joueur +> solide même avec une évaluation aussi simple. --- ## 8. Gestion du temps réel -Limite arbitre 300 s/joueur/partie → **enveloppe interne 280 s** (~20 s de marge). -Budget par coup : +L'arbitre laisse 300 s par joueur et par partie. Nous travaillons sous une enveloppe +interne de **280 s**, soit une vingtaine de secondes de marge. Le budget d'un coup est +une fraction du temps restant, bornée des deux côtés : + ``` tranche = clamp( temps_restant / 12 , 120 ms , 6000 ms ) ``` -La division par le temps restant décroît géométriquement : budget **jamais -épuisable**. Plafond 6 s (pas de surinvestissement en ouverture), plancher 120 ms, -mode « panique » pour les dernières secondes. L'approfondissement itératif rend le -meilleur coup déjà trouvé dès l'expiration de la tranche (temps contrôlé toutes les -2048 explorations de nœuds). -**Mesures** (auto-jeu équilibré, plein budget) : max ≈ 6,0 s/coup (le plafond), -cumul max ≈ 36 s/joueur sur une partie complète — très loin des 300 s. Réglage -conservateur, augmentable sans risque. +Diviser le temps restant le fait décroître géométriquement, si bien que le budget ne +peut pas s'épuiser, même sur une partie qui s'éternise. Le plafond de 6 s évite de +gaspiller du temps en ouverture, le plancher de 120 ms garantit un minimum de réflexion, +et un mode « panique » couvre les toutes dernières secondes. Comme la recherche est +itérative, le meilleur coup déjà trouvé est disponible dès que la tranche expire, le +temps étant relu toutes les 2048 explorations de nœuds. + +En mesure (auto-jeu équilibré, plein budget), le coup le plus long approche le plafond, +environ 6 s, et le cumul sur une partie entière plafonne vers 36 s par joueur, loin des +300 s. Le réglage est prudent et on pourrait l'ouvrir davantage sans risque. --- ## 9. Performances et tests +Chaque maillon de la chaîne est contrôlé contre une référence indépendante. + | Test | Garantit | Résultat | |---|---|---| -| `VerifMoves` | chemin entier ≡ chemin chaîne (coups + make/unmake) | 3 000 parties · 142 165 positions · 1 281 985 contrôles · **0 divergence** | -| `RulesTest` | règles directes (pas/liseré, capture, imprenabilité, non-traversée, pass, fin, placement) | **21 / 21** | +| `VerifMoves` | génération en entiers (moteur) identique à la génération en chaînes (vérifiée), coups + make/unmake | 3 000 parties · 142 165 positions · 1 281 985 contrôles · **0 divergence** | +| `RulesTest` | règles vérifiées directement (pas/liseré, capture, imprenabilité, non-traversée, pass, fin, placement) | **21 / 21** | | Matchs arbitrés vs `JoueurAleatoire` | protocole de bout en bout, légalité | **7 / 7 victoires**, 0 illégal, 0 exception (2 couleurs) | -| Démo IA vs IA (serveur réel) | partie complète moteur vs moteur, pass | 21 coups, fin propre par capture | -| `Bench` / `Branching` | vitesse, profondeur, branchement | ~4–5 M nœuds/s ; prof. 12–15 ; branchement max 49 / moyen ≈ 8,9 | +| Démo IA vs IA (serveur réel) | partie complète moteur contre moteur, pass | 21 coups, fin propre par capture | +| `Bench` / `Branching` | vitesse, profondeur, branchement | ~4–5 M nœuds/s ; prof. 12–15 ; branchement max 49, moyen ≈ 8,9 | -Séparation des rôles : `VerifMoves` (moteur ≡ `EscampeBoard`), `RulesTest` -(`EscampeBoard` ≡ règles), parties arbitrées (dialogue correct avec l'arbitre -réel). Aucun coup illégal sur l'ensemble des parties jouées. +Les rôles ne se recouvrent pas : `VerifMoves` montre que le moteur colle à +`EscampeBoard`, `RulesTest` que `EscampeBoard` respecte les règles, et les parties +arbitrées que l'ensemble dialogue correctement avec le vrai arbitre. Sur toutes les +parties jouées, aucun coup illégal n'a été produit. --- ## 10. Compilation, exécution et livrables -`build.sh` produit dans `dist/` les trois livrables de la version finale : +`build.sh` fabrique dans `dist/` les trois livrables de la version finale : ``` Puyaubreau_Russac.jar jar exécutable (Main-Class : escampe.ClientJeu) @@ -321,44 +377,48 @@ mainClass jar:Puyaubreau_Russac.jar Puyaubreau_Russac.tgz archive : Puyaubreau_Russac/ { src/escampe/*.java, mainClass, jar } ``` -Seules les classes de production entrent dans le jar ; les utilitaires de test -(`VerifMoves`, `RulesTest`, `Bench`, `Branching`) en sont exclus. Le multijoueur -(humain vs humain, humain vs IA, local ou distant) est documenté dans -`MULTIJOUEUR.md`. +Le jar ne contient que les classes de production ; les utilitaires de test +(`VerifMoves`, `RulesTest`, `Bench`, `Branching`) restent dehors. Le jeu en +multijoueur (humain contre humain, humain contre notre IA, en local comme à distance) +est décrit dans `MULTIJOUEUR.md`. --- ## 11. Sources et bibliographie -- **Énoncé du cours** (Université Paris-Saclay, Polytech APP5, 2025-2026) : règles, - carte des liserés (figure 4), interface `Partie1`, classes fournies (`IJoueur`, - `ClientJeu`, `Solo`, `Applet`, serveur). -- **Algorithmes classiques**, pour inspiration sans copie de code : alpha-bêta - (Knuth & Moore, 1975) ; minimax/negamax/approfondissement itératif (Russell & - Norvig, *AIMA*) ; masques de bits et ordonnancement de coups (*Chess Programming - Wiki*). -- **Déclaration** : aucun programme d'Escampe externe recopié. La seule - rétro-ingénierie porte sur le jar d'arbitre *fourni avec le sujet*, pour confirmer - le protocole (pass `"E"`) et la carte des liserés (documentation ambiguë). +- L'**énoncé du cours** (Université Paris-Saclay, Polytech APP5, 2025-2026) pour les + règles, la carte des liserés (figure 4), l'interface `Partie1` et les classes fournies + (`IJoueur`, `ClientJeu`, `Solo`, `Applet`, serveur). +- Des **algorithmes classiques**, comme inspiration et sans copie de code : l'élagage + alpha-bêta (Knuth et Moore, 1975), le minimax, le negamax et l'approfondissement + itératif (Russell et Norvig, *AIMA*), ainsi que les masques de bits et l'ordonnancement + de coups (*Chess Programming Wiki*). +- Pour être clairs : nous n'avons recopié aucun programme d'Escampe existant. La seule + rétro-ingénierie a porté sur le jar d'arbitre fourni avec le sujet, et uniquement pour + confirmer le protocole (le pass `"E"`) et la carte des liserés, deux points que la + documentation laissait dans le flou. --- ## 12. Conclusion et difficultés rencontrées -Le joueur conduit une partie de façon autonome, dialogue correctement avec -l'arbitre, ne produit jamais de coup illégal et respecte très confortablement la -contrainte de temps. Difficultés principales : +Le joueur mène une partie tout seul, dialogue correctement avec l'arbitre, ne joue +jamais de coup illégal et tient le temps très largement. Les principaux obstacles ont +été les suivants : -- **Obfuscation du serveur** : lever l'ambiguïté du pass (`"E"` vs `"PASSE"`) et - confirmer la carte des liserés a nécessité l'analyse du jar — décisif pour ne pas - perdre sur coup illégal. -- **Interface obfusquée vs nos sources** : le joueur aléatoire du jar n'implémente - pas notre `IJoueur` ; les tests contre lui passent par le réseau. -- **Avantage du trait** : en miroir, Blanc garde l'initiative via la contrainte de - liseré — propriété du jeu. -- **Réglage de l'heuristique sans adversaires** : validé contre l'aléatoire et en - auto-jeu. +- **L'obfuscation du serveur.** Trancher l'ambiguïté du pass (`"E"` et non `"PASSE"`) + et confirmer la carte des liserés a demandé de fouiller le jar, sans quoi on perdait + sur coup illégal. +- **L'interface obfusquée face à nos sources.** Le joueur aléatoire du jar n'implémente + pas notre `IJoueur`, donc les tests contre lui passent par le réseau, où seules des + chaînes circulent. +- **L'avantage du trait.** En miroir, Blanc, qui joue le premier, garde l'initiative via + la contrainte de liseré ; c'est une propriété du jeu, pas une question de force du + moteur. +- **Le réglage de l'heuristique sans sparring-partner**, calé faute de mieux contre + l'aléatoire et en auto-jeu. -**Pistes d'amélioration** : table de transposition (Zobrist), bibliothèque -d'ouvertures de placement, terme de mobilité différentielle, recherche de -quiescence sur les menaces de capture. +Si nous devions continuer, plusieurs pistes se présentent : une table de transposition +(hachage de Zobrist), une bibliothèque d'ouvertures de placement, un terme de mobilité +différentielle dans l'évaluation et une recherche de quiescence sur les menaces de +capture. diff --git a/dist/Puyaubreau_Russac.jar b/dist/Puyaubreau_Russac.jar index ecce87266a6324ddc46a0ecaf76c8cc06b7e0121..b7e98fcd6be803403687d6fa667b0d4b6ed141df 100644 GIT binary patch delta 247 zcmX?bjq$)WMxFp~W)?061`Y;>>q{o`Xfgpw^93OCrV5ape1J)DvjXEhMj(6h0j9%X zx|PM01H|9MbBUYj+LFx^B#yCz_z?=y%pkf{*+CsBK6zoB)aHv`hG0D`KKnU=a+CM) zNNv6!dH}3{VVnXZNdMvZDv delta 247 zcmX?bjq$)WMxFp~W)?061`Y;>$#oNXG?{>;`2rAmQw2y)KER~7S%GmLBaprM0MlVG z-O6Ih0pjoBxx@{kCrBJ)2hkA<(##;bRM|ltNKalEC$;&ammydWi_d;ekk}p`sm=F8 z4}kSAj8g#19geR8>7Q($ZV95Q(jCAm(@j9sr*tO}WtIV^sxsU_yh9maB`lfFAf9KY fH;9^+36{H;=?LN}W(9z#;w-Srtyy5fA6Xs%qgh@$ diff --git a/dist/Puyaubreau_Russac.tgz b/dist/Puyaubreau_Russac.tgz index 8fcef60c5764b2f3c32c648a78df9797ee62d4a6..94cc3591b16be6d34288fc662ed10b15cd57f701 100644 GIT binary patch delta 31274 zcmV(jK=!|?mjktz1CW&rO3F#f%94mnNQsL}k)S*QQjy(R6Y>9>|No84M1Lz8Fh?m# zNZ#Z%vq=FE7=I+R>0ht0>6r*@`jxfEWwYK8!)DF!D~rcxe+XBTcZOy@oL74Ks9zdc zM~mNyYuyPBPmO-$x)gGUWYaBK=(gJ4cSC3b>-fgj93U;nCun${eSI%oa)w>C-WiR1IYuarrS9h z=UD=*K0hngEv@bR^|1Z(sf&{CBOeqxtG^wy9n#X*E9tI8Oqn8{ zQ%~2z6@MbqY%#$*-oO!17vU?OPIfy#!tV_Q-f19eC0p3b>38nvG?cG45nxKuIa1ne)!ah z@XPT(QUYgwN?x+)`z(^B@>C>i-=KGz{qBYbJ4GgW;scu6tHmccStKx0rygIYCfRoL zL4R2+t>o41iIf#*DBoRG*E~=6;VS7X4bEG%g6#U=cZomLdbAJbReJuzbNwrV-(kwU zhi<+WX@KlzPMWHXSKI$o0BzZ$Sjej4W2fPrCAD|)fM+dr?+JgKM~5?9ili3JscHhH z+xy!bVnlmw1<#o(roKx{6PtRW`O)s1#D5DDsf=rlltwL!th`0pg_uTRmYd05y;ZWW zbc(bdYV{aBUA%o&>xKbcJ8kNeyF#3nPU|&z!X;b8*r-CLyjGAtRbTzihb(zouR`X$ z%a0hhLb%=RGML2|Gd|2LNobgU;VEL&+z~<*MYAU|;m+gX?AJ}L44oMf&3=yC&3~Te zabOCS$ZK7h0_+bfyi2{r+j+P)xjJ>P^^C{i^P|P~0&pY0Lp6%~Uk;axMF-wV{U-7B z`dtH_q|dRhANuLs3brQe(xh~0kH+^O!BKr=ksPg( zkGC3@l)1l(Km4ghHRp#2OFv^vvVZg&R7n#>$f3>zG|$=5Cm)XwPB%>N+7hAmD2^+f z)35v0=vkQOk44c)X$9r1as7GP1gfE@l1{tk*qjz>Tg8K&E=+mf3aGvDDZL~3ew(2N z{ZF4ObiZBV#tJmk$it%E(+JK7a3-#B8~9 zSjsSUH=~TK#WUl>J_eaBZLxC3WwEM3C3a0O1#-`nz*4;LH|f_JJhDD+Hl*|XO8)c_ z$LmqAJGwZtEe_o&_}FzOpYd$ZCE1Q@4i1S4_MzAjE{60z1L`DgLyPkCTZOboZ91?V`y!Do;_J7Qo9ZiWsGz&b28WPXykC|R7cp@p)%7A#5_O+&r|4N`u zSG4oCX`gW6LAfgeKhN)|{hVO*QrH&x4A^qI< zhRN`_U%tGo^MK_*VafiZQd$nrhqd7&CKJPCS}z0*!|fk%$=q*+m4BQvX8!WC-$d~D z?u#DR4I{QsxyT(k{ie924^m8yJo_V;`kTnv{<0*oHjX{cQDfiS?A~fzj#u@uzi_|o z_VBkIDiL4ai;_)=9x*!+x^T8TkhI75=d*<^58{%z-ksk$@1&t|b#%bx>VnJ7s`&vK z%|u~W~v$K%^3_J8|$c7ow%YX^fDr8JpXuF>9k zL#U6R#(<*eE0-;~4;M4yR4w4Jn3hqItJT|)cQyKDBj~ryAW>UP+ryu1+jIG97<>O! zHI3f<&a7>|aeq&^=x25}98H}GxhQhe_;7Npn)~<3;G`@H{!a;%IaIsS;*<^_h;W<8 zQx79ym)C67@zS0j;D^B|4||Oj-k)WTm5=g-AGv#af9l(vst>4cw{b6$eOTl+TikB+ zzFhjuZ|#t86j}EUOz;1-?aWc`#`=pM0n*c~NwB(Pw|_9`b;gUODZFnquD>;{M@MH$K#hn{{F`^o6!?2_4l%x^(VLje%4G;hh4T?Y7R~id2cu~6;K^7 z*Tpe*=*Kz11?dOLmOrSVRFis-+r&~{@Txgq5%H50BqSxY zo5kihvn(MOD}QYhVIat$)5D!Zhd;K-(rJPsSpABgp-9aB zJ7RPBqVS+9U#k9*`*c&eul$aCy?5gMDl7GMB;v@Oqa+sx+qL8F=Nq=fSyMltur#&o z_L7Q!9scxW##3RN(%0v_qh9z)$BohmyE8va?eP)~cz^IUwiNl5xqF%`{ARqA+t_x2 z*}m5B;GE0i@+==~1<#m2{hH7r9%1UbP*ftqu;1|6!>_shQ~9Ei&k)RyTF;Ht=bhdy zI`ppZfykNLN&>|@Y0M|@*1q_1?UaRt*yGY_3(HIGcOKIo-jQGKWBKNshGTZ55ay-K zGlWg+RDa5W`oywZZ325=)v&sBWyhJG^o;(-JW6Xceyh!h?Q;_yNK9dej4tXeBqT?- zY?h9=pMaPfpXs-}0Vf2rr$CM|Z>sK;-G8x>Y;X86OI^sZ;{zJx3XHsunSGx8fb~p5ShUQy`_6N1kraL~7 z)t=QlI`Qnsh+Kd8T_2CxheyR!sk2#HznPL+@k(dTMctT|q7L|ZF+V%l zT$!P!n%}?k^<2@EApaf@1LFcM@gAtVmh6X<9B+zVN}tQNxc~k~rBt1iQh_IhlzQuz zmVdN@edgJZ;(bp@QJ=dWi`tg|jbT^gm7YY&+Wlh=vTGVBO zx4UvOe^8p4EdAJDt=*VVt9M*Xq)9K?m1d-KKKhelq1&D+$>~@ADLwv~QRz3b+>2BT zT(mx?dRreF58WS^z?$aEsH6S*jcx8OKmZyW7%16 z=Uoq<-<{SXE6|DPxUR2gpOBv8-p!hF6G2?4y&g}%#Ti=_@?(W$xFseqPKfbjdqumhzhLj z#GIILL1aeQ&S;DM()*Lm#A`^z6vaezVqOUwKYx5KLf1!L*e{U9R)}OGu z)T=iM$<$MqkK{<)G1ROXJ7_Iw#I0P#&K|&Swot|TB{{Y%FH2`ZIkmq)_Km6461+cM zx}F7@49|S-ezBuBK5T!M?teqWx^ShT7)*Io&ERLr;0Ki%@nt0<;a;-=uOjnV7JTG+ zw?FG(^nQEid0Y^`*F?F*g5{fwogd>5yP%(&RIx}&st1}yJ>GHYCeu^i3aY?oY3E9( zg1m#7`V2ky--6d9m!D|qR@XU^XwaWKcxMLknt7n>G_$wcuQQ9&M}NW(Hc`mLf6%DJ zgu>)uG0+f`;@nU!q1!tie;tvW$cUo-1*PRk9%wj)urt+jI&`39&`r`M>zu@Xg9Ao` zm9bK&@`?*uB^^nxMqdX$J9XhffrGL`>*KsT+0fmWU0~g}^wiU-_uCyke!Jn&$KHf! z_t(n89o&1%wuepgJAb~cSL~|i?YgPRY{%~F%p~=mxUbL%Tw(F*7*KOIZ23cmi z(WXM%FSm5%c6dZbMKVaRKlt*}t-ZSy9=!K*;dX`LE*tY>)2UWZtBk#Z&3G@1sp%!s z9A|Pi+xZyzcs7Cey+m^V?yntA;g)K8PEcJMkLaI^iVZpM(|=hTB9YFF{fv#el$rU1 ze7B0#?z>K=@G$jBSfYCNAKmfxp?ojV zpC*DlXAj@@)PH@rJ5(DJyH6!cQMk<_1Rf&SwEGrC+yQTQDT%gy7m_R^ow*a*sp3U{ zx?ZxM<4SYM>Bo7WrPPSd@Y1}ik#~FowD;1#&QIxNyUHMT#5l_=hi_lS;?A9& z`gaz&{gQ81>+{i#)myMVjh*&9@ax3glErjo>EC58-+wCmKNOpONP2v$U*Y?^fGe=z zl>P%!2NkrUdjeHt&g~qTF=~`QXUJ4bT~>WPOjv}v$oWo^hkE6BjOICB8Hp(9ZSIbi zJ@@DfVvkC^bKYsm@O$v<)bFb|$Jk-Qk>MFP3kKYt7V=bF(^c*6A|Gl@`b-*fx$AT0 zt$8J1hJWxkuh~B=hB;i|IC|M_-{ZjFcJ_Bqp~DwvzSHa254a}s&oO1cs%veu{=Ks$ zRLtc?2-$eVsKjJtz2wx^^yBs(2kzz%SsSUM`Z?a~D3o?S6m(T8Y-qV}doUw%^oAGf z75baU7?bb0k_zX{HZSTSzHwEbjV=7OH=NE$M1P<<^6BER23Mh7s(HY+^I2*6Hu}`; z=CMA0L8QaGJ0eK??%g~bOe$088*NbTeXrw33BMrR>f05;v*meL)nDnJhE;G{Iqk?9 zC^X+`-0t-8;)PwVZDdw^H4bMFTI?t{qHcwD9u_WMP@b3!xOF?U_e&X7>6dd-w8vq4 zY=1s^F&V;jeOq7ckl5+lTG;5XqjW)h@Wyfbnbf1DY{7r;sJTu+lSTx zWS_ptcHJxKJuNTG-9#2bg}7n(^`7NTZwA99mZme%1@R2Y>~z+B(cdwRWQfm0o}-7o zXtxAjY36@k(WSxoq3CqR{m*-8WgSkD@PF<+U|1?xdQfEvMOGetp3+8&o)KVM5#0&i;JH62BXj)n#}51`k6pe1C@K z%f*L|DZz%@qs!|Sww$vZn44%&(|xdtaef{Dt`nlWtKYEqhieDpli^WrGq52a&U7~dcHCO`7kJIUx> zV%#}pzjE|}=1#zfB4<)h5k~zZ)mF z{&4u&jjL)fnc%udri!_;9vAv_8)gL;)Ho&WTQ(AzHH4G^h@)3e^-D1+x`Os z9D%Qe7WsZ9cpmQkjXmo$$bYF7futfKdA0NJ9)x6w#H<*@5mt`A^lun`eR(nQ?8U@H zs2}Qhq~np@(Oo`n_c%Mwah#-Oe%*D^<*O&f{otT`XcqcQPy_l) z`0U&AeI#DZb-e1Nhwo;5ee~$3pGs5g0n?i~+`bR|UAVZCY9|as-)Y}@kneX#_Rg~F6wJFfVXJ$utFWWB`uh)mP!S~L4Ai#K#jOt;Ejd$Ye1X_=3w zf7LCuW9Z7>HwL9SGk^E*AJl8Vf7?Y>`f!^zHGB`-Uf+kjSz+(L<#_j-&K?TcqGG-G zF7Nf~oEu?0$9rY7n$W!C?8=EEm+PSYRj8)I?^U;A%$|r@Ea^P@k(J!mmW=X$E6PUe zC7pcun}^Wgl>2v0@9`J7LN8y2!e0 zb~u*D`F=&~{UepzUpdTdS839_n;~McXzkv`N={ypV4JQ(Cog|mgEXMYtWS)6>XFbM zp1VB?W`Z5Qw|}9qF7k@E#~+z@|8VZBEu&#SoTSBcQg*~~8m{J|p%Dms_{o@Yrm45Z zzvkq=y}7O2!`rTsvRPMKt4P0;&(0}uyR7&l_T-+i+@=#ppKMR+o1(X_z{u2kQ}eNB zJb>F}@C&17^@U}#%&K1~GT+NSh>2&OXHwGF3V7)Yp?|bJaqz-U?J23z)F0a@_C-Bb zIoi&~V6#BqOwL*{K5>LiRWz-3$c34EXwkfvlM`i`J+o!orQHG!hs8_GxRmpT&V4&^ zlIszR39P~G)l)}!t8r*#Y)}jd-{to-5tn|CB99j8ItH5DCld+Q$h-aGpofA&CalPn zA~q5gd4Jm|BzMoN0$5^zcb9lT=EeES%L+%QUQYkwWL{v+pIpHJ8SbTUWXSuK$AT1_&^@Mlkf{H?z_0NV~Y3k`~qbMabwJ>d5Hn zcE)RrWsIo_&r*DI4jM@bv^3m~Q{VM2CfTU)y?;%do_xlgN4As-FPxoa?>_qW=KS-1 zm(SmpZhn*Ny7_9`@p9X-PmG}~vz)2ZYORD4KC!r~d(jCuTKRdQi*E94O97jx_uX>d+w5Zru z=6_9_SrBPQjqpxuTyh+I7U5eh*WbLoPq^Bn)OO;rS4CHG+6Bvs^rfS2lagl#E!r=etC${LZM$)A$(B0U zxlu{UXemj%g>mE5cp2EVW?lRVcn|J)!er=KN?G&?8WYh&snlhV4 z3Vy?D{drY&Mc-(m4e|`?xgWZf?sm<}iBI3@K);ldIZhXR>N)R^kR|Jio0LJF`ultZ z92X_k+)PdO(kDW+J{Ml+nE9bx?tc?8xc8pQiKY_{JeMx=#<*2Z>y1pPOkBT%9_o~m zUpPP4XQ(TAW=qdfU!sdA24$G8cPG)SKrd?4|45X*Pk!6&r$fqc!ADx|LnAkT7VOt3 zc*H)$sNkY+udORkg`kL!^*C$FbMTPXCsg}mV>h<~f&9^YCp~NTMXKVw9DirZ;9+T= z+_*|=AF1}_^IS=}MHvlSHSGN0#bP@j?%;=s?8-Cep`TA84P$v7(e>PVVdsHjqwKAt zi?yK{jybRPf0TS)`D+`;Qw7Z6f_!Y^%Y*}mf49mrk{zMBA=1{|Rg@GFZ>P5S>Ez>^ zH-)vdERO$nHL*T#%h=jzaer}V;E=gyiQ0!f^(M$OsDklF-d0iJF>6xyWcn$Reg(0~d-k>_b=Kf<`V?*tXnkiWm*tABMji*|ezZuLs4 z^seWn;;l4I5agoZWH9+pd5*=sI$hny{sElbCCpO+&i-@Cjxt?x@G{Z4SAMVL^zQH& zQlyO?tkpB`aFUfYpui|jJvqBI;C_YV!@3cZR#lC$R5iA4ZZB8!PUZu&jPajG3^I$J z@0`9NyDcP?br1ui@_$KJS#)%9*>A$2Hn!{i6~`^lbdGTL{?eC`nUE723sv{yw5Gc? znB?PC;=mXGuB*IQ+AR0;^LF3VWJWDNayj1TvMh&L&e>V@+MhnuL5seBF?I@dG(+<3 z5lG{KDANn+dRM=U(^Q!`a*f*ksF9Hq%suoqAR+&aY3{TKi+^9LQ5;)}#8*bU{T&iV zIe11=bC$M;Q#?B*^5NTdjJW8vcLvq9K89{}@ekoe?Ra`cIr=nWUF?IZB66X^0 zXcmaa-DM>tiG7c)}--Jm(J2HAw+Q~+zD}O!f99N z>5&p~v9H$#4)qtXG%>2R|HdBh?QmyMK8=!uqxw|=`^!fdBf;G@CUNfFJ#8|ix_ol$7|kwqt7+3{ zd8CY5_c$ffwKEdar&?e2t2q25#l}J#NRIWBtbYyPt&N55CZLcx(sy}xz185YPs z8Vm4cw^#QixheRaEVG=74!2JG_JZE;HEWT^oqO~33LMv$nZGP-wPzQqJf6RE!{7 zgTyaNoirV%DBRjAg;uQQK7Zn#TgzPYwk!ekD~-DPr}q%UNZ8n=Gpz#^tn|~9JZ`1u z+*ILe*{&{%F&bWPrs9t`j_nk;@}pCzZuH-t+iPUvKEP$4Ky!w9k;^75#`NmIIsYzZ z9Wu>Wn8Ve)Zd;EbCly>Lisu}Y8S~|J)-DzFOIdrdqB9M`UbnkSJEdLDPn15dw&D>y(Hy) zCdRUOTd?K!5ARt%>TQ>5=v$@5WA{pF4J@4uFV<9_y(#dJlR@*t_>}LZsXZ5micc1N zvX}fU(e&~4>(^uj%=aW(Zq)3!FPlW6RGCG7=ILRn>p#`rWu$yL>3zifR$$3lLDog` zB2yKH_6LpIs(bj-Nea#D`+sjZ;?w~H-RPLrB4439hW?uvdwPlgvKpkn=P5SEw?`8~Ak%4K=cU@#1XWI3Z zI-R((ylir67Kl3LCmX?$W1HG~qc8VoFR9E`bkM`ft$!?aPcNVFgoG(R zvK6VF41Clj6mZ8%P4atgJG-oopP6@5xRhM4Cu8nHa9`!chfxI;!z03(%4aKb<1{%? zq;h=5c8A1@S?^jFUnf1IaAxvbne9Z%uRN&{o+*1?(>x{S-?ty=4mcj?)%wyPcl?#| z&F2^+Lp2u8RL0V341ej}5BXO-t&T1oJ0Xo^ESi3zZpUxPGZ~d1V(NmN?A`)5_d9Sa ztymza7k369L+t{l^?tU zRA0-K9^R*`PAu!btmG&oeL3+x#n?dRPmM1^Q``-|gL}Ul^EZEr{w~-q*f>`h{_aVk z$tVn==3vf#?0>SB`hfMZGIGoPp-IjBySi!1bR^_FfLR3yY(_sBGK% zxd&aO*^Qh=#e5C9*!{iuSCLu&rCSM@-^bIt7R20_7;jv=++!isI-D|e(p7I)7FP}| zhN9ENkI&9a{Zh+IlHlgf0R^W=g^xe+)lk$;DbMFHQGdLQmZf=_td>UMSR!ATGkmw} zim6<&w%!wk!^clEpQ~l~)ZM?UUm;Qd%{1o64_alzuL;viE=Mj*=kve!WSPE^K87f_ zC>LYCN6*qHl^US5D%S$C{*8A+DfR~}R$b7f| zGT^X{@qdOrJZp5ck@W1W*DlLTXM)|7UHes9D~fN%-`=MJP)+}B_hCcRtn zZw_xmz8p*E%yZN|a%k&`V}1E;WS0kjGtu+xOMeu4kyKP%UcN|IS%)dSxqp|p$$^;5 zADB#c+vP6VnF?HXvAL8QBAr+I?qb6hzTwDLmtCHcLJv!5a)m0)s*W{F-QZ(Do>#7# zdm!?*PD-eol=V%;hlQ>;gBCsapE6J;2V9B2%lIIST`fF;Nwa=ZQ(0s#bP@CTc7j}4 z2l}OJhd1HX z2Xo=a`%isR8dT&cn~ePQeem|qvI}EL-hbZ54|H6+du944_8l|F=0p`KNJ#Xsw#gP! zYLY*{GKctD^8%eMr1T`Kh7IAXYv_rp36X64LY>VTrzC>#oX}8O(=Oq=R2YeBeI@zR z3vkxLAbgbvF^o#mKfQxxEeyhQy;+H1gph6a3XrvM2+tBErsH**jn4!pga8^)gbt?| zF%dyH#r($;2-l)PlM!hdf3|0YYrYIbaIPNu!=m|GR0yMv`-wm->i@l^;~bA>2y9{EZlyZ?!9!R}8Nx}un+QaW^F}7LiT*Zn@F^Ye-?yzKBodw^{|{X2 z-~Wb2{iojn`Y*iyQ$|kW|K9)k-?%m&|7Gs~&$RK+#~=Lhf8+n(v#V({3j>ME$+O{f zy#jv&ivOSf|1VtY^*>>TJebWWD!6JC7{bt4-43|bC^(@1!Rg@vb;BwLcNoMK%Pv@1 z4&evQ18gposT5cYu<1d#pn!t~`vd+A)-C|$ggUIM@o1Ei-rr>D^RwfH#A!|HaBpFi=;S_ zE|r#gy|(wnX?ssV+hcnJd|j{H|B+FI#}*(N0tFNW`X!2h1!L54)(Tb)Ea$#ChJo4S z5dckA???+nWFj_HT_}XR323)~Rsw%cR{<6+VB7*N2y9?)t>O^`;(cpWXt+CeiF4WX z0T2p-p_Kkm9O%4XAhtL#<*->PXwc3=^Mhan*4F~j1lI*uS4csMNq~6z1%iL;k+8!7 zfR)M5rNt!x4x~6hxs{?Dfb)O=769?g#ZFxUwl#!eyhMSY{P}VPHckCZv;b~K#u@~gJ>8VS(vHm z8Cl?AtRb@yaC0M>&h-zQG0;;t(;`51nJ=*LS2TjyvNix!!KQ5hLq*&MG6YaftK{Gj zmGA)VcEC8ps)50O>_b&TQMw{Jz#sq!S77y)8%~zE0g^-(_yC0l79uw9 za8;TC(#b7iBak?a0DLGzWWdk$Qbz;ni_e%vi=w>(JUo11{MaUN0&k6vg(ZVJm@y5E z8hTkt5Zzv@B{p(7WjBBHF2M^I!Ufa70Pv!KX#+#J^Ye-EZ8WP_o)fRd;|K)!mHco4 z(DxTuS4?7EF+gXpX@Pi>;$$2gZ3Xp(yJMYLp!L;2s4&18fT+YrL5Uu1bG+&#Do|)vaCs-T{A3(+z+|vi{$ipeX#%#2v{ft3d|lj=z0Rp2VmR8Ij&%PzEHrH03AFS)-eU4Vw>Pc20*xck#105 zFC-ceqJaJfT7!bYbziLG3)nM(c;DI^761$q02Qz&06%{h0+>EPd!P>vW{QGj!&ZiY zm4QN7_{)tp76T>)1}2KViTy__81UhJVTusd6|Yqk;(-EOWH>O?Xwj94Pk0kYHWL)m z1G0iN;5kT1ufjC|$qZJ7p!tw)ZUKOi4F!CCaD@PZ!TQArum_EWIL90f@oOx`cwxhZ zczR<^Mv#AI8xh?C>;|?WfTW)I_yS<^p}{m+kUGF%08TZ~Z2$~GcMn1XfL2ft15t=M z+z+V3Z;5~hib4Qm6^<4$4{#R{0X<<^5#S$rTn#jArCsob*qROXs{{&LPI49#1I&Fm z)-HrB_ZdLb4T%8UDg3@LXduiD+!u;+g##02r5=Blnf$@UlTeU>5uVs|CZIAvE-V?q zU9NCQAeQHVugCx|C@`5qX$g%(T!t@b!VvAS->?M1M)?h&6YP=4BZ-}L;04geABuwd zVFL{-_XsXcC<40_gmOp008`Nj>8F96c{pMMG{Q2aIi9sm0M^xV!;dQ#mKg0n3W5-? z0fT=Q5McyF86rin{)@NJVJOt97qB{#mS{i{{sV*wvTv6G2g5P^5`S8s1_s)IP$u97 z5^h>S8nZW+UHHm))835`GhDC-unLv_(896+Se7GDKokHo3@fvM4{$QVJrOWmM9t3+ za1&s}&0#B|@Dx~XPhxF*0l+LqA+dX$*9dxlaVICqNRU3}Z?8o=r%JV5*pz?%s0UEV@Y zg%=X|VO*OekMrWFc}!74EVx-DxgJ}5BfLeMb$DG6TC#xev>0=faS%nj361jc_u zeFIkVT-WGCun9s1xeQ-}52r1b4_;VRb|9j-GcHg_pglMO>(>$t1HOhD*s=8>{Z>Kp z9}WQ1?7eY3EIDv@a6rrSiVMM2Vx}~ zZO!0-t{(OWKhaPNuNz}30=onowZ(r`Cb-K_2pjami~}$$)(+@UVNd}CIibX+5(Jyp zj@|A>bRX*xud|xgHAPT@Uw|Mdnt&>T|H`#SX06N}Konx-57v0uNJ3$EG84)lVD5;D zib4qFAXacHA5ew3c`u77>@88iy*2`OdlA-Ot+rB_A3vJ}mH_|;Vvrv8bOnDmg3YNL z&U<4Y0!02r;%q=;Ed-!@V0e?n9iR=|0}jPeC=dyZ4luEx?f?!*KiKka5h_Bw@cnQF zN?<7G0g;Ip;H!WENgap`0VOst0l{I|1SkROW`N-r;15a=aJu_}xg4HY>j4dh zJN#gHdl`<`0ITw583rI*up56l!R23f12_UV1XO<#y+HBR=gXguQB|u#7=`D3{KUnYwdfVauv{0GOwB}!FcSAk_9B}X`63@nBz%D>RePJtG z-*83TkpyFeYGgsK;06W2kTgx zYL$hk@N7*`_fHLBIUL-$x>9moGem5PhrL;O{8THT8c~R&5tTbT*uHd{8*V z6Y2>tD<{{+gvHMQcNn1eP%s0S6(DR6V`l$PjtTczq|ynY5ZS8LRwr_ zjyV1=DK0H8_kZ#K|Hkz<;{SphMdk&GV)14$e{2*Mfx(42-T45~+E@(y!irv4z;c2P zHYSU$qU^6~uzJJ+Xs-fQFi=-t@MqXTH>5l63<6n4;4cEAh^rLftBU;sfhhaJRq@5J zyS405$RK}5dpD#nP#9~Df@_!J*e$4Fgi8X#?+Qf&4m)^TX63dlgx?Dgmja^7VgNh> z&;TH8ZQv7(AVJi?)FoeR&E;F#1eKJ<@R%+44REDFX^q{CgvNkAJs_9^u#Ohdd4afN zR`K1#_eaan#KJa0c=;!GpPe&)Yt`D@_)rrx@P$6TNg@Z~HEC43{`B?4|h1f%Niu+=O+Kp8FPlH(Kg)@13eA5%QCM9E4Z zw)lTsV{kEMIgx7FazcXPFkB=JyMTfE6Hsg(GBzp0eU;$Yqu1~^fp+}8z}?|sFIE=L zSCfy?n?g222BAR^zS#N!!8rCsL-2>Th>OSw;H?^5LL~(35`GmTV70l;IM%GO$P))1 z;@()iis6RiZi#>`vo0VK5Woj47|a93)-Zp<4i+FUypWzq1el=7Z?wD@91QysFaWMC zz;9bWT3Vn9=MM|OtgMKDr2(eIW`W?t<=`9x8r!%s0$(4*2IL3;1V|d}S|Hduc7Y0H zJ_HKtqa23|IqPEJkU>gC5<(R!N1h#@bxH^dhA>$VJ05X5L zA;I+=s5`hUM3{8G!QiZ2b|Omn0awg$8z&(6H(d}dM!i3G4EQ5DloofUGyci{H~-cg zzPh?3g_Vksn$`Ht^f?Pg>7#u)ga!IZzNpTUZngrAQ*D1+A2uxG}Zdb$q`T+g&p~Nc; z;*@y8iHtk>YE_ahCum|#ZGuxKh;pR~(+R+fXmEjtxPc`oKrocpRtQ)5z>8o&H+;S_ ztjk!guDM1K44TS+>RN%Q4R?R@0#&-6nDPHaD>#@3!5n)Oe0jZn&Dn_BD5Re@K>6jP z#yo)U;5yI$JHxnI09@(iU$b!Px*UJsVBr*`3;yQ{SpcwgcFD1I(S$@;%a~&q5ycmmGwx%3wK@(Py&wD^7F@pfIxpi0SQM0z=-<2 zG6G(JB*I1nmtn6Qn6_bg?0W|MRy;H@Yzh@r1eZ(!+ZZ7{cohgA58sAe121f@g&_~Se_GRs(h(Dlfu$*JE?Ck?CmjuKHxF8ZZRUnT4DK5daK?lH`b7T-MF@%VD z2}=MrHi1#NF#%Ko0!V-Gfg4D0zmwdzSvO^ z$0C6p?3J_s2#NG*7;QeNdBQj z#D>hW5z6>>IdMC4{(vB!BlO(C^MLR*L^h;8c;P2Jh@tWtnlFD30-l&a5$qX^d=NhD z8HPeae*n4R#s?4@*oYAJCs9NAJrSGGdnJYibPBNh!Nbr&q%4po-~mSbYp?{{5ct!` z|244*envp>;d(vejRN+|*XmXPvjAZJ`w{K}&;m3FZj}k#p#km>1$Twwl_+i}&9a~d z{9;0^i3A3C7Ak*y*`&nDG`CebhZY9cIp7EnTs8wfTt%?xOZdv7WspE|7z(>-VMSC& z5IAI@*9=TeFdndy2Dh$Z2p13Fdp8yImg zWd+tN#Lb%|Fe^4{kkIN-f#A1m;`+S2cXKTc(*L~Q1h&gYND!Jf|8q#J7)TqTu$+du z0nH^hp!sSQ@XT1S6;OgN9~UdkwYDr)kcw}_RoKelCd>8RS*a-T=ZX@4tO&|@aZn|R z3lP|bDg=LfUQy!00PF~2If4IJA5781i-f-&hXr4Iwl=c50&PQq0$E<%0Jk-+c|91u z9zVD!f(?`7QX+vO%MuWQbC9tKsehDi0&C+kM6!iYj;)m_gfj(DKm=V~-spurg$3Ir z7;N=k&NIdui-fWg195f3ZPE^MTVqO@!!XMDkyd|&xB?_IU&*wzK*3<(V^tzXB-kv7 zRgfs$ZaUNkT5z*Xgc~SKtgQ#y?Kp)A>dHUZeEy&+Cl1|(heHVN;^TDKjkG{>O3OXN z?pj2FJ76~fOdMrg222!E1OW$O0dJyziAR%j&2WMvq5_fq3;Br82O=zhJ+l~mg%%9A z6aasWyn6r~gI$?hR(C7$Z@}tu4M1bC=>rmg#TVdBY>wCm?sOx zAW{4R*ffH50*P>z^W$p+7O2GE+kF3LQW1)0kn{gQDq<>sp2TJf?Yi~qTaBkLcunsCIk9MpdStX(uTAQ0vW%mKo8i>(vz#I=b`4Ztu1 zEHlDen^z__5^%}Dgts=YO{nj|mcb)AS8r`zmrzaP>k^8&4K&Ou%WdY*Z-60I4`chb z@)JC%K?njUPokR=j%(Y+Yx#fDj);V?h{U=vi&!_44RCQxS={`@hW8=h;t|9Z)F*$~ z?KUg=M&J+9b;VzjQCj}4iWAM)A0i@ul(s9bAikQ=hMv~n+;jb>iXd-B$yS?zt%t7(EB3T z3J$cp4yg@l5U>W(cI-`f;y>uI0bYNU8z6xGq05H<_#chHBCz2i?4ss>I|jSF;6QLz z*cy|INJ#^lpK}AFYkeGac^$)dIYfbQ0EgNJw!|N5 z6PZ>5xXx@)n}Bukq~Qb_0?Fq3--+jA4?`fxOIqFS^xtPH!lN08-Z-^#atD7_m9FJD z+?zvisthC@_?s}m{0E-HGAk~kzno~g+yHpk4}Jx1&7*bD)}tbdf3X;vpG%BuwF16# zCd;WK`1f1+uQLxoI9ysQ4THr1C~Lt$(JMG9t>YnlAv2g~fG-qo_J`R_OgqVq>n2D5_iL`&1iHw+uEZ0gseiI3-ACAr65QdmYikQe^S3!ND?f^0V z=)ff=RBwY(LW6YCxPnYr;R;J8RO!D5=E<3`eXqhn&$IZJ;4IPm-yFqjK` zfUA0V1&@o8z}Fd(*kpHXjb*#_57fl+7ZL=42fj&I)eZ@!8wFr+iF~lX!C344O*{)j zeSHnE&L1e~g~6Y?a8Iv|1^+UsK$?QtZ%FhX^^!kmWOIVYp@A`U{13oE#5cErmfWbe zG+}KS0RrqcsvWVO@|=J8_CS8bSN`JwY;5imJ0E{%5D89&!zN#1B?A-%ddcWjP;2?* zU!ZLe_RKi~3IR93BZoJ^E#l8SWrB-jVGpiCBG9-q=h2WrK(G=7;K9HUj^kA!Xc%mH zJFG4g?e*uF(I$Pu4iX3m8=~ebh2L!b#@!5cXGywe8o(V{3P=E(zZ9YD0 z27t@PM#R>3gSCI1HFPJmH~xY4{+B$4zb5FvuB$iGf)ICLdM>M0Y~qx$2S1+(-&*C0 zEv5_*ALtPFyDGlU%JM4sva!EVxZwFRe(UukPOYyjc7QJ!23jC;i*eO4NC@OFt7EYP zUu?Oy3%JHt?P>tppJevh0fm9*nxZX`IFjN83kVM@Td;p$0P(V7k8V23L`!_wrEid- zS5iUOK?TbY1@8WgEdGHf3}XhK;0^AtFb7xy1xzhGSYZer>2fqav=e6O_`~7b_ZG>-MB$P>ip6j4ugdyDVrw*@r6{}|$<4#&}g(IMFH26A4 zQ0`-2CG3BR0@sbO+Y=j0aNECe=c+89kn)dY$!h3r^>mnjBvaM`SOtMS8FE>vgA;Az zb0hy&K;z$C3;Od+#6~FyX5S`hOMhbq;$j}_X5FTFUD&?hS;ZY3X2lI>A-G+i0M9?9 zh^(+8xP}2j`}3Oa@`W85+>5`ll|k{S0fr%aHs;oc!OBUbt<_|4X4JTs8`L z#_vBdPzVE4M1hnwLC1Axf~w(%t*iwY>VGq*h zz`?CPYpAqo$}M=UO{hWo1C~G70Uu%he#0l)t?q;q-JtE|bb%F8{Yx1G8_hI)2=Xsy*4n)G4T!M8 zEMK92&id`DSh0sab&X)x>WT;Y_mBo5yKeM8rGGHnm&L{3)ee8tA^hKQ=GIOvti$4H zkM&d>vGtWo%ZI%Q_pK$?pjIbNhmuu~+4Pnf3 zBZD2B5G&0t{{WiaRACap1YiJYEpOP_I24MHI$!Ba5;G$V^wj#R^+4~#p)z!gw|fZlNP5!jFd%Ukso zS8w9>i{pOaHm8FTdhFT3et-goW3x;l{3{*AZ8uR|*@=%10MrE5%mwL$i$H*X!Tgm? z>4cy)2{yeGfK*W-hKb$&z6uJo3~)yP!chbOakBGoY>UVDRE(gj8zswv?2S)b!p%=N zB<^(>tD`IY2fvqS0t;_63xzkB%IlmdB8rHwGp=y8a7m_sFSQ(90~u9mZAonY?uI@x z_&)FD!w?7#Tfnjf)&LU*v%`dcA)e3xfJFh7ivk9gaP1GPaos`16DA^o-2n}z{)$Je z)5`8(FeVK9P#A(O8bPFaSBzA5obm1s7^%|0$Hq&d_!lu@JMNCMcVC;mi!I`YJ7xte z;E^a# zOW53p{5lnDJ+~hU3Trrl2toQXM(_bO-$Dk81ZkuEX;9(GF9c>Qlk2w=~Sj72H ze`9?Z-=$4hWernp>^OjbA_{z27;Oz=-*l*+>uz> zhI5m!>I63n-0?aE8VGYYz?=RnCLs2%$+8_tv;?Vv^oPS%-iM4kRv5RLjemvMU=LBi z|JdCo*yC!zO2QC-Z>S&mf&u&<6km8CpdD9~Akonss4){X()iAWm`b-~;oEg^AC;AR4oOWtjMP;^GpLH{R7k{A76p z${)m|A_1uN`&fvdEQ8u`IUNxESgRF~3IR}jkTmR|FC5_m;r4_fuyaoj0lr}l86mtZ zQP29E=~&kVJQZv?5QN>z z=1#nuErQ5<02%`Ku&qEv;ZOd=9_EZ+WK;xDqe_+)SKaGhN8*$wFKfl(v z4k$hd0jgerBV<8mVuNDX7qMdB;|;DMdY}!VXdnFYBXQ#^?>(0=fG8_tK?AnG!A8q@ z_`UTws9*x0!KRz`!A*k(NbtRr0e-G9l(B~e3JM3rg{K`1g+$}P{AoQC*9NZ&{>z{D z`vZId_>g%RX!Jvk!OTL|c+WHXcC@H<{DV(Z3ocf!XP`i~m@K1`E^d2MEY}GdK&NSFc?e(oy z&o@#TSv;y#>uTTS^Qlt3d_$GcF61*@NAF{uPi`g%Aa8?s2~9w`;pu}l%iC+K!T4} zlthgtP*$I6lmR<1Mt8m*KI7e7#anboQIT{+)(>g5w#-;tjwTqMLF@FU(QLwT)gn(s z{{AU^-}Q^Dvu#sA*~v(K{S?10@K<=Bep`(A3xE9LRigA*%@Y>D6BZ6naGqN?Y0ti$ z1j@H29hiJcQzuJCiS@X6L(q-yEYJ}63OVbR9! zG>AJ_uTg6W=ohSIpr3h5;himq&>U8+iO{+z+KSwbibd|PfTHafPMp{LB_PX6_rBo7 z^?xN=xcKdV{~u6-BntW3erMyLyT)lY2W#dAp3tGqg`c?yf1(0#!<;P4aO47n7E0T6 zW-%=#6a{V!dhkjw>*?&_m{J<1;M2TSG)Gr*ac^proV!F7cmx<3` zt9(9)GIkWZwmJo=RsKbH)uEE^G|(|LE{95{@Gw}|p^_>5pr&xC=F~52C}uvY@Wy%# zc08hMx3=A5@H09Ph++w=6?x+ zHW0=Ed4Vg3$$D_?dvLvBJbZi}w5Zxv3sAY(+8u%vif&8L`178eh~ zyJzji{ORdwoS~(^ksGAS(u+WgKGhq-DddzsQ1flEzQ2w=rEhn{`rY-aUP^F4dZ$D0 z(6>8`WEg(Ov*$hggLc27h+oJba|6+2@Q6)hO9&ia<;Rv6?bdjFS_I9T}9WDY_X3hjL z(H#jU5et&*Wh61JwSkxr%?#VY)M{jGV)smxkl2Ngo}rVb*yWnc1FsOiSQXqZ*;6TW zRoa9pcr`%L#!zAFu%YM+-;L98?A)?UI`7#L4qdvRQ})Ss--e}WP&2UwCCA4}n$OXm zs*wEQnZ)w}!?xeuxyLK!O7JK&AY# zjg0&Dw$CWS!0wUw$G7Xz8rA4p%9r(HnpP=9 zp*gaZq`fr{oU3fcqCq*z(q0La3k!Xhu6-bVAYzAtF(wT{41GEo-+!Y*uv&(A3R%g8 z4VScJv#i_`XGK+QJNg{Pv$=Z*?|hb4v~ri^Y@6ClVgnuLAr-b9U1I5O@pM|`NnB*P z$VYJ+Wy$Jmdn|HTubsXar=seTC>1=dm zZ?+I=+Uw0>*X_-IM;vrSzas`6akpF18_I-<-GSa5b~pDsn+KiEerI#g*}U6b3s1^_ z>i;?8>9oc1SNo3#;&332K{%sqmVew4S8UQS8HCR(R`bSjsDJl_v+JFa0>Y|dPRX~t zSmP8`%4vN^c`qzt>9RpDXRWF&q&KjM7C%>spy~f#oGJUdZh%|X+7@H<7dHn3QAI*U)oAjLAzj;&Bs&0Gog0T zC8wgi`2v$sF0^zyEFT@&s`cdEP;c0_m6t#I(b!dI!hfT|mrw5<4IT|h-UtR4|8WUX zbz%mnvx;b4(w1C*(~5Q4SS>KK84{xpLXnrPsw`;KZ>5P0?@OQzSokiO$cnqNPacE% zUGDTyinKI(s!o9-;aJJZu(sk!V{Pydq{o+jproYfLG4zm~1eI<*Yd{&^`YeZxf> zN|kDI&?qZ$UYJvp?y@!qKW~g)eLYYA@RF3$N?FA zKoO+8!D>iyL-uJ2%alB)i#pnhJm-O4T#Dm#mvEeJoj7g%`kwgB@7_cB4R{Pj z-K>^K^oQp>H{0TIfAC=c(a}RP8Db=2!}ePKqm8+m_k>7MZ#X^X2-13PfQ6PCrmRvy zi-|KIcjwtC=E%%ESrqI5GQaqLERLk>k&W_u%X!sdCUCG*Kqtt;m|JXWr5wYWFn`_H zTpApeh|@uj?VbghR2SzY*~BE7P8&Qxb(PvGd*<5(ww`_4L&r|nIgUfaJE|{xy~>xj z%*)C{gKyW(%bm)XZ&tiKSo-p|Y}xg^x=8mbaI+d=ml9!Y}u0UiRH$ zyDEjbS}v?~oh33L2&CUQbJj!GuYa;Kq4Scn##?u$i5%8kyb!&Xt#v|Im!6`YoKHF` zb|`dS%9W}U;K=P5)D%ie%D01O%Z>Q9ygg`%+TL*Mj^%z(ZK=lq|4X+|6MN|n)TzE~ zh*Ao`L0WwS)=-Z4sZ*r*tjDOy7b?k*Wf+r zyFmP#8tid{U2c#tILL*%>wn?K(Ce;PV)_3OhSLv(XDh8x2c0(%K9I6?vWNMd&@jUS z01&`Xt?K0(xdkK3vvIsJnHS^-!W5%%K95b3*JiNluIyJpwy-C|dIO}9?FyOT?hf8W zaDyYhf@c6To<2B%7g3-mWpTkPPz`pugwNB>zry#q71$N-ZCzbmDt~$(n@7%$uUom) zRUsH93aq6K*a?jezKv3NimGX+(o{&J zaL!|@VA+{mH84Fa@*^M^H69N9zXwB-o3w?ySmVO-;#hHPu=~3_Hie^hxuNxHhE^7M z4CgGpynOAkjPW0__zM_^7 z`%@k0C9h2*_VyIF6!4D6-} zcnBnD@@ub*LE^$9a>)Czy)@xLMOUs-6*l^RVD!|im0v+3gDlNQ?Y?WFn6H*sL4h*0 z-zcrZjq-~}e)a@LHpk2gH5COu6%}>D$!b@^J}Jjl!H@92PdeZXKu?3%Rn%+S%%Sw%wtBx3)U;96sAy-QFji z?e5mjPWQ9!&dw)L>SnL^iP(B~!>s-k!0a<2KKXN;4d=!5Lp1q&`kY3iAET34-N2D> z^WU!Wk$+u$Gfzf|n66XA;{+WRBZOg(fW?ZRiuD8z+kav*!5GQ)WCkofrG)n=7?8@? z7K1b|pm0l^A@cS(J_9LTMYd53{VCcuzm6&XX<8&G3#5@wnS>|y*&GpsM^lvXxpHnA zJ!9~iE=KcYP7YXUJX&C?OZb|d;liah=s$lS6`)LK;$B-kPG<8|G@ho(Sz8=OS(0x& zF2>Cb(SL_+NDUchVu&EO1s+OLM55pqGL(s_bdBNcA&8ACp`Fj-5s)&< zh6#?RG1JlWhyg8Yj1g;X@t~OTcZ0kB4btxvC9I!u)aeO2s>RR-kWI#;qToYho}yn) z@f>IAXRe@xdPxQj8x5sY0_`MXPZ&f@TMWFXhkv0>(4I`hGL{fq5t@M7+EwEvsa_}bYA%A*7Ug-sWC|Ca6~Xi@svg% z!GB+J^rErR*`xVsiOwEQgE9kzVgSwBVay8I1EZy&=>y|QGbtlyv<5k64;gkPSSpZd zGEWIkT8xqnSeH5Ut3edQeVxlS0~EFTWVVL0ZY`HyC!(IxTp~;HrhP&h1;M!sL|Lcl zINIl#V8w#5Xyar`BqS9BN;1V55LGv$;(rAsCVObUq+BBd`;(M{)<#*P!YO9hB$B8t z`n>*RDT9vAFThXnOAL)CdXDC^SzMZZ>fU%un zsONWaThi0DU7Ue6yc;!mBi2IeGcvwy6a-pW#X6CSGj|7gSS3hA7+@dk8y+ z8)L6i&I4}k*KrJ7CX4UI->4xrB!3QoyK61-JxnPj)jVfzY3LSN*vIsXwQhk{X*^2= zLJPx^9VU3ZUc5euro@$r7LqL+Mp%^IZ;O4kPZ37+G|ooFf*7thfl{ixgh*ZS1!e|(yoGF;@c>R`S8 z*V)?stmEo`-R|~w_oM#zA%8x;{&y91Kh%DtLIP(3$&K?wG|V~>n}U}@6IHykcsd9E zh(d+L%d?H6=UCe!P7BFnGyGR3@FCWVNPBQ5T>Ryvh^0Y!ln|~s6qFU-CtUpVHq>>M z^bezqNz<^@$uMzGHl-U-bT|aJ4>npEt2e=mm%5*?(SGXGugH`Ql$^ zc(sJO5g)V)!uysLICRzI5pqw3a}B16w^%A@utn9#ygRu>8G<@7>ktX%SYM7>@Ins~ z^PP%Dj6u4oe#Wxkx%SV=bO`O&uusSH5oqUQ{bdUA2qoiJx zkYtA9xH__-Y;S8zD(+AX;~q_N%4*IJ_c`G3~;z!ICg%d5V>|3AKe zeDA0~z}l;-o<%Po!%W9i`OeB!A3dpqd!S{zp-yA)DNOps6%{vO5 z>Tq!I^h>-U=kM5m`KKAeI35-!YhJghr$ru*@8@(;!s|rm!(CZRh9#|pd$W?&ue;_J zQUZ1aolMv&UVqbrvT|%SD-}`M`tr(3Qd_yMwbGfs=G5zy7EIlZauJ?v^3GtZ@^}*OCz^hk)fnxa#$UL054V zfD%kT3Qccw%19{+Ws?iqDq`gYU%tbZDpKC!C9LSVc?kMythh5Ml`G^HBl9(JVHINU^^NV8<9M?@5G) zG)!I+Nh<U{M|4HOmVb88kr|87obxIjwcUlqjtM|>n-=C(^+qIDNQIo#VM8Br|EXz@qeobcK@4XL|NL%T}0QdbCH_{HgpRs z*L`^LdV;p?_L_V2AgbIGl4>X$4-gD7R9LE#77fAcg8VYr*2>ouSuFESAlV&Y7{S~b(c(D@Ck>kaf!K-P~$fJ>EbGQAwG)lZ!2QL(YeEsCxo?<$f}qCb_eJQIsG+XQXm_2tpwT z)^a44cT}{vH`e=7fVolE8uW3owd1{=2=Q9v7#^IFArQ{}+ zq_8Ly80Z;-cp@^{d^9Rf31}Ae4lcSN+-z@wqXt9fOdZt6ZdK(Nu=CHeeE8 z;w+Jm0G}V5l6+``ixvwq%rwPE{61<0+hr?hw_vflAEyVX@#}=>?K0c6Bdo$;3R>qJN3kq?J{ylx9*= z@fqivM6$sl4n-yu8zT+Ecx0>Ou5i%m2DNbLSVgn>d=XBxri_C2Vd=bjI?pLj*?iIF zWUuCER3xhvV_^YksTgxmsrF1YL`e2SR%8}B&#+BaE~80mS>)vCfs``||KjBAbR=n9 z0Whd`McPiPz!Ug6D}Ns<%`=J2LMg*6GPTQjTEah@is#uF^BWMq$nPduzGy(VWCvOz zRe2uWA<_iP~=z38+yi{8R3ezZlz`{YXxrN`HyOT}hsK79TaJ9DUrA zTvEDGD7u0y$1J!59A-nFG&}`NHp-dC1K%LZw8S-)urkmVcFE*vDnh-1rKDCk+Ab|B z$<>Ym(vQ2AK4QNL1G!@+g>pn%Gn9{Z%kz^wtF4Si)zs4tRXAncH#rNP>~d3eReyj@ z8GgjBf*BMhAb$>E@e~n9X=p(S7+t(Zn2y+8JG`*f7<}`c!v@BN%c_sf7BpSlBCOBd z&E{&+@GgVG&0QV=C*Q#1Ny!lNR9&6LC2AP*-`SIEY3HV*OpS60uT|-iO5$nwJebpX zj9Ks1d$lE5!Xhehcl-f_3*YF}xN(E|?Vm(<>*i;y?SG)TwuXb>+0(2ZSDnSAX>*%Q zxt>*6b03qSGloN-_gILzS^OK*pF;QF74NR;fGYeJ{MhD_0fxMk&%H5^TZz8`8EZKl zFCU-9;afLKjIN%^xeQJ(i&7b%lX-lsZln1;t75C;TU_MM9_^3Swxv~*w>M2%bw%jF zq?L25`+tqt8SHRjHdM}ar#3g&%`NvwFLS7Gn(rA+|0-A~RL}u-$ zIK}A5WHtjHoxsRTwpucD2R2KPW2qg@{3xve~_JO|~Ew(pmFxr*Y=I z(xTEoU#k)Tk(uH)k;w}wU*5BCIbR;hjWo)TsDG2l%+*@9vcyg6K-XOW{#zC@{0kg+ zt)GY1w!Dclhhu2ssB`GCu&}#+2?E>111jjc-e}lrn9GJns|s0ud3DyVMA#Y74!(JS zKktuG0*Fpx9bd)yelwh0C@Hd_F z{eLo)N-zGp$jTd3joItDPXTYptcc2E$MT|46d6u4isQiJWhDQ4p`X2w&jMSo9E}>* z2122z!7YOKoI?&C4a?Z4CGE`RnOyQ0Iize?j%XB;mGxy>xl%X%Gt~D&)%PM?pDP_< z>D!iM0*AFLxeUDm8&twwrpofMg-7~C|9>4RyT{-C9sQub{H~`*B3Fd!RdtV*C3Xa32NOXl^G7+1Gn1S-=%NNL-3~Lw|*06F| za^_bY7B7dUSr(yTRjgaN5|zd6x}xZYw!2-|z0uaU>!LyZQuN%=ra1MB?2=-dzki!c zi;tgo_Nl-BIVNYR&ijr3?R9rb@xQ&DkN)2uFuj1jdef15^OnZ^`&RTp|@K{l^MsiSmEfW4fln6y=SMTR2(Iia*j zAS0DR;|J*|?!vp|GQUPuSf+}eMK3?0+for(txzZ)e3aWahZZC5&|!y?GJl_3yiU70{>~=mj@zcBOgosANsos*@)OXz6dF)fx1DO9{UbCaV`;!lAB%3-68?!kN(zol zhUZETT&$k`D8mzN%pnHP$#SCfVQRury3ur0OzkKK4|M-+C;B~%+hDo4kfAFK_x^mG zOcFm8D|APO&7VvmjY%y%;J#@S<5c|azgpc3xDxLjIf$0ugI*D zgx5HQ)6YP=X*fa=6<0|q%~F(zuxyc{xWS=u+Wv--{c(y;jcoFavvD#~65Aq+$PPy~ za;%OJPL=w53!?xGT+`YLZO?>7>niu6ik!5%@X)~G67YSsfz5%mX9(0@%j7dK#I_LxE71eH zEp#9&#}e_D%75B<@^j2rcsKFF2N!hK>a@B|^R4H6>$W=1w_eltR$nu@7aAj=Io^yS zK(aFnIkd+f+zxE>n!TJZLDSx4X?keUv}^2wb#&~lM#s-Ra%fs@0jAlG!ziB3AI@%c>l3z(Bw2^-Z?rX z6As0qW|~#~?0WOoa~n}jP{?~}ieQ)hoSgg|oiqaxPJJysREQ2@Hz+&MN)sR`h2upz(0;c9mz0fpG~LkGRP_fMH?Iv+`+rl?5zqoS2=7x>W7n5}2K-9KxV3 zbx`n~odHcWh{IqFIj!5cyed(BK%K=hOO@LgR%Zi)zXs|e4q8mdeDZQF)l}=$Q-948 z+hFE&ie*siXps>Y$U>CsUXFBKo&R0Z?ixHRQ%}QV!Jz}k6K()WGZl#(IO&!VP3M<^ zy;N?%+l=uRZftTSSlFbd+dVyc9ZoPv<+zB_#B{wBnWTHPQ)Jd-33UOqL|=G{O#Z9vNTMl2|vi5u^gYR;41V zK9FoLW#z#A(e>~>f9mgl5q}``|LuJC+0MuN-w*K#=l>|(0UrX- z+Vy^U+0I{p(AWO@ZU#s4uAMjJI9?!RLZ5SXP<)uwZJc zB+nxU60xByj5NY#i+>>9RgcH<8HOM+lI<&*yoEEcAku&Ys*_Ou*!!Ot%vXt(Kr9r< zVk;wyOsv3b1k|$$x<|^6-V%hr$XQ*G{Cua0LBN?h{6I&?yeDw*ohiiImqcc&{Rg>L zOncp}t~e;fY`HKQ zHd=xgA*^O3wajiJaiH|lbDL(s3d{eXl-Z@Sq?O^tbkZ9V1(^-|wARp-!5PnWL=K4v zS$_heRtxuVL_0S+#b|VKl0~P_(e~@)m{A6!{o~_%gC}1;+CTp4=)XT5C>g>^T%xK$ zFWR#texZD2Wq(Dgulro=tcVYbuj67jSctilAV3eyW~Q9Y+z}b4wqru7etkyCCYUWC zcs1Uw(FTylgoT}a88L5JiuRVc-c&QfFN&|wTPCUDzkMZh}n z8E1A-lHoMg8QbC)x{YrhK6y0w`r*^T(?=i;$_z>|r++w5IbTwC9^lQWayiAS|1$B3 z&hezHwo^l?WMMVAHFEPn_VY*%vq;r|$1xGo_X!MdwUc;p7y})qQqWX}#$0C%yb^HY zV0R77zG}Uy6aHO+l~>A5^V3g=f|$pOn`$bH`}6d^gh#TH->8cC(LOAAMua>|WWEe} z;Le8=5Pz^ZmP^tR9u+y-ZzyN$T$|EOrF86Yb_+_8i3cWT)nUZ|^`K-*ZtZQf#4GS| z;GQEy6X&z=)TC*W6dn?U?fMPe{5jTfn|?3$#$tW*Rd~ zN2US#P^`9+bZt@4^S}`!v*ze-!rM@|?T`dm(SI!FeRLXU@FyXB6DB)Gw#o~kI9t%U zWT5p}r{1Ne&@4mThJ|H@S$1%J@k$e*;2@kb;e3vj4R;M9ycoSCl5bptGN zam0DCVq18IV>{P`&sojIXOoqR?9^Wu4eSFzWuwyhN|rL`M3^nVhq zTl?Ro*VX5{^kJ$FUpz^0mpgrLyHLcOT??~3w%gWrA@s5r5$IQ#D0volq?HLZNVML@ zgkfX0t?r&g%66L!n6?{>%Fac)nD!;7yxc@F3KxSdbq_!Rw3 zaS2+dHm63he{T3_4q=r~H_M$;6Y zwDWlJ7`>YHYp6T|$4pULvWw~h@W%aD+{1}i(>DoSZ#R%X1>TItW4=#WJ7hn6vDQ-I zaDn2*=@`!|>i?HS$We~>oAdxg-FT5(9XwZ)xxzZm(XQp3(ANCmY+J4iTauOHPG@_i zTBMw@3)LrAI%n>>SASN+*AC=;zgwO-XsGxDz7O=aspj`yN4x)7I@+_AyxS39k)w@= zaOd?Ms($Tq9lQBKI@YP~nEc0TyKN zyh3{tBFZ#J6;-zus!Bs9DC7Zo=_~oZnEzPbty+0;lom@_F@O5w*?Nkh0_1R^uD@ieYs=HDrSRadQl{ab z5F>VqG8aOU0Do(034;@lSCIthfsqOl{i7`|eg&noh?SScJRyB(oPg|mg35Rx9@K1; zKtSj$$!DlF#dfN?ONU2N61iwbmDs%e4&^67eGJaLHjpeQ1W?Jf(SY33AoBQm1j6Qg zCNj#`gHjbgXmq!_J6qemt$U?(I4YI6jA}*V_0f4I7k^GZ4h=|l!hmF$goio|f7TOwhOoUAUC=f&-U zbZE+mV7fDnp>k(x>GoRKT(cr+o6bO!j%42&>OGZlrn!2`nH4(6jyEmSr0$+}%5K*%$kAT-1Hadvq$S;QQ(;^!-e7u$=^a*C$HnY)KOGM+gx(+!*dGi( zI8$~M>5@XoWMs86r-^7tQAKVvEu=KddszeLmYn}r$VCyRta6z}NA-&JCxI=iF)L>p zoL3!r8mC-#v>Cwvv|3+%FI1sXn!l)Q+NLG<^1%{c`*I-L?a5k1`@`YG?bn)xsr}v)hKY_kI{ImG&pZ-}1z&Jm@{rZ1J z#Uc}pElbX9w%1Cv-*RiGj++i4!#F(pX7K3C!Gr$bv73F;+d9|wRsf&qv#nl~&wmZV z#B)PDBtn#QkkDs&ILg{NgXe9w+w%mTHepH=vCg1@_R`RE%-q*lA?Z^%WJ9&Qf!d5m-w~C zqb?CWn))sk%zs+;7~MpYQT>wBz|=3;5kFYY4WLo8YfcX%#vIV{$^8=nfZxNXp39i7TXp1Mjh^In2%ykP=D+0($_di zjGDha78;yMri&MQhGd~CdD)ymW)Mn94UonWAZ&gU=6v8Q%frdL0A46s3jB^<{nCmETu=bpE2# z{dpTx$;vNf^|U{qB3>%W3+?=QF_}!`2DQhUvA1H0E(dtUgkYY^Sm8YO6^u~&g`LV& zTDaK~7H0Ed8#6PfQX@$>QX@pFmK{|ACQV{rfo0st3iM`Qp1 delta 31261 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 YeEfX;eEfX;T;lWp0dARWsQ?H90ArBtga7~l diff --git a/dist/Puyaubreau_Russac/Puyaubreau_Russac.jar b/dist/Puyaubreau_Russac/Puyaubreau_Russac.jar index ecce87266a6324ddc46a0ecaf76c8cc06b7e0121..b7e98fcd6be803403687d6fa667b0d4b6ed141df 100644 GIT binary patch delta 247 zcmX?bjq$)WMxFp~W)?061`Y;>>q{o`Xfgpw^93OCrV5ape1J)DvjXEhMj(6h0j9%X zx|PM01H|9MbBUYj+LFx^B#yCz_z?=y%pkf{*+CsBK6zoB)aHv`hG0D`KKnU=a+CM) zNNv6!dH}3{VVnXZNdMvZDv delta 247 zcmX?bjq$)WMxFp~W)?061`Y;>$#oNXG?{>;`2rAmQw2y)KER~7S%GmLBaprM0MlVG z-O6Ih0pjoBxx@{kCrBJ)2hkA<(##;bRM|ltNKalEC$;&ammydWi_d;ekk}p`sm=F8 z4}kSAj8g#19geR8>7Q($ZV95Q(jCAm(@j9sr*tO}WtIV^sxsU_yh9maB`lfFAf9KY fH;9^+36{H;=?LN}W(9z#;w-Srtyy5fA6Xs%qgh@$ diff --git a/dist/Puyaubreau_Russac_rapport.pdf b/dist/Puyaubreau_Russac_rapport.pdf index 7b5a9f7c827937d23df7035ef20738cc016ab6bc..ed58e852ffba7cee521e7286e019298e7272c951 100644 GIT binary patch delta 149961 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%0DCJ})2 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 QSY8|Hym=?DKPCPD0pI_l9RL6T delta 131650 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 z z@Dbct*sPXL(`RjgB;ai(b4Rmx>RM@muqVeJNUQcwpd9NKH=>`c05aEWA2uT6M|zX; zdhiJp%{_m1C`OK} zjFYN+XXt|%BLD;pyzm(u!^9Y&yHJNTYS<8JNWc0u&AWKh5TS=7+Bjqy#htV`1Rtcu zXdm150cGklsI+N~o`&6Vu99Kvx41nGnhc(mbkK!wdRfBzjOu&|$eo|2HXR5TK3UzUfWA)_SH1qc4hUBc?pE^_qnE3GOQsf@ zXjYE>jB^Bx5f(*6C36klG#UxPLwcM{Pv`#9J51j4GtAb;wAZH)Nf1;Tw@9Hy^C?Wc z;Cd+91~8D}SiqFx?q$tS-7-bERRIBI32FK62`~e`d^3C#2=$$xx^;QtWHMc|8z@r% zh6P*|krV!a!c5W4xZRqpxrz^L!4Rl@04Nzz<_x1WGFj)M^Ve82LZyLpo66AIM%$m) z+(?XVy_OMq>DLr!Tl}z>?ZR~rXGumu;3sMeEIt}Vo0KC5OXb48p@1s%zz!HiJ%EuI5q?H$Yt}MEd4}h-yoa54-@B7|LkR~fgI@6QdggM94Guu4lKqK@yzp{<3`l-;OCu_;@`KGQS%GO6G>l) z+Y3H04i5qfil2&7<`E})04Ze=Hy1e?&;i??8*+K_F2_$g<})gd=bUWgI{n?@bs=>rBhN9igjvS^paKq6iLB0^NSWbU4a%sz@t`J ziO8dcA@zg!`d0-aV7m|tgC5b=#_M6ngruVYy`~K|Q%fMdrjU}BMJ9_29WH5yxDu2E zy!FvDMn2s^T*=qYw(?n1ql;IfA8#?mRk=VwY7}^h1}}sjF3YOb4ip@>q{KNQA3&k0 z4HDDl9s>^A{3YjzoYv>YDnb_ue>LSv70u8Ou*L7l&DZ&JrR&R1x>w`OTkIYsMdJ3@ zoY$LRa|-yPm?uAM{<3qj*?^n|juSY+0dMapkD|=o)&fv*V|?U(R&NDnj|Fzfnr!=? zbF@|wAzPgLo4oMOuQ=xfotVpSQpTfBsGrIwtw0$VcH1i>6aH*vv3RoEyEZ*=l94|! z$)tx9?{?1A9{S|k7gJ7G`wW-A%{tB${Ub^YoBqVFhGUW2SG%@DQ5^L7hHU$wkCuX3 z152gh;3?!R+|e55fWd}qDS1u~d!Ky&Y3Hs4ul z5*6h@{1e(7N&_r7o)9aGMnBqZ1b#T|U;xBVqkHS7#{-DJzLi$r0FKdcIrW9%UXvk) z{@vcThSQRHfF5rOoX6vUTBD2z`ETD5Sa!eoujgA!-#gu#mDY%63>&Vfj=*#x=S_K3 zZ6*{q8kQ74$)~eGH}E?v&q+wNoI9>4?EPd0@YLS_&)vC)*;Q9}{|PhaoV`zG&YW{5 z_qitoLPE$)GP!Y)M6QBBV$q5yCJLx1BvI-GP?8oaQUy{aODamD*6OQ5Vzo#WNxW+X z5?iZ)n8ZsJFOX10tb*_7yY~M5_8#o>y#K%LgE0H7-~G0(-=+5jVTB*`zD%`Mr&lUy zpLuR}T~eLZz!wnZxvm|0xY#DWIq6r(V`d-nZ@dk#w6Cj-q=@nyO4w1%WgrR{e|p&N zsz=F2=26}G54LX@j}9`1lH*qTj)MM)f3A%KG387a5=`;K$W4{gS{MqXsw{oJ@iXDJ zkV%bTJs!6SjmV~k_Z(3<;X9oyus0F>Wm#j)>Ua|Vv_l(`<6Dx%a7mVCJEO9LZ>lf0 zn}0@*m*zFNCz172=pwO>uY9)lR^Q^7gvF=|x-I+F*1jw0o5@?s?JwaXmdRca+w(8z zdhmwA4VF31&`i8qFUWc4{9zOZ03>u}-LLSr(qDic;lq$OGjdbXKL;s`Km#z0LdU{0 zC6{Zt88BSIlfm36+ydK8xp+(7{%Ep<9g+`wKO(HX?6hj5sjD0Yl;@(_IW03^hmbBE<6H0hYU*iFFX#v=IU!?HLMwv6rQ7xU#$i$4$l27i^8E=YPBh^K@l zA}#ojB-(`mB0cKTwgTncUAZWA=wE9m`TEb47GKXTt%fG@l~%H6PaECFWDKt?jH7%8 z7TZIgugz)jz;O}6A~=EV_(>hePxQ*X1Z=iYD2M!%5suN%3h?>I+Frgi}5g>x*6=@*iK>!>? zm55IU!g$ugmY>P{Gg0Ew{VuYVcJ1Gylt6clz*ur2)}+a{lIABfZy#4yNL30Wqi z)k2s+y+?>e#~C>GF0{h|b$nbV;<3l;0t|s&04cA$lD!IjAb1RUES4vry<^zkco`mB zYpeqJA#AqIfBtv_2+-8Hk1z@oGN zMxtO82#5qNR<&qV@!@y@Z8FGJgS9}`Iv{s|GwU!a6SkU^`ph#OH%${n&kdtRUOiGsoj5;z(}~&h*ySjh%Gam+11IsIB4}X z38Clau4W|Jo`IJUQ9@i$Y(o8-101xI?gma}ytbi??WiWl@X*O`2Jgrcu>(n>n?aTrK!~WIkO7}!*7v-eDCIJw-QW-8S%Du zU5DpCIO8&lqXn5*dt=H<#hk>EXZyl%nk4K{{T8@msfgn{z(mD<(u7YhUP7`T3oE-s zK71-m$PKy7@13}W_n!{;@slU(WK`sY!`w}1Lr@J003&yCsb{7nqNHNx&cmarv{BCJ zCpbwgsvfG)MBLwYa6JJ$GFJ5}Ttr%`^5#G8zS?ni$uku~DX0Vh6PP@wvpu)hvDo7B z&%Ou+?UVP_<~HycT@JKl{#}FvEs~D7!K)zcx*y**b`Wt`Jh8FPfn)WmvQ1ctP;Ka} zLwn}|R-P6RBP;1x9U-Ew(B8b7kq^B{sd;7u9)N|Ie`7?k|Ag$@GU2 z;jf7>^u-5iW8z{_zG>r?N^o%HFkSA^{JpisUFc@wB}yJ2~l z1rl>n`$QyWdwL&y=|6lDzgz~5*h(QrQ_rLxW0gj9liQ?9jg`U;;6TxHe5q zLD$EV#(_}w!J^i;{d?_1+x_KAXE$#5VhYOiaQGMu9X<~CQfb)aNm;Z9RM$+izo~ZH zy^rx23P0VMIpwlPWr9k^woR&^Xovm*fNh)(fYQ+qHVHt&CNF?OFT+j;mjP6Hm4Um`#B5JEWvFAegRtwitr z;Jj*=&Fo09ph)?P5^6##Zry`b=gG=ivF#_wF2egNLsOZSyxvH6DER}aHmB#TU9^NS ztkGL*75n4EH3C*pHi7V_9E|8=`3LR@SJMkCy)tcZg0zqbQD{iMfu|UvC_))*zkkDo z^VnT=0!R^uKs4a66r{aGPBN_yF@YprCF3uy#yCTnyJ(sT&A3Nu{%&O_{f*F^03|6MCs_x})Bk;;N9hu;y4&tEnSDF(qZ)a_<@O+a{erHAgdoKYOP|$?nTRXB0W-#= zXl-K`8Zcv=BMs2MZU1p?X*Vm#1O>8550e5OrG`Lt0@J(svxWbFEt*(!| z+6=%hZWOGid2!qMv)b!2QBJ6rcxAzJ$Hw~jPv#fijy?LU*8B~JWkFNPO(`}Fr@c~9 z+^`i$syO$osBL+Wc;3+uBr>z34KC3V9f+(9a7JuJ4r9lX>m8>%EE+|J0GB`|ASR?l zs`y;x$v}CIz*!Irw7-^wu3PIBDOn~qR-5+b|H7L0u}Zbs12zJDuirGN2AA2|f5)d? z4oTcHY*T$hh*chkg*`kv$OD+3v+ttqSK2vrb!s-y5{TH3rH>hb)0jX@7vaLSD1mm@ zS;<%rlZQSikn%(vlbqI8_G-L}bU6g#8-7(gEtk3_X%;_bJrOg@Bge#q0`LEphh}p~ zLEgx}+sJI>}7PE3Tt8_hq8P`>m+B`E5I0h%ja6zoMl4zIB# zeh0CmG!JJyR+Fn6n@VxNd8L|PYkap-C0jvx9&+2s6npXpVD>lveTBGeRCA?LSqLj{ zRz9U#7Nx4^1>#_N7Nl%2YNG8tx`XS)*|_TQ+R@fr3!EWaXq3AeX9!fx}NY?yQ|x;Xr!Pf7iOP5MWRsi#>*4c|a)91l?zA5Q@(1Xp`8Q*AimBc{=6@ ze~R@D)2ZzmsSb8CQrDdplr3Gjt~T{=q9m8t(RR*oJw+D?8$&!tspcLo3~U#A(7a|l z{3SpOYrn0vxhFBZ;l5X*wl%-6bxLRsAu|yFB1Sp3A>X{JcAdp)f>Ro z+YMg)WOAtG)sETWIl_UEo>ihi>@_M?Fwf>lW6uc!rY`)J72x(k#MC_(CWM1I(2!HQ z0AcdMjBOzD5)%@t%%aD({4ff0Fh4+&V2};Ek4Pvm#+rS=t&L=7h zrbG&S$>T4r3zJ1w|6n?uSRx!`FbapMz;Pj)hG!+rkw*b-F#TS@##VRC8itty6B6cbcpXeMKMpz63!v#V-ebdnmnUr#ee3$U>O27yeAKs9xXrd%X z(DglB)I0@d5+syT%`A@{x&v+K?myPBw7|(=`9&LAbZ3@4;$d0jycC<*{S=(hz|*xR zFF$t(zG~%8;d^078Va2%b?a?UcMcn|G_4+Kjz}gJe)BcQ@WoprMQm(D0a8tvLdH?7 zXHJZe0HYVzV9Z)uYa^%e9ssCT^fPR}(JW8YA_7KuF(x?AON-4tR36+#Z%v1eTy*;A zpVMNx!n7hGG0y2MJFt_eI|7L%s)i-l`;FSXrfyX-txnu+s5W^X*tVR#K)vA*rq{)P zsu2k+nTnS_EWMAmEmb+!3nuwkWYgJPjki+-wKy6inY7A%+BpxWH#xl)CARLWPn`yf zgfaj&aUr@i%=JJx;9Ggin&g-s>BC&31>O}Gytmu~w~N;Wi<^Jk{VtH3c5hZ7zEX^q zNImh7mYf?s`^>hLW(g+^m_wqQVkJ7__@ZGw;6M;Y;q5^!2o~(s$ZU#bD%VY}4cxTx z(c!KM)WVZ%!o@InJbcUK{nAbV&%%5K>bMbB+SYegrlA$Ve+&Khgl3R=xX3s&v7Bu= zB3X$lf)@`zrcxWkT%n%eo+%A>-_pvFZiAI6021XyRUoc^d2F_7+27>8+N(Ub$LA=gg1`IKlKobhOX zbVDz~B5*D;cQuVguj3NydAc?PinU%{*xYh8(phwKIU}0n_1FoO#eH6FRq6 zkfu6M;cM|ug_mEcEHhpxtXuBm>@mM8IpHMQ*0ZZq$u9+~D;Gz1+5?G$1Jl%lOzej6 zaZ&w`6CAatGGMoTxYo4W-@(W*yG>qCjUEmJd0pw4>Mn=v%*TzO)q*!-H!qVBfxX5elg2Ncda{0bH- z9o~YtCD$`43B%V>%ld)kS0D@Fv-i3!c8td!Mke;dA(VbtOBQ7QguIMMCERRbSz#-` zfMY-YgwbDJb9sW)TOaV1aT~+kQ{HIYM6e2<5I5fc#{B5KqdKc0xTNPf(=uI!U4NOd$Rg#I>B*H8u8wdQvZU(UXYc3WpgwFF9&!K8L_`=+m`I>$LOh z9&*NsXKSEF+4fX=Ucw%cIJ7KF3F3d*>Ot68!EE3O$1V&M%5`dcKcnQ!c%7lb$$oL6 zWQHPG2c{>k)Xxlm5Dn-VHSe(f4I~yaSnH<YY|yMbcJA!tTpt0EBSNMNKV>}{zEAxJ%_tT?R(Yc04&V5kqj&Ur zoEW~qfk*IhjQx4V=hH=?3`lf zOWLQ6>{r|Oh1$R@j=$WcVu5gu@L$<_WipGWRFMTJ`bwp6+LCjJLONqPTVJWnY%mFa zJ>)G+B2h>ai;RPZ#V(P750CZtSDM5-3*JZRPx1n*F_EC_7wdpJCI5KE@d*9QGXf$E zXNj_nqkwV_hL0L=w59X@axI~ZjN?`1w)>kPH=qc~s&V}_X&^i*4W(D4-EzFnzx)Jv z_wpu3KT+3_<8&)WQ2tSbEm$C0D$Sz(a&z?<0rB7ki|M*VD`*Ge0@-+>)|aEX*?)R< zdXx7Dp=>d#w}QUUGA*fWh}l3NO&OtbU#Hlhy+GpGEhWmh_E>HQ^M?m9yjNT6Y60_IJnaR=y7nop{%G7rAnbpo| z5?e!8!m$`fQGNu8doTtdor+^EI@MOFG3*XkRw!n0jdL4p8InW9rbmS9wP-x;Z7;zu z4j&ud>R8~yJ23Aq8LhNk3j|xK?GwlCi3pUgF>iO7hd&ZGL9`tn5%BoSfwn9c7+zBC zoDS3kl2>RWj>YbKe#g;%vrSeml?ml`c2xzYg#eKiv(;ZpK^$hI0|Z;{Qp>?q0Kbm) z+t!cbXy8#1RGNSHMRpA;fSRc3@>+>8B3=?<7CkKwSuxT~fhw&_=(c4pvV%!Yu_?W{ zu!>0uYm{#yw&y}3F^bN_!NQG--COD@;in)~W2Y|#_+1UEG1EhF|gX?cjDl#ey6dLPje z&E0jl8-OeDGsC~}x5-#5{1s-1aF5~ou-*4}N#YZXWCuBWoa()x9e7iHN#Uy6V2TiW zLN#{Y>?HHDXAnGG{K($P3a;J6wJuN+`Q_&Y6t_FoI$j7v%*%id0D&_n-vv3(2H6l` z{bT)m{s){N)ITymG80+N`}(*}*pz&V#n&BCUm_i!W}MlLgg};J1_6pEd^_~od^~M} zYq22dv5w7cIx@+8%Tb#Ezf$_q_PkD>c-%6cQ#@}VP7WY3tN@CK&`BozrdQ(P@s_#C zseU86F85g!$`y(>giQ&*5=L#U!OBowhQPcL0IFxX&V&~Pk?GHyW~X4iLjw@U5g7nv zZw4vrP+qJBpl*|S!WbKtn67Smm}%yb!mOf=mCc?=8|cV+bK&Khq}W*J&iw1x#9_H)`t;@24 zRK=zyEM7Qn8jbhWJ%8NMD%5R%_m%ocuap>MzMoJ_sjKq3BoeXQ)qM+-_5JWvw5%65 z^fXM^sDq8*=1?%*qT~$R(iJWt@2c=a!BTsOHEt>KN4xpQ$l4kmG{F<`T0OJFomx0C3{hjD=uA<-{W6K_PF6f_muT$}m8X z=qK@Q3qP0^8?&WctsLMsuiUn*NvF(k=>!1{1r0AT%^<#GF}c`oUyNR7_i2^X0W-)p z%}fv_h;-l>rQ5ETXoO|}KqLQ(OtbfQ*ySHzOje=;zeSwHdI&UC_)*~-sNQss016hq zUNxR<@_PqNW*IVB@z4kup?yHHkYSHkC=>|WMRNMi8pu;fB%JGlK+#dB@IcU#yNiT^ zfWw9NPI`5CGFCk_1-d940rnb6da=ZoWywihFyl;3i4bWVgBTm5)aFyml4ET537~Fk zW0Z(p?}lHljE1pZFrJ7kAVFGFKr|@(@Cqo(I6^BgA-8!fvG2qbwv_!SN4qkq)Isi| z9Z5G;g&<8_9Dz|h$0cGOB90D5q=I$@Px^mdkK?tJbg*@yNyk22BDf^<*+tL8W}6o6am~nz zjgz zCCrd8^X{pg87{~R5g-=KHja^(;7EJ=wo0STWx`<>rhK4r>_3HlunV~X96olzhv6c*^%TbOMpIa9I(k=fO zFyTs{y%E@(W$x7$D#1VEdelshJW%fum@)z!GGF-7wtg(da3n@tK$>BmFI|<)>&C&m zG+qG_&Vi9}V{oJlM~t9*oVYk!>n(;04I$y8qJlP1Ef#PrRI)>W2zTghz+!{BA=L|t zfSlaMuBpzN;)*;tN7NOu8dn0@%Mj60I+j)L)OKh(sK1zObZv!3?H?ATvpVTg26u-4 zx4cu)=L8ZjiWi@F7cme;NiiYp7U{0_E=_1^-DmWo`gIyxlFbyzUhK{wQgiA`UF#Kq zjF4Pdr${fuI=MGHE0blvDU-X_mH?bs$r4+2MLN4lC()!J50!~~v0)!`%gk z+ja}*Rk&pb7@W`{fhpmzT`shCeKIvgKy@IM^)is#q3>Y?L^wunDz}NnN8>^58ir$& z9wt?*R0Q_;6nrX({bYZYTFm4TBJg5O+zXdi27q8NiF@U_tO(s=21s|;i*d}; zXQE0elLNbm(H0b<@?h>dC7IV2DjE`AxfTz6Mo1w-6b(V>J{r11thAtAES!LTEv1i656_OfFBdJnU625GIaBowK1&psH(Ua<5Y-tR!iPdgbkIdzw_qW+#aPuQFilCh0|ha zMy;hAEObTQ4M*Z{gKXg3O#VIGIfeD!#$HnCmH$}=s~;=i^e(c8ep8u>))H0}1ccHA zWZXFKJ89zD#ucIh#Hnw{5^ONxwSOM@j zayp2_&%q~MIj$QFM^8ls(OQ*T5uySbK;|=y6ZP>h?>DQCPC5`X{*3RI2!W4viJsJf8PGx-)qkufafz#+X}uZItvTW%gz&5)NeaKj6*OcayWaQ zsxmQ`C_9`O*;37|-6TyA#*y&u%fxwelYw>b-IMN0-A(jfcmm3c2tCYlb1xBF9 zfU}2Vj#jlw4RJ@I~|Q zXl(H`*Z-}|e?`duUw*VjFG?1I2E6m1DpL|JG;H*!(ht0-I{mJ#FG~Iju{E}1&ExCO z>)>v+r`9AR-SkWV=}6%EbZ~7lAbck{UXH83&bZ`-m%;V*V1A%G&pb~N3vmSCjM$dh z)xK^RH$3>{l9bm4)`pyR6{Mpt{l8%!Dz3I$Iz^N?+@z6GW*<$of7!D;McxM2AzdP? zQuggH5|9u%6{sq_J~TVhkMa(8VZ?^p!97UT?ST*_9`A=VrhE~hedJ|;T77tSz1Z>hcVDaG!L&C z8W4Ti@|)xs006Pr5{Q+}fo8a07Zz+h0$k`poZ@lYabY+^51PCXUn>hv?yl_KVGX%Efoqo4u6tW$^0w;5ZQ$>hOP}DQ_HZ&u}SVT~eqh^? z*rovYtiZv;>44NZBmrZgLf>rHs}nFgU~_P#ai1s@j@-G{`lrgVDPf-3cN=?6GG%W3 zlY18>0>}IHm((xKJZ<7{w*Q6orTMkmB{Md6HBJ_6tj}MDLU6wI^Z8< zu<%APT@2%>cV==_^4#<5i%#db*`CiOy}bg3RP^1FFo|QlA4xK!mj7V8X0u5gXDv|L zrWbasY|2m}=h5L3VZR-^LittlD(#sol2r+t8b!hA5c|bLQwCKB_AzDnHK*~lpbh;U|n)zTXjtJD15ZV z)5<(s^ra6C0=Fl~9H9zzX6uS{>bCzOm4_q~9wfqmWADj}djZOBbVFfGDgmt2lq2v) zJa|Q=w@31T%bulDfLvj9ac9Q7Qy@DrSd86w>ukn3O=0L11L4Mn(h4+Y0wU+x-O zZWQ7U`w^yS)svmm?4Ayy>Xl=OltHMw(VN84^mCf%7Mx4oVQpv!7HzP0Sf?itb2{Ma z6a!lH=!CIKfAy7O8VKCvxkZG;4CIlUMJpcT1>{Y+paLI=TI5)PtCs)Z19t~(4D{UC zp&8rsDj>Rf*XYnhQdD#3taRwZkk|f#Ko#X&MdYLePh@HJNZI+h3f_?5_k{Jc9mfz` z`KPOrDGg6ifOfVtKc;+0J!s@nWrQX;K})KBNgaL<$o)KoTt|2V731v{M<%H9(1>PL zMghmjMUvzJEvOMKVbzF*DYXDh)(kuOy82|D3Y0SZD)y{*c6K>1-O^3#9~p@9OT&%5 z%WcaA9mJfYfFY(4v>=#X$D-2HP1;seF8&RlXWR26PQrVCoHTIqLrCVVmgu*=2p~3G zRCRz<2?e;6UfMC!PW^0cMmGi-ULz(xHeh>S(9zi~yv|rauBNBqipC{`YYMaB!~&IS zGiF{E-Howwzr_{8=rQIcT8=V-3_@&)w1u1A^=H;WMnM0x3|3}B6R5bje9#6J#oU)p zZfjESGvT50{kCQ`j}cFOnVRH!Q*8S^^_HErMf(FL1BC}G9gCr7)~ko2Gqhoo0f=E^ z6Y339kk{r|W47k}I*@r8$Xgu9KWs^kCo4N4SfO4AiPB=>W>U<(jlK>Krnedn+Qi;w zXiv7`?2hU7O>$RZKFz;{*92zvE9mHMz8<{fbL(kZaf%E}Y40@Pdw5$3mZQ;7(y)gD zC9a+mNu2+XBR>hUN!%kFs8m2YO=an>)Y;7w3Jia(Ho3);5HDRWu;J}+%XeRwOm^QY zZcBI?Oc$)0I+3-t?%~ShS-e85Yt;K>y zo80;AARd|t4LL{@`aZ^_#~`$1``(_6G*G|`j)<*XG_ZM9I=O+MiJ2=*n{B$CY^!&E zAFm&wn3sriL@BnP?#rTb0%)*Yv-t_$Dbov4sz(-dc7LF^RktPcw{6A;k=Iq{u;|OW z4_CScz>Y&`QTea`7RT`i-ksnDi3%J0IA-%w8KF+Kc3%cFfDQ3AK-T2qO34yN>9~o!#nd_5*g!>lV`pQg(wdLVuO?cZ}?|9VuXwqFQ&dG!zB+y~5SKW`HtkMt;0vUvV zoR%c}ELvhA;alaYQ_x=fu4G{o-4&hCCMgliXv~G9TQ=03b=kJOrOwlZ^Q9)fRH6qS zAv5DFkrUCvgoU7Uud7} zN_zmPLCxiwoj||(1p3cRqWcn`5&NHMwuLe3P@H+~qUPzA!4L0-jM@%dfKB|+3#vmP zu8TDx4^XJcya2Q7DVJga_5N))CrTK_yz7R|>p!>>&w~xy>b)aqQ<#3a)y6)BJ(jt0 z8Bh>?_Wg6~-Og^|AWUCjUE>NnB-Kohv0RMB;@S1swckhwNy@HB9R5H2?4@8tkQilG zijCXI+tXp}KajIQ;}1^mZt&#gKvNM0GImlr6OKjG&F2hT&I4T;zEFxfL1yr7cwYG7PK6_5{7P-`5V4AcIb zlRKt#qfYcl(4wTgnFV1PI%umFCxrarTnFc`IMvt{Wh|uofsp*2Lah2=Z+(au51t;p zT2P_{a-Nxja*Wq)uqYnrv0K2*9U7H=L+uH9L0FAymamH@5v9XTfeo(HOjg2EM zZ>fKDY6Th#Knfc%@wl;Ke4PkcK!X^TOxRRM+wk(FvyKIyu;xhGt1u$iU|7ncS}v-7 zyZ6Vns=e|VoVB=1>j_FzOzyb9-Drq&|299F(JMu&e+#RN6I}Oykag@(yN>n#?xa$8 z97v~gP#pAgJOGS>VChgeW4O5~Wj^9kD5&kgCCZ4z!_44vav}c=+4j4VTBbMb69>)V zV!}nCR^V9?(-6q=y1dswW|L}1!ZP=CiBu{QWjl)vth80v3TfxoWGaFN{IJ7s#JX|+ z_Y)ZgV5?sZX2PnYn5OOv(JsnW6p4bfS!#s4nvgHlrePE-V^V_DK5=io-H_QEI}v-y zTXG~Lxr+(6u_)vq+VYq{;|?2I(E6o^?KIHZ<}YEd9~x+Cnalq7N<}39JJL7&!B+ULhp4{Xe9yfM zc24aDbB_yA$w)(~m3H|DaPLQo=XFMDRTSyB?VHn1c&O3|ePp$D$$b#~;n|c;;ht_cycXSZr%NkIF^8jr7A-IY2s&7oVSYcLx?na^zB5 z^{aHyVKW6GN~>HZ83q)>4!4Q#L4D&U@q82A{*G#AMoMM-=4RLZmQmW4t=w;OZ%?L8 z=Bm*(7HJ(JP=?qN>1;Xi;X;g@To5+&%z6sZ?AvBRO0ko8!7(#r--PMZBiYx*&8$WN z1P$7n?fAkYGHZW(+akqBoi|#?BkLw!HuI_gEu&XQ9V4icNZP`28BKXHBxtuF{qr(fWUI6yhW-Md0@D;sGt{m4>&G5I$?Z|KHUjwEVG6V5>-H?Mdin|A&e~k{PQ~=Nip>Y4isDEzwa8G}$^lp~%+%hT;DHmTI$s4V4goVP@zzFVPYvKQd=r zYm9X#cFbrf^a-%Auq(Xs;gckfV-hV*%({;x#{y}_p>&j?SnswL&Ti-*b;*Q|2*Z;A zC(a1h3GcSFCwAw5q!nB6k0kb)2tkfV-f<2R#g1Uv;J+A>zG1?=c?k^H^H%}CD8mqf z72;|^-(shakB=d$=Jd-*A_JnT;2AixVg-u2;b+ko>%PwGKK(Ktou8eIh<<1WZzvJ2 zf!^Vqw)0_@vCU0k1fs?2@MMZIzS>_Vr%apk32%H%V2q-46lj% zko#P_AR97T!hhnPgquWbhJtYdF}FXSiO4pQSoxqy*rXwI7`@jHHFfh`jCzFL<~>}o z?WM2>1jMJ-{jsE{iBKo3q|igs{_KFme)zHaG#mOfnafb(P^H|5@JY#`mRK?ve0h)f zw=wI#ob<0h`#5@h7#{6Uz2<>@U=~wJZmRrKsWEQW502F5+JXIY@<-LgfFhY=7}=pM z;1D_tO|6#;3MPX0lqJl5Qq^+UTI`ElofvEJ*Fx1BdT6Q|Z(6C&iqezzp*Y?CaJ|731hdQG ziS&COsrPA$vB*d)$XerV7-}Hi5bY4A%S71V;(*&l+;c)Zd`;!(reMLi(TfEVB_L5! z02eEyZD(Wez=ZMYeFWN{b6>67ewcs;uLm1lDA#w^_KtnEk;$l-vOl#6xU;Oe0{8g6 zU#nN_E%(&=@Bm;!)nD0IZ0vI7fOYXoEUnvJY}YsHgAMffD5*J>1!0@b$E)OTkW=D1 zBSaabF|Ia8Hw%?wb#w_$TRf1;u$wTokdBVor*KQljbMlzG`AF*7|d8GRH_S3xDEpQ8CgjlaI0 zz4VgrBz-i3^A`#}2Y~?XNa~tp?goeJ7fvv8((um$Z6iZFvMXF1p+Xs{t^N*R5Th^c z;6hO4xVx~2Vga1E6(oTHH54Ex$9LedU-BQx%mzj=`JEHKq{4*6XI1mb(%0E~dl zDIQ`gt$IN_(3HLpeBgpqTH7{KDzda}IkAe?A3Kk<{l_MiZa1^U?^k>mtGg26A<44G z&;{jXas)R4T`8SSEFhnbwy=tktl8f2yBe5*6#>3LxrD;^?3T7k+iN&Pu)%n=LS<^9 zpNx9M!o9@W*&Li7H`x$8YM5yDI|Y z#xotiPskQ{tlmd-HC%vs3mkdnLFUb8v&KT}AL0E883TLW@(K6KtD2YMsQ1l6d;|+Q z^tE`Ncrmu_1n1_A@8Co&XDLAl0NjEQkMhpg*jW&%bB_e0=HCS(&;ut27B``6*>_zK zz&o4{cokf2B$ZmrA3Y!kHS?;%NqL}{Kp#q0tsVYt{rCoK8Zwav9VvBBi=)rK$w@K* z0Kz|z2gprPmmmPiBqh@nqQv^OJT~IIQb)#xLR{kdQYBm?1r#^U;nt=~k~ zdG-(wb#g-&oi%h$o#!+5V-pF75CSl9h3Z*#9ca7ucNi8p(4|^+(aY%|uM^lF*nt;6 zP@CRRFeb{==O?7N_2n!W6Y7@Z|LFPAwh>$2#H3}j)jnujSVR(Y{K zvkI4iuO44*BNx+>i~>bTPuFM3C1DowhvI?1PlvkM*Qngs z>#>CUy6_Mq)y5LG{ckYi-1XCBhTOotL>^ye zJ-<%U3UP^O;kR5>8&CW{;h5|-L)Bw!GrxB5$u>RNIXJ{5BSvvy2BNThe#KvE_x?JW z)5WrL<#U&ZVhxs^t69Mk-pr1-)rPuo)RuM)cl*3@+xT{p*P+L~3zUWSa;PIx?7fa@Hm4a^L$Q)FOQaoEtchboskvOza4a&T<< zcMWZdGL2=sx`h)18bDp0`5|8onL&+s|_y>;~r5mk3bPja$RPsWB{qIdu(Ew@( ziIN-{FKvr%!{|Xwt{`tI@1BzQ5TKKNe^&S01)0Z{*E|*i zOn%sYcR0DMDa}1QsQ3v0jhQ%&;g-v33JrrpjFf~@E1zmR`F)i>La=#lJw`b64+%}a z4CVfP`z$gV-1hET$_)+sqC>jUUiSeMhgZ%cApK9jPkXv_i2)?TsL<2z(cG=tU+-+O z1r!A$2Q;**>>PXkeLemrFM~AmIpK=m5<|7iAVza6Mgea>w7Yp-@&ied?*vt0i@D|TD@2)B)NtSbBOGnbXpGpQM zV?HArf9)Y3pxCsvbU?4ANvrXm<-H10R;G&Ah){qe~q!r>NVFijQ1X z>A^peiw15ebfsH}c~}(l8kq53`{9Y{bixPZfg;b>Kx*q=RYybT2S&ZNNl7|VcLl2t zSCP2c&J9mKj*kiOV0@R zDo@_QKO`evT-Mka;IxWrIY=-}*&y<2pYz9L0G8|)ORSti-r*SxxRD}h0^w~!@zhyyq`&zzSaW`^Yxdu7Ew}(r3&)h&)_2Qrx#Z% z31*d|Y6sYW2`H1w_yJ@jR~pfK#c&t!`s$S}kv?k(Fqu5;P%IIXIm15tO)%-#Ka(u% z;Ayr^KLvB_j%Sj3s+e0ezbMP-)$I5q{toazm@in3oWgcqRynFms$LSx@V4dE@Y=DU z!pGB>9S5=dpFCP^cZ0&H3sxIHG&np8wu*9Jv-Y9cTb7}CTyp~&pmn#@>Rkd?1iaY^ zyq9eU*Yu+nib#(>6Z|r^fF>Z+KH86l9+6Xv6}r6k#QMl&tkG=3tbZCfG1_u3mp(HP zF0)BLMhEe$&J=VsR2O#p7^{QBMA4Bhfc?<4XnSVkoLyHWPBxZoLU(=wQ!9K;sbafn zb7gF@q#%Lp#=ahSo}f%Dzhd_Lx-Rf32oyV;{7p9 za@fM4!4nznCeVRf#sOhMojiq{cIOWRsXHuQJGag)BhR_eJc0lZA8y-4rH)T<=53WJ zlM$ahX>TAlw@h(6l&AAke~a2>=WUhFB*XRy6R`KMIe?%7>q-lqXdYLcnQ-GXU3k1S zUQnH0cQ0NE50_Z$CV@BNkG{-L2NLBNK93g@9nEe=SL5(4{uR8F1@B4w?f%7S!@ha} zf)p2#T*4K+Tq;JpY!dY#6qBvJsmlmwZcT1MJyk&?1gYSr9;n5+_1Dued*I;;HW%gm zC<^o`D-H$@^r$(#9exT9aObD$on2sNX>-QfLGa*WB}6XJf+bi_=Ydg*Y=D;m`!CW8 zPh8pV6rZcHFj$?ZCQgmgS|EGpw7Ym~KKn6Vdlm{KXi*X}0FlC(PilqwM1t1~N&TMm}Wj&iB0_qkCgD_mDQJ@S?0@Li=f2qTYiJ2GD zDqj__i;|dY$b~LG5dPbRN>v>fkDQSRa~ReR&1Tk7+pHuikDgbZ-lf1ekS}z-=hb0U z082}NSL6}?O){J7f|HqHyLeddWUT9QVDRp*e`7M=ZroByCyS2&fkth3;H|BhTkRxi zylV%R+R&c#sL9CoxSr^g=QQU%FRj#wqSin~GL2l3S?ub1Tfa5!t;1p9L+`y)fUb$d z0772=<~|mC`L8MjOXFE31$LNZM0(D(0?G0L@4EqE@Q5>#wqu)gaRXz($oR3Wvr3LJ z4T)PT;0qhpQre4!gjftsO=r}(Hi*TGLu_HTU{5JWd|t|~oSGhIZ>iK9U6?Iljue}k z4;H^39(58-X!sM_7|UWp;ca;{l!3xV35l}rU7GYJ$U^7?mw`0!WHLM9=9CNOVq5zZ zV$O;mrVCP1IigI4y%xnBYyL&GvlFME@r>kK|A7*A?=5L(1>|eA`Jzdr)j;CPYkA`7 z&JnD0iX^b@PXcW>oK!nISjw!1%O2r;>C?QOA@NH#$XM zF_#CP^n5{zPY|edPPFO#4h*H=tyOT;Q7E++rEwDvV58pv8y=_|j&O;-SB@^&^x(D& zdb#l1aaX6+I&xx}+5nL2TnH8)J2{ev6W}3A^wAZDg4J?YGuzb#G>W22(PDEzi?(rv zm-jrg9_zCGr-7f&)}~9SUdqJtaC{NM+W)g*+kbL8oh&kJRKoenRe=5@pA#;TKkNIm z1z-2HQ0PR_-GLSo7yeuXP{)bgH3xA(`K#>OSK%~;lBranzbykN`a+_WV+qN=FgA)r zAuoA}nw2}VS`p%7F+$sWgWU6wvh=i-iGkeZb#PFLSoNC4DcPMR5GeAv=y;#qc~!N7 zei^o~=*Yp7tHjqYba^(m1)+=+Ar#9C8 zzi$Yw%QWy1q#}|IwN%IPFofdj$}NUUp1m^cG8wr;-@L~*`b8r51UFS4A;9?Hgo;^n z2mexgz4D|NQg`TuM!5aKbfz5nco8S8d!KDSoxByC`>F!X8u)h6{+ z`xC^r&JH<#WuV@nMG`tIAXlr z^5O#UBDjw|s^g{(+0N^#$KWSJGY(wg-$d3BB#CdJtl!`324TAS$23LjBla6-_EMz{ zDaueThi_wZ)7h!63D`Dd{asfl(-CQLRsa$&YZrvAzHS&Yza_FJICN9&rVmsqHhN{f z+0cd`6KH%aFl(wrU>J%p$=TT5^g^^0TMf%%J})K+FFAHl1($PH$NG7Ig}N5PQ80Y4 zqU%8i38RNImD4RTGI1=ld(Q4?*?E&eU2wh-SJu25L2~toImF*1bj9ytjH*a6ge;T@ zksPTT9amoUo>S_hIH_>jttOZDAYA3Qu|!$C{Ubvf)$KPnbYn z{jDM@!@~O~7nQ6+ZR2@DXvRnuc3jxTD^`YMfm;h(WrZD>2iyFn zD{<16wTv5$BKTI?j$R#dUAn^Z*C)8Zt!p~4&eDHWrg~U&!oD8yG+4eOVe7S6EPnA_ zJbZuo*?Oy+>l`0i1iGRGat*E&h--P(Y^tet!Exy#yaTj3c#lievJ$&1WlpVN)owKG z^bH@-P%FNbuVq`aWGKp<(zf?i=5&dN@<|H=vp-!6kAeiq%4lRZ{F`Lz5#yKIMp8+3 zYk%RXSB#I89|GuMeA%}pw*IpEh~2y=k(-L1nou!H9f2uHqvsVPAf5u{SKkLRnvi=G zu_+g}F?;68bg@15I{YJymoM+}eT@ZEhRdr5`IiwibUiQ1KJcoiumPit1{i;P^|cy8(0 z&xUT>_i)K&sa51P0^HJs5*vR=6dwwMasxjfsLr;}Elc}w(}KJ9$11Ch^@fX?NjMW6 z7=Cr3s$D-tP~3TSm0VzYg(LCPYe<42rz8@w=~BwNDr(7y9P9EFzjt{m5O|DRXlmlP zMBJ9HQ?9V3s?jh}wW|}Q5h>5Y?se5pK-45J6_YS*uRFJr3XcI!nBNppFvZS%Z~es* zEP%bmnl0Q@9>(>@;nBsLs?0puClv7JK7y~hDQ$BZVjbiuE6C{~t_xt0tSA-Ov6B4a zSl98cME#NzAAB55^P#t)R^}pER-%?$oE;*GBzhUZz)JK3cKbU)yk!p*ogsZ1FK4bV!EtJioJs&W%47C%r02ZZo^K@p zBCr#<_hS8Hk1B^X_tpvpspgF?`Um{bWkG_^!ec7`D$*7gC$`P-O)b9q-xNmxr$_u3 zAWhlKi?+?qz!VV2BI1z~(la@I(h{H^&xu(k0CngydPXkU?5n6f`v*KH376P(C2HkC zt$?@}h9TmY?n8g++7}GC;RkI2GDjeS%!Idv;f|Gu8wlOd`V-S7AZ#cQ0$+wwGi_~4 zyo$?x5;y}v)$#`CwVFVUg9Dr+JVtCpoWOKD?j33E2)y4~&*z3!+yib3vZCQf1FdAl z#kS@4THiE0&`@5=M=bj)&tewt`zNJG+3Ayro7s3DzB*VPHPJ;mAa)cTfcRXLGXf&9 zEubaBhM@gfCg+MqkHy0po3Z-IXma2A76Jiu7h}thm3i0P8xAf*KFy&}2KFh(1kjDN zKBXq$Pvm=~v*lkI2|!Be+#ZGbVYCh-^vWHZoay8m%BgMpTZwP{_>yX~$x|ZT0yo2i z`gxMcf~(_L)PF-dpzJ-YA`DJWz4~2sPa^N0g9WYR@upmc2;tYR$hr>k0QL?z`*OX* z=W_SS5dqZ@vO+=I-$JNB?OGn>iqp}OzvzZa%g+369g!LZBD^IEg1ng4xg{2kJ5%Nd zEk3%%wbxbWHZh1WIZS4mxEHyDUP`$Vs1f4sPRVH{@mc;0rK;U1M!EpGbr$5F7C;dM zBbaVK|xG%ZpVP4a(?l==-tp19>uoe5j0#piNM3)?m3Ky8CRpNT3H#I zir}Q_@Gs(d+%?$_oPu9a&vz=7E?97OUG}q0dVh_z(Zi$;gfcFLfeMTr95;$knW}f3 zHGI~!aU(V9CI;<~r?PS7%!H4tE-e4mizxIC5f&9%D3WbkM+tQNwK6e#4Q%SrCIb)- z8r~$QR%>?N#%kS?edPLl_mk;#{PnZ}M}faOHJx20ijO~S%_#m!8HQc>dHY{>tnOwB zw)qB0URK^xz+4XTf3SY zQ>R!VH_TlmV*4#40~H2XjN%1xe?NzsAOpCJNE9wg19=N*| zQVtuPf86;suhN`x$C0jVNX*4oM= z0gE>37%T-b@tjlb@tg6wTK5K6f*oPfAH}>GUdLQ#x<&PG89%fo$GlmP7;7h5)rBk2|WpNpZKCs_ys zkvQyRL?kyda%{JL9RwJ?H3;D4erK@>$WBCsfT9sQ$P~JYCjwx>+JxFp~ldspwjcc$+JKjH3Bt-NiKC4UeJgk#dP$y zxJdwh1;Z#*W&8B7vGC~Y*it3hwoGP7ETIA|=H4suw7&5@u*4fbj7X`V;85Ztb>fZK zCftWWg%s600}fw^=*C4{qV8kmaeEG96+}pgHDTAhw=!KB)Pk2~D)oj-sN7v+on75+GiUR8f4fCGF1nOn;I3C;O^PC*N^P?7_d34F&ehpYyyJX@k8p8A5R^ zC7-#eHvbmR!k?b%tk{MZr_*{^M+|;&59P9)D|~o$AiN(kRE}K@a-1N6U_awzk5v&^uQJWvJk!CRB@CiZov*I|(|YNZ0kRmuHq%N@p@Yo={n1_*<@ ztmSn>EzXyKtszC0>Sg{?v0P#d9Ox$YR@t6){zr81Jt_E_n z)bI6kas6MDVk`LJImu)~jY*BfhK$`86oS;6+Iexlg;Rh4iLh3D&yxY)N_s$qsxr0w z%-pPnVHla9RJZMZg76*yuW=VGYUiDr*VHw|yAglz>bbmRU(wT;bx_HSv0zEBqDb-l z>w%RhFNGk58H?u|1AJ&z^U19-%WgVAb{0J`p5qEka@-GK@K)M8E=pIx_rf@WjY2X1 z!FGJB*0+$(=*1F5Rv-`O0yp63VS}q8ju$ra@>Hp^h5Mk`zEVY82m*faYa&#nkaq$B zVHU7lXbTtZ_F|nw9f2CBXxB8SZk2Ke+A_5pl5t<=28osXjLMmXOEv!BgYtZixZ>)H z&&fSdinN8gZ?sinEqbW~wJM32~x zLY|HUs0qa;s&F<)te8VAY&VCC4!z3k5s$ng)#gTZEz?{m@hyc36H^9X78+Gw7QGT# z=P&;)_w!#>KaOd}v zug2X~u`vV}FSUJSFtEqFQlKvLPci&zi9L34xiseJ>MkpZ>l0+0d z|FBoFA46@fjm(|5pycvg+65bcs;=n9P#cp7mO*hPu}-e5IrjLq)mE2W1W*NVMDtz? zw3I}D{zm5XHfdivNJ>CnD>%bQN$j4kH2hskHE(}UI**Vh#YXv~8EW0Tjua3aLA{xL z`@)&&Jmd1{>C&yk)8cdFGu(Ff7i61Kt-2|N3I`jLeb3fH9=^EeqH8IJw(FR59{yC= zrW|!QZ=ZuG`=1#3I0^DT>BjECL&}cxZfS+>=GVwoI>WikHp)ul=+Cmdu1KeKjdM8h zBZ@0A*wzk2x2S^|CJa0LKsRxCFf92*W*rtzHNuxzjo6Kszcw901I%1X0yYqorr4$v zdD#Bzwds_j^gJj&ARKk3TcOLN?kk;}O)rM)yB}DA%NJLAyHL^~u5w5zXcV730vwYx zZ_5n*%;IflRob?p4=5X0VlF`c(N@1S?IU_la)@R<6!0{#UwRQYHE!eFCyb_4z;6DY zSbyRtgaDGap%>Opo}c2(j{>o%z3oBGNa##|pe0pWe;y>-*MR?lbAf#?m0=ZGAc26! zGD<)QOV7Ov#%Nxbci+{v-P|g|Z_HY-SNxq%vLGJJ7}xv=mRo z$7;mn;}L*Z!^tm-p`jJORBB<;8`Gn@wTB(pPt9hX*$XGmUCYxM`Vw;i5}LwOpxhuu z#Vz?!!Bdn5`n->#2^U(vZR{Wl3>!i|u57V9S_}w;e7-PU?t5Eheg%=60eBKCgnHcs zrDi}}LCb&|uC&CPo~R50h6~H00~-d=KZ|D!(V6Q!?|+=1aXYWCKBvL%RAQ1*~FOOtK+Iku11s4UblDu+T^+nRw9C$OE22&RXAb!eBU8_#7 z^jFZ0;`wvX_@*rp2xh^5|1h*;hJ8~Y1^cgBe7g!ykz+&=nR2SIO zKLx8D10wen?m49bq!pkRzj@RsKC!m-I@CY^yoSirHNUTQ*3m)cm8nOrcv4UW^W+8W z|J+wQ%Hu-o-1zxd@4K!0I__I|6C(X&w2STif0fQ}z`X$BkFGlQyKgGjxKyU0Z^Glk zIN|_5jjPkdrf;i|zK}P9q%oLKijp?^6J96iQ3vL&0KoHbWo83qm{6fuIhwV&b9E<>z=4|rn0S+W<>xNayX5ZPWnxK$`Pog4==3GnoI0E~o!XH*_Mv2$~9H(=@im`yzL_ zoHlo{{9p6WcH0#U4mlJA3tracs8q`xBSM`U5kqmHkJsGjv-2LYlNonT=yTSRlqOuf zSlSM(gKrHo8VFt76~(yvi9Z&@A10G|3u}smcHhVG;eF_>)uydGrGljaV_m5%N+|9l zQVx^`oSh6@19+ChckdXf0B{Lkf;K##z@3*1*&7`(jM0QHVd+t(Dz5A>Uq85!glt0B zos5z(^wewJ_6U9&5}JsZ(Y{%}T*IAXTfR~0?S=(GeP5bdbP@7$R?d?^4XWW(d*+9v z%jViy4nRx3N~)c!dZ^O*a-45h1o}8Ru1^j;El*nJe4hP#^x|B-$t?=b8Koy=|Eynl zV#XTEeQVY3GYGj)}M#c0iQ= zH<5P7&y#tRIe6u+3pI`tDpOD1&NW;=%m(5RYX71_b}Pa*Y-s4_VwsR&kKDEOp2LQrv0DHg3! zJMIsi)l@#<1!-IC5^f0aOR)of{|Sc=l`0Z_LEOr~VBlK=u`RqAmsuhnxjq2%nhU5N%dv2kPB%ipV1)I1TPfYMF%VOE31Cngb9$o|dfJ$`W` z`I%{v#}tRQVG#7;%UstqgC=?Ocm=bMXiu^>x4nT?x%eibwkef}&=*U^Z0J)o9KT8D z@|l~`6H&)$Uy@3xOpH1XftSmY75A1!t_#m^c(~g5gLjG3!qtiatwinS?9&zXMzVOok@@0MzFHNPg(Umj4&y2_^Mvft@g|(l{7xIs-8QzD;LF|tuM#X!>{e| z+$vx$sN%}gGXyV&Q&Z>3~9I-hgyYu$|hpadAES1y+osn_Tf6V4`pG zUwt-P(v7fu#oXHuPeX*411^qwmPlJXwOI86}%M(u-;} z`EA*Fa1||$+s00+93u-2vW+%D)&~*yDo$>cqY%C_OP&T$MzJZm)|*E`re?NhR&Z<# zXGE+QQ(AJjDVLN_Gc;2iF#E+kPW{=slnv@T5g3E5VPkDc4#E#&B71^x8UgArH=7ti1C$C zJMWjRzKN^vnd?D6{+COr!~Bb2@T=(3yF>5B#D#&P0Y11EV8MHKU?4`r zgKkVOYU~n+LHi9gNchT}Ys1a3J2q5Wa$-RJBhI2+L`rUSE}>-=@jyE^A0cr%Z3Q*F zA*f4ocP@=$bxOQz^}_&`EA@f{s+5Z~ud7$4C`Pp?k}ZtKLg841U!|v5Dis3CQj$&R zsrrP!$1LfQd%9VE5UMA1D~rA3?FgS$LRlsdL?kQ9hES@$SJF5ycKj-G012l`g*Lv_ z7L8V>^$^(zSD~xAH2(WOk|sJd{z;{R-&_(@SP0>Sq>tI1&!Bbx?$7JvK=AUob5cP4 zb59LBd|}ep&{_z$I{&s8JZ{33xC@0M8NQA^1pG3pJiH~tH)N451iirI6Z6Mz%FFNj za)s3Mv<=G^J}x!%h{rc@=p@h?T*JKevl8Nf-EV%7he15NkfCbtSoI1l7y5MhdXjg2bsiWi{!@0`bARe zA^W#q3Zh#&LvoG9pSHdO`&q*&e$MSlA;@>FCW&^u)AAa@E|#I8RQTxcEzDteOXtMT4l?0G!O`{@@Y5&!n{q z-*^cxt4!-f^o~+Cm!Jr2=QFh_DcnZ}dU4B|bXGTFHEtGg%!oe68SbI|BU}Y~m;DQ~ z7%pSk@$(4s-7n%uzx?xc((9ngq+u^Br&009*q&i#^bJrBvgr1DPza$P2xI6ES%N^0 z&w_jj*lM|Z<7ts(1Vgb&Dw6Sqo*w!T%$myU=Dx8*|LzpTKmxQVA{h!W0 zYwm)L#|e5`3O9=79Fv*7co$yK*`K!l4YdpuzV!P?ccm*zzxUfSyFlLx)t3OhkN2(_nKE{)guD%kV6nHtkC6Nw<<-XQw=Vw{Xv5TP+ zfGuI~(jASOe*!^WcAh}3I8SD$Z(J}o^lW;qNTq0y{*&L?^_RyG#E zIhI#RIR#1BFtIOiyny5|50O}XQF;b}zkzy^b!FFm0wR~?8Vr~)8OBsBSXiY5CQ0la zS4Cd?*amJPxN8{o&_R~QGjX5>!3U0aDJNCca?JxZfJZZYR8Q7DRO{h|lpMb`f}E$)o|GiR~;UPkdN+}!b_Ojwv_IP&0Jgo-?=1}qag5$@fr zc6z>PA%QMP%FH;XioDU0^=bd0Vm6g#K9GhhW*J&NbPtEu63UB2h7WoioKjn~;D1Po z!c!0mnuD(^+KGZlrSZGszuH7R@^FgXjo)AK`IPX4d8hzzxC-)g)r!4_NR5#qutu*AZAz&P=?^)*+rN;GH({J$fl&73 z->tR0+W#C>kvw5E7>L6(pe*3dnP_SgP6MhW?bD*g{y84M&b#zyb?A^IJ+TKo0W-`B z?7A`@mWt!H&q6{J`(S(TsST3;fpH)^u-)>u_R-%K14TNB9bj&@GWy46*L9Q7nE%C;oE}TW<-kDUU?lA-+*< z&6f$<<%!i%$~$eX3%IO_KEQfY+7K+`EZg~JIf)XVRFKOnwl=RN{}P}Tbid_YQGs5C z$np}v9fj&wlu`i>d^t_+-o3SYQ&wu6vtza1J7Q*$bJ%{NQoHCAfUK?gaylIscefc7 zBUf{{xWmUP?x1K**j#& z2r1OotVf%3<3Vum4}Ud%ypFwur$<#<^Z5GnYU~-s=-J^DlYyS%HTAEy@0JSqW^${^ z$ZX_5+6(fz%ouwv>KGy)237=a?(qArtGSf)0>P}XL9<%coPbI|(a(6uN|F@smjC4R zaw7ulB7PkGb}~$Y1NleAir3$g4t5i>CJgJm$Ll|hrdl``Sg(p6s>UYDG1Nn$*J!|Q zet!)d=#SK-FPZD|(Zy*kmbON$$lq$DX9|o(Ny@i8J{`p!m zCHpZ#jjX$-=yqEStANHrPngVo-%jTeZUu*=GZ$Lb>&4Mx&lPh8G3h$y*z+9- z>h?dHynE6zd-tC}j=bp?$#8{7WE32nD{7x12t|P?ERIBS+;abKcjp~v*Hzv7$eLTu zzB703ojap4eMTKg))Z+*a%1EocS~{%1PrzYEYpl-8ON9^={-V=K@!1Up}2*Z7BDi- z3&93Qf;=7xZX%`_T%>>@fQv*6#n|ur+vn_a&ddPs|L4!gAI;ro?Y{Tgt1pPNwXs#2 zNQAh+Yxz8oyf9#JMpxVZe~eb_fPWP`fzd0({j|ye`qpGl9s`NY^OZvnY#@e|a-;$P z`?){SND7p1#M-u@kDC$@^271Z5EXKs-Stm6_r1G;FUs%k1!Z0GMG|Ekd93Ulqyhs+ zQ-Mj>!oq?G)e$@k_e9|q2g_g`&3N7QcSTEO>jqZf=;+%(2?hpoXsvDe0wyL`9AB9GC97u}*V8&0SLTyX@m49jV(tW%IcID`ikE9Dd%0BkSF(Yej@{1%^Q8s!n!aRlu`vi^bup|GwP_mc& zl)!Q8o>UAs3$!}BmAa!4b2X2zjOoA|Knz5bh}rrF>q4`DaIhb(i1JCgxM(ye^e zaqR?o!bj&>ni{+FW4t5f)w6agm{JIioEpe;gd$CbM<$AV>nL=ElB2fu_$7?O02 z4d2B+$$MY998-|egBX@8CvaJbJdmrPMFUW%MwkX^r5`JZzc4?N;E`P(i(!f|^62Ta z5T7N5|3XvkTPSmHk*o~)_@2o|-1T78Z&#d8Fhn|98*eQB_^=>CYGKqcJq20RuVA=ukXi$r5vIkZw2Q2v5UTq#`D}JM{rYN1$2Zl+`b137#GOFF^20uROl?r zL=zYcTbY{G-VhZl5&=#bF-mtiSI0mDMVKa>0W@9$B(CDVyUm4G8~SX4aYFg}-be~1 zh8PWL(%GT!5SJU$g7EQNFFG5*E}T;$N?6Nio7>^aPJ1Zo!*_rep13%E8LNt5he2cj zyZhO4XVDv_kJ-feI9TrAU#gI53`BzQNEr6xm#_gpZA6VS#5_+GF=B6`%Sd8FC??Ru z?VAx8ZF`Lag8jfU2nj#S9pRP%tB)4a_I{c9op`3}FDVZPa$dhg5gUOC5dJ3dc6_km zYS#R{s4DXcEOKLyEHAe{Y)1Kl2dk-Ks)Ld?A;+Y<^p?{4Qv_af+JV44A1Nd;6 zI1qk^1d;FhNmNtV*_xexQ)zi5*##kaMhP(Ym1wXbqZTZX5U^y`LX47HgiKGNCQ!h} zz)Toy0P~vx-+q?VCCJK(l9dtKQ4WRvK*kQiEoMw!T{JUgM$w;U+9N1`dXS7Y%a zqEW=!0M;kh z5H=CF(GHQnq}nC4coY0h4C|9^5%Uy@JY(CXh^E&f)v{*}bBVC0ZRO@mosq1y;)6); zk)QXulhIu1-$mUcNt1x7l!1wqIIag@OIDjWverr^6C&W=9BsjZ#LMY!j;QLP1IOv#pzawRqTYEY60 z%Y74ic)|H+x|J2Vjmb$jG+YJCjPrDbb}xR7TiA?R01Fjf=KxjbYH=iy3;5pE+ATkb z7LqiIL+7o%6UZKW_K{MN!1ca|xZfQSSN?Cy*cdBh3c+63Z(Q?zkA4ws;uBEAJeyFE zar<`kZuFV`iz33m%MdHH9;Y+(5za)fjM}3v>TZGto3!fvuGa^`TEym%Lzxv#YzanU zrwLw4(G&cSU}3dA|B0xt8M-pg9RrnW^-|P({f|)p;j=}cs?dym?}yR4W|Et2Q)l)@J<-r26oWqWJ`HRz@o37#iNW zVRjP-T&kd~VaWKwuBieQ;Rwh}RAixQi%37>aoF_Y|g0vIXvNe$+6+ z%bI2RfiOR9t;1HXjyf8$kmiYvn~WFMUeH_|!p}*}mU8?g-S@%Uq9l>aS2AuJzL!%f zfgZ`sux%jvZ#*)Vy01;+z`G(p5MiPg@hRwlvXPJs0&ZW%<@r%0+dDiOt8da|JaW5( zVolaSo9em$9xSmyRLRJ)(*e6EPT{sM;_3i-hFDNxf|4mopd;zJveo&TcJNl*kuREz zY8WlS3i(itVUuNJh5?)3O0ASOd9GdfQ{IeUK8=eG(nXdM$K0g#c!k@D_$?cGZd-cf zHazLwqTmLRT>3~5?RHUfaS0wE@Si?z6H;B<`}%SZ+775sMGJ#=#PTQTp=PWLE|8oA z59cf5Q;aYOEYH-Es@8dg%nyq72kzEoO!}|~I-!_&HH4;O*i2#7BAaN81R%Ro_}VWZ zKb6ALx1nLh+8Vu(@D94sNz-jSuV}kvLz%RU0)y0*a^=FvOJ^y8=~f|VjiNMo?c zFGUM{CbD(B)P53vUUigLNOb&WXJb8(NNDV+}7&q53-p^p(ShTeM> z00iwD(vK8y^U-J_hRMp^#~BH0Upo&;7Z)?XPl^eD9r?Ayy${Y7x;;0_SNy;Yk%Nk($pf4=X|qE3u$=m^0Gp&)n;2gS398P0QgA=RJw8sdFSo?lo{LEr5|2`NVUuByz^ zFdrmjo8BK7li^{jU&YPB{IT^I+@y!!AP-G86ZYCe_)180vF{`kYp670*dX-U1IN!M z5KO=k(1YQCcZYDMX@k8W2zLUpE5h5=s&mlLFUN3E7GWRy7AfihL&(9rx8q>x_ zoG5N7j8h6}``#+^EzBU~+4Z#fx?4mnw_o&EnEm2&OiVzv^4;+E5yooW^~(yqiZe(!a0JC^J==Mo;>kW7&BIPx z=9dzPCg7Ba=2To%N^HmD(IDuI(*#RK44=47kIh1aiPy= zWMh0h_`qpR8@R)9&z0mkuE}O7g2z0bbkH*gBwbHH!L(4xeih=$7$LvgZ36FcoRT>} zawbY!h9AR)0%V@Gy#LqH5I)J0iNtH7G1!&`>}hnvLr><0*~#Y21Pzt)z%+ zkkaIb5KMG@Ft4&Ffh*qs4h#{-B7<^p8T5ZPmQc?dGqr-nzz{z8Uve@qtu0mZrvmNV zTwyWcWcYqh)c^Q*Oh^y0l2)*WqqhCOpjLNw7Mp5HTA}3=ZwnDJVlR3o+S-O32FbWg zW%URvo1WeO40Oo_L#{pQR~UR^DXp=}@1u!MC=kB)XH`aYz(DFS%9Y}xIwr6QM5uP- z@1x!bbga0=$e`-KYU)!&E%_=kl>ik&E4P!^PGS;HP6FNAHo}qR&Y+u0!Gq*vj=lTY zXhAm*8kj?}|7>6~QzXLqI=it_T--)b#sCqzeD2w3Gu$g^kW;C-$8)n4J#NW$J6&Og zY^IWL@K=7`iMudpo3^zM0mKe=I^=-q&xfCj#`;EQq+;Z~;h^Z%0>>yC_NaYzp6gO~ zHP#U102WI+v&l}kxLdd_=_-s=Y)!o68tVAW!EmHlLv2d%Z`J}KG}8j5L!9h!=Pi)b zPxC-g1XC1n9iR!dicaUJ)71&Yf&n3uPaz9+zOr4$gs zHhsw_n)D$rLzD86ZmPgOaaq;oh^@cDby?rJvJuo3y%H-!;Uy0a<$y^L zM+yZJip+Shv~u_jZp5~Hyo5CZ_ZIs_od_{Bc5KPLuujBWiAjYb;%1Z_&%;+0#1aP; zPJjphVac5`FS!Ka;HIa}pWGfXO5x0fqbtf!mvY44GFEZMu_Tr^f^LC?v&%B-(&W$W zIo@C?Y1|*G<0DckLntZaKcn|$vcRi)DKa9Ar0l(s8>~u`%AmuMSpPWt#VZW`9g47b z>+{hbG1{e3B4CFGe50TcXvwsr&5q6`Z}wJ%xz0si62T&z@{c;V0DU+JAF?Y3n{0Mn zEwWx@!IPrjJ9lY?r6R6%f;?s#Q3;VM2` zAsQ6VVeZi49Ky2lcBYWS&2B-nSY%n7W-T6hJE`4xX!W$mNAcaw?v*XvD#lDO6!^Pg zni?I0z*Gci7)^FHFEv}=JTL^W?a(g>D;ll(e4cpOc z3k}>I6e`$%w9UV7BFHJ~P2xyES|>H^TP<$m=Im&N<2mDCrHC_yAeTK?%WHnF-0Cik zO}dh=R-cbdWOvmq?ENEnU9J!)4eemnZCWnk1M1rI%~Kzb86#86$J@0duDvxu$Ea02 zJ7%}Gx>eYmN-m2s&X*cy`h+v(1&5hOFBd?!*T@O{>bVMKE76BXQTZB#6hTR!Re(su zHC=H_vO|}*KZ1)^8rk&gGTvfTiB>>L4z#~PjbUwscGF!U9+Yf~__zmuym@Vnr zbj9|O&?TXCwcURH?2e9=!(34;-4O{9=n9KfHfOaR`7WBdw_R7p2SA2&>>pk05knc& zE8{iJqtA7e6z=VZwfpUY0?P~)HO_x@lfw6q{{bN$)L;gVoOLl)!Yvn~*?YPNmtW)w zgtSTP5T}Wo=#A;(LX3`WMr=~dq2W7~#y9P6SC{MBfd3+bddTXeMcG^@H^%GX#Lr6G zywzVoUOD(O6eamJkgj2(w=iI5cDVV7EEIB$MSw4dmn#qqRQ?wvp(FN*%9Nh#$n9{T zgsVka)?8>*(M=-6*R0Y?hSo@OLNwQDHME2T`m1sTz=@D^8FT}AwfJL1kfD!p+djuF ziO&SvkKd0DY1+Pza70KOMQuw)HEu_L!LVMs9EWo)3s{f`F<*t31UeLkEUSVUd#9Z< zA^SY(5g{K~$+Q<`fi9c~{g4zg_cS)8jOqN+CI;Fv??5<(`ZYUVTH5c!8&UF~{Sg;zL5IO#h) z^##r0vGeLu0(*KeL0S+DD_xIbS&75dT^{vfiZ(^(;XUC=NFjR`5Q;&vLfn6IfZlkJ z2PFff$%Y-<>AIi=!b6|Ki{YUcxv<66M9wB_%X z?Z22v`lr7R$D7Z0yG3mZv<=RZ0O$`B?+W-EPi`vl-uMFxqxqay3ok)B;`KMWc6+eL zEta_v>>f8Incgi#y~MZ*VZZhxtKfrbDk8L^-RFVfj2MhAW(xeiUK$qjC&6kC)@onI z%L+O&lxlGg{1y)w$;Zj(%_&WX(NmWYQ|4w<8Ybodf)K1!bD%_3h8LFrGXvfI`Vx7A zex`g*BG7~&lBU@}&+EgdLxE;Bz!1yIX#GHd$g_JZpyub@T5h)Jm!+C_;z!#6d4xp` zGH7nyz*!ixiC`gIF{WxsF%x=_z+MmcBj;K3e%A&=%sYpSmM|ot=K8A(UF|Z#l&0h9HtV)cF~|KicpIWi%!CEb`EsM3E6#>y&>9kV+ZxplJY^Pwz4OSb(qqIh#X#G{46F*|m#>$?7Bvm>-D zlCsF4GkmneZ^02-ctxS^Ln-#^YYJV_N_j#PO%h|AIiQ6H`gtjzpsiPErZHmAj^Q6C zd~+~7Hr#%whjsa|XBl40z8jvUD{c1@S4E|*7zHAuKDNZIBp6!!(uqhD+O5#)&pbSCGe{<^@P&ZMn}DNXt`_0AQk&nDE9Epl+_HIVdm#=SUR?$6>f>ha9NtjcQT`s?7n+S z{cTc1uf>dj3n=R*9&$fyJF<)D^)k&*i#HDxv5L91++>fgaDyiX%$sgmig~A!K!0Mt zwykllEyc27DyuzNREI1AEueu3<))-$ZQxFj6RO-$jOkI5Kds5jYVeR?Kk*mLZG_UJ z@lGN|MgWmjoOmO7C&bHQzlUThe26<@HLytF0S(1;^d=5QS9dfQB^a_f+~0CX$&U^* z38b6o-?B>N^O$RWt6Z!7D`7e8q*ZP#N1EkMe4aF0(MkN5AbLvvKf|cVWxZ27GsL{TO8kF{h&=JzJ;UIOgWjCxN_?u7q## z2w@$Dcrvr%QG05PxQL4?4x6QMH`F2(qL<;oydG=Ae^G=G*H%k{qaqZ<>+BulZdtQ} zh0CNO1*|a)^k~LBK2*urg($|$6nIp<(&tXv_Ai$j4vIf%(05{6eqU}vnyUoPGpY^6 z(hS_5VTF)kr!R?B*16>fClSl29>gg^@2@MN7-~8Q-K0!Ui%vxq?H&66P#lBuUg3wJ z8LPTLN9PwuyHd(3JH&yqvR(6wXGMf2gM8Fl%iXieU60*8eYqX(D0DA{N=3G_Lc|RaD!lOgbfJASiEO%Hw+?}OP(6Z zXt05;mnSv72HOseo%?Dxe~f%qI)u=`;NYwdK35&)PH{x3d9YNd5FR~z^>rYqQIVqo zW~0NbCoYc$TOn8>vC^h&&-cruv`6%aqCE$@UoD@ziIgRXsd*xKQsZ`1K}qHD*F^3Z z+8$Ftd~zsCo(M^mgM~!Yy8?u+-*DeMUeBdqzY{tv5=A44i}s4 z*;8G;RTjQJH+rs`>}he4$tsO0nD9co{4`V)I;_a=!|dYqk!d1Yt=v9X*zL$3e`k4a zD=&a#@1f148Uz=<-jEXM@Yr)aIzTVTf;onMwLLHlkgUEDE~T(OR+Q53pf3`-&I3b@ zkW@K^#i8o$#W~gZ*@)SQbwl>-mg0Q7af4e@Wg}s+Ib<;InAsn_sMzVrMtQ60Nc!Rt zT#QafRde$TX1i9Q2p|78SEWt74MHkyPpF}Q?gSX)6yw~>s%0J6q2sUt$4OM@CxE9; z`Zes0(S#@}f2i|X1Ogl&B*ys~#2=VrFMG7yRud-0Fj~`2dUfP z%xkr+zoj(CYvj=mY_-LU-%vC{C10#g`DfEgB9Qlno%j^c^Xf_YpH)0>*G$gf7n2H_VgX#Um za(tCoMPb|A;_kmdF1Q%&g;q3rWkDqyH#wqoYNW}^s&v(mCg5fqW(7Q^p5*%E#f3jm z6uq>0DVbz=i$p&i%=``R#HxrjVm#$RYkDMPft5n~OiDWA*xI9vNSZyojqT-(L+gR; zQ{a$zFd8L3H*!(`b!MQ|)h~}tt7Jm%19-}me6<}s$1Rs_9WgXeey};XGIgEn7MH_M z5{tRM+{f+by7RJ+^%p`SLo`BGK;(rwctgE(_BvZ}9s-$AX4~(EDS_O;5poLXf$LCS zK=!aGd02cL&O_E2iq_h}m(E^gPn`$%Hs(#L5PSI;8o0ecJ7Spe*lE$?Qu2#1N1TWo zHfjLj`)wQDSoUk;l0t0hU_+an%gRsQ=*$chnGr5<37QH~APh&tb-+Qri+%@Bwxe zH6yHpEdF!ATyE5YjF3B)LM!tKS(xAjC2Y<^TkVV7Jw08yc~1O2agfnIVojKq`fY4O zgo0>GVfxaxCogcLt}Vn{(NueML$ULHLjzC=F|pG&X}E`CNI;tWn$d@j^!x6C8|+ zc;RAR=&={M3qF7C3!NQfi$5>-`oC~5vo~MtK4~jIUyeRMyv4o!7<>9tg`#7gN%!8( zy^Hv&vSkF}B#K<(N_bl=+)cNiGrLo{72!c-!x=zrR#ceZhQt*<5NUBJ9=FZQqQM#+ z5cnETxTIk_xB(dy@&oW!RyuA+K89@ay<1(IJ-xhKBuT}T8lASM2nGhRr^R^7-dXN# zmE$&xoNvCf&Y{8_H4huGZ)BS;b^UcjoxD}3Q_^~xL}P?aLvSx2_OK3i`vPn_ci%t? zudB|D=6O*l7&#ldpS}&9L1J~5lE*Hq8ed5{_2AnytuGOK#b(&Y4E%On*Xl^lFe>0x z3gz+g%AFBCHR98>e9y<+0OAwb9Zeq(q6LtlkFXZN#|<~Ee(sXOrpS39d{Fyc2yHOB z$d8=_g&2fyMzXQ^B96hJkp7`166umV%7@~BvrdcE0WOc5NVtywI*y#- zBy1ePHWVpt8-yj71yVL!4U-}Vi58Yp?+M#~~GhiQ>o2T!l4bLwuP$4x!d+7gv#$Iso*g4QqD33?QWy4`f zF$Y5ThkjQc@M;vu>pb|uadJrUtfHmKfoF%^r+C-HKepNyzbRUA3@(eeU5LR(^+fIf zvH?8!*X0^sLu@Mr<(s5im>XTR1iPZ$Lj+K5WkD;aE$0U|D4bWW30maz?BPr%u zXnR)|(aF3eJ<$hK;Qg<0C%4LA0P-W0`i5%=65zj){)GmR%=PeAad*(xD>y`M%!&?& z+%GL1H7wufSnFaeQg(MKT{2#BX%$HqbvfZvbOpk|dltr~fDMsJV(Zi9t{Zl%?F)-B zWvu4m|z2u&UrND;~I)n!nst020!dkJ9oW%RU0BEn0#f# zOv}*~&KK>47frS#Sxej$nb>0k$bkuMd3muILaq_=^{F3eu#=m|G0Jz7a+p@z=7`ws zqlP3y3$o#={nu~H>*}BzdG6$P?eL=V{F)R^5WMLyy!?>pQzDyl^Yp3bVMwvRPS?|m z{puLPjbc}o?(nD&s9DE>LZ(nW=E?l*D1yml65Pb$I^t1=r$Z*Zn5QFj;(tYdvdJYR zqEiGy4ocd%mz{%Gd02eVps;j4n2@5sARk9gkaj6a`^{gF*OiY*6~M^=GS}Kq=e2Wp zMAu@5+&|QR{;Ca_a;}O0LcKc{|Ak_B$Uc2Xw6H)_k#X3w|9|6Myz`9mf|ukB(-R~6 z5NJc%lRsuuA7G?H_@f5yhtDXl*fG6Vtfp#v$i1zZBv5p`t5Zhw-*z>Vfzbb|Xnq0I!%e>B zE|MQ;cX5e>R`Mf%=qk6cgdqsz5DswyfHuOCJRPp^pdGo6Fb5bJlNy(}9yluN*}@>f zH*xJ>x)o)l2!xYJ0)G&thhfMhBR^^4GDsnf+khIWC?){*#A52L{`GQCS;qm)90wUu zibEpDBwh3$BKN}GS2LY!NOxIY14Xoscq;K4%Y(2Y{gxPZw$O&pF3u--gV$psdO`;w z1{>+O4*;@$ALh7MUsA4>@!gYTZrq;!d3lf+!_X42Z)wO0g3Zpi+Bfj`CkTEV+k<^) zuk?WWKp}Ewoog@scBxvHQwwy@a2x^z1`(m#$aox4;*k>=ec!oJp$V19Y6YE`8_UZ- zI_TP}1m}R}z>?iJYOAktmw6%STv-cae3N`gJ#5t-H;eC7gh&?t|9K>z{CWnAEv@8fax}8W_K8!8a zMsXPyVz>VY->xIeaRtSo4`aO)6se|sqao|!4s7Tng}E?x6Hk!lKq+oG=$aog48Eti(N z@uF3*`T%JUoG^P#-YXC~X#Qik1Mgy8M{zX9Dk^mIy|=oRcokrbiQq2>#>pq6Aa^V- zd;Z(pL{(Rct0A{x-|Yis68g#H1btUrHs(WpRYlbhM>`LQgb;y&0)fVruh`)h%XX;> zxy{-mF3uWl=ZZk=g^n~WOyzFd;ntBfg8PR;DKyQL;vDKCqLMbW-EZ6J`pPSnEfgt* z4ZNGkaF4weK{7UCQWwDrAsje%%=UhXly)+k5c3chOH(Q{t}d>5rBAJQH6feh74}j$@cm*BRnHv6qL|4MPhzNqRf^ z#D@q@;K?`^h2+FgkMe}}A&Q|WF~T_1MnH>=`wE0uhNR1Sh_f`{ttVkhm_2#?)>IW> z2DL~Y7}=^Ej%4Z?!`hM8;u6OyHYEKb!g^R0t>MPOa=eB%aaRe!`P8o`y#j*{zyAB) zR4SG*CnONw8tZspqhX}Dl@C{lf-~{)$Pv;3Mv{jq z>jpbWkOwwmGi%1@*G~FtcN}q8FhamBn`5P=&`i6PJX!fZ5SGMK9k=1%kdX|3B9Od2Xa5)`xyaP7t=F;=zwt<9Exn;9T7-mZQfE+oiV_*7KdDNciDnS#S*}V4;!vJHv@H2v?AG_WelR=l0Ccnse9*P`3{8v1OJk(tz~@eO2DWz|7Vb2~ z3(et;Z4czVe93ON65Di1)R9l6unl|N^{xX;2~ZtbF7d1L)(Wce&~DaR1P`{exH5*; zv6sQb6N}Uw=rd>F5%Z6)iQ21RU3j#74?QQ!xQ<25wVj?|dE88!jtm>)fU;?qiqR|o zC|p?6(LKAzortVK&fMA9h#U9{qW%oY+$ICPdM~`l_>p*Y*f!vt=bN!T?{Hn5e-wcr zucXv3U}FTWF3NBOwOKP=?{}R&Q_TtVYJlsZB|Mm~YtI#2u?5OIS5+!%q9s93 zMd1+A3Z^*p#5Um3PiolZKP!-XPxD?YhvpQNH->qmQ%WJP`3YLX5GHM~w9;!K$L!D( z7)So_18zCOFR%>C6of2dU=>36rczgfu;eJ`Fp^11SxVb@oidDwVFjIWd@^vm`K#q7 zkhgrA;$kg*BGI3I-gz$-sD;NS*Fr-9JuwVGWR^ByUDvxIu(B`%(xKc3rQmFkwFACN za?z~D2d;N(@d?Bl2||<|%!b(DN^tC%R}P%8d}m;$fJh2nEkLio)^)ehDTh$&=$p{= zcbl7s$qgu8$Tn%(0}I7_Dk}qi+}sKT#N24_Pn1E+0s@?fI4T1^?{D2o9qS0ij1HNvIIKZ0- z>S$Z8D>*nm7FA}gais(FK%g)1Iz(mYK%?v-bdmg-*Fwr>pa@b~b$?(qKtGrdf7mUm zf}gm)kgqvd=sa#O+*4?G)TH($!weU63TQX%GBU$FXjpLKes1}QJG-g_LI$ebWV=xj z>WC>kdFa8Lq7tK+Q7-T$PXA zfL|9F8vb8sAZ_a58{9J4O+m_qCGh?3YX|NDAK(~ZGxs>l;48%XINCpBfL34 zBL9s|3+E{)-K92k1k2NjCQO77*9&{ajoHC|l)BrJ60}+< zz5lPugXkG#AhoMPL}&)~5YH4z#c9ku1o8cXAgV z+EuI}Xu~)v86OL-&_4`SvSJ_x#}E@DTLt_)Z< zH{Lvzhc=Y^mg~sLmH8($0CPt=p59hY89`0;R^>(k<1U9}b}k*oUUapsy3wE?W}X7a z>3;FI6;eo`?dVU@0IsMICsv$DO?Inf6-b-2mtOA{HzYbELZHa3te3a5j@RF+oY!D& z)JkEvnghm%plx^pq1v>HEW{w$urO50jNHKNfnPV_e2JVl1Gnw3B#{G;8IdQ`>Dj>U za`#fn8Bz1+MicI9h%G52A;i50f1xl-$S*JzLsgoMMA|jP2DFVVB^ijC2LH;JON3rJ zYAM!v&7qBvjHSaCw9=yj7s}WtKV}$P#j_5>)0q2Uk|diAt=jrCiiB(DdP5i^Gs+D? zHi?LBvqsn0J;egnS#ZvXFX7)3U@bGsYze;6c!rkOSez+L!Y=kdtf$`;VgQsNS*IKT z&em6hmK+oS%T%cneITm<>(?oE_jFM27@U?hduv- z*_}`b5{v7zrw|l*=A7k-dZd757esBLIXE(b7Tp^^OP0`1c25=qa*lam+=I+sk;v~X zotTIx*g}v2j*Q`}9fDwLfgwOi&D$EJRxA*O4hAsky-&|F zX^n)X)Z_Kn75bY+_p7$^b8qYOSm7y;Z?W7UE-l#ed_UXnZ zJ;}|3_-B4Ulf^k{pF6XnQx1N}2Coy|gVa>d$@DRKuLCj$ABTlV|9GJZKL%MPst>J` zJuqBu>OkWx0%2-hTlHnvHETFk70f|!0*?UAk*dHjo7i_oVQw=L3v`F^SKB-kbt>;K zlKHfPz4~+R)KUuZ-?;4G|2bDG2LP`=u-|>oxhX((us;FX5wNF#H+~y4^^5NyoM74- z{n@@3;}QxaisxjI=99nu%N=fcN#<>QvuFQ1I-k(r671r3iuQYPlYZIc9i{FDq&!$a z0vV(S2?!=S!ul{AaBbv_=I&>(3q9kD&q)TGo?I;*C-xOvZEtG8l-2vg*A%@v4&4}PTFTZ08k z_rMPXJ8i6eMTf#A<(n1Ji#Rv8gtlt{a(x1Gi3;>IPgpvL?#3DsB=Dtp>!-UD?Bp5* z?4}S2R{S`$Tkj*~1&s4TaUMpjd$* z^fhebN6Y;!iU=svs~lkeknGTgc)CN=w&_D?E9HREG9t?v0>`tc$^06a*2(CdH$EGQ z!qyV2#=F_;_9w8I)6)} z%4Ml}Yt-5U8w-PkoJ1~zVu>RdcfdQSV2KJw=*QyQx0@d>EF~{4^d9Vz-v_@j_5h~o zh8h9npsEIls`S__S*fED|9=BZAyp(M6U9bZK6t!5$}oczVIfO4Ar1 z*Luc@)5p68+G6Em(Eb{A5m)5^5oQmRl#T|A1>5&LGXLFsk0a)PT!M)1CHvj^Bq#yE zZhrv=iudkEO%gsU`Bty}j-nh$8w5J)G~TrUw$@Om42mx%E3NLf;(w=YqACSv!jkFC z_>K;~s6aYN1Ti2I<{vsV>qLM- zV?tXtxzs6XvI0LSsA1eM`;>U9d5s%$=KM$spH#E^SC%*WUK-+iNz9ymV|WMwJ0UE% z@wo)It}77T0~s4OF>F z7-i_8Nw?P1_;`K@Kl#D~w}H8a{=MvM|ISiVG_84@SPNB5^RlH_E6w)O>pxBMfUqmJ z{X)(WM}}()j~Tc7*e6hf_5Z9?QOY!eK(Zrd1}8@BQ|>)y_7acm z2_2kO!e|5Lg^{D}Ncy<%JyD)LiC&ihBfG}plAw(TD)%CSS}P6qV!CbDL?L*SdK{{ba(ZCASw*hJ`(4oS-a%| z(OjS*_?TP+_T;-D01^J2@CcHe12Zo$1e^enzPAuu|Bs7He?{}lcs(alj>F0aybrG3ed?RVdA3fDKA;JeOVr|1x__hdn@>6kuA^S4&i13hj@vRVH%Xc*}m6_r-k~&^g@3B$taFIz@p)1;cF%hifJK~ zJC81k{j_KA`GXOHx`@|vxLjPW{4!PB|DFd%Tmumdri5j{BB##XJ;m9P-XkbHvX67T5atR~B03QiiDqJVy?^3r>`^fhCFyd9Z@wb)D_G z2I>2mn~IHAP6{DZ;8$~1d8{Q+NSoXILIOhZ47b)0*&sXSf&_4%G8v*@@j*iy91{Z2 z_u5n6b`3dja}IU?{qC76(2NXfAls9n*>T@-$Jz&e-PG_Jos!otLgRX5#`#~v-}}Gg zPA~WmHvBqyuW|-Syi6M&z~8+V3E1Uzn8DfG9)bo=8bmxlNl@eO{-V%RY)YdZl>Sy(Ycm?$>Y_i_7UCA6fVT4fGO zAwih)2Z>`bJs7yyLk=}WbJme8s#pl&Ha{DixElgd$v|wwBZU3J*bUae-|2W(46cUo zU%@QWSy}xNcRK1*Qmvr%jT>j@yKK{~g(ipJd04*T!@Mb1?I_i%2;GN#1jr1!hDsAo z4jYqrDC2g;sfFGuGHtSV>Bjj1_;!7iXWnhd_!w5hK8d+VUm~ZS774m=A}!3O3Vm;0MycC)GK5bAf=rU*t2LmqE4 zm<>a&eqbLFT`}aCeXvqkOvHLNP}}MUJnMTH6N?`tVqgksFMK8%x0hX9XqE96QCoCi z0=VJ;OX8olDv29`7%-|xN2*qR5;3S?Sd0{O`(?$RDkfeyBx^T(lY37i6frl?N{&k;3#fO|8?5NwE0?Yph6EO(x0Ieku-3d{T5laqK*aTIr(3Gl=*}k2;m;dm6 z*TsvE?l~c>O7Y*=$&kxbKXAttav$&h0latod*9c< z-A@3V`(6Wi#c?4+1Ir$Ff1UsgJV@(D-c~F`9_RTUkNtO|HYk(_xRlxWG7tCMK05m7ac0si^9$@m10_dMlB34SgynNM)*n~B>- zD;;C>wC&@bcB_4`YTT-a!#F%$1o414I~|7I{3GHhC`ScnBM;cXGzQj&@Dj;*wLkyy zv|EE76%`AST2k%dULLUz zo?d9TG7els+nh)PgX1R!NY!NPdk)l3Egl2lGfm18*pf+lBMV=b>mPyy$7eB32kK=r!N)<~Nf9js5gbblPqYQABxB zbWGxj+0kF(Vji>QiRI5QBMt!MS_gKr~#A0gI6GS z`j1~J&H@@H1#H&^RrEn6=jL#^Oq0>}2R57rK)5{cY(wFT>8zh_<2WlE1Mp8pl z%kZm0DKn#t!#llfwKP#v+T(PiP?=J;gUFL|D4$Y@j)PvN0usp&IukEn{TBvJnHc41 zWd!w@QI|!SHaQvTjgRb@RvFO(;-)DLG8RS8m|iAr-HbA%71PT=r!&eFgE59%lkB^! z?WfO#GBo+qDOfO>@W|Sc+%gQ#WhE&IB z8KzbSRUYO{UF82k z>a1Uw@c4g7BGFXok)U<^ojf5!vnuTs55H;yIyADu&91aNEn)xpC-I+c{#g^k@gJ9u zMcbspRi|vb{Hm>&U-kM6g{){8`y<~l6IC~?i~b?Z2;ErctjaRma@OpktvaSsXz?Fc zy=v=aSNAj4t+OgydU>RLD@i@yasS$Q25X1oR=##wsoCCqXQ6SD&c*cj1wu6{!(_@& zb=3wGLGhH5p7h;MX7}q*-}=cwm8()Z8IH)1c-`iZl~?7h#qULBSnt42IWM1USNp1)4K zD*9dQwQKH(dRK%I;QW=$ROdx-xjBcie6>*7(yu3zR-jCLWAWC)miwP@yzyi|`C?bG z3rm%a_L~$>Iqq7hb%&Ghz`(&xouqVouSJohB* zPJOQ9R@;6vVaFfVcU81nnZKScRR-<5f~=*<{47 zeku~QT6jdzv@l>Fb80oJeBMs2@Rj~2=XA|%VNu7&<565)5xm;?l>YK#ea=A;$)WQ|6is83tJ(=O`xl&@-!c*tsHfKfhL ztBl%r>!Iq^ZE@Af_CGN7?Kat_#cLBZ)$LLJ6)#?+(r!oED*tR7+9_k)TjpG-$?tkq zZVOL)d&j5!+;?1a<kGouU+VQSe9 zBvgoDrWUTn6rKyN|H4zt7;!n6SvH+&2X1_LW?d}hrq_iU1hq^drx27PQxFm640hXb@}c8D-cV zd#dKGFfpsn-?r^4l0@iXIrG#DPZ&S>6qFmMuqeZ)5b|jK(8=Q?r;MJw_LR}}qkI`Y z>4Xi4!%qfgc>L7ik&{P;PhGqA)D4iDYu27TJbKE>BsyHR>B_B;9G+A<=_L31t0u3! T%3~aaSlHsYMT<_`xWWBjmD4D% diff --git a/report/rapport.html b/report/rapport.html index c3ecbfa..8924251 100644 --- a/report/rapport.html +++ b/report/rapport.html @@ -23,56 +23,75 @@ + +

Sommaire

+
    +
  1. Présentation et règles
  2. +
  3. Analyse des caractéristiques du jeu (Q1 à Q7)
  4. +
  5. Modélisation : la classe EscampeBoard
  6. +
  7. Intégration au tournoi : le protocole de l'arbitre
  8. +
  9. Placement d'ouverture
  10. +
  11. Moteur de décision
  12. +
  13. Heuristique d'évaluation
  14. +
  15. Gestion du temps réel
  16. +
  17. Performances et tests
  18. +
  19. Compilation, exécution et livrables
  20. +
  21. Sources et bibliographie
  22. +
  23. Conclusion et difficultés rencontrées
  24. +
+

1. Présentation et règles

Escampe se joue sur un plateau de 36 cases (6×6). Chaque case porte un liseré simple, double ou triple. Chaque joueur dispose -d'une licorne et de cinq paladins (couleur noire -ou blanche). Les lignes sont numérotées de 1 à 6, les colonnes de A à F. Le but -est de prendre la licorne adverse.

+d'une licorne et de cinq paladins (noirs ou +blancs). Les lignes vont de 1 à 6, les colonnes de A à F, et le but est de +prendre la licorne adverse.

-

La règle caractéristique du jeu est une contrainte de liseré : -la pièce que l'on joue doit partir d'une case dont le liseré est identique -à celui de la case d'arrivée du coup adverse précédent. Le liseré de la case de -départ fixe en outre le nombre de pas (1, 2 ou 3), orthogonaux, sans traverser ni -revisiter de case. On ne capture qu'en se posant, au dernier pas, sur la licorne -adverse — les paladins sont imprenables. Si un joueur ne peut rien jouer, il passe -son tour.

+

Ce qui fait l'originalité du jeu, c'est la contrainte de liseré : +la pièce que l'on joue doit partir d'une case dont le liseré est le même que celui +de la case où l'adversaire vient de poser sa pièce. Ce liseré de départ fixe aussi +le nombre de pas (1, 2 ou 3), orthogonaux, sans traverser ni repasser sur une case +déjà visitée. On ne capture qu'en s'arrêtant, au dernier pas, sur la licorne +adverse ; les paladins, eux, sont imprenables. Un joueur qui ne peut rien jouer +passe son tour. Toute la difficulté revient donc à coincer l'adversaire en lui +imposant des liserés qui le bloquent.

-

Le déroulement : Noir place ses six pièces sur les deux lignes d'un bord -(haut ou bas) ; Blanc fait de même sur le bord opposé ; Blanc joue le -premier coup. Ce rapport décrit nos choix de modélisation (parties 1 -et 2) puis la conception du joueur artificiel pour le tournoi (partie 3), -avec les mesures qui justifient nos choix.

+

Pour le déroulement, Noir place d'abord ses six pièces sur les deux lignes d'un +bord de son choix (haut ou bas), puis Blanc fait de même sur le bord opposé, et +c'est Blanc qui joue le premier coup. Le rapport reprend nos choix +de modélisation (parties 1 et 2) puis détaille la conception du joueur pour +le tournoi (partie 3), chiffres à l'appui.

2. Analyse des caractéristiques du jeu

-

Nous reprenons ici les sept questions de la première partie, en les étayant -par l'implémentation finalement réalisée.

+

Nous reprenons les sept questions de la première partie, cette fois à la lumière +du code que nous avons réellement écrit.

Q1 — Modélisation d'un état

-

Le plateau est un tableau int[6][6] : board[ligne][colonne] -avec ligne 0 = ligne 1 (bas) et colonne 0 = A. -Chaque case contient une constante de pièce (EMPTY, +

Le plateau est un tableau int[6][6] : board[ligne][colonne], +avec ligne 0 = ligne 1 (en bas) et colonne 0 = A. +Chaque case vaut une constante de pièce (EMPTY, WHITE_LICORNE, WHITE_PALADIN, BLACK_LICORNE, -BLACK_PALADIN). L'état complémentaire, indispensable à la règle, est -maintenu hors du plateau :

+BLACK_PALADIN). Quatre informations que le tableau ne porte pas, mais +dont la règle a besoin, sont gardées à côté :

    -
  • lastTileType : liseré imposé au coup suivant (-1 = aucune contrainte) ;
  • -
  • currentPlayer : joueur au trait ;
  • -
  • blackPlaced, whitePlaced : fin des phases de placement ;
  • -
  • blackRows : le bord choisi par Noir (en déduit celui de Blanc).
  • +
  • lastTileType : le liseré imposé au coup suivant (-1 quand il n'y a pas de contrainte) ;
  • +
  • currentPlayer : le joueur au trait ;
  • +
  • blackPlaced, whitePlaced : la fin des phases de placement ;
  • +
  • blackRows : le bord choisi par Noir, qui détermine celui de Blanc.
-

Avantages. Accès O(1) à toute case ; copie immédiate de l'état -pour l'arbre de recherche ; sérialisation triviale ; surtout, un schéma -make/unmake sans aucune allocation (essentiel pour la vitesse, §6). -Inconvénient. La contrainte de liseré est un état séparé qu'il -faut maintenir explicitement à chaque coup ; nous l'encapsulons dans play.

+

Le tableau d'entiers donne un accès en O(1) à n'importe quelle case et se copie +sans effort, ce qui compte pour l'arbre de recherche ; il se sérialise aussi +directement vers le format de fichier. Surtout, il autorise un schéma +make/unmake qui n'alloue rien (voir §6). Le seul point +gênant est que la contrainte de liseré vit en dehors du tableau : il faut penser à +la mettre à jour à chaque coup, ce que nous centralisons dans play.

-

La carte des liserés est une constante TILE_MAP reproduisant la -figure 4 de l'énoncé (ligne 1 en bas) :

+

La carte des liserés est figée dans la constante TILE_MAP, recopie +de la figure 4 de l'énoncé (ligne 1 en bas) :

       A  B  C  D  E  F
  6     3  2  2  1  3  2
  5     1  3  1  3  1  2
@@ -80,143 +99,143 @@ figure 4 de l'énoncé (ligne 1 en bas) :

3 2 3 1 2 1 3 2 3 1 3 1 3 2 1 1 2 2 3 1 2
-

Fait vérifié : cette carte est identique, case pour case, -à celle utilisée en interne par l'arbitre du tournoi — nous l'avons extraite par -réflexion de la classe de jeu du serveur fourni. Elle est aussi cohérente avec -l'exemple tactique de la figure 6 de l'énoncé. Une carte divergente aurait -produit des coups jugés illégaux : ce point était critique.

+

Nous avons extrait par réflexion la carte qu'utilise l'arbitre dans +sa propre classe de jeu, et elle coïncide case pour case avec la nôtre (elle colle +aussi à l'exemple de la figure 6). La vérification valait le coup : une carte +fausse aurait fait rejeter nos coups par l'arbitre.

Q2 — Détection de fin de partie

-

La partie est finie dès qu'une des deux licornes a disparu du plateau (seul cas -de fin, pas de match nul). La vérification est un simple balayage O(1) du plateau -(gameOver) ; le moteur, lui, détecte la capture directement au moment -où elle est jouée (§6).

+

La partie s'arrête dès qu'une des deux licornes quitte le plateau ; il n'y a pas +d'autre cas, donc pas de nul. Le test (gameOver) est un simple balayage +en O(1). En recherche, le moteur n'attend même pas ce balayage : il repère la +capture à l'instant où le coup la produit (§6).

Q3 — Sources de difficulté et facteur de branchement

-

Les principales sources de difficulté sont :

-
    -
  • la contrainte de liseré, qui limite fortement et variablement la mobilité ;
  • -
  • la dépendance entre tours : la case d'arrivée choisie détermine les pièces que l'adversaire pourra jouer ;
  • -
  • l'asymétrie du plateau (zones riches en liserés triples, donc mobiles, vs zones simples) ;
  • -
  • le risque de blocage d'une pièce, voire d'un joueur (pass forcé).
  • -
-

Facteur de branchement. En première partie nous avions estimé -une borne théorique de l'ordre de 120 (6 pièces × jusqu'à ~20 destinations -sur liseré triple). La mesure réelle est bien plus basse, car la contrainte de -liseré ne laisse jouables que les pièces du bon liseré. Sur 30 000 parties -aléatoires simulées (utilitaire escampe.Branching) :

+

Quatre choses rendent le jeu retors : la contrainte de liseré, qui fait varier +fortement la mobilité ; la dépendance entre tours, puisque la case d'arrivée qu'on +choisit dicte les pièces que l'adversaire pourra bouger ; l'asymétrie du plateau, +avec des zones riches en liserés triples (mobiles) et d'autres en liserés simples ; +et le risque qu'une pièce, voire un joueur entier, se retrouve bloqué et doive +passer.

+

Côté facteur de branchement, nous avions avancé en première +partie une borne théorique de l'ordre de 120 (six pièces, jusqu'à une vingtaine de +destinations sur un liseré triple). En pratique c'est beaucoup moins, parce que la +contrainte de liseré ne laisse jouables que les pièces du bon type. Une simulation +de 30 000 parties aléatoires (utilitaire escampe.Branching) donne :

- +
SituationBranchement maximal observé
Coup contraint (un liseré imposé)45
Coup libre (1er coup ou après un pass, aucune contrainte)49
Coup libre (1er coup ou après un pass)49
Branchement moyen (toutes positions)≈ 8,9
-

Le branchement effectif modeste (moyenne < 10) explique qu'une recherche -alpha-bêta atteigne des profondeurs élevées en quelques secondes (§6).

+

Avec une moyenne sous 10, l'alpha-bêta descend profond en quelques secondes (§6).

Q4 — Coups imparables

-

Il n'existe pas de coup « imparable » universel garanti dès le départ : la -contrainte de liseré peut toujours empêcher l'exécution d'une menace au mauvais -moment. En revanche, certaines configurations créent un zugzwang -partiel où l'adversaire ne peut éviter d'imposer le liseré qui nous -arrange — l'énoncé en donne l'exemple (figure 6 : le paladin blanc en C2 prend -la licorne en C1 dès que Noir est forcé d'imposer un liseré double). Construire de -tels pièges est un axe stratégique ; notre recherche les exploite implicitement -quand ils sont à portée d'horizon.

+

Il n'y a pas de coup gagnant à coup sûr dès le départ : comme l'adversaire choisit +sa case d'arrivée, donc le liseré qu'il nous impose, il peut toujours désamorcer une +menace au mauvais moment. Ce qui existe, en revanche, ce sont des positions de +zugzwang partiel, où il est forcé d'imposer précisément le liseré +qui ouvre la capture.

+

L'énoncé en donne un cas net (figure 6). Noir vient de jouer en D4, une case +à liseré double, donc Blanc doit partir d'une case double : il choisit +F6 – E5 (F6 est double). Noir est alors contraint de jouer +depuis un liseré simple comme E5, et son seul coup raisonnable est +A1 – A2. Or A2 est à liseré triple : Blanc enchaîne +C2 × C1, son paladin en C2 parcourant les trois pas +C2 → D2 → D1 → C1 pour prendre la licorne noire. La +séquence est imparable localement : une fois Noir poussé en A2, il ne peut plus +empêcher la prise.

+

Ce genre de combinaison ne se construit pas mécaniquement depuis l'ouverture, il y +a trop de degrés de liberté ; mais notre alpha-bêta la trouve et la joue dès +qu'elle entre dans son horizon de recherche.

Q5 — Critères pour l'heuristique

-

Nous avions identifié cinq critères : distance à la licorne adverse, mobilité -différentielle, contrôle du liseré imposé, protection de sa propre licorne, et -avancée sur le plateau. L'heuristique finalement retenue (§7) s'appuie sur la -proximité des paladins à la licorne adverse (pression d'attaque) -et l'éloignement des paladins adverses de notre licorne -(sécurité) — les autres critères sont, en pratique, largement pris en charge par -la recherche elle-même.

+

Cinq critères nous semblaient pertinents : la distance à la licorne adverse, la +mobilité différentielle, le contrôle du liseré qu'on impose, la protection de sa +propre licorne et l'avancée des pièces. Au final (§7), l'évaluation retenue tient +surtout à deux d'entre eux, la proximité de nos paladins à la licorne adverse +(attaque) et l'éloignement des paladins adverses de la nôtre (défense) ; le +reste, la recherche s'en charge assez bien toute seule.

Q6 — Stratégie selon la phase

    -
  • Début (placement) : irréversible et déterminant. On protège - la licorne et on garantit de toujours pouvoir jouer (§5).
  • -
  • Milieu : manœuvre pour construire des menaces sur la licorne - adverse tout en contrôlant le liseré imposé ; recherche de zugzwang partiel.
  • -
  • Fin : dès qu'une capture est à portée, le calcul tactique - (recherche profonde) prime.
  • +
  • Ouverture (placement) : c'est irréversible, donc on sécurise + d'emblée la licorne et on s'arrange pour pouvoir toujours jouer (§5).
  • +
  • Milieu : on manœuvre pour menacer la licorne adverse tout en + gardant la main sur le liseré qu'on impose, en visant le zugzwang partiel.
  • +
  • Finale : dès qu'une capture est en vue, c'est le calcul + tactique qui décide.

Q7 — Majorant du nombre de coups et gestion du temps

-

Aucune pièce ne disparaît avant la capture finale ; une partie peut donc -théoriquement s'étirer. En bornant le branchement par tour et en comptant quelques -dizaines de tours, une borne raisonnable se situe vers 400–600 demi-coups. Pour -tenir la contrainte de temps (300 s par joueur et par partie), nous combinons -approfondissement itératif, élagage alpha-bêta et -un budget par coup dérivé du temps restant (§8).

+

Aucune pièce ne disparaît avant la prise finale, donc une partie peut traîner. +En bornant le branchement par tour sur quelques dizaines de tours, on arrive à un +ordre de grandeur de 400 à 600 demi-coups. Pour rester dans les 300 s par +joueur, on s'appuie sur l'approfondissement itératif, l'élagage alpha-bêta et un +budget par coup calculé à partir du temps restant (§8).

3. Modélisation : la classe EscampeBoard

-

EscampeBoard (≈ 860 lignes) implémente l'interface fournie -Partie1 : setFromFile / saveToFile, -isValidMove, possiblesMoves, play, -gameOver. Les conventions de l'arbitre sont respectées à la lettre :

-
    -
  • coup régulier "B1-D1" ;
  • -
  • placement "C6/A6/B5/D5/E6/F5" (licorne en tête, puis les 5 paladins) ;
  • -
  • pass "E".
  • -
+

EscampeBoard implémente l'interface fournie Partie1 +(setFromFile/saveToFile, isValidMove, +possiblesMoves, play, gameOver) et suit les +conventions de l'arbitre : coup régulier "B1-D1", placement +"C6/A6/B5/D5/E6/F5" avec la licorne en tête puis les cinq paladins, et +pass "E".

-

Format de fichier. Six lignes de plateau (bas vers haut), -caractères N/n (licorne/paladin noir), B/b (blanc), -- (vide), chaque ligne encadrée d'un numéro ; toute autre ligne -commence par % (commentaire). Nous y ajoutons en commentaires l'état -hors-plateau (liseré courant, joueur, bord de Noir) afin que la sauvegarde soit -fidèlement rechargeable.

+

Le format de fichier reprend celui de l'énoncé : six lignes de plateau du bas vers +le haut, avec N/n pour le noir, B/b pour le blanc et +- pour le vide, chaque ligne encadrée de son numéro ; les lignes en +% sont des commentaires. Nous y rangeons justement l'état hors-plateau +(liseré courant, joueur, bord de Noir), de sorte qu'une sauvegarde se recharge à +l'identique.

-

Génération des coups. Depuis une case, on énumère les -destinations par un parcours en profondeur (DFS) avec retour arrière : exactement -N pas (N = liseré de départ), cases intermédiaires vides, dernière case vide ou -occupée par la licorne adverse (capture). possiblesMoves filtre les -pièces sur le bon liseré et renvoie ["E"] si aucun coup n'est possible. -Une méthode main illustre placements, contrainte de liseré, pass, -round-trip fichier et capture.

+

Pour générer les coups, on part d'une case et on énumère les arrivées par un +parcours en profondeur avec retour arrière : exactement N pas (N = liseré de +départ), cases intermédiaires vides, et case finale soit vide soit occupée par la +licorne adverse, auquel cas c'est une capture. possiblesMoves ne garde +que les pièces sur le bon liseré et renvoie ["E"] quand plus rien n'est +jouable. Une méthode main fait la démonstration sur des exemples : +placements, contrainte de liseré, pass, aller-retour fichier et capture.

-

Bug latent corrigé en partie 3 : un placement légal mais -disposé sur une seule ligne faisait planter le calcul du bord de Noir -(il supposait deux lignes distinctes). Le bord est désormais déduit de façon -robuste à partir de la ligne de la licorne.

+

Un bug s'était glissé là et nous l'avons corrigé en partie 3 : +un placement légal mais aligné sur une seule ligne faisait planter le calcul du bord +de Noir, qui supposait toujours deux lignes. Le bord se déduit maintenant de la ligne +de la licorne.

4. Intégration au tournoi : le protocole de l'arbitre

Le joueur escampe.JoueurPuyaubreauRussac implémente l'interface -fournie IJoueur et enveloppe un EscampeBoard tenu à jour -à chaque coup (le nôtre comme celui de l'adversaire, via mouvementEnnemi). -Trois points d'adaptation, dont deux vérifiés par analyse du jar de -l'arbitre car l'infrastructure fournie est obfusquée :

+fournie IJoueur et garde à jour un EscampeBoard à chaque +coup, le nôtre comme celui de l'adversaire reçu par mouvementEnnemi. +Trois détails ont demandé une adaptation, et deux d'entre eux ont dû être +confirmés en regardant dans le jar de l'arbitre, qui est obfusqué :

    -
  • Couleurs. IJoueur parle en entiers - (NOIR = 1, BLANC = -1) ; - EscampeBoard en chaînes "noir"/"blanc".
  • -
  • Pass = "E", et non "PASSE". Le - Javadoc d'IJoueur indique "PASSE", mais la classe de - jeu du serveur teste move.equals("E") (et "PASSE" - n'apparaît nulle part dans le jar). Envoyer "PASSE" aurait valu une - défaite sur coup illégal.
  • -
  • Carte des liserés identique à celle du serveur (cf. Q1).
  • +
  • Les couleurs : IJoueur raisonne en entiers + (NOIR = 1, BLANC = -1) alors que + EscampeBoard utilise les chaînes "noir" et "blanc".
  • +
  • Le pass se note "E", pas "PASSE" : + le Javadoc d'IJoueur annonce "PASSE", mais le serveur teste + bel et bien move.equals("E"), et "PASSE" n'apparaît nulle + part dans le jar. Suivre le Javadoc nous aurait coûté la partie sur coup illégal.
  • +
  • La carte des liserés doit être celle du serveur (cf. Q1).
-

Machine à états. Le placement et les coups transitent par le -même canal choixMouvement/mouvementEnnemi. Le premier -appel à choixMouvement renvoie donc un placement, les suivants -des coups ; la phase est détectée via blackPlaced/whitePlaced. -La séquence (déduite de la classe Solo fournie) est :

+

Placement et coups passent par le même canal +(choixMouvement/mouvementEnnemi) : le premier +choixMouvement renvoie un placement, les suivants des coups, la phase +se lisant sur blackPlaced/whitePlaced. En lisant la classe +Solo fournie, on reconstitue l'ordre des appels :

Noir  : choixMouvement(placement) → mvtEnnemi(placement Blanc)
         → mvtEnnemi(1er coup Blanc) → choixMouvement(coup) → ...
 Blanc : mvtEnnemi(placement Noir) → choixMouvement(placement)
         → choixMouvement(1er coup, Blanc rejoue) → mvtEnnemi(coup Noir) → ...
-

En appliquant chaque coup à l'EscampeBoard interne dans cet ordre, -le joueur au trait reste naturellement synchronisé avec l'arbitre.

+

Comme on rejoue chaque coup sur l'EscampeBoard interne dans cet ordre, +le joueur au trait reste synchronisé avec l'arbitre sans traitement particulier.

-

Exécution. Trois processus (serveur + deux clients) :

+

Côté lancement, il faut trois processus, le serveur et deux clients :

java -cp escampeobf.jar        escampe.ServeurJeu 1234 1
 java -cp Puyaubreau_Russac.jar escampe.ClientJeu escampe.JoueurPuyaubreauRussac localhost 1234
 java -cp escampeobf.jar        escampe.ClientJeu escampe.JoueurAleatoire        localhost 1234
@@ -224,24 +243,24 @@ java -cp escampeobf.jar escampe.ClientJeu escampe.JoueurAleatoire

5. Placement d'ouverture

-

Le placement est irréversible : nous l'avons conçu à partir d'un constat issu de -l'auto-jeu — une licorne mal placée peut se retrouver seule pièce jouable et -bloquée sur le liseré imposé, forçant des passes successifs qui livrent -l'initiative à l'adversaire. Trois principes y répondent :

+

Le placement ne se rejoue pas, donc autant le soigner. Le constat est venu de +l'auto-jeu : une licorne mal posée peut devenir la seule pièce jouable sur le liseré +imposé, et se retrouver bloquée, ce qui force des passes à répétition et abandonne +l'initiative. Trois principes répondent à ça :

    -
  1. Licorne dans un coin. Un coin n'a que deux cases voisines : - seulement deux cases d'où l'adversaire peut l'atteindre.
  2. -
  3. Murs. On occupe ces deux voisines par des paladins. La - licorne devient incapturable tant que les murs tiennent (impossible de - franchir le dernier pas sur une case occupée).
  4. -
  5. Couverture des liserés. Les trois paladins restants sont - placés sur des cases de liserés 1, 2 et 3 distincts : quel que - soit le liseré imposé, on dispose toujours d'une pièce mobile — jamais de pass - forcé, jamais besoin de déplacer un mur ou la licorne.
  6. +
  7. La licorne dans un coin. Un coin n'a que deux voisines, donc + seulement deux cases d'où l'adversaire peut venir la prendre.
  8. +
  9. Deux murs. On occupe ces deux voisines avec des paladins, et + la licorne devient imprenable tant que les murs tiennent, puisqu'on ne peut pas + finir son dernier pas sur une case occupée.
  10. +
  11. Trois liserés couverts. Les trois paladins restants se posent + sur des cases de liserés 1, 2 et 3 différents. Quel que soit le liseré imposé, il + reste une pièce mobile, et on n'a jamais à passer ni à déranger un mur ou la + licorne.
-

Dispositions retenues (légalité et propriétés vérifiées) ; pour Blanc, on joue -le bord complémentaire de celui de Noir :

+

Voici les deux dispositions retenues (Blanc prend le bord opposé à Noir) ; nous en +avons vérifié la légalité et les trois propriétés ci-dessus :

Bord bas  A1/A2/B1/E1/F1/C2          Bord haut  A6/A5/B6/C5/F5/E6
    A B C D E F                          A B C D E F
  2 n . . . . .                        6 N b . . b .
@@ -249,120 +268,122 @@ le bord complémentaire de celui de Noir :

(licorne A1, murs A2/B1, (licorne A6, murs A5/B6, mobiles E1·F1·C2 = liserés 1·2·3) mobiles C5·F5·E6 = liserés 1·2·3)
+

Nous n'avons pas de bibliothèque d'ouvertures. Elle aurait peu de valeur ici : la +contrainte de liseré rend toute séquence pré-calculée caduque dès que le placement +adverse diffère du cas prévu, souvent au deuxième coup. Et comme le branchement moyen +(~8,9) laisse l'alpha-bêta atteindre la profondeur 12 à 15 d'entrée, le placement fixe +ci-dessus suffit à démarrer sur une position saine et reproductible.

+

6. Moteur de décision

-

La décision repose sur un negamax avec élagage +

Le choix du coup repose sur un negamax avec élagage alpha-bêta et approfondissement itératif (classe -Moteur). La recherche s'effectue sur une copie du plateau, -jamais sur l'état réel. Capturer la licorne adverse est traité comme un nœud -terminal de valeur WIN - ply (gagner vite plutôt que tard).

+Moteur). La recherche travaille sur une copie du plateau, jamais sur +l'état réel. Une capture de licorne compte comme une feuille de valeur +WIN - ply, ce qui pousse à gagner tôt plutôt que tard.

-

Astuces de performance.

+

Plusieurs choix tirent la vitesse vers le haut :

    -
  • Coups encodés en entier (case = ligne×6+colonne, - coup = départ×36+arrivée) : aucune chaîne manipulée dans la boucle - chaude.
  • -
  • DFS sur masque de bits long : les 36 cases - tiennent dans un long ; les ensembles « visité » et « atteignable » - sont des masques — pas d'allocation de tableau par appel.
  • -
  • make/unmake sans allocation : un - petit jeton d'annulation suffit à défaire un coup, ce qui permet d'explorer des - millions de nœuds sans pression sur le ramasse-miettes.
  • -
  • Buffers de coups pré-alloués, un par profondeur.
  • -
  • Ordonnancement : tout coup capturant la licorne est essayé - en premier (coupure immédiate) ; le meilleur coup d'une itération est replacé en - tête à l'itération suivante.
  • +
  • Coups codés sur un entier (case = ligne×6+colonne, + coup = départ×36+arrivée), pour ne manipuler aucune chaîne dans la + boucle chaude.
  • +
  • DFS sur masque de bits : les 36 cases tiennent dans un + long, et les ensembles « visité » et « atteignable » sont de simples + masques, sans tableau alloué à chaque appel.
  • +
  • make/unmake sans allocation : un petit + jeton suffit à défaire un coup, donc on explore des millions de nœuds sans solliciter + le ramasse-miettes.
  • +
  • Buffers de coups réservés à l'avance, un par profondeur.
  • +
  • Ordre des coups : on essaie d'abord toute prise de licorne (coupure + immédiate), et on remet en tête le meilleur coup de l'itération précédente.
-

Cohérence des deux chemins. Le chemin « entier » du moteur double -le chemin « chaîne » vérifié de EscampeBoard. Pour exclure toute -divergence silencieuse entre ces deux implémentations des règles, un test croisé -(VerifMoves, §9) vérifie qu'ils produisent exactement les mêmes coups -et les mêmes états — c'est la garantie qu'optimiser n'a pas changé les règles.

+

Le moteur a sa propre génération de coups en entiers, en parallèle de +celle, vérifiée, d'EscampeBoard en chaînes. Pour être sûr qu'elles ne +divergent pas en silence, le test VerifMoves (§9) confronte les deux et +exige les mêmes coups et les mêmes états : c'est ce qui nous garantit qu'optimiser +n'a pas modifié les règles au passage.

-

Performance mesurée. Environ 4 à 5 millions de -nœuds par seconde. En milieu de partie, l'approfondissement itératif -atteint une profondeur de 12 à 15 demi-coups en 6 s (davantage -dans les positions étroites). Les annonces de gain forcé du moteur se matérialisent -bien par une capture effective lors des parties de contrôle.

+

En pratique, le moteur explore de l'ordre de 4 à 5 millions de nœuds +par seconde. En milieu de partie, l'approfondissement itératif atteint +12 à 15 demi-coups en 6 s, davantage dans les positions +étroites. Quand il annonce un gain forcé, la capture a bien lieu dans les parties de +contrôle.

7. Heuristique d'évaluation

-

Le matériel étant constant (paladins imprenables, licornes présentes jusqu'à la -capture), l'évaluation d'une position non terminale est purement positionnelle, -exprimée du point de vue du joueur au trait. Elle somme, à partir des distances de -Manhattan :

+

Le matériel ne bouge pas (paladins imprenables, licornes en place jusqu'à la +prise), donc évaluer une position non terminale revient à juger un placement. +L'évaluation se fait du point de vue du joueur au trait, à partir de distances de +Manhattan, et combine deux idées :

    -
  • Pression d'attaque : proximité de nos paladins à la licorne - adverse — un terme de somme (pression globale) et un terme de - minimum (l'attaquant le plus proche pèse davantage) ;
  • -
  • Sécurité : éloignement des paladins adverses de notre - licorne — mêmes deux termes, de signe opposé.
  • +
  • la pression d'attaque, c'est-à-dire la proximité de nos paladins + à la licorne adverse, avec un terme de somme (pression d'ensemble) et un terme de + minimum (le paladin le plus proche pèse plus lourd) ;
  • +
  • la sécurité, soit l'éloignement des paladins adverses de notre + licorne, avec les deux mêmes termes mais de signe opposé.
-

Concrètement, avec les poids retenus (somme = 2, minimum = 8) :

+

Avec les poids retenus (2 pour les sommes, 8 pour les minimums) :

eval = 2·Σ(10−d_attaque) − 2·Σ(10−d_défense)
        + 8·(10−min d_attaque) − 8·(10−min d_défense)
-

Heuristiques testées et choix. Le réglage s'est fait par -auto-jeu déterministe et matchs arbitrés contre le joueur aléatoire fourni. Nous -avons comparé : (a) somme seule — jeu trop diffus, le moteur tarde à -concentrer une menace ; (b) somme + minimum (retenue) — le terme minimum, -fortement pondéré, oriente nettement les paladins vers la licorne adverse et -améliore le taux de capture ; (c) ajout d'un terme défensif symétrique — conservé, -il évite d'exposer notre licorne sans nuire à l'attaque. Le fort poids du terme -minimum reflète que, dans ce jeu, c'est l'attaquant le plus avancé qui -décide d'une prise.

+

Pour régler ces poids, nous avons fait jouer le moteur contre lui-même et contre le +joueur aléatoire fourni, en comparant trois variantes. Avec la somme seule (a), le jeu +restait trop diffus et le moteur tardait à concentrer une menace. La somme plus le +mininum (b), que nous avons gardée, recentre les paladins vers la licorne adverse grâce +au fort poids du minimum et fait monter le taux de capture. L'ajout d'un terme défensif +symétrique (c) a été conservé aussi : il évite d'exposer notre licorne sans pénaliser +l'attaque. Ce poids élevé sur le minimum traduit une réalité du jeu, où c'est le paladin +le plus avancé qui conclut une prise.

-

Limite assumée. Faute d'adversaires IA tiers disponibles avant le -tournoi, ces poids sont validés contre l'aléatoire et en auto-jeu, non contre -d'autres joueurs forts. Les tactiques de capture à court terme sont, elles, -gérées par la recherche, ce qui rend le joueur robuste même avec une évaluation -positionnelle simple.

+

Une limite que nous assumons : faute d'autres IA disponibles avant le +tournoi, ces poids sont calés contre l'aléatoire et en auto-jeu, pas contre des joueurs +forts. Cela dit, les prises à courte échéance relèvent de la recherche, ce qui rend le +joueur solide même avec une évaluation aussi simple.

8. Gestion du temps réel

-

La limite de l'arbitre est de 300 s par joueur et par partie. Nous nous -fixons une enveloppe interne de 280 s (≈ 20 s de marge). -Le budget alloué à un coup est une fraction du temps restant, bornée :

+

L'arbitre laisse 300 s par joueur et par partie. Nous travaillons sous une +enveloppe interne de 280 s, soit une vingtaine de secondes de +marge. Le budget d'un coup est une fraction du temps restant, bornée des deux côtés :

tranche = clamp( temps_restant / 12 , 120 ms , 6000 ms )
-

La division par le temps restant décroît géométriquement : le budget ne peut -jamais être épuisé, même sur une partie très longue. Le plafond de -6 s évite de surinvestir en ouverture ; un plancher de 120 ms garantit un -minimum de réflexion ; un mode « panique » sécurise les toutes dernières secondes. -L'approfondissement itératif rend le meilleur coup déjà trouvé dès que la tranche -expire (le temps est contrôlé toutes les 2048 explorations de nœuds).

+

Diviser le temps restant le fait décroître géométriquement, si bien que le budget +ne peut pas s'épuiser, même sur une partie qui s'éternise. Le plafond de 6 s évite +de gaspiller du temps en ouverture, le plancher de 120 ms garantit un minimum de +réflexion, et un mode « panique » couvre les toutes dernières secondes. Comme la +recherche est itérative, le meilleur coup déjà trouvé est disponible dès que la tranche +expire, le temps étant relu toutes les 2048 explorations de nœuds.

-

Mesures (auto-jeu équilibré, plein budget) : temps -maximal par coup ≈ 6,0 s (le plafond), cumul maximal -≈ 36 s par joueur sur une partie complète — très loin des 300 s. -Le réglage est volontairement conservateur et pourrait être augmenté sans risque.

+

En mesure (auto-jeu équilibré, plein budget), le coup le plus long approche le +plafond, environ 6 s, et le cumul sur une partie entière plafonne +vers 36 s par joueur, loin des 300 s. Le réglage est prudent +et on pourrait l'ouvrir davantage sans risque.

9. Performances et tests

-

Notre démarche de validation est empirique et redondante : chaque maillon est -contrôlé contre une référence indépendante.

+

Chaque maillon de la chaîne est contrôlé contre une référence indépendante.

- + - + - + @@ -373,75 +394,74 @@ contrôlé contre une référence indépendante.

- +
TestCe qu'il garantitRésultat
VerifMovesChemin entier (moteur) ≡ chemin chaîne (vérifié) : mêmes coups, même - make/unmakeGénération en entiers (moteur) identique à la génération en chaînes (vérifiée) : + mêmes coups, même make/unmake 3 000 parties · 142 165 positions · 1 281 985 contrôles · 0 divergence
RulesTestRègles directes : pas = liseré, capture au dernier pas, paladins - imprenables, non-traversée, contrainte de liseré, pass forcé, fin, zones de placementRègles vérifiées directement : nombre de pas = liseré, capture au dernier pas, + paladins imprenables, non-traversée, contrainte de liseré, pass forcé, fin, zones de placement 21 / 21
Matchs arbitrés vs JoueurAleatoireProtocole de bout en bout (placement, liseré, pass, couleurs), légalitéProtocole de bout en bout (placement, liseré, pass, couleurs) et légalité 7 / 7 victoires, 0 coup illégal, 0 exception (les deux couleurs)
Bench / Branching Vitesse, profondeur, facteur de branchement≈ 4–5 M nœuds/s ; profondeur 12–15 ; branchement max 49 / moyen ≈ 8,9≈ 4–5 M nœuds/s ; profondeur 12–15 ; branchement max 49, moyen ≈ 8,9
-

La séparation des rôles est délibérée : VerifMoves prouve que le -moteur ≡ EscampeBoard ; RulesTest prouve que -EscampeBoard respecte les règles ; les parties arbitrées prouvent que -le tout dialogue correctement avec l'arbitre réel. Aucun coup illégal n'a été -produit sur l'ensemble des parties jouées.

+

Les rôles ne se recouvrent pas : VerifMoves montre que le moteur colle +à EscampeBoard, RulesTest que EscampeBoard +respecte les règles, et les parties arbitrées que l'ensemble dialogue correctement avec +le vrai arbitre. Sur toutes les parties jouées, aucun coup illégal n'a été produit.

10. Compilation, exécution et livrables

-

Le script build.sh produit dans dist/ les trois -livrables de la version finale :

+

Le script build.sh fabrique dans dist/ les trois livrables +de la version finale :

Puyaubreau_Russac.jar    jar exécutable (Main-Class : escampe.ClientJeu)
 mainClass                jar:Puyaubreau_Russac.jar
                          clientClass:escampe.ClientJeu
                          mainClass:escampe.JoueurPuyaubreauRussac
 Puyaubreau_Russac.tgz    archive de rendu : répertoire Puyaubreau_Russac/
                          contenant src/escampe/*.java + mainClass + le jar
-

Seules les classes de production entrent dans le jar (le joueur, le moteur, le -plateau et les classes fournies) ; les utilitaires de test (VerifMoves, -RulesTest, Bench, Branching) en sont exclus. -Le jeu en multijoueur (humain contre humain, ou humain contre notre IA, en local -ou à distance) est documenté à part dans MULTIJOUEUR.md.

+

Le jar ne contient que les classes de production (le joueur, le moteur, le plateau et +les classes fournies) ; les utilitaires de test (VerifMoves, +RulesTest, Bench, Branching) restent dehors. Le +jeu en multijoueur, humain contre humain ou humain contre notre IA, en local comme à +distance, est décrit dans MULTIJOUEUR.md.

11. Sources et bibliographie

    -
  • Énoncé du cours (Université Paris-Saclay, Polytech APP5, - 2025-2026) : règles d'Escampe, carte des liserés (figure 4), interface - Partie1, et classes d'infrastructure fournies +
  • L'énoncé du cours (Université Paris-Saclay, Polytech APP5, + 2025-2026) pour les règles d'Escampe, la carte des liserés (figure 4), + l'interface Partie1 et les classes fournies (IJoueur, ClientJeu, Solo, Applet, serveur).
  • -
  • Algorithmes classiques, à titre d'inspiration et sans copie - de code : élagage alpha-bêta (Knuth & Moore, An Analysis of Alpha-Beta - Pruning, 1975) ; minimax, negamax et approfondissement itératif - (Russell & Norvig, Artificial Intelligence: A Modern Approach) ; - techniques de représentation par masques de bits et d'ordonnancement de coups +
  • Des algorithmes classiques, comme inspiration et sans copie de + code : l'élagage alpha-bêta (Knuth et Moore, An Analysis of Alpha-Beta + Pruning, 1975), le minimax, le negamax et l'approfondissement itératif + (Russell et Norvig, Artificial Intelligence: A Modern Approach), ainsi que + les représentations par masques de bits et l'ordonnancement de coups (Chess Programming Wiki).
  • -
  • Déclaration. Aucun programme d'Escampe externe n'a été - recopié. La seule rétro-ingénierie effectuée porte sur le jar d'arbitre - fourni avec le sujet, dans le seul but de confirmer le protocole (pass - "E") et la carte des liserés — points sur lesquels la documentation - était ambiguë.
  • +
  • Pour être clairs : nous n'avons recopié aucun programme d'Escampe existant. La + seule rétro-ingénierie a porté sur le jar d'arbitre fourni avec le sujet, et + uniquement pour confirmer le protocole (le pass "E") et la carte des + liserés, deux points que la documentation laissait dans le flou.

12. Conclusion et difficultés rencontrées

-

Le joueur conduit une partie de façon autonome, dialogue correctement avec -l'arbitre, ne produit jamais de coup illégal et respecte très confortablement la -contrainte de temps. Les principales difficultés ont été :

+

Le joueur mène une partie tout seul, dialogue correctement avec l'arbitre, ne joue +jamais de coup illégal et tient le temps très largement. Les principaux obstacles ont +été les suivants :

    -
  • L'obfuscation du serveur : lever l'ambiguïté du pass - ("E" vs "PASSE") et confirmer la carte des liserés a - demandé une analyse du jar — étape décisive pour ne pas perdre sur coup illégal.
  • -
  • L'interface obfusquée vs nos sources : le joueur aléatoire du - jar n'implémente pas notre IJoueur ; les tests contre lui passent - donc par le réseau (seules des chaînes circulent).
  • -
  • L'avantage du trait : en miroir, Blanc (premier à jouer) - conserve l'initiative via la contrainte de liseré — propriété du jeu, indépendante - de la force du moteur.
  • -
  • Le réglage de l'heuristique sans adversaires : validé contre - l'aléatoire et en auto-jeu.
  • +
  • L'obfuscation du serveur. Trancher l'ambiguïté du pass + ("E" et non "PASSE") et confirmer la carte des liserés a + demandé de fouiller le jar, sans quoi on perdait sur coup illégal.
  • +
  • L'interface obfusquée face à nos sources. Le joueur aléatoire du + jar n'implémente pas notre IJoueur, donc les tests contre lui passent par + le réseau, où seules des chaînes circulent.
  • +
  • L'avantage du trait. En miroir, Blanc, qui joue le premier, garde + l'initiative via la contrainte de liseré ; c'est une propriété du jeu, pas une + question de force du moteur.
  • +
  • Le réglage de l'heuristique sans sparring-partner, calé faute de + mieux contre l'aléatoire et en auto-jeu.
-

Pistes d'amélioration : table de transposition (hachage de -Zobrist), bibliothèque d'ouvertures de placement, terme de mobilité différentielle -dans l'évaluation, et recherche de quiescence sur les menaces de capture.

+

Si nous devions continuer, plusieurs pistes se présentent : une table de transposition +(hachage de Zobrist), une bibliothèque d'ouvertures de placement, un terme de mobilité +différentielle dans l'évaluation et une recherche de quiescence sur les menaces de +capture.

diff --git a/tools/make_report_pdf.py b/tools/make_report_pdf.py index 3effa53..4d470a1 100644 --- a/tools/make_report_pdf.py +++ b/tools/make_report_pdf.py @@ -44,10 +44,16 @@ tr:nth-child(even) td { background: #f4f6f8; } p.note { background: #fff8e6; border-left: 3px solid #e0a526; padding: 5pt 8pt; margin: 7pt 0; font-size: 9.8pt; } +/* Sommaire */ +.toc-title { border: none; color: #1c3d5a; margin-bottom: 4pt; } +ol.toc { font-size: 11pt; line-height: 1.7; color: #1a1a1a; } +ol.toc li { margin: 1pt 0; } + /* Éviter qu'un bloc préformaté ou une table soit coupé entre deux pages. */ pre.grid, table, tr { page-break-inside: avoid; } h2, h3 { page-break-after: avoid; } .cover { page-break-after: always; } +ol.toc { page-break-after: always; } /* Page de titre */ .cover { text-align: center; padding-top: 40pt; } @@ -107,9 +113,9 @@ def verify(): doc = fitz.open(OUT) full = "".join(p.get_text() for p in doc) doc.close() - # Mots accentués présents tels quels dans report/rapport.html. - probes = ["liseré", "Présentation", "élagage", "Modélisation", - "stratégique", "approfondissement", "Puyaubreau"] + # Mots accentués stables, présents dans report/rapport.html (titres de section). + probes = ["liseré", "Présentation", "Modélisation", "Intégration", + "Heuristique", "Puyaubreau"] missing = [s for s in probes if s not in full] return missing, len(full)