π
<-

News 2025
January (14)

News 2024
October (12)
August (9)
July (10)
June (20)
May (14)
April (16)
March (7)
January (20)

News 2023
October (19)
August (14)
July (13)
June (21)
May (29)
April (24)
March (24)
January (24)

News 2022
October (23)
August (14)
July (15)
June (17)
May (31)
April (27)
March (28)
January (34)

News 2021
October (24)
August (37)
July (50)
June (32)
May (48)
April (61)
March (35)
January (34)

News 2020
October (17)
August (43)
July (43)
June (45)
May (60)
April (78)
March (36)
January (39)

News 2019
October (13)
August (18)
July (23)
June (28)
May (31)
April (26)
March (38)
January (37)

News 2018
October (13)
August (32)
July (23)
June (64)
May (63)
April (45)
March (43)
January (45)

News 2017
October (26)
August (39)
July (52)
June (88)
May (51)
April (43)
March (37)
January (33)

News 2016
October (25)
August (42)
July (34)
June (109)
May (55)
April (34)
March (37)
January (24)

News 2015
October (22)
August (56)
July (22)
June (94)
May (56)
April (32)
March (40)
January (21)

News 2014
October (26)
August (18)
July (23)
June (101)
May (57)
April (59)
March (54)
January (31)

News 2013
October (67)
August (50)
July (43)
June (193)
May (93)
April (102)
March (45)
January (50)

News 2012
October (64)
August (63)
July (53)
June (132)
May (88)
April (73)
March (57)
January (58)

News 2011
October (56)
August (31)
July (27)
June (71)
May (61)
April (32)
March (36)
January (24)

News 2010
October (11)
August (8)
July (14)
June (10)
May (3)
April (3)
March (1)

News 2009
August (3)
July (1)
June (2)
May (1)
April (2)
March (1)

Logiciels oral CAPES Maths 2022: suppression TI-83 + Xcas

New postby critor » 10 Jan 2022, 16:42

Aux épreuves orales du concours de recrutement des enseignants de Mathématiques (CAPES), la forme adoptée pour l'évaluation des compétences numériques a déjà subi plusieurs évolutions techniques majeures en ce siècle.

On peut découper la chose en 3 phases :
  1. Jusqu'à la session 2010 incluse, les candidats souhaitant exposer leurs compétences numériques dans le cadre du sujet, le faisaient sur calculatrices graphiques. La calculatrice personnelle n'était pas autorisée, mais différents modèles de calculatrices étaient mis à disposition des candidats dans la salle de préparation, et des tablettes de rétropojection adaptées à chaque modèle étaient disponibles dans la salle du jury. Les grands constructeurs de calculatrices graphiques faisaient livrer gracieusement le matériel (calculatrices et tablettes) par camions entiers sur le site des épreuves, de façon très assidue chaque année dans le cas de Casio et Texas Instruments, de façon plus épisodique concernant Hewlett Packard.
  2. À compter de la session 2011, plus de calculatrice graphique. Les candidats disposaient directement d'un ordinateur sous Windows dans la salle de préparation, avec un ensemble de logiciels préinstallés. Un ordinateur disposant du même ensemble de logiciels et connecté à un vidéoprojecteur était disponible dans la salle du jury, et les fichiers conçus par le candidat y étaient transférées par le réseau en fin de préparation.
  3. Nouveau gros changement à partir de la session 2018, les candidats ne travaillent plus sous Windows mais sur CAPESOS, un système d'exploitation Linux embarqué sur clé USB, clé USB que les candidats recevaient en début de préparation et emportaient eux-mêmes dans la salle du jury.

Les modèles de calculatrices puis logiciels mis à la disposition des candidats ont varié avec les années, et sont résumés ci-contre depuis la session 2004.

Il est toutefois à noter que, dans un premier temps, les calculatrices n'ont pas disparu suite à la session 2011. En effet les logiciels d'émulation de calculatrices des différents constructeurs ont pris le relais et étaient installés sur chaque ordinateur.

Suite à la session 2016, le site du jury s'est mis à afficher une information fort étrange à la fin de la liste des logiciels :
NB : algobox et les émulateurs de calculatrices ne seront plus proposés à partir de la session 2018


2018 c'était certes la première session à se passer sous Linux avec CAPESOS, mais ce n'était pas un obstacle technique suffisant pour expliquer cette suppression :
  • Algobox est un logiciel multiplateforme et est donc entre autres parfaitement disponible sous Linux
  • l'émulateur HP Prime est disponible pour Linux
  • et Texas Instruments avait déjà fourni des versions Linux de ses logiciels dans le cadre de l'Agrégation de Mathématiques

Non, le jury du CAPES de Mathématiques semblait tout simplement vouloir faire le ménage, et retirer des logiciels pour forcer les candidats à en utiliser d'autres. Pourquoi pas, nous n'avons pas à juger.

Cela n'a absolument pas été présenté en ce sens, mais après coup on peut se dire que la suppression d'Algobox semblait répondre à la volonté de n'offrir que Scratch et Python comme langages de programmation, conformément aux nouveaux programmes du lycée. À l'époque les modèles de calculatrices avaient également le défaut chacun de n'être programmable que dans un langage Basic spécifique au constructeur.

Rentrée 2017, est publiée une première version de la liste de logiciels pour la session 2018. Elle s'accompagne à la fin d'une mention :
NB : algobox et les émulateurs de calculatrices ne sont plus proposés.


Mais fort bizarrement, le jury allait bien au-delà de ce qu'il avait annoncé dans sa purge. En effet le logiciel TI-Nspire CAS avait été supprimé de la liste lui aussi. Or, il ne s'agit absolument pas d'un émulateur de calculatrice, mais d'un véritable logiciel intégré de Mathématiques, issu historiquement d'une fusion du logiciel de calcul formel Derive et du logiciel de géométrie dynamique Cabri. Le seul rapport avec la calculatrice est que le logiciel permet entre autres de choisir d'afficher les documents au format calculatrice (notamment pour prendre des captures d'écran comme sur calculatrice sans avoir à connecter cette dernière), et également entre autres l'enregistrement des documents dans un format pouvant être ouvert sur calculatrice.

Par contre quand on annonce des critères et va jusqu'à se montrer extrêmement pointilleux dans leur application avec certains, faut-il encore savoir se montrer cohérent, constant et équitable.

Dans le contexte précédent quelle ne fut pas notre indignation de découvrir dès décembre 2017 une mise à jour de la liste rajoutant l'émulateur de calculatrice NumWorks.

La mention de fin de liste indiquant qu'il n'y avait plus d'émulateur de calculatrice avait comme par hasard été retirée lors de cet ajout. Cela empêchait certes la page de se contredire elle-même dans l'instant, mais pas de se contredire dans le temps puisque nous disposons de toutes les sauvegardes et te les lions à chaque fois.

Etait-ce tout simplement parce que la NumWorks était programmable en Python, contrairement à toutes ses concurrentes à l'époque ?

Quoi qu'il en soit, nous étions également fort surpris niveau pertinence de cet ajout. L'émulateur NumWorks a l'énorme défaut de ne pas retenir la saisie : tout ce que le candidat y saisit pendant son temps de préparation sera perdu lors de sa fermeture, notamment lors de l'extinction du système pour se rendre dans la salle du jury. Il n'y a aucune possibilité d'en sauvegarder ou recharger un état, et c'est même un piège pour les candidats qui ne seraient pas au courant. À quoi cet émulateur pouvait-il donc bien servir ?...

Nous comprenions parfaitement que le constructeur bride cet émulateur par rapport à la calculatrice physique, c'est totalement légitime. Sinon les élèves utiliseraient directement cet émulateur gratuit sur leur tablette/smartphone sans jamais avoir à acheter de calculatrice.

Mais maintenant que la licence NumWorks a changé et n'autorise plus la redistribution par des tiers du code compilé, il serait peut-être grand temps de reconsidérer la question.

Juillet 2019, une mise à jour de la liste annonce la suppression de Xcas pour la session 2020.

C'est fort étrange, une fois de plus. Xcas est un logiciel de mathématiques intégré par Bernard Parisse, enseignant-chercheur à l'Université de Grenoble, comportant entre bien d'autres choses un moteur de calcul formel, et programmable dans une syntaxe Python.

Des éditions sont de plus disponibles pour différents modèles de calculatrices (TI-Nspire CX II, TI-Nspire CX, NumWorks, Casio Graph 35+E II et Graph 90+E), permettant ainsi de réunir les utilisateurs devant une interface unique et des fonctionnalités haut de gamme communes, peu importe le prix d'achat de leur machine. :bj:

À la rigueur pourrait-on reprocher à Xcas de n'être pas véritablement programmable en Python mais juste dans une syntaxe proche du Python. Le code Python devait être adapté dans nombre de cas. Mais ce serait ici encore une application bien extrême des règles que nous supposons... avec certains.

Xcas fut finalement réintégré à la liste dès la session 2020 suite aux protestations.

Sessions 2018, 2019 et 2020 donc, l'émulateur NumWorks est ainsi le seul émulateur de calculatrice graphique utilisable par les candidats aux épreuves orales du CAPES de Mathématiques.

Nous doutons que beaucoup de candidats aient fait appel à cet émulateur lors de leur oral suite au gros problème évoqué plus haut, les derniers rapports du jury ne faisant d'ailleurs strictement aucune mention au sujet de cet outil.

Par contre il n'en offrait pas moins une mise en avant exclusive de la seule calculatrice NumWorks auprès des futurs enseignants.

Nous étions tout heureux suite à cela de t'annoncer enfin le retour de l'émulateur TI-83 pour la session 2021 après 4 ans d'absence, Texas Instruments en ayant en effet développé une version compatible Linux acceptée dans la liste, cette fois-ci dans son édition couleur TI-83 Premium CE.

Un gros avantage par rapport à l'émulateur NumWorks était ici la possibilité sur demande de sauvegarder et recharger l'état de l'émulateur !
Toutefois petit problème, ce logiciel n'émulait que l'ancien modèle TI-83 Premium CE, et pas la nouvelle TI-83 Premium CE Edition Python.

Cet émulateur n'était donc pas programmable en Python mais uniquement dans le langage Basic propriétaire de Texas Instruments, critère qui semblait avoir suffi à exclure bien d'autres logiciels avant lui.

Et nous y sommes, la liste des logiciels offerts lors des épreuves orales du CAPES de Mathématiques vient d'être mise à jour pour la session 2022. Au menu, une nouvelle purge :
  • Geogebra
  • LibreOffice
  • émulateur NumWorks
  • Python (bibliothèques matplotlib, numpy et scipy) via Pyzo
  • Scratch
  • émulateur TI-83 Premium CE
  • Xcas
  • Jupyter
Une nouvelle fois, le jury du CAPES de Mathématiques annonce la suppression de Xcas, alors que ce logiciel est presque programmable en Python. Décidément, ils y tiennent dur comme fer.

Ou bien le but serait-il d'empêcher les candidats d'avoir accès à un moteur de calcul formel ? Dans ce cas, nous signalons que pour être cohérent, il faudrait également supprimer Geogebra qui en intègre un, même si à la différence ce n'est pas mis en avant dans le nom du logiciel.

Et également, nous apprenons avec stupeur la disparition pour la session 2022 de l'émulateur TI-83 Premium CE, et ce alors que l'émulateur NumWorks est pour sa part conservé.

Est-ce parce que ce premier n'est pas programmable en Python ?

Malgré des membres de jury de plus en plus compétents dans le domaine numérique, l'offre logicielle au CAPES de Mathématiques est en plein effondrement. Plus que 5 éléments quand elle a pu en compter jusqu'à 13, on peut la résumer à la suite bureautique, Geogebra, et pour la programmation Scratch ou Python selon le niveau sur lequel le candidat est interrogé, à croire qu'il n'existe qu'une seule bonne façon de faire du numérique en Mathématiques.

Le jury n'a bien évidemment absolument pas à se justifier et nul doute qu'il agit pour le plus grand bien des futurs enseignants et de leurs futurs élèves, mais il n'empêche que la logique selon laquelle les logiciels rentrent et sortent de la liste nous est totalement inaccessible, et qu'en l'absence d'explication logique la seule alternative pour l'observateur extérieur est le pire.

Source : https://capes-math.org/index.php?id=epreuves-orales

img2calc: des scripts Python encore plus petits

New postby critor » 08 Jan 2022, 22:07

13917Dans une série d'articles précédents nous te présentions img2calc, notre service en ligne gratuit sur TI-Planet te permettant de convertir tes images pour tes projets sur calculatrices.

Un large choix de formats cible t'était proposé :
  • fichiers à appeler depuis tes programmes en langage Basic :
    • .g3p pour Casio Graph 90+E et fx-CG50/20/10
    • .c2p pour Casio fx-CP400 et fx-CG500
    • .8ca ou .8ci pour TI-83 Premium CE, TI-84 Plus CE et TI-84 Plus C Silver Edition
    • .8xi pour les TI-83 Plus (compatible TI-82 Advanced, TI-82 Plus et TI-84 Plus monochromes),
    • .83i pour les TI-83 (compatible TI-82 Stats et TI-76.fr)
    • .82i pour les autres TI-82
    • .86i pour les TI-86
    • .85i pour les TI-85
    • .73i pour les TI-73
  • fichiers à appeler depuis tes scripts en langage Python :
    • IM8C.8xv pour les éditions Python des TI-83 Premium CE et TI-84 Plus CE
  • scripts Python pour les différentes bibliothèques graphiques des calculatrices :
    • ti_draw (TI-Nspire CX II)
    • graphic (TI-Nspire CX II avec KhiCAS, TI-Nspire CX avec KhiCAS et NumWorks avec KhiCAS)
    • nsp (TI-Nspire avec Micropython)
    • ti_graphics (TI-83 Premium CE et TI-84 Plus CE éditions Python)
    • casioplot (Casio Graph 90/35+E II, fx-9750/9860GIII et fx-CG50)
    • hpprime (HP Prime)
    • kandinsky (NumWorks)
Nous revenons aujourd'hui sur ce dernier point, soit les images converties en scripts Python pour ta calculatrice.

Rappelons que les interpréteurs Python de nos calculatrices font appel à 3 types de mémoires :
  • La mémoire de stockage qui comme son nom l'indique stocke physiquement tes fichiers de scripts Python.
  • La pile (stack) qui référence, à l'exécution, les objets Python créés par tes scripts. Sa capacité limite donc le nombre d'objets Python pouvant coexister simultanément en mémoire.
  • Le tas (heap) qui reçoit, à l'exécution, le contenu des objets Python créés. Il limite donc la taille globale utilisée pour les données de ces différents objets.

Voici quelques consommations heap valides pour les plateformes 32 bits que sont à ce jour nos calculatrices :
  • pour un entier : 24 octets de base + 4 octets si non nul + 4 octets pour chaque groupe de 30 bits utilisés au-delà des premiers 31 bits dans sa représentation binaire
  • pour une liste : 56 octets de base + 8 octets par élément + les tailles de chaque élément
  • pour un tuple : 40 octets de base + 8 octets par élément + les tailles de chaque élément
  • pour une chaîne : 49 octets de base + 1 octet par caractère
  • pour un bytes : 33 octets de base + 1 octet par octet
Comme tu peux le constater le langage Python a le très gros défaut d'être un énorme consommateur de heap, mémoire qui sera bien souvent le facteur le plus limitant pour tes projets sur calculatrices. Rappelons les plus mauvais modèles sur ce critère :
  • NumWorks avec seulement 32,5 Ko de heap
  • éditions Python des TI-83 Premium CE et TI-84 Plus CE avec encore pire 19,7 Ko de heap

Comme déjà expliqué, img2calc a justement été conçu pour minimiser la consommation de heap. Pour cela img2calc mutualise deux approches :
  • La compression de ton image au format RLE.
  • Le compactage des données, avec l'utilisation des types d'objets Python les moins gourmands en mémoire :
    • des tuples pour la palette de couleurs
    • des bytes pour les données de la compression RLE (type d'objet Python s'utilisant comme une chaîne de caractères mais optimisé pour le stockage d'octets)

Prenons un exemple simple. Supposons que tu souhaites afficher l'image 15×15 pixels ci-contre dans un de tes scripts Python sur calculatrice.

Un premier codage très naïf dit true color de ton image pourrait alors ressembler à ça :
Code: Select all
image = [
[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],
[255,255,255],[255,255,255],[255,255,255],[255,255,255],[054,111,159],[255,255,255],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[255,255,255],[255,255,255],[255,255,255],[255,255,255],
[255,255,255],[255,255,255],[255,255,255],[255,255,255],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[255,255,255],[255,255,255],[255,255,255],[255,255,255],
[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[255,255,255],[255,255,255],[255,255,255],[255,255,255],
[255,255,255],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[255,255,255],[255,255,255],[255,255,255],[255,255,255],
[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[255,255,255],[255,204,062],[255,204,062],[255,255,255],
[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[054,111,159],[255,255,255],[255,255,255],[255,204,062],[255,204,062],[255,204,062],
[054,111,159],[054,111,159],[054,111,159],[054,111,159],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,204,062],[255,204,062],[255,204,062],[255,204,062],
[054,111,159],[054,111,159],[054,111,159],[255,255,255],[255,255,255],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],
[255,255,255],[054,111,159],[054,111,159],[255,255,255],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],
[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,255,255],
[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],
[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,255,255],[255,255,255],[255,255,255],[255,255,255],
[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,255,255],[255,204,062],[255,255,255],[255,255,255],[255,255,255],[255,255,255],
[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,204,062],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],
]

Il s'agit donc d'une liste des couleurs de pixels, de gauche à droite puis de haut en bas, les couleurs étant codées en triplets de valeurs Rouge-Vert-Bleu, l'implémentation la plus fréquente sur calculatrices.

Ce premier codage est toutefois catastrophique en terme de consommation de mémoire heap. Il consomme à l'exécution
$mathjax$56+15\times 15\times\left(8+56+3\times\left(8+28\right)\right)$mathjax$
soit 38,756 Ko de heap, excluant donc déjà les TI-83 Premium CE, TI-84 Plus CE et même NumWorks.

Mais c'est bête donc de repréciser à chaque fois la valeur de couleur, alors qu'il n'y a ici que 3 couleurs différentes dans notre image, non ? ;)

Outre le passage aux tuples déjà évoqué, une première amélioration majeure est d'externaliser les informations de couleurs dans une palette, ce que l'on appelle une image indexée :
Code: Select all
palette = ((255,255,255), (054,111,159), (255,204,062))

image = (
0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,
0,0,0,0,1,0,1,1,1,1,1,0,0,0,0,
0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,
0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,
0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,0,2,2,0,
1,1,1,1,1,1,1,1,1,1,0,0,2,2,2,
1,1,1,1,0,0,0,0,0,0,0,2,2,2,2,
1,1,1,0,0,2,2,2,2,2,2,2,2,2,2,
0,1,1,0,2,2,2,2,2,2,2,2,2,2,2,
0,0,0,0,2,2,2,2,2,2,2,2,2,2,0,
0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,
0,0,0,0,2,2,2,2,2,2,2,0,0,0,0,
0,0,0,0,2,2,2,2,2,0,2,0,0,0,0,
0,0,0,0,0,2,2,2,2,2,0,0,0,0,0,
)


Cela n'occupe plus que
$mathjax$40+3\times\left(8+40+3\times\left(8+28\right)\right)+40+15\times 15\times\left(8+28\right)$mathjax$
soit 8,648 Ko de heap. Notre icône est maintenant fonctionnelle sur tous les modèles ! :bj:

Et nous en arrivons maintenant à la compression RLE. Selon un parcours de l'image de gauche à droite puis de haut en bas, cette compression accompagne chaque information de couleur du nombre de pixels adjacents qui l'utilisent.

Avec notre image d'exemple, cela donne :
Code: Select all
0(×5) 1(×5) 0(×9)
1(×1) 0(×1) 1(×5) 0(×8)
1(×7) 0(×11)
1(×4) 0(×5)
1(×10) 0(×4)
1(×11) 0(×1) 2(×2) 0(×1)
1(×10) 0(×2) 2(×3)
1(×4) 0(×7) 2(×4)
1(×3) 0(×2) 2(×10)
0(×1) 1(×2) 0(×1) 2(×11)
0(×4) 2(×10) 0(×5)
2(×4) 0(×11)
2(×7) 0(×8)
2(×5) 0(×1) 2(×1) 0(×9)
2(×5) 0(×5)


Après encodage et compactage de ces informations sur du RLE 2 bits (puisque nous avons plus de 2 couleurs mais moins de 4 couleurs), voici le code Python associé :
Code: Select all
palette = (
(255,255,255),(55,109,157),(255,203,64),
)

image = (
b"\x10\x11\x20\x01\x00\x11\x1c\x19(\r\x10%\x0c)\x00\x06\x00%\x04\n\r\x18\x0e\t\x04&\x00\x05\x00*\x0c&\x10\x0e(\x1a\x1c\x12\x00\x02\x20\x12\x10"
)

Nous avions donc au final
$mathjax$40+3×(8+40+3×(8+28))+33+43×1×1$mathjax$
soit 584 octets de consommation heap.

Par contre, tu pouvais noter la longue écriture du bytes sur 140 caractères, et ce alors qu'il ne code que 43 octets.

En effet nombre de valeurs d'octets ne correspondent pas à des caractères affichables, et ont donc besoin d'une notation spéciale dite échappée :
  • \x10 bien que s'écrivant avec 4 caractères, ne code qu'1 octet, de valeur 10 en hexadécimal, soit 16 en décimal
  • \t, \n, et \r sont des notations plus courtes sur seulement 2 caractères codant les octets de valeurs respectives 9, 10 et 13

Cette notation pouvant nécessiter jusqu'à 4 caractères pour écrire 1 octet n'était absolument pas un problème pour la mémoire heap, mais par contre elle pouvait l'être pour la mémoire de stockage.

Prenons par exemple l'image plein écran en 16 couleurs ci-contre.

img2calc te la codait jusqu'à présent de la façon suivante :
Code: Select all
palette = (
(215,187,149),(239,183,116),(198,122,27),(90,45,18),(190,143,18),(255,255,247),(0,0,2),(190,172,149),(231,187,99),(239,163,18),(149,105,45),(207,176,107),(73,0,0),(149,67,64),(182,114,116),(247,195,133),
)

image = (
b"\xb0\r\x11\"\x01\xb0&\xe3\x01\xf0\x00\x11\xa0$\x01C\x021\x02\xf3\x00\x01\x10\x93\x01\x01\x80#\x01c\xc1\x013\x01\x13\x91\x01\x02#\x11\x80\"\x01\xf3\x00\x02Q\x02\xf1\x00S\xb1\x01\x023\x01\xb0!\xf3\x00\x12\xa1\x02\x02#\x91\x02\x83\x01\x01\xf0\x1f\x01S\x91\x03\x131\x02a\x12\x91\x01c\x01\xa0\x1fS\x02\xf1\x00\x02\xa1\x01\x02\xf1\x00\x03a\x02\x91\x02\xf3\x00\xf0\x1eS\x91\x01\x02\xa1\x01\x02\xf1\x00\x03a\x02\xb1\x02c\x01\xb0\x1eS\x91\x02\x02\x81\x01B\x03\x02\x91\x02\x02\xd1\x01\x02#\x01\xe0\x1d\x013\xc1\x02\x02\xf1\x00R\x03\xa2\x02\x81\x023\x02\x01\xa0\x1d#\x02A\x02\xf1\x00\x02!\x02\x81\x01\x92\x01\x13\xe2\x02a\x02Q\x023\x80\x1d#\x02Q\x02\xf1\x00\x02\xa1\x01\xb2\x01\x13\x82\x02\xf3\x00\xd1\x013\xb0\x1c\x01\x00\x01#\xf1\x02\x82\x02\x13\x82\x03\x13\x02A\x02a3\x90\x1c3\xc1\x02\xd2\x02#\x92\x03\x13\x02\xc1\x01#\xe0\x1b\x01#\xa1\x02\xf2\x01\xc3\x02\x02\x04\xa2\x02\x03\x121\x02\xf1\x00\x13\x01\xc0\x04\x15\xb0\x16\x01#\x02\x81\x02\xe2\x01\x93\x02\x12S\x12\x04\x82\x02\x13\x02!\x02\x81\x01\x13\x01\xf0\x01\xf5\x00\x005`%\xc0\x015\x80\x14#!\x02A\x02\x81\x01\x92\x01S\x02\x04\x02\xf4\x00Cd\x02\xc3\x01\xe2\x01\xa1\x01\x02\x13\xe0\x01\x05V%\x16\x05\a@\x05&\x05\xb0\x01\x05\x16\x05\xe0\x13\x01\x13\x02\x81\x02\x82\x01C\x02\x84\x02#\xa4\x02\x023\xc2\x011\x12Q#\x01\xb0\x01\x05f\x15\x16%0\x05&\x05\x20\a5\x00\a\x10\x05\x16\x15\a\x05\x00\x050\a\x00\a\xf0\x00%P%P%\a\xd0\x02\x05\x00\x05\x00\x05\x80\x0b#\xf1\x01\x82\x01C\x02\xb4\x02\x13\xe4\x023\xd2\x01\xa1\x01#\xa0\x01%\x16E&5\x105\x20\x156E\x16%\x06\x00\x15\x00E\a\x15\x20\x15&\x15\x10%\x16%\a\x15&\x15`\x05\xa0\x01\x15\x16\x15\x06\x15\xd0\n#\xf1\x01\x02\x03RC\xe4\x02\x13\xe4\x02\x123\xb2\x01\xb1\x01\x13\x02\x90\x01%\x16EV\a\x05\x00\x15\x06\x15\x10\x05V5\x16\x156\x15\x16\x05&\x15\x00\a\x15F\x05\x10\x156\x15\a\x05F\x15@UP\x15f\x05\xb0\n\x01#\xe1\x01\x02\x03R3\x94\x03\x13\xa4\x03\x02#\xb2\x01\xb1\x01\x13\x01\x90\x01\x05\x16\x15\x10\x05f%&%\xf6\x00\x05\a\x05\x16\x056%\xf6\x00%f%V%V\x05@F\x05P\x05\xf6\x00\x05\a\x80\n\x01#Q\x02\xf1\x00\x13R#\xf4\x02H\x13H\xf4\x02\x02\x13\xc2\x01\x01\x02\x91\x01\x13\x80\x01\x05\x16\x15\x10\x05&\x15\x16%&\x156%\a\x15\a\x05V5&\x15&\x15&%\x16%&5\a\x05&%\a@\x056\x05@\x05&5\x16\x05\xf0\t\x01#\x02\xc1\x01\x02\x13B3\xd4\x02\x88\x01\x13h\t\b\xd4\x02#\xb2\x01\xb1\x01\x13\x01`\x05\x16\x15\x10\x05&\x15&\x15&\x15&%\x17\x05\a\x156U\x16%&\x15\x86\x01\x05\a\x0565\a&\x15P\x056\a@\x05&\x15\a\x05\x16\x05\xd0\t\x01C\xc1\x01\x02\x03RC\xa4\x02\t\xa8\x01\x13\x98\x01\xc4\x02\x02#\xb2\x01\xb1\x01\x13`\x05\x16\x15\x10\x05\x16%&\x15&\x15&\x15\a\x15\a%F\x05\a%\x16%&\x15\x86\x01\x05\a\x15&\x15\a%&\a\x050\x05FP\x05&\x05\a\x15\x16\x05\xb0\t\x013\xd1\x01\x02\x03b3\xf4\x01\x98\x019(\x138I\x88\x01\xf4\x013\x92\x01a\x12\x11\x02\x13P\x05&\x05\x10\x05\x16%&\x15&\x156%\x065\x16\x05&\x05\a\x15\x16%&\x15\x16\xc5\x01&E&\x050\x05\a6\x150\x05&5\x16\x05\x90\t\x02#\xe1\x01\x82\x013\xd4\x01\t\xb8\x01i\x18\x03(Y\xf8\x01\xa4\x01\x02\x13\xa2\x01\x91\x01#@\x05&\x05\x10\x05\x16%&\x15&%\xf6\x00%\x16\x15&\x05\a\x05\x16%&\x15&%\x16%&\x05\x16%\x16\x05&\x05`5@\x05\x86\x01\x05\xf0\b\x01#\xf1\x01\x03b3\xb4\x01\x19\xe8\x01i\x18\x13\bi\xb8\x02\x84\x01\x02\x13\x82\x01\x11\x02\xf1\x00\x13@\x05&\x05\x10\x05\x16%&\x15&\x05\x00\x15V\x15\a\x05&\x15&\x15\x16%&5F\x15\x00\x156\x15\x00\x05F\x15\x80\x02\x15f\x05\xf0\b\x13\x81\x02\x82\x01#\xb4\x01\t\x88\x02i\x18\x13\x18Y\x98\x01\t\x98\x01\x84\x01\x02\x13\x82\x01\x91\x01\x13@\x05&\x05\x10\x05\x16%&\x15&\x05\x10\x156%\x00\x05&%\x16\x15\x16\x05\x00\x05&5F\x05\x20\x056\x15\x00%\x16\x15\x90\x02%&\x05\x16\x05\xd0\b\x01\x13\x81\x01\x12A\x92\x01\x13\xb4\x01\xc8\x02Y\x18\x13\x18Y8:\xe8\x01\x84\x01\x02\x03\xf2\x00\x03\x02\xf1\x00S\x00\a%\x205\x17%\x005@E\x205\x00\a\x15\x20\x15\x20%0E@5@5\xc0\x02\xf5\x00\xd0\b\x13\xc1\x01\x02\x11\x82\x01\x13\xa4\x01\x19\xf8\x02\tH\x13\x18Y\b\x8b\x01\xe8\x01\xf4\x00\x02\x13\xf2\x00\x03Q\x02\xf3\x00\x80\x16\x13\x02\xd1\x01\xf2\x00#\xa4\x01\b\t\x98\x02\x1a\x1b\x1a\xf8\x00\x13\xf8\x00\n\xfb\x00\n\xa8\x02\t4\x02\x13\xf2\x00\x03\x02!\x02\x13A#\xf0\x15\x13\xe1\x01\xf2\x00#\x84\x01\x19\xb8\x02\x1a;\nh\x13\xf8\x00\n\xfb\x00\n\xf8\x00)\xf8\x00\x19D\x13\xf2\x00\x03\x02\x11#Q\x13\x01\xd0\x15\x13a\x02a\xf2\x00#\xf4\x00\x98\x01)\xa8\x01\x13K\nX\x13h\nk#Xi\x98\x01\t$\x02\x13bC\xf1\x00\x13\xd0\x15\x13\xc1\x01\xf2\x00#d\xa8\x01I\xa8\x01\n\x13KX\x13X\nk#\nX\xf9\x00\x98\x01\t\x14\x12\x13b\x13\x02\x91\x01\x13\x01\x90\x15\x11\x13\xb1\x01\x82\x01\x13d\t\xf8\x00\x89\x018\x1a\x03J[\nH\x13X\nk\x13\nX\x99\x01\xa8\x014\x13R\x13\x81\x01\x02\x01#\x80\x15\x023\xa1\x01\x82\x01\x13d\x88\x01\x99\x018\n\xcb\x01\nH\x13X\xfb\x00\x13\x0bX\x99\x01\xb8\x01$\x02\x0323\x02a\x12\x11\x13\xe0\x14\x01\x13\x02\x01#\x02Q\x02\x03\xf2\x00\x13d\x88\x01\xb9\x018\n\xcb\x01\nH\x13H\n+\x13\n+\n\x0bX\xa9\x01\xb8\x01\t\x14\x02S\x12\x13\x91\x01\x02\x13\xc0\x14#1#\x021\x13b#d\x98\x01\xb9\x018\n\xcb\x01\nH\x13H\n+#;\nX\xb9\x01X)(\t\x14S\"\x03\x02\xa1\x01\x03\x01\xa0\x14#Q\x02#\x11\x03\xf2\x00\x03\xf4\x00(9H\xb9\x018\n\x0b:#K\x18\t(\x03h\n\x0b#\x0b\n;\nX\xa9\x01HI(\x143R\x03\xa1\x01\x02\x03\xa0\x14#a\x02\x13\x12\x03b\x13d(\xf9\x00\x18\xb9\x018Z\x0b\x13;\n\x18\t(\x03h\x1a\x13\n\x0b\n;\nh\x89\x01HY(\t\x043\xf2\x00\xa1\x01\x03\x01\x80\x14\x13\x02\x81\x01\x02#b\x13d8i8Y\xe8\x01\x0b\x13;\nH\x13(\x14(\x1a\x0b\x18\x1a;\nX\x89\x018\xf9\x00(Sb\x01\x02\x81\x01\x02\x13\xf0\x13\x13A\x02\x01\x02!\x02#2\x13TX\xf9\x00H\t\xa8\x02\n\x0c+\x1a\x0bH\x03\x048\x19\xf8\x00\n\x1b*\x98\x01)Xi83\x04#bA\x021\x02\x13\xd0\x13\x01\x03\x02a\x02!\x03\x02#\x12\x13TX\x89\x01\x88\x03\x0b\x03\x1b\x1ah\x03\xe8\x01\x1a\x1b\xc8\x02i(\x13D\x02\x13R\xb1\x01\x03\x02\xc0\x13\x13\xb1\x01\x03\x12CTh\x89\x01hl\xb8\x01:8\t(\x0c\xe8\x01\x0b\xc8\x02\x19\bY(#T\x13b\xa1\x01\x13\xb0\x13#\xa1\x01\x0323Dh\x89\x01X\x1c=<\xe8\x02\x13\\\xa8\x02\t\xf8\x009()(\x138D#B\xb1\x01\x13\xa0\x13\x131\x02Q\x02\x03234h\x99\x018\x1c\r\x0em,\xa8\x02,\r\x0cM\x1cH\x19\x98\x01\x04\x88\x01\x04\x19\xf8\x00\x13h$\x02\x13R\xf1\x00\x02!\x13\x80\x13\x02\x13\x81\x01\x02\x13BC\x14\th\x89\x018\x0c\xbd\x01,h9HL\x0e\x0c]\x1c(Ih\x19\x88\x01)h\x13\x88\x01$#2\x03\x02\x01\x02\x81\x01\x02\x03\x01\xf0\x12#\x81\x01\x02\x03Rc\b\tX\x89\x018\x0c\xbd\x01,XIHL\x0e\x0c\r\x0e=\x1c89\xf8\x00\t\xa8\x01\th\x038\tX$\x13B\x03\xb1\x01\x13\xf0\x12\x03\x02\x91\x01b\x03D#h\x89\x01(\x0c\x1d\x0e=\x1e]\x1c8Y8,\r\x0c\x03\x0e\x0c\r.-\x1c\x88\x04\x13H9(4\x13\x042\x03\xb1\x01\x03\xe0\x12\x13A\x02AR\x13T#X\xf9\x008\x0c\r>\x9d\x01\x1c\x18\t\bY8\x1c\x1d\x0c\x03\r\x0c\r\x1eM\x0c\x98\x01I89H\t(\x138\xf9\x00\x18$\x02\x03R\x03A\x121\x13\xd0\x12\x03\x02\x91\x01R\x134H\x13X)h\x1c\r>M.-\x0c8Y8\x1c\x1d\x0c\x03\x1c\xfd\x00\x1c\x88\x01I8Ih\x138\x89\x01\x184\x13R\x01\x02\x81\x01\x02\x03\xc0\x12\x02\x03\xa1\x01B\x134\x18\t(#\xe8\x01\x1c\r>=>-\x1c(Y(,\x1d<=\x0e-\x1c\x88\x01I(YX\x13H\xf9\x00(D\x13R\x81\x01\x02\x01\x03\x01\xa0\x12\x02\x13\x91\x01B\x13$\t\xf8\x00#\xd8\x01\x0c=\x0eMN\x1d\x1c(Y(,\x1e,=\x1e-\x1ch\t\x189\x18i8#X\xf9\x00(\t4\x13b\x91\x01\x13\x01\x90\x12#\x81\x01B#$(\x19\x18\t\x18#\xf8\x00\x198\x9d\x01>-\x1c(9H,\x1e\x0c\x03\x0c\r\x1e\r\x1e-\x1cX\x19(\x19(i(\x138\x19\x18\xf9\x0084#b1\x021#\x80\x12\x02\x13\x11\x121\x02\x012#$\x18IH#X9(\x0c]\x1e-\x0eM\x0c(\t8\t(,\x1d,.],\b\t()hY(\x13\xc8\x01)X4\x02\x03b1\x02A\x13\x80\x12#\x91\x01\"#\x02\x14(IX#HI\x18\x0cM.\x8d\x01\x0c\xc8\x01\x1c\x1d,\x8d\x01,H9\xd8\x01\x13\xb8\x01\x0c\x98\x01\t4\x13b\x81\x01#\xf0\x11\x13\x91\x012#\x148Y\x18\t(\x13HI\x18\x0cM.=\x0e-\x1c\xc8\x01\x1c\x1d,\x8d\x01,H9H\th#\x18\tXlh\tD\x03b\x81\x01#\xe0\x11\x13a\x02!2\x03\x12\x14\tH\x19\x88\x01\x13898\x0cM\x0eM\x0e-\x0c\xd8\x01\x1c\x1d,\x1d\x1e=,\xb8\x019h\x03\xf8\x00,]\x1c8\t\x18D\x13R\x91\x01\x13\xe0\x11\x13\x91\x012\x13\x02\x14\t\x98\x02#8\x198\x0c\xfd\x00\x1eM\x0c8)h,\r\x0c\x03\x0c\r>-,(\t(\x99\x01\x18\t\b\x04\x03h\x1c\xad\x01\x0chD\x13R\x91\x01\x13\xc0\x11\x01\x03\xa1\x012\x03\x12\x14hL\xf8\x00#\x88\x01\x04\x1c-\x1e\r\x1e=\x0c(Yh\\\r>\x1d<X\xa9\x01\x18\t\x13\xf8\x00\x0c]\x1eM\x1cX4#B1\x02A\x02\x03\x01\xb0\x11\x13\xa1\x01\"\x13\x02\x14\tH\x8c\x01\x03X#\x88\x01\x1c-\x1e\r\x1e-\x0c8Yh\\\r>\x1d<X\xa9\x01\b\t\x04\x13h\x1c]\x1eM\x1cX\t4\x13B\xa1\x01\x13\x01\x90\x11#\x91\x012\x13\x02\x14H,M<\b\x198\x13\x88\x01\x1c\x8d\x01\x0cH\xf9\x00XL]<X\xb9\x01\x18\x03()\x18\x1c\x1d\x1e\x1d.]\x0c\xf8\x004\x13B\x91\x01\x02\x13\xd0\x04\x15\x90\x0c\x13\x02\x11\x02!\x02\x112\x13\x02$8\x1c\xfd\x00,\x88\x01\x13\x88\x01\x0cM\x1ch\x89\x01h\x13\x0c=Lh\xa9\x01\x18\x13\x189\x18\x1c\x1d.M\x1e-\x1c\xf8\x00$\x13R\x91\x01#0\xf5\x00\xa0\x02U\x16\x05\x80\x0c\x13\x91\x012\x13$\t\x18,=\x1eM\x1c(\tH\x13\xa8\x01\x1c\x98\x01\x89\x01h\x13\x8c\x01\xf8\x009\x04I\b\x1389\x18\x1c\x1d.M\x1e=\x0c\xf8\x004\x13BA\x02A\x130\x05V\x05\xa0\x02\x05&\x15&\x05\xf0\x0b\x13\x91\x012\x13\x14\t(,=\x1eM\x1c()8\x13\xd8\x02\x89\x01h\x03\b\xfc\x00(\tHI\b\x04(\n\x1389\b,\x1d.\xad\x01\x0c\xf8\x004#2A\x02Q\x03\x01\x20\x05f\x05@\x05\x00\a`5&\x15&\x05P%0%\xd0\x02\x17\x05\xd0\x06\x13\x02\x91\x01\"#\x148\x1cM\x1e\r\x1e\x1d,()8#H\tX\t\x88\x01ih\x038\rX\x19h\t\b\x0b\n\b\n\x0b\n\x03HY,-\x0e\x1d.m\x0c\xf8\x004#2\xb1\x01\x13\x20\x05&\x05&\x05\x10\x15\x16\x15\x00U&\x05&\xa5\x01\x00\x05\x16E\x16\x15\x80\x02\x85\x01\xa0\x06\x13a\x02\x112\x13$(,\xfd\x00\x1e\x1d,h*\b\n\x1389H98ih\x03\b\t\x88\x019X\n+\x1a\x03h9\b,].\x1d\x0e=\x0c8\x19(4#2\xa1\x01\x13\x11\x00\x05&\x15\x165f5\xf6\x00\x15&\x15&\x05\a\x05&\x15V\x05@\x05\x1650\x05f\x05\xa0\x06\x03\xa1\x012\x03\x02$(,\x1d\x1e\x8d\x01\x1ch\n+\n\x0b#\x1898Y89\x88\x01\x03\x18\thIh\n\x0b\n\x13\x18#\x0b\x18\x19(,\x9d\x01.-\x0c8)\x18\t$#2\xb1\x01\x13\x01\x00\x05f%\x16%&\a\x15&\x156\x15&\x15&%&\x15&\x05\x06\x15@\x05F\x0505&\x05\xa0\x06\x01\x03\x91\x01B\x03\x02$(,\x1d.-\x0e=\x1ch\n+\n\x0b\b#\x18)8i8)\x88\x01\x03\x98\x01Ih\x0b\x1a\x03\x0b\b\n#\n\x18\t8,\x8d\x01>-\x0c89\b\t$\x02\x132\xb1\x01#\x00\x05V5\x165\x16%&%&\x15&\x15&%&\x15&%P\x05F\x0505&\x05\xa0\x06\x13!\x02Q2\x13$8,\x1d.\x1d.-\x1ch\x1a+\n\x18#\b)8i\x98\x01\x198\x03\x98\x01I(\x19\x18\n\x13\b\n\x0b#\x0b\n\xf8\x00\x1c-.->-8Y\x18$\x02\x132\x01\x02\x81\x01#\x00\x05V5\x165\x16%\x16\x15\a\x05&\x15&%\x16%\x16\a\x05\a\x05&\x15P\x05F\x05@\x15&\x15\xa0\x06\x03\x02\x91\x012\x03\x02$8\x04\x1c]N\x1d\x1ch\n;\n8\x13hI\xa8\x01)8\x03\xa8\x01)X\x04\n\x13\x1b\bK\n()\x18\x1c=\x0e=>\x1d\x0c8Y\x184\x132\xb1\x01\x13\x00\x05V5\x16\x15\a\x05\x16%\x165&\x15&%\x16%\x16\x05\a5&\x05@\x05F\x05@\x15\x16\x15\xb0\x06\x03\xa1\x012\x03\x02$\x18\t\b\x04,MN\x1d\x0ch\n;\x1aH\x13\x04X9\xa8\x01)8\x03\x18\t\xf8\x01\x1a\x03\n\b\nk\n()\x18,\x8d\x01\x0e\x1d\x0e\x1c8Y($\x02\x13\"\xb1\x01#\x05&\x05&%&\x15&%&\x156\x15&%&\x05&%\x16\x15\x16\x05@UP\x05&5\x80\x06\x01\x03\xa1\x012\x034H,M>-\x0c\x18\t(\nK\n\x0bX\x13h\x19X\x198)8\x03\xa8\x02\n\x03\n\b\x0b\x03k\n()(\x1c\xbd\x01\x1cHi\x184#\x12\x81\x01\x02\x11#\x05&\x05&%\xf6\x00%\x86\x01\x15&%V\a\x05\a\x05\x16\x05&\x05PEP\x05V\x05\x80\x06\x13a\x02!\"\x13$\t\x18\x19\x18,]\x0e-\x1c\x18\t\b\x1a[\n\xf8\x00\x13\xd8\x01)()8\x0389\xa8\x01\x03\n\b\x0b\x18\n[\n\x18)H\x1c-.M\x0cXi\x184#\"!\x12Q#\x05&\x15&%f\x17\x15\xf6\x00\x15&\x05\x00\x15F\x05\x10\x05V\x05\xf0\x01\x05f\x05\xf0\x05\x01\x13a\x02\x11\x02\x03\x12\x13$\t\x18\x19(<],H\x1a;\x1aX\t(\x13\x98\x03\x03(iX\x04\x13\n\b\n\x13k\n\xb8\x01,\r.-\x1chi(4#\x12!\x02a#\x85\x01\x20\xf5\x00\x20\xf5\x00\x00E\x20E0e\xf0\x01\x85\x01\xf0\x05\x13\xa1\x01\"\x13\x02$\b\t\x04)(,\rlh\n;\n\xc8\x01\x13X\x19\xf8\x01\x03(\xf9\x00H\x13(\nk\x1a\xe8\x01lX\t(i(4#\"\x91\x01\x02\x13\x01\xf0\x0f\x13\xa1\x01\"\x134Y8\x8c\x01\xf8\x00\x1a\x0b\x1a\x0b\xc8\x01\x13H)\x98\x01*\x18\x13(\xf9\x00H\x13(\nk\x1a8\t\b\t\x98\x01\x1cX9(i(4\x02\x13\"\x91\x01\x02#\xf0\x0f\x13A\x02A\x03\x12\x134\xb8\x03\x1a\x0b(I\x88\x01\x03\x88\x02\n\x0b\b\n\b\x13(\xf9\x00(#8\x1a;\x1a8\xf9\x00\xd8\x01Y\x18i(\t4\x02\x13\x12\x91\x01\x02#\xf0\x0f\x13\x91\x01\x02\x03\x12\x13$(j\x88\x03I8\x198\x13\xd8\x01\n+\n\b\x13(\xf9\x00\x18#h:\x0b(\xa9\x01X\x19XI(Y8D\x13\x12A\x12!\x02#\xe0\x0f\x01\x03\x02\x91\x01\x02\x03\x02#\x14\x18\n\x8b\x01\x1a\x0bhIX\t\x18I(98\x13X*\b\x0b\x1a;\n\b\x13(i(\x13\xd8\x01\t\b\xb9\x018\t\x88\x019(IX4\x13\"1\x031\x02#\xe0\x0f\x01\x03\x02\x91\x01\x13\x02#\x14\x18\n\xab\x01\nhYH\t\x18I(I(#H\n\x0b:K\n\b\x13(Y(\x13\x88\x02\xb9\x01\x98\x01\x1b8\tHIH4\x02\x03\"1\x021\x02#\xe0\x0f\x13!\x02a\x13\x02\x13$\b\n\xdb\x01\n(\xf9\x00\xf8\x00I\x18YH\x13(\xab\x01\n\x18\x13(I(\x13XIX\xc9\x01X\x0b\x1a;*\x98\x019(4\x03\"1\x021\x02#\xe0\x0f\x03\x02\xa1\x01\x03\x12\x13$\n+\x03\n\xab\x01\n\x18\xf9\x00\xe8\x01YX\x13(\n\xfb\x00\n\x0b\x18\x13\x98\x01\x138\x89\x01H\xc9\x01X\x9b\x01\n\xf8\x00Y\x184\x13\x121\x021\x02#\xe0\x0f\x03\x12\x91\x01\x03\x12\x03\x02\x14\b\n\x1b#;\n[\n\x18\xf9\x00\xe8\x01Ih#\x18*+*(\x04\x13\x88\x01#8\x89\x01X\xa9\x01(\t\x18\n\xab\x01\nhY($\x13\x121\x021\x12\x13\x00\a\xc0\x0f\x03\x12\x91\x01\x03\x12\x03\x02\x14\b\n\x0b\x13\x1a;\x03\nK\n\x18\xf9\x00H)h9(\x198#\x18\x1a\x1b*H\x13(\x04\t(#\x18\xb9\x01X\x99\x01h\xbb\x01\nhY(\t\x14#\x12!\x031\x12\x13\x00\a\xb0\x0f\x13\x12\x91\x01\x03\x12\x03\x02\x14\x18\x1a\x0b\n;3\n\x1b\x1a\x18\xf9\x0089\xf8\x00)(9(\x138\x0b\x88\x01\x13(\x19\x18#X\xf9\x00h\x89\x01h\nk3\x1ahY(\t\x14\x02\x13\x12!\x12!\x12\x13\x00\a\xb0\x0f\x13\x12a\x02\x11\x03\x02\x13$8\nK\n3\x0b\x1a\xe8\x01)\xd8\x01I8\x13\xf8\x00)\x18\x13(\t\x18\x04\x13(\t(9\xa8\x03\n;\n+\n\x13\nhiH\x14\x13\"a\x12\x13\x01\x00\a\xa0\x0f\x13\x02\x91\x01\x02\x03\x02\x13\x14\t8\n;\x1a\b:\x0bX\xfc\x00\xf8\x00\t\xa8\x019X\x13\b\t(9\x18\x13H\x1389H\xfc\x00\xb8\x01)8\n\x1b\n\x03;\n\xa8\x01YH\x14\x13\x12A\x02\x11\x12\x13\x01\x00\a\xa0\x0f\x13\x02\x91\x01\x02\x03\x02\x13\x14HK\x1a\x98\x01\xac\x01h\x19\xa8\x01\x19h#89\x18\x13H\x1389(\xac\x01\xa8\x019(\n\x1b\x13;\n\xa8\x01YH\x14\x13\x121\x02\x03\x01\"\x13\x01\x00\a\xa0\x0f\x03\"\x01\x12Q\x02\x03\x02\x13\x148\nK\n\x98\x01\x1c\r\x0c\x8d\x01\x1cX\x04\xc8\x02\x13(9\x18\x13(\x13X9\b<M\\H\x04\x18Y\x18\n\x0b\x13\x1a;\nH)\x18iH\x04\x13\x121\x02\x03\x11\x12#\x00\a\xa0\x0f\x03\"\x81\x01\"\x13\x148*+\nX\x04\b\x1cm\x1e]\x0c8\t\x18I8)\x88\x01#8\t\x18\x13\x18#\x98\x01\x1c\xad\x01<Xi(\n\x03\n\b\n;\n\x0b8I898\x04\x13\"\x11\x12\x03\x11\x12#\x00\a\x90\x0f\x01\x03\"\x81\x01\"\x03\x02\x14X\x0b*\xf8\x00\x1c=\x0e\x1d.]\x0e\x0ch9(Y\x88\x01\x13X\x13\b#\x1898\x0c=\x1e\x8d\x01,\x18\t(I\x88\x01\n;\n(IHI(\x04\x02\x13\x12!\x02\x03\x11\"\x13\x00\x17\x80\x0f\x01\x03\"\xf1\x00\"\x13\x02\x14\xf8\x00\x1a\xf8\x00\x1c=\x0e\x1d.\xfd\x00\x0cX9\x18i8\t\b\t(\x13HC(I\x18,\x1d.\x9d\x01\x1ch)\x98\x01\n;\n(I8Y(\x04\x02\x13\x12!\x02\x03\x11\"\x13\x00\x17\x80\x0f\x01\x03\"\x01\x02\xf1\x00\x02\x13\x14\x98\x02\x1c\x1d\x0e\x1d\x0e-\x0e=\x1e-\x1c8I\x18iH\tH\x13(C(Y\x18,\x1d.-.=,\xa8\x0198\x1a\x1b\x1a\xb8\x01Y(\t\x04\x13\x121\x03\x11\"\x13\x00\x17\x90\x0f\x03\"\x01\x02\xf1\x00#\x14\x98\x02\x0c-\x0e\xfd\x01\x1cH)8\xf9\x00\x1898\x13\x1838I\x18,-\x1eM\x1e=<\x98\x0198*\x0b\xd8\x01Y(\t\x04\x02\x03\x12\x01\x02\x11\x03\x012\x03\x01\x00\x17\xf0\x02S\xb0\x0b\x13\x12\x91\x01#\x14\x98\x02\x0c\xbd\x01\x0cm\x1cX\tHY\xc8\x01\x13\b#8Y\x18\x1c-\x0e\xad\x01\x1e\r,\xa8\x01)H\x04(\t\xc8\x01I(\t\x04\x02\x03\x121\x12\x01\"\x037\xd0\x02\x023\x1f#\x90\x0b\x13\x12\x11\x02#!3\x14\x98\x02\x1c\r\xbc\x02\xb8\x019\xf8\x01CHI\b\x1c-.\x9d\x01\x1e\r,\xc8\x01\t\x88\x01\t\xd8\x01)8\t\x04\x02\x03\"1\x02\x01\x12\x137\xd0\x02\x13\x1f\x03?\x13\x80\x0b\x13\x12\xc3\x01\x02\x93\x05\xf4\x00\x184\x98\x01\x19\b\t\x14\x18C\xa8\x01\x1c-\xac\x02\x93\x02\xa8\x03\x043\x02A\x03\x01\x02\x13G\xc0\x02\x02\x03?\x03?\x13\x80\x0b\xf3\x00!\xf3\x02\x0c3L\xc3\x06\x88\x01L\xa3\x01@W\x00\x97\x01\x20\xb3\x04\"3\x017\xc0\x02\x02\x13\x0f\x03/\x03?\x13\xf0\n\x01#\x02a\x02S\xf8\x03\x13\x1c\x13\xf8\x00\xe3\x03\x10\xc3\x01\x00\a0\xe7\x05\x00'\x20\x1707\x11C\x01g\x80\x02\x12\x13\x02\x13_\x03?\x13\xe0\n3\x81\x013\x14\x88\x02\x03\xdc\x02\xd8\x01\xa3\x01H#\b#\xa0\x01\xf7\t\x00g\x90\x01\x12\xc3\x01\xbf\x01\x03\x02\xc0\n\x01\x13\x12\x81\x01\x02\x13\x02\x14X)\xf8\x00\x1c\xed\x01.\r,\xb8\x03\x13(\x13\b\x13\x97\x0c@\x12\x13\x12\xa8\x01\x02\x13\xff\x00\x03/\x13\xb0\n\x13\x12\xa1\x01\x13\x02\x14\x18\t\bYh,\x0e=\x1e-\x0e-.\x1d\x0c\x98\x02\t\x88\x01\x138\x13\x18\x13\x00\xe7\x0b\x20\x02\x13\x12\x88\x02\x13\xaf\x01\x13\x02\xa0\n\x13\x121\x02Q\x02\x03\x02\x14\x18\x89\x01h\x1c=>\r.\x1d.,\xf8\x00\n\x1b\n\x0b8)X#H\x138\x13\xb7\x0b\x10\x02\x03\x02H:\x0bHI(\x13\xaf\x01\x13\xa0\n\x13\x121\x02a\x03\x02\x14\x18\x89\x01h\x1c=>\x1d\x0e-\x1e\r,h\n;\n89\b\t(\x13X\x13H\x13\x00\x97\x0b\x02\x13\x02HK\n\x0b8Y\x18\x13\xbf\x01\x03\x02\x90\n\x03\"\xf1\x00\x02!\x13\x14\xa9\x01h<\x0e\r>\x8d\x01\x1c\nX\nK\n8Y\x18\x03\xf8\x00\x13X\x13\x00\xd7\n\x02\x03\x0c\xf8\x00\x02\x03[\x1a\x18i\x18\x13\xaf\x01\x13\x90\n\x03\"\xb1\x01\x13\x14\xe9\x018<-\x0e=\x1e=\x0c\xf8\x00k\n(I\x18\x03(9\x18\x138\t(\x13\x20\x17\x20'\xb0\b\x01\x10#\x02\x98\x01\x0b\n\x03k\n\b\xf9\x00\x18\x13?\x03_\x13\x80\n\x03\"\xb1\x01\x02\x03\x14\b\x89\x01\b9HL]\x0e-\x1c\x88\x01k\n()\x18\x138I\b\x138\x19(\x13\xc0\t\x02\x13\x02\xb8\x01\x1a\xbb\x01\bi(\x03\xbf\x01\x13\xf0\t\x03\"\xb1\x01\x02\x03\x14\x18Y(\x19\x04X\nL\xfd\x00\x1c\x88\x01\xfb\x00\n(\t(\x04\x13(Y\b\x138\x198\x13\x90\t\x02\x03\x0c\x02\xd8\x01\nK\n\x03;\b\n\x18Y(\x13\xaf\x01\x13\x02\xe0\t\x032\xb1\x01\x03\x02\x14\b9H\t\x04\t\x18\x0b8\x0b\x03\xac\x01\xb8\x01k\n\x18\t(\x13XI\b\x13(I(\x13\xe0\b\x138\x19\x04\t\xa8\x01\n;\n\x13;\n\x18Y8\x13\xaf\x01\x13\xe0\t\x132\xa1\x01\x13\x14\xc8\x01\x1a\x1b\x1aH\nL\xe8\x01\n[\n8#\xf8\x009\b\x13\b\xf9\x00(\x13\xa0\b\x02,\x03(\x19\x04\x19\x18)hZ\x13+\n(9X\x13\xaf\x01\x13\xd0\t\x01\x03\"!\x02\xf1\x00\x13\x148\x19h\x13;\n\x0b\xf8\x02\x1a;\x03\x0b(#H\t(9\b\x13\b\x99\x01(\x03\xf0\a\aL\r\xf8\x00ih\x04\x18\x1a\x03\x1b\n8\t\x98\x01\x13\xaf\x01\x03\x02\xd0\t\x032\xa1\x01#\x048)X\x13K\n\x88\x01\t\b\t\xb8\x01\x1a;\n\x0b(\x13X\t(9\b\x13\b\xa9\x01\x18\x13\xd0\a\x03\x1c\x1d,\xf8\x00i\xa8\x01J(\x19\x98\x01\x02\x03\xaf\x01\x13\xd0\t\x13\"Q\x121\x13\x04\xc8\x01\x03\x0c[\nhI\xb8\x01\x1a\x1b\x1a\x18\x13\xb8\x019\b\x13\b\xa9\x018\x03\xa0\a\x03\x0c\r\x1e\x1d,\x18\tHi\xb8\x01\x0b\n\x0b8\x19\xa8\x01\x13O\x03O\x13\xc0\t#\"\xa1\x01\x13\x04\xc8\x01\n\x03[\x1aXY\b\t\b\x04\xf8\x00:\x18\x138lH\t\b\x13\b\xb9\x018\x03\xe0\x06\x02\x03\x1cM,\x04\b\x19HY\xf8\x00I(\t\b\x19\x04\x19\xa8\x01\x13\xaf\x01\x13\xc0\t\x13\"\xa1\x01#\x04\xa8\x01\x0b\n\xfb\x00\nHi(I\x88\x01\x038,-L(\t\b#\b\xa9\x01H\x03\xd0\x06\x03\x0c\r\x0e\r.\r,\x04\b\t\xf8\x00\x19X\x99\x01\x18\x19\b)h\t8#\xaf\x01\x03\x02\xb0\t\x132\x91\x01\x02\x13\x04\x98\x01\x0b\n\xab\x018Y(Y\xf8\x00\x13(,M<(\t\b#\b\xa9\x01H\x13\xc0\x06\x0c\r\x1e\r.\r,\x04\xa8\x01\tX\x89\x01H9h)\x18\x02\x13O\x03O\x13\x02\xa0\t\x13B\x91\x01\x02\x03\x048\t(\x1a\xbb\x01\nHI(iH#(\x03\x0c\x9d\x01\x1c\b\x19\b\x138\x89\x01h\x03\xa0\x06\x1c\x1e\r.\r,\x04\x98\x02\x99\x01\xe8\x01I\x18\x02\x03\xbf\x01\x13\xb0\t\x02\x03\"1\x02a\x13()\b\x03k\n\x03K\nX)(\xf9\x008#8\x1c\x1d\x0e=\x0e\x1d\x1c\x18\t\b\x13XY\x88\x01\x03\xf0\x05\x02\x1c\r\x0e-\\\x04\xa8\x02\xf9\x00\xd8\x01i(\x13\xbf\x01\x13\xb0\t\x032\xf1\x00\x02\x11\x13\x04\x18)\b\n[\x1a\x13;\n\xb8\x01\xf9\x00(\x13X\x0c\x1d.-\x0e-\x1c\b\t\b\x13\x88\x01\t\xb8\x01\x13\xc0\x05\x02\x03\xac\x01\x14\x19\xf8\x00*\xf8\x00)\x18\t\xe8\x01\xf9\x00\x18\x02\x03\xbf\x01\x13\x02\xa0\t\x13\"\xf1\x00\x02\x11\x02\x13\x18)\b\nK*\x13;\n\xb8\x01\xf9\x00\x18#H\x1c\x1d.m\x1c\r\t\b\x13\xd8\x02\x13\xc0\x05\x03\x02\xac\x01\x04\b\t(\x04H\n\b\x1a\xf8\x00\t\xf8\x00\x04\x98\x01\xf9\x00(\x03\xcf\x01\x03\x02\xa0\t\x132\xa1\x01\x13(\x19\x18\n+\x1a\b\n\x13+\n\x189hi\x18\x13h\x1c\x1d.-\x0e-,\x18\x138\tH\x0b\x1a+\x1aX\x03\xa0\x05\x03\x028,H\t(\n\x1b\x03\n\x18\n[\x1a\x98\x01\xec\x01\x98\x01\x02\x03\xcf\x01\x03\x10\x025\xb0\b\x01\x032\xa1\x01#\x18\t(\x1a\x0b\n(\x0b\x13\x1b\x1a8\x04\thI\x18#\xf8\x00\x1cm.\x1d,\x18\x13()8\n\xfb\x00\x1a8\x03\x80\x05\x12\x18\th\tH\n+#\xfb\x00\n\x88\x01\x0c-.=>\x1d,8\x19\x18\x13\xbf\x01\x13\x15F\x05\xa0\b\x13\"1\x12Q\x13\b\tH\x1aH\x1a\x0b\x1a\x0b\xa8\x02\x13\x98\x01\x1cM\x1e\r\x0e-,\x18\x13\x189(\n\xab\x01\n8\x13\xd0\x04\x02\x03\x18\x04\xd8\x01K#[\n\x88\x01\x0cM\x1e=>-\x0e\r\x1cX\x02\x03\xcf\x01\x03\x15V\xa0\b\x1321\x02Q\x13\b\tH\x1aX*\x0bh\x04\xa8\x01#\x98\x01\x1cM\x1eM,\x18\x13()(\n\xab\x01\x1a(\x13\xd0\x04\x13\xf8\x01[#K\x1a\x0b\xf8\x00\x0c\r\x0e\x8d\x01>]\x1cX\x13\xbf\x01\x03\x02\x156\x05\xa0\b#2\x91\x01#\xa8\x01\x19\x98\x01\x9c\x01\x03\x18#H\x198\x1c\xbd\x01,\x18\x138\t8\n3\xfb\x00\x1a8\x03\xc0\x04\x03XIX\x8b\x02h,\x1d\x1e\xdd\x01\x0e-\x0cX\x03_\x03_\x03\x02\x15\x16\x15\xb0\b\x132\xa1\x01\x13\xb8\x0198,\x8d\x01<\x03HI8\x1c\xad\x01,\x18\x13H\t8\x1a#\xfb\x00\nH\x03\xb0\x04\x03(\xf9\x00h\xbb\x013\n\x18\t(<].\x8d\x01\x0e-\x0cH\x13\xbf\x01\x13\x15\x16\x05\xc0\b\x132\xb1\x01\x13\xa8\x019(\x1c\x1d\x0em\x1c\b\x13Hi(\x1c\r\x0e\x1d.=\x1c(\x13\xb8\x01\x0b\n\x8b\x01\nX\x13\x90\x04\x02\x18\x89\x018\x19\b\n\xab\x01#\x0b\n\x18\t8L=.=.M,8\x02\x03_\x03O\x13\x02\x05\x16\x05\xc0\x01\a\x00\a\xc0\x06#\"\xb1\x01\x13\xa8\x019(\x1c\x9d\x01\x0c\b#H\xf9\x00\x18\x1c=.-,(\x13\xf8\x00\t8\n+\x13;\nX\x13\x80\x04\x12\x18\x89\x018\x19\b\x04\n\xdb\x01\n\b)(\xfc\x00\xfd\x00.M,H\x03_\x03O\x13\x02\x05\x16\x05\xf0\x00\a\xf5\x00\xc0\x06\x132!\x02!\x02!\x02\x13(9(9\x18\x1c=.\x1d\x1c\b#\b\x0c8\xf9\x00\x18<\x1d.-\x1c8\x13h\x19(\n;#\x1b\x1a\xf8\x00\x03\xf0\x03\x02\x18\x99\x01()\x18*\xbb\x01\n\b)8\x04\xac\x01\x8d\x01<\x04H\x03\xbf\x01#\x05&\x05`\x05f\x05\xc0\x06\x01\x032\xb1\x01\x13(9\xf8\x00\x1cM.\r\x0c\x18\x1c\x18,(i8<M,H\x13h\x19(\n+\x1a#\x1a\x98\x01\x03\xe0\x03\x03\x18\x89\x01(I(\x04\n\x8b\x01\b\n(\tH\x19\x18\x9c\x02\r\x0c\x14H\x13_3\x0f#\x05&\x05P\x05\xf6\x00\x05\a\xc0\x06\x13\"\xb1\x01#\x189\xf8\x00\x1c]\x1e\x0c\b\x03\x1c\b\x03L\x18iX\xfc\x00(\t(\x13\x98\x01\x0b\n;\n\b\x1b\x1a\xa8\x01\x13\xd0\x03\x03\x18\xf9\x00\x98\x01\x1b\b\x0b*;*\x98\x01)($\xdc\x01\x14\b\t83\x0f\xa3\x01\x05&\x050\a\x00\x05\x16%&\x05\xd0\x06\x01\x032\xa1\x01#()\x18\tH\x1cm\x0c\x03\b,\b\\\x18ihL\x88\x01\x13\x98\x01\x1a;\n\x88\x01)H\x13\xc0\x03\x03\x18Y\x98\x01\x02cZ\x04\xb8\x01)\x18$(\xac\x01\x04\x18\t8\xf3\x01\x05&\x05P\x05\x165\x16\x05\xe0\x06\x032\xa1\x01#8I8,\r.\x1d\x0c\x18\x0c\b\x0c\b\x0c-,\x18i\xd8\x01\tX\x13\x98\x01\n\x0b\n+\n\xf8\x009X\x03\xc0\x03\x03\x189\x98\x01\x13\xf2\x00\x13\x02\x98\x01\x02XIH4h\x19H\x04\xf3\x01\x05&\x05@\x05&5\x16\x05\xe0\x06\x01\x03\"1\x02a#(Y(,\r.\r\x0c\x18\x0c(\x0c=<\bY\xa8\x01\t\x98\x01\x138\t\xf8\x00*\x88\x019h\x03\xa0\x03\x12\x18\x19h\t(\x03\xb2\x01\x138\x02\x83\x01\x04\b9\bi\xa8\x01\t8\x04C\xf2\x00#\x05&\x05@\x05&5\x16\x05\xf0\x06\x132\x91\x01#8I(,\x1d\x0e\r\x0c\b\x03\x1c\b\x1c\r\x0e-<\x18Ih\t\x18\x198I\b\x13\x18YX\x0b\n\x18)89(\t8\x03\x90\x03\x03\x88\x01)\x18\x04\x03\xc2\x01\b\x03(\x02\x03\x82\x01\x13\x028\x19\x04\t\xb8\x01\tX\x04\x02#\x92\x01\x13\x05&\x05P\x05\xf6\x00\x05\xf0\x06\x132\x91\x01#8I(,=\x0c\b\x1c\b\x1c\x1d\x1e\x1d<()\xa8\x01\tHI\b\x13\x18i\x88\x01)8)8\x19(\x13\xf0\x02\x02\x03\xb8\x01\x14\x02\x13\xb2\x01\b\x03\x02\b\x02\x13\xa2\x01\x038\x19\x04\xd8\x01\tH\x04\x02\x13\xa2\x01\x13\x05&\x05P\x05\xf6\x00\x05\xf0\x06\x01\x132A\x12\x11\x02#(I(,-\x0c\b\x13\b\x03=\x0e-<\x88\x01)8)(Y\b\x13\x18\xf9\x00\x18\x19(I\xf8\x00I(\x13\xd0\x02\x02\x03H\x03\"\b$\x02\xc3\x01\"\x03\x02\b\x04\x02\x03\xb2\x01\x03\x02(\x19\xa8\x02\x04\x02\x04#\xa2\x01\x13\x05&\x05`\x15&\x05\x16\x05\x80\a\x01\x032\x91\x01\x02\x13(I(<\r\x0c\x03\x0c\x03\b\x03\x0c\xfd\x00,\x88\x01I()(i\x13\b\xf9\x00(9\x189hi8\x03\xc0\x02\x03H\x03\x00\x12C\x02\x00G\x00\a\"c\x02\x04\x13\xd2\x01H\x04#\x028)X4\x03\xc2\x01\x03\x02\x05&\x05\xf0\x00\xf5\x00\x90\a\x132\x91\x01#\x98\x01\x04\x0c\r\x1c#\b\x1c\x8d\x01,hi\x98\x01Y\x13\x18i(\x19\xe8\x01YX\x03\xa0\x02\x02\b\x02(\x03\x02'0\xe7\x01\x20\a\x12\x93\x01B\x038\x02\x132\x13\x02$8D\x02\x13\xc2\x01\x03\x02\x05&\x05\x90\t\x132A\x0213\x18\thL\x03\b\x03\x1c=\x1e-,h\xf9\x00\x88\x01Y\x13\x18i\xb8\x02YX\x03\xa0\x02\x03\x02(\x02\x03\x00\xb7\x01\xf0\x00'\xf0\x00\x12c\"\x038\x02\x03R#\x02\x84\x013\xb2\x01\x13\x02\x05&\x05\xa0\t\x03B\x91\x01#\x98\x01<\x03\b\x03\x0c]\x1e\x1d<X\x89\x01\x98\x019\b\x13\x18i8\x9c\x01hIh\x13\x80\x02\x12(\x13\x02\x17\xf0\x02\a\x10'@\x12C\x02\x18\x04\x03\xf2\x00\xe3\x01\xc2\x01\a\x03\x15&\x05\xa0\t\x13RA\x12\x11#\x88\x01\x04\x03\x0c\x03\b\x1c\r.=\x0e\x1d,\xf8\x00iX)h\x13\x18I8\x1c\x8d\x01,H9\x98\x01\x03\x80\x02C\x02\xc0\x03\xd7\x01\x00\x03(S\xf2\x00c\xf2\x01\x03\x02\x156\x15\x90\t\x13R\x81\x01\x023h\x1c\x13\x0c\x1d>],\x98\x01Ih9X\x04\x03\x189(\x1c\xbd\x01\x0e\x1c(9\xb8\x01\x03\xb0\x02\a\x90\x04\xa7\x01\x003'\x02\xf3\x00\xc2\x02#\x02\a\x05V\x05\x90\t\x13R\x91\x01\x02#\x04\b)\x18\x13\b\x1c\x1d>],\x98\x01\x19\xf8\x00YX\x04\x03\x189(\x0c\x9d\x01\x0e=\x1c\x18\t\x18\t\xb8\x01\x13\x90\a\xf7\x00#\x00G\x12\x93\x01\xd2\x013\x12\a\x05\x036\x05\xa0\t\x01\x13R\x91\x01\x02#4#\x18<.],H:X\n\x0bHYX\x03\x18\x198\x0c=\x1e=.=\x1c\x88\x01*\x0bH\x13\xe0\a\xa7\x02\x05\x93\x02\x02\x10\x12e\xc0\t\x13\xf2\x00\x81\x01\x023\x04#8L=LH\n+\n8\x1a\x0b\nXIX\x03\x04X\x1c\x1dN\x9d\x01\x1ch\n\b;\nX\x03\x90\x01%\x90\x06G\x20\a\x02\x17@\xf7\x01\x00G\x00\x05\x02\x06\a\x05\x80\n\x13\xf2\x001\x02Ac(\t(\x9c\x01h+\n\x03\x0b\x18\n;X9h\x13H\x1c-^-\x0e]\x1chK\nh\x03\x80\x01\x05\x06\x05\xc0\x06\a\x90\x01\x97\x03\x05&\x05\x80\n#b\xa1\x01C\x88\x01\xfc\x00h\n+\x13\x1b\n[H9h\x13H,\x1d^-\x1eM\x1chK\nh\x03\xf0\x00\x15\x06\xb5\x01\x10\a\xc0\x06\xd7\x02\x00\x05&\x05\x90\n\x13\xf2\x00\xa1\x013\xf8\x02\n+#k\nH9h\x13H\x1c-^-\x1e]\x0ch\n;\n(\t8\x13P\x15\xc6\x01\x05\a\xd5\t&\x05\xa0\n\x13\xf2\x00Q\x02!3\x18\t()H\x19\xf8\x00\n+\x1ak\x1aH9(\x19\x18\x138,=\x1e]\x1e]\x0ch\n;\n\x98\x01\x03@\x05\x86\x0c\x05\xb0\n#ba\x02SH9\xd8\x01\n\xab\x01\x1ah\x19(9\b\x138,\xbd\x02\x0c\xf8\x00\n[\n\x0b(\t\x18\x130\x05\x86\x0c\x05\xb0\n#R\x03\x02Q#\x02#H9\xd8\x01\n\x8b\x01*\xc8\x01\t\x04\x19\b\x138,\xed\x01\x1e-\x0c\xf8\x00\n;\x1a\x13\n\x0b8\x130\x156\x005\xe6\n\x05\xb0\n\x01#R\x03\x021#13\x189H\x19\xf8\x00\nk\n\x1b\xd8\x019\b\x138,M\x0e=.\x1d.\x1d\x0ch\x0b\n;#\x0b\x1a\b\t\x18#\x20\x15\x16\x15P\xf5\x04\xd6\x05\x05\xc0\n\x01\x13b\x03\x02\x11\x02\x13\x02A3\xf8\x00Ih\x1a[#\x18\t\x18)\xf8\x00\t\x18\x138,=.-.-\x0e-\x0cH\n#;\x1a\x1b\x1a\b\x19\x18#\x01\x00\x15\x16\x05\xa0\x06\xe5\x04\x16\xf0\n\x01\x13b\x03\x02\x01\x13\xf1\x00CHYH\t\x18\x1a[\x13\x0b89\x98\x01\x138,->=\x1em\x0c8\n\x1b\x13\xfb\x00\x1a\b\x19\bC\x01\x15\x06\x05\x80\x0b\a\x05\x16\x05\xf0\n#b3\xf1\x00\x02CHI8\x19\x18\x1a\xfb\x00\n89\x98\x01\x138,->\xcd\x01\x0c8\n\xcb\x01\n\b\x19\bS\x15\x06\x05\x90\x0b\x05\x06\x15\xf0\n\x013B#\x11\x02\xf1\x00C89H\x198\x1aK\n\x0b(I\x18\th\x138,=\x1e-\x0e=\x1e=\x0cH\n\xab\x01\x1a8\x13\x01\x02#\x15\xb0\x0b\x15\xa0\x0b\x01\x93\x01\xd1\x01#(\x19\xf8\x00\tH*\x0b*h\tX\x1a(\x138\n\x1c\xfd\x00\x1e=\x1e-\x0cX\x1a\x8b\x01\nH\x13!3\xf0\x17#\x02\x03\xe1\x013\xb8\x01\x19H*\xe8\x01\n\x1b\n\x0b\n#\x1a\x18,\x8d\x02\x1cX\x0b\x1aK*8#13\x01\xb0\x17\x01\x00\a\x13\"\x03\xe1\x01#\xb8\x01\x19\xd8\x02;\n\b\n#\x1a\x18,\x8d\x02\x1c8\t(\xfa\x008\x13\x02AC\xc0\x055\xa0\x11\x17\x132\x03\x81\x02#\x98\x019\xa8\x02\nK\n#;\x18,M\x1e\xfd\x00\x1c(9\xc8\x01\x13\xf1\x003\x10\a\xe0\x04%6\x15\x90\x11\a\x13B\x03\x02Q\x12\xf1\x003\xf8\x00)\xc8\x02\x03[\x13+\n(,-.m\x1c(I\xa8\x01\x13\x91\x01C\a\x00\a\xc0\x04\x15V\x15\xa0\x11#b\x81\x023\xf8\x01\xf9\x00X\x0b\nK\x13+\n(\x04<\x0e\xfd\x00,(Y\x98\x01\x03a\x02A3\x00'\xb0\x045&\x05\xc0\x11\x01\x13b\x91\x023\xd8\x01\x99\x01X\nK\x13\x1b\x1aH<]<(i\x88\x01\x13\xc1\x01\x02#\x00'\xc0\x04%&\x05\xd0\x113R\x01\x02\x81\x023\xb8\x01\xa9\x01X\n;\x13\x0b\x1a\x88\x01\x8c\x018\xf9\x00h\x13\xf1\x01#\x10\x17\xd0\x04\x15&\x05\xe0\x113bQ\x02!\x02\xf1\x003\x98\x01\xb9\x018\x0b\x1a+\x13\x1a\xe8\x02iH#1\x02a\x02!\x02\x13\x02\x03G\xc0\x04\x05&\x15\xf0\x11\x01#b\xb1\x0238\t(\xb9\x01(\n#\x1b\n\x13\n\xc8\x02\tH)(C\xf1\x01\x02\x03\"\x03\x01G\xa0\x04\x15\x16E\xf0\x11\x01#R\xc1\x02#h\x89\x018\x0b\n[\n\x13(\t\xa8\x01\x19H\x19\xf8\x003\xa1\x01\x02A\x02\x132\x03g\x90\x04\x05V\x15\x80\x12\x01#b\xb1\x023X\xf9\x008\x1aK\x1a\x13(9\xf8\x00)\xb8\x01C\x81\x02\x02\x132\x13g\x80\x04\x15V\x15\xf0\x11\x17\x10\x13bA\x02\xe1\x013hI8\x1a;*\x03\x04(IXI\x88\x013\xc1\x01\x021\x82\x01\x03\x00g\x80\x04\x85\x01\x90\x127#R\xd1\x02Ch\tXJ\x18\x138Y8YX3\x91\x01\x12\xf1\x00\x82\x01\x13\xf7\x00\xc0\x177\x01#Ra\x02Q\x02Q\x02S\x98\x02\x13(i8\t\b\x19H3\x02\xa1\x02\x02\x03\x82\x01\x13\x87\x01\xe0\x17'\x01\x13b\xc1\x01\x02a\x02S\x88\x02\x13(i\xa8\x01C\xb1\x02\xa2\x01\x13\x00\x87\x01\xf0\x177#b\xd1\x023\xb8\x019\b#\x18i\xf8\x00Ca\x021\x02Q\xd2\x01\x13\x01\x97\x01\x80\x187#b\x03\x02\xf1\x01\x12A3h\t\b)\b#(Ih3\x02\x81\x02\xf2\x01\x13\x01\xb7\x01\x80\x18G\x01#b\x13Q\x12\xe1\x01\bS\x02h#\xa8\x01\x02#\x02\xa1\x02\xf2\x01\x13\x01\x00\xb7\x01\xa0\x187\x003\x82\x01A\x12\x81\x02\x02c\x0283\x018!\x02#\x02\xa1\x02\x82\x02\x13\x01\x00\xc7\x01\xb0\x18G\x01#\xf2\x00\x03\x02a\x12\x91\x02\x02\xd3\x02\xb1\x01\x02A\x92\x02#\x01\xd7\x01\xd0\x18W#\x82\x01\x03\x02\x91\x04#\x01S\xf1\x01\x02\x11\x92\x02#\x01\xf7\x01\xf0\x18W\x013\xf2\x00#\x02\x91\x01\x02\xb1\x02\x13\xd1\x01\x02a\xb2\x02#\x01\x00\xd7\x01\xb0\x19W\x013\xb2\x01\xd1\x03\x13\x81\x01\x021\x02Q\xb2\x02#\x01\x00\xe7\x01\xc0\x19g\x013\xb2\x01\x11\x12Q\x12\xf1\x01\x13A\x021\x12A\xc2\x023\x00\x87\x02\xf0\x19\xf7\x00S\xb2\x01\xd1\x01\x02\x81\x01\x13\xb1\x01\xe2\x023g\x00\xb7\x01\xa0\x1a\x87\x01\x01S\xb2\x01\xb1\x02\x13A\x92\x03C\xb7\x02\xe0\x1a\x97\x01\x01C\xe2\x01\xf1\x01\xf3\x00\xd2\x02S\xb7\x02\x90\x1b\xa7\x01\x00\xf3\x00\xb2\x02\x83\x01\xc2\x02S\x02\x01\x20\xa7\x02\xe0\x1b\xb7\x01\x01c\xe2\x02#\xd2\x01c\x01\xa7\x03\xa0\x1c\xd7\x01\x01c\x82\x02#\x00\x13\x92\x01#\x02\xf7\x03\xc0\x1c\xf7\x01\x01c\xe2\x01#\a\x01\x13\xf2\x00#\x01\x00\xd7\x03\x80\x1d\xa7\x02\x01\xf3\x00b3\x01'\x83\x01\x01\xd7\x03\xf0\x1d\x97\x02\x00\x17\xd3\x01\x01G\x001\x10\xc7\x03\xc0\x1e\x97\x031\xa7\x05\x80\x1f\xc7\b\xd0\x1f\xc7\a\xc0\x20\xf7\x06\x90!\x87\x06\x80\"\xb7\x05\xa0\a5\xb0\x15U`E\x80\x02U\x20\xb7\x04\xf0\x05\xb5\x01\x20\x15\x16\x15\xa0\x15\x056\x05`\x05&\x05\x80\x02\x056\x05`\xb7\x03\xb0\x06\x05\x86\x01\x15\a\x10\x056\x05\xa0\x15\x056\x15@\x056\x05\x80\x02\x056\x05\xb0\x01\xc7\x01\xd0\a\x05\xa6\x01\x05\x10\x056\x05\xa0\x15\x05F\x05@\x056\x05@\a\x00\x05\x00\x05\xf0\x006\x05\xe0\n\x05\xa6\x01\x05\x10\x056\x05\xa0\b\a\xf0\x0c\x056\x05@\x056\x050\x85\x01\a0\x05&\x05\x20E\x20U\x80\x015@%\x90\x01\xf5\x00\xe0\x03\x05\xb6\x01\x10\aE\xa0\x01\xa5\x01\x90\x01\xa5\x01\xd0\x01\xb5\x01\xe0\x0c\x056\x15\x20\x056\x050\x05\xf6\x00\x150\x05&\x050&\x20\x156\x05\a\x005\x00\x156E\x16%`\x05\xf6\x00\x05\xc0\x015\xc0\x01\x056%6\x15\x00U\x80\x01\x15\x96\x01\x05\x80\x01\x05\xa6\x01\x05\xa0\x01\x15V\x056\x05\xf0\x0c\x056\x05\x10\x156\x05\x20\x05\xa6\x01\x05\x10\x15&\x05\x10\x056\x05\x10\a\x056\x05\x10\x05\xb6\x01\x05V\x150\x15\x96\x01\x15\x90\x01\x056\x20\x05\x80\x01\x056%6\x15\x00\x056\x05\x80\x01\x15\x96\x01\x05\x80\x01\x05\xa6\x01\x05\x80\x01\a\x15\xb6\x01\x05\xf0\x0c\x156\x05\x00\x156\x05\x20\a\xa6\x01\x05\x20\x05&\x05\x206\x05\x20\x056\x05\x10\x05\xb6\x02\x050\x05\a\xa6\x01\x05\x80\x01\x15f\x15\xf0\x00\x056%6\x05\x10\x056\x05\x20\x150\x15\x86\x01\x15\x00\a%\a\x20\x05\x96\x01\x05\x20%0\x15\xc6\x01\x05\xf0\x0c\x156\x05\a\x05F\x05\x00\x15F%F\x05\x10\x056\x206\x05\x20\x056\x05\x10\x05\xb6\x02\x050\x05F%F\x05\xf0\x00\x15f\x05\x80\x01\x05\xa6\x01\x05\x00\a\x056\x05\x00\x15\x16\x15\x10\x15\x86\x01\x05\x10\x15\x16\x05\x20\x05\x86\x01\x15\x00\a\x05\x16\a\x05\x20\x1565F\x05\x80\r\x056%6\x05\x10\x156E6\x05\x10\x056\x05\x1060\x056\x05\x10\x05F%V\x15F\x20\x056e&\x05\xf0\x00\a\x05f\x05\x80\x01\x05\x96\x01\x05\x20\x0565&\x05@%F\x05\x10\x056\x05@\x15F\x05\a\x00\x056\x05\x20\a6U6\x05\x80\r\x156\x056\x15\x10\x05F5\a\x05&\x05\x10\x056\x05\x10\x056\x20\x056\x050&\x15\x10\x056\x05\x10\x056\x05\x10\x05\xd6\x01\x05\x80\x01\x95\x01\xf0\x00\x05\xf6\x005\x10\x056%6\x05P\x05F\x05\a\x10\x056\x05P\x056\x05\x20\x056\x05\x10\x056e6\x05\x90\r\x056\x056\x15\x10\x1565\a\x05&\x05\x10\x056\x05\x10\x056\x05\x10\x056\x05\x206\x15\x10\x056\x05\x10\x056\x05\x10\x05\xd6\x01\x05\x80\x01\x05f\x15\xf0\x00\x05V%\a\x05\x20\x0565&\x05@\x05V\x05\x20\x05&\x05P\x05F\x05\x20\x15&\x05\x10\x056e6\x05\x90\r\x056\x056\x05\x20\x156U&\x05\x00\x156\x05\x10\x056\x05\x10\x056\x05\x206\x05\a\x10\x056\x05\x206\x05\x10\x05\xd6\x01\x05\x80\x01\x05f\x15\xf0\x00\x056\x15\xf0\x00\x056\x05\x105P\x056\x15@5@\x156\x05@5\x20\x056e6\x05\x90\r\a\x05f\x050\x156\x15\a\x156\x05\x00\a\x056\x05\x10\x05656\x05\x10\x056\x05\x20\x05&\x050\x05&\x05\x10\x056\xa5\x01\x80\x01\x05f\x15\xf0\x00\x056\x05\x80\x01\x05F0\a`\x056\x15\xd0\x01\x05F\x05\xb0\x01\x05FU6\x05\xa0\r\x05f\x050\x15F%F\x05\x10\x056\x05\x10\x05F\x15F\x05\x10\x056\x05\x20\x05&\x050\x05&\x05\x10\x056e\x06\x15\a\x80\x01\x85\x01\x80\x01\x056\x05\x80\x01\x05F\xa0\x01\x056U\x90\x01\x056U\x90\x01V5F\x05\xa0\r\x05f\x05@\x05V\x05V\x05\x10\x056\x05\x10\x05\xa6\x01\x15\x10\x056\x05\x20\x0560\x05&\x15\x00\x056U\x16\x15\xb0\x01\x15\xd0\x01\x056\x05\x80\x01\x05F\x05\x90\x01\x056U\x90\x01\x056e\x80\x01\x05V%F\x05\xa0\r\x05f\x05P\x05\xa6\x01\x15\x10\x056\x05\x20\x05\x96\x01\x05\x20\x056\x05\x20\x0560\x05&\x15\x00\a\x05\xc6\x01\x05\xa0\x03\x056\x05\x80\x01\x05F\x05\xf0\x00\a\x05\x96\x01\x05\x90\x01\x05\x96\x01\x05\x80\x01\x15\xc6\x01\x05\xa0\r\x15F\x05\a@\a\x15\x96\x01\x05\x20\x056\x05\x20\x15\xf6\x00\x15\x20\x056\x05\x20\x056\x05\x10\a\x05&\x15\x20\x05\x96\x01\x15\xb0\x03\x056\x05\x80\x01\x05F\x05\xf0\x00\x15\x96\x01\x05\x80\x01\x05\xa6\x01\x05\x80\x01\a\x15\xb6\x01\x05\xb0\r\x156\x05\x80\x01\x15F%0\x05&\x150%6%0\x15&\x05\x20\x15\x06\x00\a0\x05&\x150\x15f\x05\xd0\x03\x056\x05\x90\x01\a6\x05\xf0\x00\x05\xa6\x01\x15\xf0\x00\x05\xa6\x01\x05\xb0\x01%&\x156\x05\xb0\re\x90\x01\xf5\x00@EP\xf5\x00PE050E@%\a6\x15\xe0\x03E\x90\x01E\x80\x01\xc5\x01\x80\x01\xc5\x01\xc0\x01\xb5\x01\xe0\r\x05\x90\x02\a\x80\x01\a\xf0\x02\x05\xe0\x01\x05\a\x80\x01\a\x005\xf0\a\x05`\a\xc0\x01\x17\x20\x05\x00\a\xc0Y"
)

Niveau mémoire heap à l'exécution, nous avions donc
$mathjax$40+16×(8+40+3×(8+28))+33+9197×1×1$mathjax$
soit 11,766 Ko ; en théorie ça passait chez tout-le-monde.

En pratique toutefois, rien que pour les données du bytes cette écriture utilisait 32995 caractères, nécessitant donc au moins 32,995 Ko en mémoire de stockage.

Rappelons ici aussi les pires modèles sur ce critère :
  • NumWorks avec seulement 32,766 Ko d'espace de stockage pour les scripts Python
  • éditions Python des TI-83 Premium CE et TI-84 Plus CE qui certes offrent un espace de stockage de 3 Mo, mais limitent la taille maximale de chaque script Python à seulement 64 Ko

Sur les TI-83 Premium CE et TI-84 Plus CE ce n'était pas bien grave, car il te suffisait d'utiliser à la place le format de fichier externe propriétaire IM8C.8xv.

Par contre ici pour le coup, bien que parfaitement exécutable en théorie, il t'était impossible de faire rentrer le script affichant l'image sur la NumWorks. :mj:

Pas question de remettre en cause radicalement cette façon d'écrire, mais on peut mieux faire. Plusieurs améliorations ont été développées dans le cadre du formidable concours de dessin de Noël 2021 par Casio, avec une période de participation accessoirement prolongée jusqu'au 31 janvier 2022.

Ces améliorations viennent d'être mises en place et nous allons te les présenter.

Concernant les échappements courts sur 2 caractères pour coder un octet non affichable sous forme de caractère, img2calc en gérait jusqu'à présent 5 :
  • \a (7)
  • \b (8)
  • \t (9)
  • \n (10)
  • \r (13)

2 nouveaux échappements courts sont maintenant gérés :
  • \v (11)
  • \f (12)

Pour les autres octets correspondant à des caractères non affichables, était donc jusqu'à présent utilisé un échappement hexadécimal sur obligatoirement 4 caractères.

Et bien à la place on peut utiliser un échappement octal, qui a l'avantage d'accepter un nombre variable de chiffres, de 1 à 3. Par exemple :
  • au lieu de \x00, l'octet de valeur 0 peut être écrit \0
  • au lieu de \x07, l'octet de valeur 7 peut être écrit \7
  • au lieu de \x08, l'octet de valeur 8 peut être écrit \10
  • au lieu de \x1F, l'octet de valeur 31 peut être écrit \37
On gagne ainsi 2 caractères dans l'écriture des octets inférieurs à 7, et 1 caractère dans celle des autres octets jusqu'à 31.

La seule contrainte pour les échappements octaux courts avec seulement 1 ou 2 chiffres, est que l'octet suivant si correspondant à un caractère affichable, ne doit pas être un chiffre de 0 à 7.

Reprenons notre icône. Comparons avec ce que donne maintenant img2calc :
Code: Select all
palette = (
(255,255,255),(55,109,157),(255,203,64),
)

image = (
#b"\x10\x11\x20\x01\x00\x11\x1c\x19(\r\x10%\x0c)\x00\x06\x00%\x04\n\r\x18\x0e\t\x04&\x00\x05\x00*\x0c&\x10\x0e(\x1a\x1c\x12\x00\x02\x20\x12\x10"
b"\20\21 \1\0\21\34\31(\r\20%\f)\0\6\0%\4\n\r\30\16\t\4&\0\5\0*\f&\20\16(\32\34\22\0\2 \22\20"
)

L'écriture des données du bytes subit une réduction remarquable, n'utilisant plus 140 caractères mais seulement 91. :D

Une formidable réduction en conséquence de 35% de l'espace occupé en mémoire de stockage, il y a de l'espoir... ;)

Revenons donc à notre image plein écran.

Voici ce que sort le nouvel img2calc :

Code: Select all
palette = (
(215,187,149),(239,183,116),(198,122,27),(90,45,18),(190,143,18),(255,255,247),(0,0,2),(190,172,149),(231,187,99),(239,163,18),(149,105,45),(207,176,107),(73,0,0),(149,67,64),(182,114,116),(247,195,133),
)

image = (
b'\xb0\r\21"\1\xb0&\xe3\1\xf0\0\21\xa0$\1C\x021\2\xf3\0\1\20\x93\1\1\x80#\1c\xc1\x013\1\23\x91\1\2#\21\x80"\1\xf3\0\2Q\2\xf1\0S\xb1\1\x023\1\xb0!\xf3\0\22\xa1\2\2#\x91\2\x83\1\1\xf0\37\1S\x91\3\x131\2a\22\x91\1c\1\xa0\37S\2\xf1\0\2\xa1\1\2\xf1\0\3a\2\x91\2\xf3\0\xf0\36S\x91\1\2\xa1\1\2\xf1\0\3a\2\xb1\2c\1\xb0\36S\x91\2\2\x81\1B\3\2\x91\2\2\xd1\1\2#\1\xe0\35\x013\xc1\2\2\xf1\0R\3\xa2\2\x81\x023\2\1\xa0\35#\2A\2\xf1\0\2!\2\x81\1\x92\1\23\xe2\2a\2Q\x023\x80\35#\2Q\2\xf1\0\2\xa1\1\xb2\1\23\x82\2\xf3\0\xd1\x013\xb0\34\1\0\1#\xf1\2\x82\2\23\x82\3\23\2A\2a3\x90\x1c3\xc1\2\xd2\2#\x92\3\23\2\xc1\1#\xe0\33\1#\xa1\2\xf2\1\xc3\2\2\4\xa2\2\3\x121\2\xf1\0\23\1\xc0\4\25\xb0\26\1#\2\x81\2\xe2\1\x93\2\22S\22\4\x82\2\23\2!\2\x81\1\23\1\xf0\1\xf5\0\x005`%\xc0\x015\x80\24#!\2A\2\x81\1\x92\1S\2\4\2\xf4\0Cd\2\xc3\1\xe2\1\xa1\1\2\23\xe0\1\5V%\26\5\a@\5&\5\xb0\1\5\26\5\xe0\23\1\23\2\x81\2\x82\1C\2\x84\2#\xa4\2\x023\xc2\x011\22Q#\1\xb0\1\5f\25\26%0\5&\5 \a5\0\a\20\5\26\25\a\5\0\x050\a\0\a\xf0\0%P%P%\a\xd0\2\5\0\5\0\5\x80\v#\xf1\1\x82\1C\2\xb4\2\23\xe4\x023\xd2\1\xa1\1#\xa0\1%\26E&5\x105 \x156E\26%\6\0\25\0E\a\25 \25&\25\20%\26%\a\25&\25`\5\xa0\1\25\26\25\6\25\xd0\n#\xf1\1\2\3RC\xe4\2\23\xe4\2\x123\xb2\1\xb1\1\23\2\x90\1%\26EV\a\5\0\25\6\25\20\5V5\26\x156\25\26\5&\25\0\a\25F\5\20\x156\25\a\5F\25@UP\25f\5\xb0\n\1#\xe1\1\2\3R3\x94\3\23\xa4\3\2#\xb2\1\xb1\1\23\1\x90\1\5\26\25\20\5f%&%\xf6\0\5\a\5\26\x056%\xf6\0%f%V%V\5@F\5P\5\xf6\0\5\a\x80\n\1#Q\2\xf1\0\23R#\xf4\2H\23H\xf4\2\2\23\xc2\1\1\2\x91\1\23\x80\1\5\26\25\20\5&\25\26%&\x156%\a\25\a\5V5&\25&\25&%\26%&5\a\5&%\a@\x056\5@\5&5\26\5\xf0\t\1#\2\xc1\1\2\23B3\xd4\2\x88\1\23h\t\b\xd4\2#\xb2\1\xb1\1\23\1`\5\26\25\20\5&\25&\25&\25&%\27\5\a\x156U\26%&\25\x86\1\5\a\x0565\a&\25P\x056\a@\5&\25\a\5\26\5\xd0\t\1C\xc1\1\2\3RC\xa4\2\t\xa8\1\23\x98\1\xc4\2\2#\xb2\1\xb1\1\23`\5\26\25\20\5\26%&\25&\25&\25\a\25\a%F\5\a%\26%&\25\x86\1\5\a\25&\25\a%&\a\x050\5FP\5&\5\a\25\26\5\xb0\t\x013\xd1\1\2\3b3\xf4\1\x98\19(\238I\x88\1\xf4\x013\x92\1a\22\21\2\23P\5&\5\20\5\26%&\25&\x156%\x065\26\5&\5\a\25\26%&\25\26\xc5\1&E&\x050\5\a6\x150\5&5\26\5\x90\t\2#\xe1\1\x82\x013\xd4\1\t\xb8\1i\30\3(Y\xf8\1\xa4\1\2\23\xa2\1\x91\1#@\5&\5\20\5\26%&\25&%\xf6\0%\26\25&\5\a\5\26%&\25&%\26%&\5\26%\26\5&\5`5@\5\x86\1\5\xf0\b\1#\xf1\1\3b3\xb4\1\31\xe8\1i\30\23\bi\xb8\2\x84\1\2\23\x82\1\21\2\xf1\0\23@\5&\5\20\5\26%&\25&\5\0\25V\25\a\5&\25&\25\26%&5F\25\0\x156\25\0\5F\25\x80\2\25f\5\xf0\b\23\x81\2\x82\1#\xb4\1\t\x88\2i\30\23\30Y\x98\1\t\x98\1\x84\1\2\23\x82\1\x91\1\23@\5&\5\20\5\26%&\25&\5\20\x156%\0\5&%\26\25\26\5\0\5&5F\5 \x056\25\0%\26\25\x90\2%&\5\26\5\xd0\b\1\23\x81\1\22A\x92\1\23\xb4\1\xc8\2Y\30\23\30Y8:\xe8\1\x84\1\2\3\xf2\0\3\2\xf1\0S\0\a% 5\27%\x005@E 5\0\a\25 \25 %0E@5@5\xc0\2\xf5\0\xd0\b\23\xc1\1\2\21\x82\1\23\xa4\1\31\xf8\2\tH\23\30Y\b\x8b\1\xe8\1\xf4\0\2\23\xf2\0\3Q\2\xf3\0\x80\26\23\2\xd1\1\xf2\0#\xa4\1\b\t\x98\2\32\33\32\xf8\0\23\xf8\0\n\xfb\0\n\xa8\2\t4\2\23\xf2\0\3\2!\2\23A#\xf0\25\23\xe1\1\xf2\0#\x84\1\31\xb8\2\32;\nh\23\xf8\0\n\xfb\0\n\xf8\0)\xf8\0\31D\23\xf2\0\3\2\21#Q\23\1\xd0\25\23a\2a\xf2\0#\xf4\0\x98\1)\xa8\1\23K\nX\23h\nk#Xi\x98\1\t$\2\23bC\xf1\0\23\xd0\25\23\xc1\1\xf2\0#d\xa8\1I\xa8\1\n\23KX\23X\nk#\nX\xf9\0\x98\1\t\24\22\23b\23\2\x91\1\23\1\x90\25\21\23\xb1\1\x82\1\23d\t\xf8\0\x89\18\32\3J[\nH\23X\nk\23\nX\x99\1\xa8\x014\23R\23\x81\1\2\1#\x80\25\x023\xa1\1\x82\1\23d\x88\1\x99\18\n\xcb\1\nH\23X\xfb\0\23\vX\x99\1\xb8\1$\2\x0323\2a\22\21\23\xe0\24\1\23\2\1#\2Q\2\3\xf2\0\23d\x88\1\xb9\18\n\xcb\1\nH\23H\n+\23\n+\n\vX\xa9\1\xb8\1\t\24\2S\22\23\x91\1\2\23\xc0\24#1#\x021\23b#d\x98\1\xb9\18\n\xcb\1\nH\23H\n+#;\nX\xb9\1X)(\t\24S"\3\2\xa1\1\3\1\xa0\24#Q\2#\21\3\xf2\0\3\xf4\0(9H\xb9\18\n\v:#K\30\t(\3h\n\v#\v\n;\nX\xa9\1HI(\x143R\3\xa1\1\2\3\xa0\24#a\2\23\22\3b\23d(\xf9\0\30\xb9\18Z\v\23;\n\30\t(\3h\32\23\n\v\n;\nh\x89\1HY(\t\x043\xf2\0\xa1\1\3\1\x80\24\23\2\x81\1\2#b\23d8i8Y\xe8\1\v\23;\nH\23(\24(\32\v\30\32;\nX\x89\18\xf9\0(Sb\1\2\x81\1\2\23\xf0\23\23A\2\1\2!\2#2\23TX\xf9\0H\t\xa8\2\n\f+\32\vH\3\48\31\xf8\0\n\33*\x98\1)Xi83\4#bA\x021\2\23\xd0\23\1\3\2a\2!\3\2#\22\23TX\x89\1\x88\3\v\3\33\32h\3\xe8\1\32\33\xc8\2i(\23D\2\23R\xb1\1\3\2\xc0\23\23\xb1\1\3\22CTh\x89\1hl\xb8\1:8\t(\f\xe8\1\v\xc8\2\31\bY(#T\23b\xa1\1\23\xb0\23#\xa1\1\x0323Dh\x89\1X\34=<\xe8\2\23\\\xa8\2\t\xf8\09()(\238D#B\xb1\1\23\xa0\23\x131\2Q\2\x03234h\x99\18\34\r\16m,\xa8\2,\r\fM\34H\31\x98\1\4\x88\1\4\31\xf8\0\23h$\2\23R\xf1\0\2!\23\x80\23\2\23\x81\1\2\23BC\24\th\x89\18\f\xbd\1,h9HL\16\f]\34(Ih\31\x88\1)h\23\x88\1$#2\3\2\1\2\x81\1\2\3\1\xf0\22#\x81\1\2\3Rc\b\tX\x89\18\f\xbd\1,XIHL\16\f\r\16=\3489\xf8\0\t\xa8\1\th\38\tX$\23B\3\xb1\1\23\xf0\22\3\2\x91\1b\3D#h\x89\1(\f\35\16=\36]\348Y8,\r\f\3\16\f\r.-\34\x88\4\23H9(4\23\x042\3\xb1\1\3\xe0\22\23A\2AR\23T#X\xf9\08\f\r>\x9d\1\34\30\t\bY8\34\35\f\3\r\f\r\36M\f\x98\1I89H\t(\238\xf9\0\30$\2\3R\3A\x121\23\xd0\22\3\2\x91\1R\x134H\23X)h\34\r>M.-\f8Y8\34\35\f\3\34\xfd\0\34\x88\1I8Ih\238\x89\1\x184\23R\1\2\x81\1\2\3\xc0\22\2\3\xa1\1B\x134\30\t(#\xe8\1\34\r>=>-\34(Y(,\35<=\16-\34\x88\1I(YX\23H\xf9\0(D\23R\x81\1\2\1\3\1\xa0\22\2\23\x91\1B\23$\t\xf8\0#\xd8\1\f=\16MN\35\34(Y(,\36,=\36-\34h\t\309\30i8#X\xf9\0(\t4\23b\x91\1\23\1\x90\22#\x81\1B#$(\31\30\t\30#\xf8\0\318\x9d\1>-\34(9H,\36\f\3\f\r\36\r\36-\34X\31(\31(i(\238\31\30\xf9\084#b1\x021#\x80\22\2\23\21\x121\2\x012#$\30IH#X9(\f]\36-\16M\f(\t8\t(,\35,.],\b\t()hY(\23\xc8\1)X4\2\3b1\2A\23\x80\22#\x91\1"#\2\24(IX#HI\30\fM.\x8d\1\f\xc8\1\34\35,\x8d\1,H9\xd8\1\23\xb8\1\f\x98\1\t4\23b\x81\1#\xf0\21\23\x91\x012#\248Y\30\t(\23HI\30\fM.=\16-\34\xc8\1\34\35,\x8d\1,H9H\th#\30\tXlh\tD\3b\x81\1#\xe0\21\23a\2!2\3\22\24\tH\31\x88\1\23898\fM\16M\16-\f\xd8\1\34\35,\35\36=,\xb8\19h\3\xf8\0,]\348\t\30D\23R\x91\1\23\xe0\21\23\x91\x012\23\2\24\t\x98\2#8\318\f\xfd\0\36M\f8)h,\r\f\3\f\r>-,(\t(\x99\1\30\t\b\4\3h\34\xad\1\fhD\23R\x91\1\23\xc0\21\1\3\xa1\x012\3\22\24hL\xf8\0#\x88\1\4\34-\36\r\36=\f(Yh\\\r>\35<X\xa9\1\30\t\23\xf8\0\f]\36M\34X4#B1\2A\2\3\1\xb0\21\23\xa1\1"\23\2\24\tH\x8c\1\3X#\x88\1\34-\36\r\36-\f8Yh\\\r>\35<X\xa9\1\b\t\4\23h\34]\36M\34X\t4\23B\xa1\1\23\1\x90\21#\x91\x012\23\2\24H,M<\b\318\23\x88\1\34\x8d\1\fH\xf9\0XL]<X\xb9\1\30\3()\30\34\35\36\35.]\f\xf8\x004\23B\x91\1\2\23\xd0\4\25\x90\f\23\2\21\2!\2\x112\23\2$8\34\xfd\0,\x88\1\23\x88\1\fM\34h\x89\1h\23\f=Lh\xa9\1\30\23\309\30\34\35.M\36-\34\xf8\0$\23R\x91\1#0\xf5\0\xa0\2U\26\5\x80\f\23\x91\x012\23$\t\30,=\36M\34(\tH\23\xa8\1\34\x98\1\x89\1h\23\x8c\1\xf8\09\4I\b\2389\30\34\35.M\36=\f\xf8\x004\23BA\2A\x130\5V\5\xa0\2\5&\25&\5\xf0\v\23\x91\x012\23\24\t(,=\36M\34()8\23\xd8\2\x89\1h\3\b\xfc\0(\tHI\b\4(\n\2389\b,\35.\xad\1\f\xf8\x004#2A\2Q\3\1 \5f\5@\5\0\a`5&\25&\5P%0%\xd0\2\27\5\xd0\6\23\2\x91\1"#\248\34M\36\r\36\35,()8#H\tX\t\x88\1ih\38\rX\31h\t\b\v\n\b\n\v\n\3HY,-\16\35.m\f\xf8\x004#2\xb1\1\23 \5&\5&\5\20\25\26\25\0U&\5&\xa5\1\0\5\26E\26\25\x80\2\x85\1\xa0\6\23a\2\x112\23$(,\xfd\0\36\35,h*\b\n\2389H98ih\3\b\t\x88\19X\n+\32\3h9\b,].\35\16=\f8\31(4#2\xa1\1\23\21\0\5&\25\x165f5\xf6\0\25&\25&\5\a\5&\25V\5@\5\x1650\5f\5\xa0\6\3\xa1\x012\3\2$(,\35\36\x8d\1\34h\n+\n\v#\3098Y89\x88\1\3\30\thIh\n\v\n\23\30#\v\30\31(,\x9d\1.-\f8)\30\t$#2\xb1\1\23\1\0\5f%\26%&\a\25&\x156\25&\25&%&\25&\5\6\25@\5F\x0505&\5\xa0\6\1\3\x91\1B\3\2$(,\35.-\16=\34h\n+\n\v\b#\30)8i8)\x88\1\3\x98\1Ih\v\32\3\v\b\n#\n\30\t8,\x8d\1>-\f89\b\t$\2\x132\xb1\1#\0\5V5\x165\26%&%&\25&\25&%&\25&%P\5F\x0505&\5\xa0\6\23!\2Q2\23$8,\35.\35.-\34h\32+\n\30#\b)8i\x98\1\318\3\x98\1I(\31\30\n\23\b\n\v#\v\n\xf8\0\34-.->-8Y\30$\2\x132\1\2\x81\1#\0\5V5\x165\26%\26\25\a\5&\25&%\26%\26\a\5\a\5&\25P\5F\5@\25&\25\xa0\6\3\2\x91\x012\3\2$8\4\34]N\35\34h\n;\n8\23hI\xa8\1)8\3\xa8\1)X\4\n\23\33\bK\n()\30\34=\16=>\35\f8Y\x184\x132\xb1\1\23\0\5V5\26\25\a\5\26%\x165&\25&%\26%\26\5\a5&\5@\5F\5@\25\26\25\xb0\6\3\xa1\x012\3\2$\30\t\b\4,MN\35\fh\n;\32H\23\4X9\xa8\1)8\3\30\t\xf8\1\32\3\n\b\nk\n()\30,\x8d\1\16\35\16\348Y($\2\23"\xb1\1#\5&\5&%&\25&%&\x156\25&%&\5&%\26\25\26\5@UP\5&5\x80\6\1\3\xa1\x012\x034H,M>-\f\30\t(\nK\n\vX\23h\31X\318)8\3\xa8\2\n\3\n\b\v\3k\n()(\34\xbd\1\34Hi\x184#\22\x81\1\2\21#\5&\5&%\xf6\0%\x86\1\25&%V\a\5\a\5\26\5&\5PEP\5V\5\x80\6\23a\2!"\23$\t\30\31\30,]\16-\34\30\t\b\32[\n\xf8\0\23\xd8\1)()8\389\xa8\1\3\n\b\v\30\n[\n\30)H\34-.M\fXi\x184#"!\22Q#\5&\25&%f\27\25\xf6\0\25&\5\0\25F\5\20\5V\5\xf0\1\5f\5\xf0\5\1\23a\2\21\2\3\22\23$\t\30\31(<],H\32;\32X\t(\23\x98\3\3(iX\4\23\n\b\n\23k\n\xb8\1,\r.-\34hi(4#\22!\2a#\x85\1 \xf5\0 \xf5\0\0E E0e\xf0\1\x85\1\xf0\5\23\xa1\1"\23\2$\b\t\4)(,\rlh\n;\n\xc8\1\23X\31\xf8\1\3(\xf9\0H\23(\nk\32\xe8\1lX\t(i(4#"\x91\1\2\23\1\xf0\17\23\xa1\1"\x134Y8\x8c\1\xf8\0\32\v\32\v\xc8\1\23H)\x98\1*\30\23(\xf9\0H\23(\nk\328\t\b\t\x98\1\34X9(i(4\2\23"\x91\1\2#\xf0\17\23A\2A\3\22\x134\xb8\3\32\v(I\x88\1\3\x88\2\n\v\b\n\b\23(\xf9\0(#8\32;\328\xf9\0\xd8\1Y\30i(\t4\2\23\22\x91\1\2#\xf0\17\23\x91\1\2\3\22\23$(j\x88\3I8\318\23\xd8\1\n+\n\b\23(\xf9\0\30#h:\v(\xa9\1X\31XI(Y8D\23\22A\22!\2#\xe0\17\1\3\2\x91\1\2\3\2#\24\30\n\x8b\1\32\vhIX\t\30I(98\23X*\b\v\32;\n\b\23(i(\23\xd8\1\t\b\xb9\18\t\x88\19(IX4\23"1\x031\2#\xe0\17\1\3\2\x91\1\23\2#\24\30\n\xab\1\nhYH\t\30I(I(#H\n\v:K\n\b\23(Y(\23\x88\2\xb9\1\x98\1\338\tHIH4\2\3"1\x021\2#\xe0\17\23!\2a\23\2\23$\b\n\xdb\1\n(\xf9\0\xf8\0I\30YH\23(\xab\1\n\30\23(I(\23XIX\xc9\1X\v\32;*\x98\19(4\3"1\x021\2#\xe0\17\3\2\xa1\1\3\22\23$\n+\3\n\xab\1\n\30\xf9\0\xe8\1YX\23(\n\xfb\0\n\v\30\23\x98\1\238\x89\1H\xc9\1X\x9b\1\n\xf8\0Y\x184\23\x121\x021\2#\xe0\17\3\22\x91\1\3\22\3\2\24\b\n\33#;\n[\n\30\xf9\0\xe8\1Ih#\30*+*(\4\23\x88\1#8\x89\1X\xa9\1(\t\30\n\xab\1\nhY($\23\x121\x021\22\23\0\a\xc0\17\3\22\x91\1\3\22\3\2\24\b\n\v\23\32;\3\nK\n\30\xf9\0H)h9(\318#\30\32\33*H\23(\4\t(#\30\xb9\1X\x99\1h\xbb\1\nhY(\t\24#\22!\x031\22\23\0\a\xb0\17\23\22\x91\1\3\22\3\2\24\30\32\v\n;3\n\33\32\30\xf9\089\xf8\0)(9(\238\v\x88\1\23(\31\30#X\xf9\0h\x89\1h\nk3\32hY(\t\24\2\23\22!\22!\22\23\0\a\xb0\17\23\22a\2\21\3\2\23$8\nK\n3\v\32\xe8\1)\xd8\1I8\23\xf8\0)\30\23(\t\30\4\23(\t(9\xa8\3\n;\n+\n\23\nhiH\24\23"a\22\23\1\0\a\xa0\17\23\2\x91\1\2\3\2\23\24\t8\n;\32\b:\vX\xfc\0\xf8\0\t\xa8\19X\23\b\t(9\30\23H\2389H\xfc\0\xb8\1)8\n\33\n\3;\n\xa8\1YH\24\23\22A\2\21\22\23\1\0\a\xa0\17\23\2\x91\1\2\3\2\23\24HK\32\x98\1\xac\1h\31\xa8\1\31h#89\30\23H\2389(\xac\1\xa8\19(\n\33\23;\n\xa8\1YH\24\23\x121\2\3\1"\23\1\0\a\xa0\17\3"\1\22Q\2\3\2\23\248\nK\n\x98\1\34\r\f\x8d\1\34X\4\xc8\2\23(9\30\23(\23X9\b<M\\H\4\30Y\30\n\v\23\32;\nH)\30iH\4\23\x121\2\3\21\22#\0\a\xa0\17\3"\x81\1"\23\248*+\nX\4\b\34m\36]\f8\t\30I8)\x88\1#8\t\30\23\30#\x98\1\34\xad\1<Xi(\n\3\n\b\n;\n\v8I898\4\23"\21\22\3\21\22#\0\a\x90\17\1\3"\x81\1"\3\2\24X\v*\xf8\0\34=\16\35.]\16\fh9(Y\x88\1\23X\23\b#\3098\f=\36\x8d\1,\30\t(I\x88\1\n;\n(IHI(\4\2\23\22!\2\3\21"\23\0\27\x80\17\1\3"\xf1\0"\23\2\24\xf8\0\32\xf8\0\34=\16\35.\xfd\0\fX9\30i8\t\b\t(\23HC(I\30,\35.\x9d\1\34h)\x98\1\n;\n(I8Y(\4\2\23\22!\2\3\21"\23\0\27\x80\17\1\3"\1\2\xf1\0\2\23\24\x98\2\34\35\16\35\16-\16=\36-\348I\30iH\tH\23(C(Y\30,\35.-.=,\xa8\198\32\33\32\xb8\1Y(\t\4\23\x121\3\21"\23\0\27\x90\17\3"\1\2\xf1\0#\24\x98\2\f-\16\xfd\1\34H)8\xf9\0\3098\23\x1838I\30,-\36M\36=<\x98\198*\v\xd8\1Y(\t\4\2\3\22\1\2\21\3\x012\3\1\0\27\xf0\2S\xb0\v\23\22\x91\1#\24\x98\2\f\xbd\1\fm\34X\tHY\xc8\1\23\b#8Y\30\34-\16\xad\1\36\r,\xa8\1)H\4(\t\xc8\1I(\t\4\2\3\x121\22\1"\x037\xd0\2\x023\37#\x90\v\23\22\21\2#!3\24\x98\2\34\r\xbc\2\xb8\19\xf8\1CHI\b\34-.\x9d\1\36\r,\xc8\1\t\x88\1\t\xd8\1)8\t\4\2\3"1\2\1\22\x137\xd0\2\23\37\3?\23\x80\v\23\22\xc3\1\2\x93\5\xf4\0\x184\x98\1\31\b\t\24\30C\xa8\1\34-\xac\2\x93\2\xa8\3\x043\2A\3\1\2\23G\xc0\2\2\3?\3?\23\x80\v\xf3\0!\xf3\2\f3L\xc3\6\x88\1L\xa3\1@W\0\x97\1 \xb3\4"3\x017\xc0\2\2\23\17\3/\3?\23\xf0\n\1#\2a\2S\xf8\3\23\34\23\xf8\0\xe3\3\20\xc3\1\0\a0\xe7\5\0\' \x1707\21C\1g\x80\2\22\23\2\23_\3?\23\xe0\n3\x81\x013\24\x88\2\3\xdc\2\xd8\1\xa3\1H#\b#\xa0\1\xf7\t\0g\x90\1\22\xc3\1\xbf\1\3\2\xc0\n\1\23\22\x81\1\2\23\2\24X)\xf8\0\34\xed\1.\r,\xb8\3\23(\23\b\23\x97\f@\22\23\22\xa8\1\2\23\xff\0\3/\23\xb0\n\23\22\xa1\1\23\2\24\30\t\bYh,\16=\36-\16-.\35\f\x98\2\t\x88\1\238\23\30\23\0\xe7\v \2\23\22\x88\2\23\xaf\1\23\2\xa0\n\23\x121\2Q\2\3\2\24\30\x89\1h\34=>\r.\35.,\xf8\0\n\33\n\v8)X#H\238\23\xb7\v\20\2\3\2H:\vHI(\23\xaf\1\23\xa0\n\23\x121\2a\3\2\24\30\x89\1h\34=>\35\16-\36\r,h\n;\n89\b\t(\23X\23H\23\0\x97\v\2\23\2HK\n\v8Y\30\23\xbf\1\3\2\x90\n\3"\xf1\0\2!\23\24\xa9\1h<\16\r>\x8d\1\34\nX\nK\n8Y\30\3\xf8\0\23X\23\0\xd7\n\2\3\f\xf8\0\2\3[\32\30i\30\23\xaf\1\23\x90\n\3"\xb1\1\23\24\xe9\18<-\16=\36=\f\xf8\0k\n(I\30\3(9\30\238\t(\23 \27 \'\xb0\b\1\20#\2\x98\1\v\n\3k\n\b\xf9\0\30\23?\3_\23\x80\n\3"\xb1\1\2\3\24\b\x89\1\b9HL]\16-\34\x88\1k\n()\30\238I\b\238\31(\23\xc0\t\2\23\2\xb8\1\32\xbb\1\bi(\3\xbf\1\23\xf0\t\3"\xb1\1\2\3\24\30Y(\31\4X\nL\xfd\0\34\x88\1\xfb\0\n(\t(\4\23(Y\b\238\318\23\x90\t\2\3\f\2\xd8\1\nK\n\3;\b\n\30Y(\23\xaf\1\23\2\xe0\t\x032\xb1\1\3\2\24\b9H\t\4\t\30\v8\v\3\xac\1\xb8\1k\n\30\t(\23XI\b\23(I(\23\xe0\b\238\31\4\t\xa8\1\n;\n\23;\n\30Y8\23\xaf\1\23\xe0\t\x132\xa1\1\23\24\xc8\1\32\33\32H\nL\xe8\1\n[\n8#\xf8\09\b\23\b\xf9\0(\23\xa0\b\2,\3(\31\4\31\30)hZ\23+\n(9X\23\xaf\1\23\xd0\t\1\3"!\2\xf1\0\23\248\31h\23;\n\v\xf8\2\32;\3\v(#H\t(9\b\23\b\x99\1(\3\xf0\a\aL\r\xf8\0ih\4\30\32\3\33\n8\t\x98\1\23\xaf\1\3\2\xd0\t\x032\xa1\1#\48)X\23K\n\x88\1\t\b\t\xb8\1\32;\n\v(\23X\t(9\b\23\b\xa9\1\30\23\xd0\a\3\34\35,\xf8\0i\xa8\1J(\31\x98\1\2\3\xaf\1\23\xd0\t\23"Q\x121\23\4\xc8\1\3\f[\nhI\xb8\1\32\33\32\30\23\xb8\19\b\23\b\xa9\18\3\xa0\a\3\f\r\36\35,\30\tHi\xb8\1\v\n\v8\31\xa8\1\23O\3O\23\xc0\t#"\xa1\1\23\4\xc8\1\n\3[\32XY\b\t\b\4\xf8\0:\30\238lH\t\b\23\b\xb9\18\3\xe0\6\2\3\34M,\4\b\31HY\xf8\0I(\t\b\31\4\31\xa8\1\23\xaf\1\23\xc0\t\23"\xa1\1#\4\xa8\1\v\n\xfb\0\nHi(I\x88\1\38,-L(\t\b#\b\xa9\1H\3\xd0\6\3\f\r\16\r.\r,\4\b\t\xf8\0\31X\x99\1\30\31\b)h\t8#\xaf\1\3\2\xb0\t\x132\x91\1\2\23\4\x98\1\v\n\xab\18Y(Y\xf8\0\23(,M<(\t\b#\b\xa9\1H\23\xc0\6\f\r\36\r.\r,\4\xa8\1\tX\x89\1H9h)\30\2\23O\3O\23\2\xa0\t\23B\x91\1\2\3\48\t(\32\xbb\1\nHI(iH#(\3\f\x9d\1\34\b\31\b\238\x89\1h\3\xa0\6\34\36\r.\r,\4\x98\2\x99\1\xe8\1I\30\2\3\xbf\1\23\xb0\t\2\3"1\2a\23()\b\3k\n\3K\nX)(\xf9\08#8\34\35\16=\16\35\34\30\t\b\23XY\x88\1\3\xf0\5\2\34\r\16-\\\4\xa8\2\xf9\0\xd8\1i(\23\xbf\1\23\xb0\t\x032\xf1\0\2\21\23\4\30)\b\n[\32\23;\n\xb8\1\xf9\0(\23X\f\35.-\16-\34\b\t\b\23\x88\1\t\xb8\1\23\xc0\5\2\3\xac\1\24\31\xf8\0*\xf8\0)\30\t\xe8\1\xf9\0\30\2\3\xbf\1\23\2\xa0\t\23"\xf1\0\2\21\2\23\30)\b\nK*\23;\n\xb8\1\xf9\0\30#H\34\35.m\34\r\t\b\23\xd8\2\23\xc0\5\3\2\xac\1\4\b\t(\4H\n\b\32\xf8\0\t\xf8\0\4\x98\1\xf9\0(\3\xcf\1\3\2\xa0\t\x132\xa1\1\23(\31\30\n+\32\b\n\23+\n\309hi\30\23h\34\35.-\16-,\30\238\tH\v\32+\32X\3\xa0\5\3\28,H\t(\n\33\3\n\30\n[\32\x98\1\xec\1\x98\1\2\3\xcf\1\3\20\x025\xb0\b\1\x032\xa1\1#\30\t(\32\v\n(\v\23\33\328\4\thI\30#\xf8\0\34m.\35,\30\23()8\n\xfb\0\328\3\x80\5\22\30\th\tH\n+#\xfb\0\n\x88\1\f-.=>\35,8\31\30\23\xbf\1\23\25F\5\xa0\b\23"1\22Q\23\b\tH\32H\32\v\32\v\xa8\2\23\x98\1\34M\36\r\16-,\30\23\309(\n\xab\1\n8\23\xd0\4\2\3\30\4\xd8\1K#[\n\x88\1\fM\36=>-\16\r\34X\2\3\xcf\1\3\25V\xa0\b\x1321\2Q\23\b\tH\32X*\vh\4\xa8\1#\x98\1\34M\36M,\30\23()(\n\xab\1\32(\23\xd0\4\23\xf8\1[#K\32\v\xf8\0\f\r\16\x8d\1>]\34X\23\xbf\1\3\2\x156\5\xa0\b#2\x91\1#\xa8\1\31\x98\1\x9c\1\3\30#H\318\34\xbd\1,\30\238\t8\n3\xfb\0\328\3\xc0\4\3XIX\x8b\2h,\35\36\xdd\1\16-\fX\3_\3_\3\2\25\26\25\xb0\b\x132\xa1\1\23\xb8\198,\x8d\1<\3HI8\34\xad\1,\30\23H\t8\32#\xfb\0\nH\3\xb0\4\3(\xf9\0h\xbb\x013\n\30\t(<].\x8d\1\16-\fH\23\xbf\1\23\25\26\5\xc0\b\x132\xb1\1\23\xa8\19(\34\35\16m\34\b\23Hi(\34\r\16\35.=\34(\23\xb8\1\v\n\x8b\1\nX\23\x90\4\2\30\x89\18\31\b\n\xab\1#\v\n\30\t8L=.=.M,8\2\3_\3O\23\2\5\26\5\xc0\1\a\0\a\xc0\6#"\xb1\1\23\xa8\19(\34\x9d\1\f\b#H\xf9\0\30\34=.-,(\23\xf8\0\t8\n+\23;\nX\23\x80\4\22\30\x89\18\31\b\4\n\xdb\1\n\b)(\xfc\0\xfd\0.M,H\3_\3O\23\2\5\26\5\xf0\0\a\xf5\0\xc0\6\x132!\2!\2!\2\23(9(9\30\34=.\35\34\b#\b\f8\xf9\0\30<\35.-\348\23h\31(\n;#\33\32\xf8\0\3\xf0\3\2\30\x99\1()\30*\xbb\1\n\b)8\4\xac\1\x8d\1<\4H\3\xbf\1#\5&\5`\5f\5\xc0\6\1\x032\xb1\1\23(9\xf8\0\34M.\r\f\30\34\30,(i8<M,H\23h\31(\n+\32#\32\x98\1\3\xe0\3\3\30\x89\1(I(\4\n\x8b\1\b\n(\tH\31\30\x9c\2\r\f\24H\23_3\17#\5&\5P\5\xf6\0\5\a\xc0\6\23"\xb1\1#\309\xf8\0\34]\36\f\b\3\34\b\3L\30iX\xfc\0(\t(\23\x98\1\v\n;\n\b\33\32\xa8\1\23\xd0\3\3\30\xf9\0\x98\1\33\b\v*;*\x98\1)($\xdc\1\24\b\t83\17\xa3\1\5&\x050\a\0\5\26%&\5\xd0\6\1\x032\xa1\1#()\30\tH\34m\f\3\b,\b\\\30ihL\x88\1\23\x98\1\32;\n\x88\1)H\23\xc0\3\3\30Y\x98\1\2cZ\4\xb8\1)\30$(\xac\1\4\30\t8\xf3\1\5&\5P\5\x165\26\5\xe0\6\x032\xa1\1#8I8,\r.\35\f\30\f\b\f\b\f-,\30i\xd8\1\tX\23\x98\1\n\v\n+\n\xf8\09X\3\xc0\3\3\309\x98\1\23\xf2\0\23\2\x98\1\2XIH4h\31H\4\xf3\1\5&\5@\5&5\26\5\xe0\6\1\3"1\2a#(Y(,\r.\r\f\30\f(\f=<\bY\xa8\1\t\x98\1\238\t\xf8\0*\x88\19h\3\xa0\3\22\30\31h\t(\3\xb2\1\238\2\x83\1\4\b9\bi\xa8\1\t8\4C\xf2\0#\5&\5@\5&5\26\5\xf0\6\x132\x91\1#8I(,\35\16\r\f\b\3\34\b\34\r\16-<\30Ih\t\30\318I\b\23\30YX\v\n\30)89(\t8\3\x90\3\3\x88\1)\30\4\3\xc2\1\b\3(\2\3\x82\1\23\28\31\4\t\xb8\1\tX\4\2#\x92\1\23\5&\5P\5\xf6\0\5\xf0\6\x132\x91\1#8I(,=\f\b\34\b\34\35\36\35<()\xa8\1\tHI\b\23\30i\x88\1)8)8\31(\23\xf0\2\2\3\xb8\1\24\2\23\xb2\1\b\3\2\b\2\23\xa2\1\38\31\4\xd8\1\tH\4\2\23\xa2\1\23\5&\5P\5\xf6\0\5\xf0\6\1\x132A\22\21\2#(I(,-\f\b\23\b\3=\16-<\x88\1)8)(Y\b\23\30\xf9\0\30\31(I\xf8\0I(\23\xd0\2\2\3H\3"\b$\2\xc3\1"\3\2\b\4\2\3\xb2\1\3\2(\31\xa8\2\4\2\4#\xa2\1\23\5&\5`\25&\5\26\5\x80\a\1\x032\x91\1\2\23(I(<\r\f\3\f\3\b\3\f\xfd\0,\x88\1I()(i\23\b\xf9\0(9\309hi8\3\xc0\2\3H\3\0\22C\2\0G\0\a"c\2\4\23\xd2\1H\4#\28)X4\3\xc2\1\3\2\5&\5\xf0\0\xf5\0\x90\a\x132\x91\1#\x98\1\4\f\r\34#\b\34\x8d\1,hi\x98\1Y\23\30i(\31\xe8\1YX\3\xa0\2\2\b\2(\3\2\'0\xe7\1 \a\22\x93\1B\38\2\x132\23\2$8D\2\23\xc2\1\3\2\5&\5\x90\t\x132A\x0213\30\thL\3\b\3\34=\36-,h\xf9\0\x88\1Y\23\30i\xb8\2YX\3\xa0\2\3\2(\2\3\0\xb7\1\xf0\0\'\xf0\0\22c"\38\2\3R#\2\x84\x013\xb2\1\23\2\5&\5\xa0\t\3B\x91\1#\x98\1<\3\b\3\f]\36\35<X\x89\1\x98\19\b\23\30i8\x9c\1hIh\23\x80\2\22(\23\2\27\xf0\2\a\20\'@\22C\2\30\4\3\xf2\0\xe3\1\xc2\1\a\3\25&\5\xa0\t\23RA\22\21#\x88\1\4\3\f\3\b\34\r.=\16\35,\xf8\0iX)h\23\30I8\34\x8d\1,H9\x98\1\3\x80\2C\2\xc0\3\xd7\1\0\3(S\xf2\0c\xf2\1\3\2\x156\25\x90\t\23R\x81\1\x023h\34\23\f\35>],\x98\1Ih9X\4\3\309(\34\xbd\1\16\34(9\xb8\1\3\xb0\2\a\x90\4\xa7\1\x003\'\2\xf3\0\xc2\2#\2\a\5V\5\x90\t\23R\x91\1\2#\4\b)\30\23\b\34\35>],\x98\1\31\xf8\0YX\4\3\309(\f\x9d\1\16=\34\30\t\30\t\xb8\1\23\x90\a\xf7\0#\0G\22\x93\1\xd2\x013\22\a\5\x036\5\xa0\t\1\23R\x91\1\2#4#\30<.],H:X\n\vHYX\3\30\318\f=\36=.=\34\x88\1*\vH\23\xe0\a\xa7\2\5\x93\2\2\20\22e\xc0\t\23\xf2\0\x81\1\x023\4#8L=LH\n+\n8\32\v\nXIX\3\4X\34\35N\x9d\1\34h\n\b;\nX\3\x90\1%\x90\6G \a\2\27@\xf7\1\0G\0\5\2\6\a\5\x80\n\23\xf2\x001\2Ac(\t(\x9c\1h+\n\3\v\30\n;X9h\23H\34-^-\16]\34hK\nh\3\x80\1\5\6\5\xc0\6\a\x90\1\x97\3\5&\5\x80\n#b\xa1\1C\x88\1\xfc\0h\n+\23\33\n[H9h\23H,\35^-\36M\34hK\nh\3\xf0\0\25\6\xb5\1\20\a\xc0\6\xd7\2\0\5&\5\x90\n\23\xf2\0\xa1\x013\xf8\2\n+#k\nH9h\23H\34-^-\36]\fh\n;\n(\t8\23P\25\xc6\1\5\a\xd5\t&\5\xa0\n\23\xf2\0Q\2!3\30\t()H\31\xf8\0\n+\32k\32H9(\31\30\238,=\36]\36]\fh\n;\n\x98\1\3@\5\x86\f\5\xb0\n#ba\2SH9\xd8\1\n\xab\1\32h\31(9\b\238,\xbd\2\f\xf8\0\n[\n\v(\t\30\x130\5\x86\f\5\xb0\n#R\3\2Q#\2#H9\xd8\1\n\x8b\1*\xc8\1\t\4\31\b\238,\xed\1\36-\f\xf8\0\n;\32\23\n\v8\x130\x156\x005\xe6\n\5\xb0\n\1#R\3\x021#13\309H\31\xf8\0\nk\n\33\xd8\19\b\238,M\16=.\35.\35\fh\v\n;#\v\32\b\t\30# \25\26\25P\xf5\4\xd6\5\5\xc0\n\1\23b\3\2\21\2\23\2A3\xf8\0Ih\32[#\30\t\30)\xf8\0\t\30\238,=.-.-\16-\fH\n#;\32\33\32\b\31\30#\1\0\25\26\5\xa0\6\xe5\4\26\xf0\n\1\23b\3\2\1\23\xf1\0CHYH\t\30\32[\23\v89\x98\1\238,->=\36m\f8\n\33\23\xfb\0\32\b\31\bC\1\25\6\5\x80\v\a\5\26\5\xf0\n#b3\xf1\0\2CHI8\31\30\32\xfb\0\n89\x98\1\238,->\xcd\1\f8\n\xcb\1\n\b\31\bS\25\6\5\x90\v\5\6\25\xf0\n\x013B#\21\2\xf1\0C89H\318\32K\n\v(I\30\th\238,=\36-\16=\36=\fH\n\xab\1\328\23\1\2#\25\xb0\v\25\xa0\v\1\x93\1\xd1\1#(\31\xf8\0\tH*\v*h\tX\32(\238\n\34\xfd\0\36=\36-\fX\32\x8b\1\nH\23!3\xf0\27#\2\3\xe1\x013\xb8\1\31H*\xe8\1\n\33\n\v\n#\32\30,\x8d\2\34X\v\32K*8#13\1\xb0\27\1\0\a\23"\3\xe1\1#\xb8\1\31\xd8\2;\n\b\n#\32\30,\x8d\2\348\t(\xfa\08\23\2AC\xc0\x055\xa0\21\27\x132\3\x81\2#\x98\19\xa8\2\nK\n#;\30,M\36\xfd\0\34(9\xc8\1\23\xf1\x003\20\a\xe0\4%6\25\x90\21\a\23B\3\2Q\22\xf1\x003\xf8\0)\xc8\2\3[\23+\n(,-.m\34(I\xa8\1\23\x91\1C\a\0\a\xc0\4\25V\25\xa0\21#b\x81\x023\xf8\1\xf9\0X\v\nK\23+\n(\4<\16\xfd\0,(Y\x98\1\3a\2A3\0\'\xb0\x045&\5\xc0\21\1\23b\x91\x023\xd8\1\x99\1X\nK\23\33\32H<]<(i\x88\1\23\xc1\1\2#\0\'\xc0\4%&\5\xd0\x113R\1\2\x81\x023\xb8\1\xa9\1X\n;\23\v\32\x88\1\x8c\18\xf9\0h\23\xf1\1#\20\27\xd0\4\25&\5\xe0\x113bQ\2!\2\xf1\x003\x98\1\xb9\18\v\32+\23\32\xe8\2iH#1\2a\2!\2\23\2\3G\xc0\4\5&\25\xf0\21\1#b\xb1\x0238\t(\xb9\1(\n#\33\n\23\n\xc8\2\tH)(C\xf1\1\2\3"\3\1G\xa0\4\25\26E\xf0\21\1#R\xc1\2#h\x89\18\v\n[\n\23(\t\xa8\1\31H\31\xf8\x003\xa1\1\2A\2\x132\3g\x90\4\5V\25\x80\22\1#b\xb1\x023X\xf9\08\32K\32\23(9\xf8\0)\xb8\1C\x81\2\2\x132\23g\x80\4\25V\25\xf0\21\27\20\23bA\2\xe1\x013hI8\32;*\3\4(IXI\x88\x013\xc1\1\x021\x82\1\3\0g\x80\4\x85\1\x90\x127#R\xd1\2Ch\tXJ\30\238Y8YX3\x91\1\22\xf1\0\x82\1\23\xf7\0\xc0\x177\1#Ra\2Q\2Q\2S\x98\2\23(i8\t\b\31H3\2\xa1\2\2\3\x82\1\23\x87\1\xe0\27\'\1\23b\xc1\1\2a\2S\x88\2\23(i\xa8\1C\xb1\2\xa2\1\23\0\x87\1\xf0\x177#b\xd1\x023\xb8\19\b#\30i\xf8\0Ca\x021\2Q\xd2\1\23\1\x97\1\x80\x187#b\3\2\xf1\1\22A3h\t\b)\b#(Ih3\2\x81\2\xf2\1\23\1\xb7\1\x80\30G\1#b\23Q\22\xe1\1\bS\2h#\xa8\1\2#\2\xa1\2\xf2\1\23\1\0\xb7\1\xa0\x187\x003\x82\1A\22\x81\2\2c\283\18!\2#\2\xa1\2\x82\2\23\1\0\xc7\1\xb0\30G\1#\xf2\0\3\2a\22\x91\2\2\xd3\2\xb1\1\2A\x92\2#\1\xd7\1\xd0\30W#\x82\1\3\2\x91\4#\1S\xf1\1\2\21\x92\2#\1\xf7\1\xf0\30W\x013\xf2\0#\2\x91\1\2\xb1\2\23\xd1\1\2a\xb2\2#\1\0\xd7\1\xb0\31W\x013\xb2\1\xd1\3\23\x81\1\x021\2Q\xb2\2#\1\0\xe7\1\xc0\31g\x013\xb2\1\21\22Q\22\xf1\1\23A\x021\22A\xc2\x023\0\x87\2\xf0\31\xf7\0S\xb2\1\xd1\1\2\x81\1\23\xb1\1\xe2\x023g\0\xb7\1\xa0\32\x87\1\1S\xb2\1\xb1\2\23A\x92\3C\xb7\2\xe0\32\x97\1\1C\xe2\1\xf1\1\xf3\0\xd2\2S\xb7\2\x90\33\xa7\1\0\xf3\0\xb2\2\x83\1\xc2\2S\2\1 \xa7\2\xe0\33\xb7\1\1c\xe2\2#\xd2\1c\1\xa7\3\xa0\34\xd7\1\1c\x82\2#\0\23\x92\1#\2\xf7\3\xc0\34\xf7\1\1c\xe2\1#\a\1\23\xf2\0#\1\0\xd7\3\x80\35\xa7\2\1\xf3\0b3\1\'\x83\1\1\xd7\3\xf0\35\x97\2\0\27\xd3\1\1G\x001\20\xc7\3\xc0\36\x97\x031\xa7\5\x80\37\xc7\b\xd0\37\xc7\a\xc0 \xf7\6\x90!\x87\6\x80"\xb7\5\xa0\a5\xb0\25U`E\x80\2U \xb7\4\xf0\5\xb5\1 \25\26\25\xa0\25\x056\5`\5&\5\x80\2\x056\5`\xb7\3\xb0\6\5\x86\1\25\a\20\x056\5\xa0\25\x056\25@\x056\5\x80\2\x056\5\xb0\1\xc7\1\xd0\a\5\xa6\1\5\20\x056\5\xa0\25\5F\5@\x056\5@\a\0\5\0\5\xf0\x006\5\xe0\n\5\xa6\1\5\20\x056\5\xa0\b\a\xf0\f\x056\5@\x056\x050\x85\1\a0\5&\5 E U\x80\x015@%\x90\1\xf5\0\xe0\3\5\xb6\1\20\aE\xa0\1\xa5\1\x90\1\xa5\1\xd0\1\xb5\1\xe0\f\x056\25 \x056\x050\5\xf6\0\x150\5&\x050& \x156\5\a\x005\0\x156E\26%`\5\xf6\0\5\xc0\x015\xc0\1\x056%6\25\0U\x80\1\25\x96\1\5\x80\1\5\xa6\1\5\xa0\1\25V\x056\5\xf0\f\x056\5\20\x156\5 \5\xa6\1\5\20\25&\5\20\x056\5\20\a\x056\5\20\5\xb6\1\5V\x150\25\x96\1\25\x90\1\x056 \5\x80\1\x056%6\25\0\x056\5\x80\1\25\x96\1\5\x80\1\5\xa6\1\5\x80\1\a\25\xb6\1\5\xf0\f\x156\5\0\x156\5 \a\xa6\1\5 \5&\5 6\5 \x056\5\20\5\xb6\2\x050\5\a\xa6\1\5\x80\1\25f\25\xf0\0\x056%6\5\20\x056\5 \x150\25\x86\1\25\0\a%\a \5\x96\1\5 %0\25\xc6\1\5\xf0\f\x156\5\a\5F\5\0\25F%F\5\20\x056 6\5 \x056\5\20\5\xb6\2\x050\5F%F\5\xf0\0\25f\5\x80\1\5\xa6\1\5\0\a\x056\5\0\25\26\25\20\25\x86\1\5\20\25\26\5 \5\x86\1\25\0\a\5\26\a\5 \x1565F\5\x80\r\x056%6\5\20\x156E6\5\20\x056\5\x1060\x056\5\20\5F%V\25F \x056e&\5\xf0\0\a\5f\5\x80\1\5\x96\1\5 \x0565&\5@%F\5\20\x056\5@\25F\5\a\0\x056\5 \a6U6\5\x80\r\x156\x056\25\20\5F5\a\5&\5\20\x056\5\20\x056 \x056\x050&\25\20\x056\5\20\x056\5\20\5\xd6\1\5\x80\1\x95\1\xf0\0\5\xf6\x005\20\x056%6\5P\5F\5\a\20\x056\5P\x056\5 \x056\5\20\x056e6\5\x90\r\x056\x056\25\20\x1565\a\5&\5\20\x056\5\20\x056\5\20\x056\5 6\25\20\x056\5\20\x056\5\20\5\xd6\1\5\x80\1\5f\25\xf0\0\5V%\a\5 \x0565&\5@\5V\5 \5&\5P\5F\5 \25&\5\20\x056e6\5\x90\r\x056\x056\5 \x156U&\5\0\x156\5\20\x056\5\20\x056\5 6\5\a\20\x056\5 6\5\20\5\xd6\1\5\x80\1\5f\25\xf0\0\x056\25\xf0\0\x056\5\x105P\x056\25@5@\x156\5@5 \x056e6\5\x90\r\a\5f\x050\x156\25\a\x156\5\0\a\x056\5\20\x05656\5\20\x056\5 \5&\x050\5&\5\20\x056\xa5\1\x80\1\5f\25\xf0\0\x056\5\x80\1\5F0\a`\x056\25\xd0\1\5F\5\xb0\1\5FU6\5\xa0\r\5f\x050\25F%F\5\20\x056\5\20\5F\25F\5\20\x056\5 \5&\x050\5&\5\20\x056e\6\25\a\x80\1\x85\1\x80\1\x056\5\x80\1\5F\xa0\1\x056U\x90\1\x056U\x90\1V5F\5\xa0\r\5f\5@\5V\5V\5\20\x056\5\20\5\xa6\1\25\20\x056\5 \x0560\5&\25\0\x056U\26\25\xb0\1\25\xd0\1\x056\5\x80\1\5F\5\x90\1\x056U\x90\1\x056e\x80\1\5V%F\5\xa0\r\5f\5P\5\xa6\1\25\20\x056\5 \5\x96\1\5 \x056\5 \x0560\5&\25\0\a\5\xc6\1\5\xa0\3\x056\5\x80\1\5F\5\xf0\0\a\5\x96\1\5\x90\1\5\x96\1\5\x80\1\25\xc6\1\5\xa0\r\25F\5\a@\a\25\x96\1\5 \x056\5 \25\xf6\0\25 \x056\5 \x056\5\20\a\5&\25 \5\x96\1\25\xb0\3\x056\5\x80\1\5F\5\xf0\0\25\x96\1\5\x80\1\5\xa6\1\5\x80\1\a\25\xb6\1\5\xb0\r\x156\5\x80\1\25F%0\5&\x150%6%0\25&\5 \25\6\0\a0\5&\x150\25f\5\xd0\3\x056\5\x90\1\a6\5\xf0\0\5\xa6\1\25\xf0\0\5\xa6\1\5\xb0\1%&\x156\5\xb0\re\x90\1\xf5\0@EP\xf5\0PE050E@%\a6\25\xe0\3E\x90\1E\x80\1\xc5\1\x80\1\xc5\1\xc0\1\xb5\1\xe0\r\5\x90\2\a\x80\1\a\xf0\2\5\xe0\1\5\a\x80\1\a\x005\xf0\a\5`\a\xc0\1\27 \5\0\a\xc0Y'
)

15099L'écriture du bytes passe dans des proportions similaires de 32995 à seulement 24816 caractères, soit une économie de 24,79% ! :o

Victoire, ça rentre enfin sur NumWorks ! :bj:

Voici donc dès aujourd'hui accessible le nouvel outil img2calc te permettant de faire rentrer beaucoup plus facilement tes scripts Python d'images sur les calculatrices les moins bien dotées en mémoire de stockage, et d'en faire rentrer beaucoup plus sur les autres ! :D

Liens :

Mise à jour TI-Nspire CX II 5.4.0

New postby critor » 07 Jan 2022, 00:00

15069Pour bien démarrer l'année 2022, Texas Instruments nous sort aujourd'hui une nouvelle mise à jour 5.4 pour ses calculatrices TI-Nspire CX II.

Le numéro de version complet est 5.4.0.257, et la compilation a eu lieu le 11 novembre 2021.

Elle fait donc suite à la version précédente 5.3.2 compilée le 29 juin 2021.
Attention, comme la version précédente 5.3.2, cette nouvelle version 5.4 n'est pas compatible avec Ndless r2018, et son installation est comme à l'habitude bien évidemment sans aucun retour possible. Toute tentative de réinstaller une version inférieure te sera par la suite refusée.

Si tu choisis de mettre à jour ta calculatrice avec l'une de ces versions, tu renonces donc à Ndless pour une durée indéterminée, des jours, semaines, mois ou même années comme c'est déjà arrivé, nous l'ignorons.

Entre le changement de numérotation majeur de la version 5.4 et le fait que la publication (et donc les tests de validation) ont pris près de 2 mois, nous aurions pu nous attendre à de grandes nouveautés.

Cela ne semble toutefois pas être le cas. Le changelog officiel n'évoque vaguement que 2 choses :
Texas Instruments wrote:
  • améliorations des fonctionnalités « Mode examen »
  • diverses corrections de bugs mineurs

Nous avons cherché pendant plusieurs heures, aussi bien niveau mode examen que niveau bugs déjà rencontrés, mais n'avons strictement rien réussi à trouver comme nouveauté ou amélioration.

Il y a toujours les problèmes avec les images-ressources que tu importes dans tes documents via l'éditeur Lua du logiciel TI-Nspire.

Elles sont affichées correctement par les scripts Lua, mais sont inversées verticalement lors d'un affichage par les scripts Python via le module ti_image.

Pire, sur certaines images nous avons même avec une distorsion horizontale en prime... :(

Niveau Python, il y a toujours un bug bien violent avec la fonction set_color() de la bibliothèque ti_draw. Si jamais tu commets l'erreur de lui passer le paramètre de couleur sous la forme d'une liste au lieu d'un tuple, la calculatrice redémarre instantanément :
Code: Select all
from ti_draw import *
set_color(255, 0, 0) # ok

c = (255, 0, 0)
set_color(c) # ok

c = [255, 0, 0]
set_color(c) # reset



Téléchargements :
Link to topic: Mise à jour TI-Nspire CX II 5.4.0 (Comments: 10)

Liste calculatrices Australie SACE 2022: éviction HP+Sharp

New postby critor » 06 Jan 2022, 14:24

Le mode examen des calculatrices graphiques désormais en application en France est un véritable scandale.

Avant tu pouvais améliorer gratuitement les capacités de n'importe quel modèle de calculatrice, même de milieu ou d'entrée de gamme, en lui rajoutant des programmes ou applications téléchargés chez nous ou ailleurs. Nous y avons toujours veillé, peu importe la marque, le modèle ou son prix.

Nous n'allons pas retracer ici plusieurs décennies de création bénévole dont 10 ans pour nous, bien souvent avec code source ouvert et libre, et très souvent pour les modèles de milieu de gamme afin de leur permettre d'approcher ou égaler le haut de gamme. On peut citer parmi les pépites les plus récentes KhiCAS, logiciel intégré de Mathématiques permettant d'unifier les différents modèles car disponible pour TI-Nspire CX II, TI-Nspire CX, NumWorks, Casio Graph 35+E II et Graph 90+E.

Maintenant tu ne peux plus, car le mode examen tous constructeurs confondus va bien au-delà du seul blocage des documents ou informations demandé par les spécifications officielles, et bloque également toutes les fonctionnalités rajoutées ! :mj:

Seules les fonctionnalités officielles du constructeur de la machine sont donc utilisables en examen et l'unique façon d'en avoir davantage si jamais tu trouves qu'il te manque quelque chose est de payer, payer pour le modèle plus cher. :'(
C'est très choquant de confier ainsi à des acteurs lucratifs étrangers les pleins pouvoirs de décider ce que les candidats auront le droit d'utiliser ou pas comme fonctionnalités aux examens français, fonctionnalités désormais entièrement déterminées par le seul prix d'achat initial.

Une grave atteinte aux droits des utilisateurs et des développeurs, mais également à l'égalité des candidats devant l'examen contrairement à ce qu'affirme la communication officielle. :mj:

Curieuse chose que de vouloir ainsi tout contrôler et interdire au pays de la liberté et de l'égalité, surtout lorsque la réglementation en question génère encore plus d'inégalités... :#roll#:

Dans l'État d'Australie-Méridionale (SA - South Australia), l'institution scolaire s'est déjà penchée sur la question des données dans les calculatrices, et a montré que la réponse pouvait être autre chose qu'un mode examen punissant tout-le-monde et particulièrement les moins aisés.

La réglementation du certificat d'éducation de l'Australie du Sud (SACE - South Australian Certificate of Education) qui est même suivie par d'autres états australiens ainsi que des écoles dans d'autres pays, n'autorise que certains modèles de calculatrices graphiques, reproduits ci-contre depuis la session 2011.

Les calculatrices autorisées y sont choisies selon plusieurs critères, entre autres :
  • pas de capacités de calcul formel (CAS - Computer Algebra System)
  • pas de connecteur dédié à la connexion d'une mémoire externe (lecteur de carte SD)
Mais surtout, tu peux remarquer que les modèles Casio autorisés aujourd'hui sont spécifiques à l'Australie.

La fx-9860G AU sortie en 2006 est comparable au modèle international fx-9860G de 2005 (Graph 85 en France).
Seule différence, sa mémoire de stockage en Flash n'a pas 1,5 Mio de capacité mais seulement 800 Kio.

En effet, la réglementation du SACE autorise parfaitement l'utilisation de la mémoire de la calculatrice par les candidats. Mais afin de gommer les inégalités, elle fixe une capacité maximale.
La limite se situant visiblement à l'époque entre 800 Kio et 1,5 Mio, Casio a donc sorti pour l'Australie la fx-9860G AU avec ainsi une mémoire de stockage de capacité réduite.

Tous les candidats disposent de la sorte du même espace mémoire qu'il leur appartient de remplir comme bon leur semble. A eux de décider si il vaut mieux y mettre des programmes et applications rajoutant des fonctionnalités, ou bien des formulaires et documents PDF. Une façon très saine de les responsabiliser.


Cette limite a depuis été revue à la hausse pour passer à 5 Mio.

Casio en profite donc pour sortir en 2009 la fx-9860G AU Plus, cette fois-ci offrant bien 1,5 Mio de capacité de mémoire de stockage comme le modèle international fx-9860GII (Graph 75 en France).

En 2016, Casio sort la fx-CG20AU. Ici le modèle international fx-CG20 offre 16 Mio de capacité de stockage. C'est donc ce point qui diffère sur la fx-CG20 AU, avec seulement 4,5 Mio.

En 2018, Casio sort la fx-CG50AU. Même différence ici avec le modèle international fx-CG50 (Graph 90+E en France), on passe de 16 Mio à 4,5 Mio d'espace de stockage.

Aujourd'hui le SACE met à jour la liste des modèles de calculatrices autorisés à compter de la session 2022.

Au menu non pas des nouveautés, mais des suppressions des modèles les plus anciens. Sont dès maintenant interdits d'utilisation aux examens, les modèles suivants :
  • TI-83 Plus (1999)
  • Casio fx-9860G AU (2006)
  • HP 39GS (2006)
  • Sharp EL-9900 (2001)
Pour Casio et Texas Instruments rien de grave, il s'agit juste du retrait des seuls modèles les plus anciens. Pour Casio la fabrication et la commercialisation ont même cessé depuis longtemps, la fx-9860G AU ayant été remplacée dès 2009 par la fx-9860G AU+ restant à ce jour autorisée.

Pour HP et Sharp par contre, suite aux suppressions il n'y a plus aucun modèle autorisé. Leurs technologies sont désormais strictement interdites d'utilisation en Australie. C'est un camouflet supplémentaire à ajouter à la formidable collection que ces entreprises se complaisent tristement à alimenter ces dernières années avec un talent remarquable.

Rappelons en effet que HP et Sharp ont toutes deux commis l'erreur monumentale de se séparer totalement de leur branche calculatrices/éducation, en la confiant à des acteurs externes ne semblant être que des commerciaux animés de simples vues à court terme et sans volonté/capacité d'investir :
  • pour Sharp depuis 2015, les calculatrices sont entièrement développées et gérées par Moravia (Europe) et VictorTech (Amérique)
  • pour HP de façon progressive et désormais totale depuis 2021, les calculatrices sont entièrement développées et gérées par Moravia (Europe) et Royal (Amérique)
Avec la perte aujourd'hui du marché continental de l'Australie, nous avons une fois de plus l'illustration du travail absolument lamentable effectué par ces acteurs. :mj:

Source : https://www.sace.sa.edu.au/coordinating ... -sheets/49

Vœux de NumWorks aux enseignants, édition 2022

New postby Admin » 05 Jan 2022, 09:48

Bonne nouvelle, les vœux 2022 de NumWorks viennent d'être adressés aux enseignants. Si tu disposes d'un compte correctement configuré sur https://my.numworks.com/ , alors tu devrais les recevoir ces jours-ci dans ton casier. ;)

L'envoi comprend plusieurs éléments:
  • La traditionnelle carte de voeux
  • Le visuel de la coque collector macarémaths sous la forme de 2 autocollants.
  • Et un poster sur lequel nous allons nous attarder.
11796Si tu n'as toujours pas réussi à récupérer / gagner la coque macarémaths, alors tu vas enfin pouvoir te la fabriquer toi-même en collant un de ces autocollants sur ta coque actuelle ! :D


Le poster quant à lui représente donc une calculatrice NumWorks traçant une superbe tête de loup dans son application Fonctions, apparemment entièrement constituée de morceaux de fonctions affines ! :favorite:

Peut-être que cela te fait penser à notre cher Vincent Robert alias cent20, enseignant au lycée privé catholique Louis Pasteur à Avignon, qui offre justement chaque année à ses élèves de Seconde la possibilité d'illustrer leur créativité et leur talent dans le cadre du DM n°21 "Les mathématiques sont belles", en réalisant donc un dessin de leur choix sur leur calculatrice NumWorks.

Mais nous ne trouvons pas cette œuvre dans ses fichiers, et il faut savoir que son initiative a fait bien des émules. On peut également citer :

Et bien justement la clé du mystère se trouve dans la carte de vœux. Cette tête de loup rentre donc dans ce dernier point : il s'agit d'une création de Claire C., brillante élève de Seconde au lycée Stanislas cette année.

N'oublie pas de lui envoyer un petit mot en retour... ;)


Source : https://twitter.com/nsi_xyz/status/1478282550397358081

-
Search
-
Social TI-Planet
-
Featured topics
Grand Concours 2024-2025 - Programmation Python
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1101 utilisateurs:
>1086 invités
>8 membres
>7 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)