Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/06/2016, à 12:33

temps

[résolu] javascript data

Bonjour,
je rencontre ce message d'erreur dans la console :

Media ressource data:audio/wav;base64,monwave could not be decoded. index.html
All candidate ressources failed to load. Media load paused.

Pourtant je génère mon fichier audio en javascript exactement de la même manière qu'en langage C, ou cpp mais il y a quelque chose qui m'échappe, je ne sais pas pourquoi le fichier n'est pas reconnue.
j'ai même vérifié avec

console.log(monwave)

et mon wave est exactement identique au fichiers audio que je crée compatible avec tous les lecteurs audio.
Mon but est de créer un nouvel Add-ons pour firefox, est-ce que quelqu'un peut m'aider ?
le code complet est là pour le récupérer il faut ouvrir un terminal et entrer :

wget -c http://www.letime.net/lecjo/index.html

C'est la partie HTML de l'Add-ons, l'exemple utilise un fichier audio générateur en ASCII, mais c'est juste le temps de la construction plus tard celui-ci sera en binaire généré en cpp (objectif pourvoir générer des fichiers audio de centaines de Mo sous firefox, avec quelques centaines d'octets de transfert

cordialement

Dernière modification par temps (Le 13/07/2016, à 07:21)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#2 Le 01/07/2016, à 19:04

temps

Re : [résolu] javascript data

Bonjour,

J'arrive à générer les sons à partir de fichiers textes, de fichiers binaires téléchargés extrêmement léger, et même j'arrive à faire générer des fichiers binaires avec quelques octets téléchargés.

Il reste du travail pour améliorer et ensuite afin de créer un standard cohérent de l'Add-ons, car :
1- il existe un amortissement en début et fin de fichier
2- il faut ajuster les boucles et mieux gérer la gestion des amplitude car il y a des interférences dans javascript selon.
3- Cela ne fait pas de différence à l'oreille (nous obtenons exactement le même son), mais le sens des fronts sont inversés par les entrailles de javascript dans la conversion en base64. Ce qui perturbe les repères

J'ai commencé à écrire une page internet pour faire découvrir la puissance de l'outil et ainsi recruter une équipe pour bien penser l'Add on lecjo, je dois encore trouver une solution pour générer la boucle qui permet à chacun de tester ses propres formes.  voici le code de la page de démonstration permettant de découvrir lecjo et les lois de l'acoustique :

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Lecteur fichier abadie.jo</title>
<script>

function onInitFs(fs) {
   fs.root.getFile('genere.jo', {create: true, exclusive: true}, function(fileEntry) {
      alert(fileEntry.name);
   }, errorHandler);
}


//Add-ons pour firefox
</script>
</head>

<body>

<h1>Préparation à l'utilisation de l'Add on nommé lecjo</h1>
<h2>Découverte des lois de l'acoustique en fonction des dimensions en passant par le dessin</h2>
<div id='org_div1'> </div>
<p>
Usage : Nous dessinons à l'aide d'une série de 2 valeurs des formes, actuellement pour créer un nouveau son, ou mélodie selon la quantité de formes dessinées, il faut régénérer la page pour chaque nouveau son. La forme actuelle est celle d'une guitare, c'est un marteau acoustique.
</p>

<p>Pour découvrir les lois de l'acoustiques entrer ici vos formes pour découvrir les différentes dimensions:</p>
<br/>


<form id="dessindeforme" method="post" >
  Dessin de forme: <input id="dessindeforme1" class="register" type="text" name="dessin" data-code="'+value '" value="127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 128, 5, 127, 240, 128, 5, 127, 240, 128, 5, 127, 240, 5, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 96, 22, 165, 106, 81, 64, 172, 174, 56, 110, 203, 100, 38, 78, 175, 112, 75, 115, 221, 90, 25, 87, 170, 123, 84, 120, 239, 98, 21, 118, 170, 126, 96, 119, 239, 98, 22, 116, 170, 125, 99, 118, 226, 169, 28, 114, 160, 124, 99, 117, 220, 250, 32, 112, 160, 121, 99, 31, 208, 250, 36, 110, 151, 116, 91, 31, 204, 250, 40, 108, 151, 122, 96, 31, 202, 250, 44, 106, 151, 118, 99, 31, 200, 250, 48, 104, 145, 114, 94, 31, 196, 250, 52, 102, 145, 113, 95, 31, 192, 250, 56, 100, 145, 112, 97, 31, 188, 250, 60, 98, 142, 111, 99, 31, 184, 250, 64, 96, 142, 110, 101, 31, 180, 250, 68, 94, 142, 109, 103, 31, 176, 250, 72, 92, 139, 108, 105, 31, 172, 250, 76, 90, 139, 107, 107, 31, 168, 250, 80, 88, 139, 106, 109, 31, 164, 250, 84, 86, 136, 105, 111, 31, 160, 250, 88, 84, 136, 104, 113, 31, 156, 250, 92, 82, 136, 103, 115, 31, 152, 250, 96, 80, 133, 102, 117, 31, 148, 250, 100, 78, 133, 101, 119, 31, 144, 250, 104, 76, 133, 100, 121, 31, 140, 250, 108, 74, 130, 99, 123, 31, 136, 250, 112, 72, 130, 98, 125, 31, 132, 250, 116, 70, 130, 97, 127, 31, 128, 250, 120, 68, 127, 96, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240"/><br>
<br><br>
</form> 
<p>Le dessin ce fait avec deux valeurs, l'une pour la hauteur, l'autre pour la largeur. Ces valeurs doivent être comprise entre 30 et 220, chaque valeur étant séparée par une virgule.</p>
<button onclick="lecjoa();">Générer le son dessiné</button><br>


<h2>Pour comprendre ce qui est fait, le concept et ses sources</h2>
<p>
A la préhistoire nous trouvons dans les grottes Ariégeoise, des dessins animés qui utilisaient le langage multidirectionnel. Bien plus tard la langue Celte c'est développée sur ce modèle de perception, en ayant conscience que notre entendement est multidirectionnel et que les mouvements des événements qui nous entourent sont multidirectionnels. <br>
En opposition, est apparue en Asie des langages à la recherche d'absolus, des langages unidirectionnels construisant ce qu'ils nommèrent la tour de Babel. <br>
De cet événement c'est développé deux courants dans le maniement des langages. Le premier reprenant le celte et mis à l'honneur par le siècle des lumières, en indiquant qu'il ne fallait pas utiliser des dictionnaires mais des encyclopédies, le deuxième qui en opposition cherchait des absolus en chaque terme, en déployant ceci jusqu'aux sciences, ou politiques en nommant des présidents et des rois. <br>
De cet événement nous pouvons dans les sciences discerner deux courants, celui de Henri Poincaré (Mathématicien, physicien et philosophe) qui travaille en multidirectionnel en équilibrant plusieurs sciences, et celui de Albert Einstein qui est à recherche d'absolus même en science en énonçant des formules présentées comme sacrées (sans étude aux limites ou vérifier la véracité).<br>
 Ce jour nous remarquons que les principaux moteurs de recherches d'internet, (la bible de nos enfants) sont construits sur un langage unidirectionnel, que les pages des journaux sont aussi construites sur de l'unidirectionnel, un formatage, un conditionnement bien triste. L'inconvénient de l'unidirectionnel est qu'il impose un rythme et surtout une méthode d'association des idées loin des possibilités de notre entendement qui est multidirectionnel. une traitrise contre laquelle de nombreux de nos ancêtres sont morts, car un pays n'est composé que d'hommes, pas de zombies.<br>
Nous pourrions voir aussi, le multidirectionnel dans l'ancien socialisme pure à la française, et l'unidirectionnel dans le socialisme réactionnaire contemporain ; ou bien même encore le multidiretionnel dans l'entendement de l'homme qui se repère à l'aide de spatialisation, en opposition au cerveau féminin qui cherche des termes sur des parcours fléchés ; mais cette analyse serait trop simpliste car unidirectionnelle, et ne tient pas compte des équilibres induits de niveaux supérieurs. Car si la politique n'a pas su sortir d'une mauvaise base, de nombreuses femmes, ajoutent des coefficients correcteurs en jouant sur plusieurs dimensions pour retrouver un équilibre salvateur. Plusieurs causes peuvent avoir le même effet, et nul n'impose d'utiliser les lois de tel ou tel dimension pour retrouver son humanité.<br>
Si pour certains la pensée et l'expression multidirectionnelle est évidente, pour d'autres, elle n'est pas accessible, aussi j'ai décidé de présenter les lois physiques en fonction des différentes dimensions de l'acoustique en utilisant des formes spécifiques à plusieurs dimensions. Cette technique géométrique, inventée par la Grèce antique pour traduire le celte, cette technique, bien que peu puissante, a l'avantage d'être perçue par les pratiquant du culte unidirectionnel.<br>
L'application lecjo utilise les lois physiques de plusieurs dimensions aux lois opposées pour produire l'effet désirée en utilisant le moins de ressources possible.<br> Bien que le concept soit multidirectionnel, il peut être entrevue en dessinant des formes<br>
Les formes se dessinnent à l'aide deux valeurs séparée d'un espace, comprises entre 20 et 230, la première pour la hauteur et la deuxième pour la largeur<br> Inutile d'en dire plus, car comme pour conduire une voiture, nul besoin de savoir ce qu'il y a sous le capot
</p>
<p> Documentation sur la même application que j'ai écris en langage c et cpp : <a href="https://doc.ubuntu-fr.org/lecjo" target="_blank">https://doc.ubuntu-fr.org/lecjo</a></p>
<p> Exemple de formes dessinnées et leurs sons générés : <a href="http://www.letime.net/um/" target="_blank">http://www.letime.net/um/</a></p>

<div>
 <a href="http://www.letime.net/lecjo/1.jo">Exemple  fichier son au format jo à télécharger : </a><br>
 <a href="http://www.letime.net/lecjo/jo.jo"> Exemple 1 de fichier son au format jo à télécharger :</a><br>
<a href="http://www.letime.net/lecjo/jo.jo"> Exemple 2 de fichier son au format jo à télécharger : </a><br>

<br><br>
<a href="http://www.letime.net/lecjo/1.jo.tar.gz"> Exemple 1 de fichier son au format jo compressé à télécharger : </a><br>
</div><br><br>

<script>





    
			var FichierAudioJo=[];
var text1={};
var choixjojoa = 1;





/*********************************deuxième partie*********************************************************************************/
/* mes tables de generations*/

var placement, affiche1, placementlong, repere1, samples;



placement = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128];


var tab1jo17 = [99997];
var tab2jo17 = [53564, 99997];
var tab3jo17 = [38191, 71298, 99997];
var tab4jo17 = [30582, 57094, 80076, 99998];
var tab5jo17 = [26078, 48685, 68282, 85271, 99998];
var tab6jo17 = [23126, 43173, 60552, 75617, 88677, 99998];
var tab7jo17 = [21059, 39315, 55141, 68860, 80752, 91062, 99999];
var tab8jo17 = [19545, 36488, 51176, 63909, 74946, 84514, 92809, 99999];
var tab9jo17 = [18398, 34347, 48173, 60158, 70548, 79555, 87363, 94131, 99998];
var tab10jo17 = [17508, 32685, 45842, 57247, 67134, 75705, 83134, 89575, 95158, 99999];
var tab11jo17 = [16803, 31369, 43996, 54942, 64431, 72656, 79787, 85968, 91327, 95972, 99999];
var tab12jo17 = [16236, 30311, 42512, 53088, 62257, 70205, 77095, 83068, 88246, 92735, 96626, 99998];
var tab13jo17 = [15775, 29450, 41304, 51580, 60489, 68211, 74906, 80709, 85739, 90100, 93881, 97158, 99999];
var tab14jo17 = [15396, 28742, 40311, 50341, 59035, 66572, 73105, 78769, 83679, 87935, 91625, 94823, 97596, 99999];
var tab15jo17 = [15081, 28155, 39488, 49313, 57830, 65213, 71613, 77161, 81971, 86140, 89754, 92887, 95603, 97958, 99999];
var tab16jo17 = [14819, 27666, 38802, 48456, 56824, 64079, 70368, 75819, 80545, 84642, 88194, 91272, 93941, 96255, 98260, 99999];
var tab17jo17 = [14599, 27255, 38226, 47736, 55981, 63127, 69323, 74694, 79349, 83385, 86884, 89917, 92546, 94825, 96801, 98514, 99999];
var tab18jo17 = [14414, 26909, 37740, 47130, 55270, 62326, 68442, 73745, 78342, 82326, 85781, 88775, 91371, 93621, 95572, 97263, 98729, 99999];
var tab19jo17 = [14257, 26615, 37329, 46616, 54667, 61646, 67696, 72941, 77487, 81429, 84845, 87807, 90375, 92600, 94530, 96202, 97652, 98909, 99999];
var tab20jo17 = [14123, 26366, 36979, 46180, 54155, 61069, 67063, 72258, 76762, 80667, 84051, 86985, 89529, 91734, 93645, 95302, 96738, 97984, 99063, 99999];
var tab21jo17 = [14010, 26154, 36682, 45809, 53720, 60578, 66524, 71677, 76145, 80018, 83376, 86286, 88809, 90996, 92892, 94536, 95961, 97196, 98266, 99195, 99999];
var tab22jo17 = [13913, 25973, 36428, 45491, 53348, 60159, 66063, 71181, 75618, 79464, 82798, 85688, 88194, 90366, 92249, 93881, 95296, 96522, 97586, 98507, 99306, 99999];
var tab23jo17 = [13829, 25818, 36210, 45219, 53029, 59799, 65668, 70756, 75166, 78989, 82303, 85176, 87667, 89826, 91698, 93320, 94727, 95946, 97003, 97919, 98713, 99402, 99999];
var tab24jo17 = [13758, 25685, 36024, 44987, 52756, 59491, 65330, 70391, 74779, 78583, 81880, 84738, 87216, 89364, 91226, 92840, 94239, 95452, 96503, 97415, 98205, 98890, 99484, 99999];
var tab25jo17 = [13697, 25571, 35864, 44787, 52522, 59228, 65040, 70079, 74447, 78234, 81517, 84362, 86829, 88967, 90821, 92428, 93821, 95029, 96075, 96983, 97770, 98452, 99043, 99555, 99999];
var tab26jo17 = [13645, 25473, 35726, 44615, 52320, 59000, 64790, 69810, 74161, 77933, 81203, 84038, 86495, 88625, 90472, 92073, 93460, 94663, 95706, 96610, 97394, 98073, 98662, 99173, 99615, 99999];
var tab27jo17 = [13599, 25388, 35608, 44467, 52147, 58805, 64576, 69579, 73916, 77675, 80935, 83760, 86209, 88332, 90173, 91768, 93151, 94350, 95389, 96290, 97071, 97749, 98335, 98844, 99285, 99668, 99999];
var tab28jo17 = [13561, 25316, 35506, 44340, 51998, 58636, 64391, 69380, 73704, 77453, 80703, 83520, 85962, 88079, 89914, 91505, 92884, 94080, 95116, 96015, 96794, 97469, 98054, 98561, 99001, 99382, 99713, 99999];
var tab29jo17 = [13527, 25253, 35418, 44230, 51869, 58491, 64231, 69208, 73521, 77261, 80503, 83313, 85749, 87861, 89691, 91278, 92654, 93847, 94881, 95777, 96554, 97227, 97811, 98317, 98756, 99136, 99466, 99751, 99999];
var tab30jo17 = [13498, 25199, 35342, 44135, 51757, 58365, 64093, 69059, 73363, 77095, 80330, 83134, 85565, 87672, 89499, 91082, 92455, 93645, 94677, 95571, 96346, 97018, 97601, 98106, 98543, 98923, 99252, 99537, 99784, 99999];
var tab31jo17 = [13473, 25152, 35277, 44053, 51662, 58257, 63975, 68931, 73228, 76952, 80181, 82980, 85406, 87510, 89333, 90914, 92284, 93472, 94501, 95394, 96168, 96838, 97420, 97924, 98361, 98740, 99068, 99353, 99599, 99813, 99999];
var tab32jo17 = [13451, 25112, 35220, 43983, 51579, 58164, 63872, 68820, 73110, 76829, 80052, 82847, 85269, 87369, 89189, 90767, 92135, 93321, 94349, 95241, 96013, 96683, 97263, 97767, 98203, 98581, 98909, 99193, 99439, 99653, 99838, 99999];
var tab33jo17 = [13433, 25077, 35171, 43922, 51507, 58083, 63784, 68725, 73009, 76722, 79941, 82732, 85151, 87248, 89066, 90642, 92008, 93192, 94219, 95109, 95880, 96549, 97129, 97631, 98067, 98445, 98772, 99056, 99302, 99515, 99700, 99860, 99999];
var tab34jo17 = [13416, 25047, 35129, 43869, 51445, 58013, 63706, 68642, 72921, 76630, 79845, 82632, 85048, 87143, 88958, 90532, 91897, 93080, 94105, 94994, 95764, 96432, 97011, 97513, 97949, 98326, 98653, 98936, 99182, 99395, 99580, 99740, 99878, 99999];
var tab35jo17 = [13402, 25021, 35092, 43823, 51392, 57953, 63640, 68571, 72845, 76550, 79762, 82546, 84960, 87052, 88866, 90439, 91802, 92983, 94007, 94895, 95665, 96332, 96911, 97412, 97847, 98224, 98550, 98834, 99079, 99292, 99476, 99636, 99775, 99895, 99999];
var tab36jo17 = [13390, 24998, 35060, 43783, 51345, 57900, 63583, 68509, 72779, 76481, 79690, 82472, 84883, 86974, 88786, 90357, 91718, 92899, 93922, 94809, 95579, 96245, 96823, 97324, 97758, 98135, 98461, 98744, 98989, 99202, 99386, 99546, 99685, 99805, 99909, 99999];
var tab37jo17 = [13380, 24978, 35033, 43749, 51305, 57855, 63533, 68455, 72722, 76421, 79627, 82407, 84817, 86905, 88716, 90286, 91647, 92826, 93849, 94735, 95504, 96170, 96747, 97248, 97682, 98058, 98384, 98667, 98912, 99124, 99308, 99468, 99606, 99726, 99830, 99921, 99999];
var tab38jo17 = [13371, 24962, 35009, 43720, 51270, 57816, 63490, 68409, 72673, 76369, 79574, 82351, 84759, 86847, 88656, 90225, 91585, 92764, 93786, 94671, 95439, 96105, 96682, 97182, 97616, 97992, 98318, 98600, 98845, 99057, 99242, 99401, 99539, 99659, 99763, 99853, 99931, 99999];
var tab39jo17 = [13363, 24947, 34989, 43694, 51241, 57782, 63453, 68369, 72631, 76325, 79527, 82304, 84710, 86796, 88605, 90173, 91532, 92710, 93731, 94616, 95384, 96049, 96626, 97126, 97559, 97935, 98261, 98543, 98788, 99000, 99184, 99343, 99481, 99601, 99705, 99795, 99873, 99941, 99999];
var tab40jo17 = [13356, 24934, 34971, 43672, 51214, 57753, 63421, 68334, 72594, 76286, 79487, 82261, 84667, 86752, 88559, 90126, 91485, 92662, 93683, 94568, 95335, 96000, 96576, 97076, 97509, 97885, 98210, 98492, 98737, 98949, 99133, 99292, 99430, 99550, 99654, 99744, 99822, 99890, 99948, 99999];
var tab41jo17 = [13350, 24923, 34956, 43653, 51192, 57727, 63393, 68304, 72561, 76252, 79452, 82225, 84629, 86714, 88520, 90087, 91444, 92621, 93642, 94526, 95293, 95958, 96534, 97033, 97466, 97842, 98167, 98449, 98694, 98906, 99089, 99249, 99387, 99506, 99610, 99700, 99778, 99846, 99904, 99955, 99999];
var tab42jo17 = [13345, 24914, 34942, 43636, 51172, 57705, 63369, 68278, 72534, 76223, 79421, 82194, 84597, 86681, 88487, 90052, 91410, 92586, 93606, 94490, 95257, 95921, 96497, 96996, 97429, 97804, 98130, 98412, 98656, 98868, 99052, 99211, 99349, 99468, 99572, 99662, 99740, 99808, 99866, 99917, 99961, 99999];
var tab43jo17 = [13341, 24906, 34931, 43622, 51155, 57686, 63348, 68255, 72510, 76198, 79395, 82167, 84569, 86652, 88457, 90023, 91379, 92555, 93575, 94459, 95225, 95889, 96465, 96964, 97397, 97772, 98097, 98379, 98623, 98835, 99019, 99178, 99316, 99436, 99539, 99629, 99707, 99775, 99833, 99884, 99928, 99966, 99999];
var tab44jo17 = [13337, 24898, 34921, 43609, 51140, 57669, 63329, 68236, 72489, 76176, 79372, 82143, 84545, 86627, 88432, 89996, 91353, 92529, 93548, 94431, 95197, 95861, 96437, 96936, 97369, 97744, 98069, 98350, 98595, 98806, 98990, 99149, 99287, 99407, 99510, 99600, 99678, 99746, 99804, 99855, 99899, 99937, 99970, 99999];
var tab45jo17 = [13334, 24892, 34912, 43598, 51128, 57655, 63313, 68218, 72471, 76157, 79352, 82122, 84523, 86605, 88410, 89974, 91330, 92505, 93524, 94408, 95174, 95837, 96413, 96912, 97344, 97719, 98044, 98326, 98570, 98782, 98965, 99124, 99262, 99382, 99485, 99575, 99653, 99721, 99779, 99830, 99874, 99912, 99945, 99974, 99999];
var tab46jo17 = [13331, 24887, 34905, 43589, 51117, 57643, 63300, 68204, 72455, 76141, 79335, 82105, 84506, 86587, 88391, 89955, 91311, 92486, 93505, 94388, 95154, 95817, 96393, 96891, 97324, 97699, 98023, 98305, 98549, 98761, 98944, 99103, 99241, 99361, 99464, 99554, 99632, 99700, 99758, 99809, 99853, 99891, 99924, 99953, 99977, 99999];
var tab47jo17 = [13328, 24882, 34898, 43580, 51107, 57632, 63288, 68191, 72442, 76126, 79320, 82089, 84490, 86570, 88374, 89938, 91293, 92468, 93487, 94370, 95135, 95799, 96374, 96873, 97305, 97680, 98005, 98286, 98530, 98742, 98926, 99085, 99222, 99342, 99446, 99535, 99613, 99681, 99739, 99790, 99834, 99872, 99905, 99934, 99958, 99980, 99999];
var tab48jo17 = [13326, 24878, 34892, 43574, 51099, 57623, 63278, 68180, 72430, 76114, 79308, 82076, 84476, 86556, 88360, 89923, 91279, 92454, 93472, 94355, 95120, 95784, 96359, 96857, 97290, 97664, 97989, 98271, 98515, 98726, 98910, 99069, 99207, 99326, 99430, 99519, 99597, 99665, 99723, 99774, 99818, 99856, 99889, 99918, 99942, 99964, 99983, 99999];
var tab49jo17 = [13324, 24875, 34887, 43567, 51092, 57615, 63269, 68171, 72420, 76103, 79297, 82065, 84464, 86544, 88348, 89911, 91266, 92441, 93459, 94342, 95107, 95770, 96345, 96844, 97276, 97651, 97975, 98257, 98501, 98712, 98896, 99055, 99193, 99312, 99416, 99505, 99583, 99651, 99709, 99760, 99804, 99842, 99875, 99904, 99928, 99950, 99969, 99985, 99999];
var tab50jo17 = [13323, 24872, 34883, 43562, 51086, 57608, 63261, 68163, 72411, 76094, 79287, 82055, 84454, 86534, 88337, 89900, 91255, 92429, 93448, 94330, 95095, 95759, 96334, 96832, 97264, 97639, 97964, 98245, 98489, 98701, 98884, 99043, 99181, 99300, 99404, 99494, 99571, 99639, 99697, 99748, 99792, 99830, 99863, 99892, 99916, 99938, 99957, 99973, 99987, 99999];
var tab51jo17 = [13321, 24869, 34880, 43558, 51081, 57602, 63255, 68156, 72404, 76087, 79279, 82047, 84446, 86525, 88328, 89891, 91246, 92420, 93438, 94321, 95086, 95749, 96324, 96823, 97255, 97629, 97954, 98235, 98479, 98691, 98874, 99033, 99171, 99290, 99394, 99484, 99561, 99629, 99687, 99738, 99782, 99820, 99853, 99882, 99906, 99928, 99947, 99963, 99977, 99989, 99999];
var tab52jo17 = [13320, 24867, 34876, 43553, 51075, 57596, 63249, 68149, 72397, 76079, 79271, 82038, 84437, 86517, 88319, 89882, 91237, 92411, 93429, 94311, 95076, 95740, 96314, 96813, 97245, 97619, 97944, 98225, 98469, 98681, 98864, 99023, 99161, 99280, 99384, 99474, 99551, 99619, 99677, 99728, 99772, 99810, 99843, 99872, 99896, 99918, 99937, 99953, 99967, 99979, 99989, 99999];
var tab53jo17 = [13319, 24865, 34874, 43550, 51071, 57592, 63244, 68143, 72391, 76073, 79265, 82032, 84430, 86510, 88312, 89875, 91229, 92404, 93421, 94304, 95069, 95732, 96307, 96805, 97237, 97612, 97936, 98218, 98461, 98673, 98856, 99015, 99153, 99272, 99376, 99466, 99543, 99611, 99669, 99720, 99764, 99802, 99835, 99864, 99888, 99910, 99929, 99945, 99959, 99971, 99981, 99991, 99999];
var tab54jo17 = [13318, 24863, 34871, 43547, 51068, 57588, 63240, 68139, 72387, 76068, 79260, 82027, 84425, 86505, 88307, 89869, 91224, 92398, 93416, 94298, 95063, 95726, 96301, 96799, 97231, 97606, 97930, 98212, 98456, 98667, 98850, 99009, 99147, 99266, 99370, 99460, 99537, 99605, 99663, 99714, 99758, 99796, 99829, 99858, 99882, 99904, 99923, 99939, 99953, 99965, 99975, 99985, 99993, 99999];
var tab55jo17 = [13317, 24862, 34869, 43545, 51065, 57585, 63236, 68135, 72382, 76064, 79255, 82022, 84420, 86499, 88302, 89864, 91218, 92392, 93410, 94293, 95057, 95720, 96295, 96793, 97225, 97600, 97924, 98206, 98450, 98661, 98844, 99003, 99141, 99260, 99364, 99454, 99531, 99599, 99657, 99708, 99752, 99790, 99823, 99852, 99876, 99898, 99917, 99933, 99947, 99959, 99969, 99979, 99986, 99993, 99999];
var tab56jo17 = [13317, 24860, 34868, 43543, 51063, 57582, 63233, 68132, 72379, 76060, 79251, 82018, 84416, 86495, 88297, 89860, 91214, 92388, 93406, 94288, 95053, 95716, 96290, 96789, 97221, 97595, 97919, 98201, 98445, 98656, 98839, 98998, 99136, 99255, 99359, 99449, 99527, 99594, 99652, 99703, 99747, 99785, 99818, 99847, 99871, 99893, 99912, 99928, 99942, 99954, 99964, 99974, 99981, 99988, 99994, 99999];
var tab57jo17 = [13316, 24859, 34866, 43540, 51060, 57579, 63230, 68128, 72375, 76056, 79247, 82014, 84412, 86491, 88293, 89855, 91209, 92383, 93401, 94283, 95048, 95711, 96286, 96784, 97216, 97590, 97915, 98196, 98440, 98651, 98835, 98993, 99131, 99251, 99354, 99444, 99522, 99589, 99647, 99698, 99742, 99780, 99813, 99842, 99866, 99888, 99907, 99923, 99937, 99949, 99959, 99969, 99976, 99983, 99989, 99994, 99999];
var tab58jo17 = [13315, 24858, 34864, 43539, 51058, 57577, 63227, 68126, 72372, 76053, 79244, 82010, 84408, 86487, 88289, 89851, 91206, 92380, 93397, 94279, 95044, 95707, 96282, 96780, 97212, 97586, 97911, 98192, 98436, 98647, 98831, 98989, 99127, 99247, 99350, 99440, 99518, 99585, 99643, 99694, 99738, 99776, 99809, 99838, 99862, 99884, 99903, 99919, 99933, 99945, 99955, 99965, 99972, 99979, 99985, 99990, 99995, 99999];
var tab59jo17 = [13315, 24857, 34863, 43537, 51057, 57575, 63225, 68124, 72370, 76051, 79242, 82008, 84406, 86485, 88287, 89849, 91203, 92377, 93394, 94277, 95041, 95704, 96279, 96777, 97209, 97583, 97908, 98189, 98433, 98644, 98828, 98986, 99124, 99244, 99347, 99437, 99515, 99582, 99640, 99691, 99735, 99773, 99806, 99835, 99859, 99881, 99900, 99916, 99930, 99942, 99952, 99962, 99969, 99976, 99982, 99987, 99992, 99996, 99999];
var tab60jo17 = [13315, 24857, 34862, 43536, 51055, 57573, 63223, 68122, 72368, 76049, 79239, 82006, 84403, 86482, 88284, 89846, 91200, 92374, 93392, 94274, 95038, 95701, 96276, 96774, 97206, 97580, 97905, 98186, 98430, 98641, 98825, 98983, 99121, 99241, 99344, 99434, 99512, 99579, 99637, 99688, 99732, 99770, 99803, 99832, 99856, 99878, 99897, 99913, 99927, 99939, 99949, 99959, 99966, 99973, 99979, 99984, 99989, 99993, 99996, 99999];
var tab61jo17 = [13314, 24856, 34861, 43535, 51053, 57571, 63222, 68120, 72366, 76046, 79237, 82003, 84401, 86479, 88281, 89843, 91197, 92371, 93389, 94271, 95036, 95698, 96273, 96771, 97203, 97577, 97902, 98183, 98427, 98638, 98822, 98981, 99118, 99238, 99341, 99431, 99509, 99576, 99634, 99685, 99729, 99767, 99800, 99829, 99854, 99875, 99894, 99910, 99924, 99936, 99946, 99956, 99963, 99970, 99976, 99981, 99986, 99990, 99993, 99996, 99999];
var tab62jo17 = [13314, 24856, 34861, 43534, 51052, 57570, 63220, 68118, 72364, 76045, 79235, 82001, 84399, 86478, 88280, 89842, 91196, 92369, 93387, 94269, 95034, 95697, 96271, 96769, 97201, 97575, 97900, 98181, 98425, 98636, 98820, 98979, 99116, 99236, 99339, 99429, 99507, 99574, 99632, 99683, 99727, 99765, 99798, 99827, 99852, 99873, 99892, 99908, 99922, 99934, 99944, 99954, 99961, 99968, 99974, 99979, 99984, 99988, 99991, 99994, 99997, 99999];
var tab63jo17 = [13314, 24855, 34860, 43533, 51051, 57569, 63219, 68117, 72363, 76043, 79234, 82000, 84397, 86476, 88278, 89840, 91194, 92368, 93385, 94267, 95032, 95695, 96269, 96767, 97199, 97573, 97898, 98179, 98423, 98634, 98818, 98977, 99114, 99234, 99337, 99427, 99505, 99572, 99630, 99681, 99725, 99763, 99796, 99825, 99850, 99871, 99890, 99906, 99920, 99932, 99942, 99952, 99959, 99966, 99972, 99977, 99982, 99986, 99989, 99992, 99995, 99997, 99999];
var tab64jo17 = [13314, 24855, 34860, 43533, 51051, 57568, 63218, 68116, 72362, 76043, 79233, 81999, 84397, 86475, 88277, 89839, 91193, 92367, 93384, 94266, 95031, 95694, 96268, 96766, 97198, 97572, 97897, 98178, 98422, 98633, 98817, 98976, 99113, 99233, 99336, 99426, 99504, 99571, 99629, 99680, 99724, 99762, 99795, 99824, 99849, 99870, 99889, 99905, 99919, 99931, 99941, 99951, 99959, 99965, 99971, 99976, 99981, 99985, 99988, 99991, 99994, 99996, 99998, 99999];
var tab65jo17 = [13313, 24854, 34859, 43532, 51050, 57567, 63217, 68115, 72360, 76041, 79232, 81997, 84395, 86473, 88275, 89837, 91191, 92365, 93382, 94264, 95029, 95692, 96266, 96764, 97196, 97571, 97895, 98176, 98420, 98632, 98815, 98974, 99111, 99231, 99334, 99424, 99502, 99569, 99627, 99678, 99722, 99760, 99793, 99822, 99847, 99868, 99887, 99903, 99917, 99929, 99939, 99949, 99957, 99963, 99969, 99974, 99979, 99983, 99986, 99989, 99992, 99994, 99996, 99997, 99999];
var tab66jo17 = [13313, 24854, 34859, 43531, 51049, 57567, 63216, 68114, 72360, 76040, 79231, 81997, 84394, 86473, 88274, 89836, 91190, 92364, 93381, 94263, 95028, 95691, 96265, 96763, 97195, 97570, 97894, 98175, 98419, 98631, 98814, 98973, 99110, 99230, 99333, 99423, 99501, 99568, 99626, 99677, 99721, 99759, 99792, 99821, 99846, 99867, 99886, 99902, 99916, 99928, 99938, 99948, 99956, 99962, 99968, 99973, 99978, 99982, 99985, 99988, 99991, 99993, 99995, 99996, 99998, 99999];
var tab67jo17 = [13313, 24854, 34858, 43531, 51049, 57566, 63216, 68113, 72359, 76039, 79230, 81996, 84393, 86472, 88273, 89835, 91189, 92363, 93380, 94262, 95027, 95690, 96264, 96762, 97194, 97569, 97893, 98174, 98418, 98630, 98813, 98972, 99109, 99229, 99332, 99422, 99500, 99567, 99625, 99676, 99720, 99758, 99791, 99820, 99845, 99866, 99885, 99901, 99915, 99927, 99937, 99947, 99955, 99961, 99967, 99972, 99977, 99981, 99984, 99987, 99990, 99992, 99994, 99995, 99997, 99998, 99999];
var tab68jo17 = [13313, 24854, 34858, 43530, 51048, 57566, 63215, 68113, 72358, 76039, 79229, 81995, 84392, 86471, 88272, 89834, 91188, 92362, 93379, 94261, 95026, 95689, 96263, 96762, 97193, 97568, 97892, 98173, 98417, 98629, 98812, 98971, 99108, 99228, 99331, 99421, 99499, 99566, 99624, 99675, 99719, 99757, 99790, 99819, 99844, 99865, 99884, 99900, 99914, 99926, 99936, 99946, 99954, 99960, 99966, 99971, 99976, 99980, 99983, 99986, 99989, 99991, 99993, 99994, 99996, 99997, 99998, 99999];
var tab69jo17 = [13313, 24853, 34857, 43530, 51048, 57565, 63215, 68112, 72358, 76038, 79228, 81994, 84392, 86470, 88272, 89833, 91187, 92361, 93379, 94261, 95025, 95688, 96262, 96761, 97192, 97567, 97891, 98172, 98416, 98628, 98811, 98970, 99107, 99227, 99330, 99420, 99498, 99565, 99623, 99674, 99718, 99756, 99789, 99818, 99843, 99864, 99883, 99899, 99913, 99925, 99935, 99945, 99953, 99959, 99965, 99970, 99975, 99979, 99982, 99985, 99988, 99990, 99992, 99993, 99995, 99996, 99997, 99998, 99999];
var tab70jo17 = [13313, 24853, 34857, 43530, 51048, 57565, 63215, 68112, 72358, 76038, 79228, 81994, 84392, 86470, 88272, 89833, 91187, 92361, 93379, 94261, 95025, 95688, 96262, 96761, 97192, 97567, 97891, 98172, 98416, 98628, 98811, 98970, 99107, 99227, 99330, 99420, 99498, 99565, 99623, 99674, 99718, 99756, 99789, 99818, 99843, 99864, 99883, 99899, 99913, 99925, 99935, 99945, 99953, 99959, 99965, 99970, 99975, 99979, 99982, 99985, 99988, 99990, 99992, 99993, 99995, 99996, 99997, 99998, 99999, 99999];
var tab71jo17 = [13313, 24853, 34857, 43529, 51047, 57564, 63214, 68111, 72357, 76037, 79228, 81993, 84391, 86469, 88271, 89833, 91186, 92360, 93378, 94260, 95024, 95687, 96262, 96760, 97191, 97566, 97890, 98171, 98415, 98627, 98810, 98969, 99106, 99226, 99329, 99419, 99497, 99564, 99622, 99673, 99717, 99755, 99788, 99817, 99842, 99863, 99882, 99898, 99912, 99924, 99934, 99944, 99952, 99958, 99964, 99969, 99974, 99978, 99981, 99984, 99987, 99989, 99991, 99992, 99994, 99995, 99996, 99997, 99998, 99998, 99999];
var tab72jo17 = [13312, 24853, 34857, 43529, 51047, 57564, 63213, 68111, 72356, 76036, 79227, 81992, 84390, 86468, 88270, 89832, 91186, 92359, 93377, 94259, 95023, 95686, 96261, 96759, 97190, 97565, 97889, 98170, 98414, 98626, 98809, 98968, 99105, 99225, 99328, 99418, 99496, 99563, 99621, 99672, 99716, 99754, 99787, 99816, 99841, 99862, 99881, 99897, 99911, 99923, 99933, 99943, 99951, 99957, 99963, 99968, 99973, 99977, 99980, 99983, 99986, 99988, 99990, 99991, 99993, 99994, 99995, 99996, 99997, 99997, 99998, 99999];
var tab73jo17 = [13312, 24853, 34857, 43529, 51047, 57564, 63213, 68111, 72356, 76036, 79227, 81992, 84390, 86468, 88270, 89832, 91186, 92359, 93377, 94259, 95023, 95686, 96261, 96759, 97190, 97565, 97889, 98170, 98414, 98626, 98809, 98968, 99105, 99225, 99328, 99418, 99496, 99563, 99621, 99672, 99716, 99754, 99787, 99816, 99841, 99862, 99881, 99897, 99911, 99923, 99933, 99943, 99951, 99957, 99963, 99968, 99973, 99977, 99980, 99983, 99986, 99988, 99990, 99991, 99993, 99994, 99995, 99996, 99997, 99997, 99998, 99999, 99999];
var tab74jo17 = [13312, 24853, 34857, 43529, 51047, 57564, 63213, 68111, 72356, 76036, 79227, 81992, 84390, 86468, 88270, 89832, 91186, 92359, 93377, 94259, 95023, 95686, 96261, 96759, 97190, 97565, 97889, 98170, 98414, 98626, 98809, 98968, 99105, 99225, 99328, 99418, 99496, 99563, 99621, 99672, 99716, 99754, 99787, 99816, 99841, 99862, 99881, 99897, 99911, 99923, 99933, 99943, 99951, 99957, 99963, 99968, 99973, 99977, 99980, 99983, 99986, 99988, 99990, 99991, 99993, 99994, 99995, 99996, 99997, 99997, 99998, 99999, 99999, 99999];
var tab75jo17 = [13312, 24853, 34856, 43529, 51046, 57563, 63213, 68110, 72355, 76036, 79226, 81992, 84389, 86467, 88269, 89831, 91185, 92358, 93376, 94258, 95022, 95685, 96260, 96758, 97189, 97564, 97888, 98169, 98413, 98625, 98808, 98967, 99104, 99224, 99327, 99417, 99495, 99562, 99620, 99671, 99715, 99753, 99786, 99815, 99840, 99861, 99880, 99896, 99910, 99922, 99932, 99942, 99950, 99956, 99962, 99967, 99972, 99976, 99979, 99982, 99985, 99987, 99989, 99990, 99992, 99993, 99994, 99995, 99996, 99996, 99997, 99998, 99998, 99998, 99999];
var tab76jo17 = [13312, 24853, 34856, 43529, 51046, 57563, 63213, 68110, 72355, 76036, 79226, 81992, 84389, 86467, 88269, 89831, 91185, 92358, 93376, 94258, 95022, 95685, 96260, 96758, 97189, 97564, 97888, 98169, 98413, 98625, 98808, 98967, 99104, 99224, 99327, 99417, 99495, 99562, 99620, 99671, 99715, 99753, 99786, 99815, 99840, 99861, 99880, 99896, 99910, 99922, 99932, 99942, 99950, 99956, 99962, 99967, 99972, 99976, 99979, 99982, 99985, 99987, 99989, 99990, 99992, 99993, 99994, 99995, 99996, 99996, 99997, 99998, 99998, 99998, 99999, 99999];
var tab77jo17 = [13312, 24853, 34856, 43529, 51046, 57563, 63213, 68110, 72355, 76036, 79226, 81992, 84389, 86467, 88269, 89831, 91185, 92358, 93376, 94258, 95022, 95685, 96260, 96758, 97189, 97564, 97888, 98169, 98413, 98625, 98808, 98967, 99104, 99224, 99327, 99417, 99495, 99562, 99620, 99671, 99715, 99753, 99786, 99815, 99840, 99861, 99880, 99896, 99910, 99922, 99932, 99942, 99950, 99956, 99962, 99967, 99972, 99976, 99979, 99982, 99985, 99987, 99989, 99990, 99992, 99993, 99994, 99995, 99996, 99996, 99997, 99998, 99998, 99998, 99999, 99999, 99999];
var tab78jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999];
var tab79jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999];
var tab80jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999];
var tab81jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999];
var tab82jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999];
var tab83jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999];
var tab84jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999];
var tab85jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999];
var tab86jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000];
var tab87jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000];
var tab88jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000];
var tab89jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000];
var tab90jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000];
var tab91jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000];
var tab92jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab93jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab94jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab95jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab96jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab97jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab98jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab99jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab100jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab101jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab102jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab103jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab104jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab105jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab106jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab107jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab108jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab109jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab110jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab111jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab112jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab113jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab114jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab115jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab116jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab117jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab118jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab119jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab120jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab121jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab122jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab123jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab124jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab125jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab126jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab127jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab128jo17 = [133122, 248523, 348561, 435282, 510458, 575627, 632121, 681093, 723547, 760349, 792252, 819908, 843882, 864665, 882681, 898299, 911837, 923574, 933748, 942567, 950213, 956841, 962586, 967567, 971884, 975627, 978872, 981684, 984123, 986236, 988068, 989657, 991034, 992227, 993262, 994159, 994937, 995611, 996195, 996701, 997141, 997521, 997851, 998137, 998385, 998600, 998787, 998948, 999088, 999210, 999315, 999406, 999485, 999554, 999613, 999665, 999709, 999748, 999781, 999811, 999836, 999858, 999877, 999893, 999907, 999920, 999930, 999940, 999948, 999955, 999961, 999966, 999970, 999974, 999978, 999981, 999983, 999986, 999987, 999989, 999991, 999992, 999993, 999994, 999995, 999995, 999996, 999997, 999997, 999997, 999998, 999998, 999998, 999999, 999999, 999999, 999999, 999999, 999999, 999999, 999999, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000];



var table =
    [tab1jo17, tab2jo17, tab3jo17, tab4jo17, tab5jo17, tab6jo17, tab7jo17,tab8jo17, tab9jo17, tab10jo17, tab11jo17, tab12jo17, tab13jo17, tab14jo17, tab15jo17,tab16jo17, tab17jo17, tab18jo17, tab19jo17, tab20jo17, tab21jo17, tab22jo17,tab23jo17, tab24jo17, tab25jo17, tab26jo17, tab27jo17, tab28jo17, tab29jo17,tab30jo17, tab31jo17, tab32jo17, tab33jo17, tab34jo17, tab35jo17, tab36jo17,tab37jo17, tab38jo17, tab39jo17, tab40jo17, tab41jo17, tab42jo17, tab43jo17,tab44jo17, tab45jo17, tab46jo17, tab47jo17, tab48jo17, tab49jo17, tab50jo17,tab51jo17, tab52jo17, tab53jo17, tab54jo17, tab55jo17, tab56jo17, tab57jo17,tab58jo17, tab59jo17, tab60jo17, tab61jo17, tab62jo17, tab63jo17, tab64jo17,tab65jo17, tab66jo17, tab67jo17, tab68jo17, tab69jo17, tab70jo17, tab71jo17,tab72jo17, tab73jo17, tab74jo17, tab75jo17, tab76jo17, tab77jo17, tab78jo17,tab79jo17, tab80jo17, tab81jo17, tab82jo17, tab83jo17, tab84jo17, tab85jo17,tab86jo17, tab87jo17, tab88jo17, tab89jo17, tab90jo17, tab91jo17, tab92jo17,tab93jo17, tab94jo17, tab95jo17, tab96jo17, tab97jo17, tab98jo17, tab99jo17,tab100jo17, tab101jo17, tab102jo17, tab103jo17, tab104jo17, tab105jo17, tab106jo17,tab107jo17, tab108jo17, tab109jo17, tab110jo17, tab111jo17, tab112jo17, tab113jo17,tab114jo17, tab115jo17, tab116jo17, tab117jo17, tab118jo17, tab119jo17, tab120jo17,tab121jo17, tab122jo17, tab123jo17, tab124jo17, tab125jo17, tab126jo17, tab127jo17,tab128jo17];


var tab =
    [0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
      0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
      0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, 0xA0,
      0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC,
      0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8,
      0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4,
      0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0,
      0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC,
      0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8,
      0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4,
      0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 0x00,
      0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C,
      0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
      0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24,
      0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30,
      0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C,
      0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
		    0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51,
		      0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A,
		      0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63,
		      0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C,
		      0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75,
		      0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E,
		      0x7F];

var tab1 =
    [0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B,
0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B,
0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B,
0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B,
0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B,
0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B,
0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B,
0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B,
0x7C, 0x7D, 0x7E, 0x7F, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B,
0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B,
0x9C, 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB,
0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB,
0xBC, 0xBD, 0xBE, 0xBF, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB,
    0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,
      0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3,
      0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
      0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB,
      0xFC, 0xFD, 0xFE, 0xFF];


/********************************fin deuxième partie******/

var monhexa, NbPtTotal = 0;
var raw = [];
var raw1 = [];
var raw2 = [];


  var durerentete = NbPtTotal * 2;
  var longueurentete = durerentete + 44 - 8;
var convertisseur = function swap16(val) {
    return ((val & 0xFF) << 8)
           | ((val >> 8) & 0xFF);
}

samples = durerentete*0.0625;



/***********troisième partie**********application qui met aux normes audio actuelles*********/

var app = {};

(function() {

    app.utility = {

        /* js port of PHP function pack */
        pack : function (fmt) {
            var output = '';
            
            var argi = 1;
            for (var i = 0; i < fmt.length; i++) {
                var c = fmt.charAt(i);
                var arg = arguments[argi];
                argi++;
                
                switch (c) {
                    case "a":
                        output += arg[0] + "\0";
                        break;
                    case "A":
                        output += arg[0] + " ";
                        break;
                    case "C":
                    case "c":
                        output += String.fromCharCode(arg);
                        break;
                    case "n":
                        output += String.fromCharCode(
                            (arg >> 8) & 255, 
                            arg & 255
                        );
                        break;
                    case "v":
                        output += String.fromCharCode(
                            arg & 255, 
                            (arg >> 8) & 255
                        );
                        break;
                    case "N":
                        output += String.fromCharCode(
                            (arg >> 24) & 255, 
                            (arg >> 16) & 255, 
                            (arg >> 8) & 255, 
                            arg & 255
                        );
                        break;
                    case "V":
                        output += String.fromCharCode(
                            arg & 255, 
                            (arg >> 8) & 255, 
                            (arg >> 16) & 255, 
                            (arg >> 24) & 255
                        );
                        break;
                    case "x":
                        argi--;
                        output += "\0";
                        break;
                    default:
                        throw new Error("Unknown pack format '"+c+"'");
                }
            }
            
            return output;
        }

    }

    /* Classic sound config : mono wav, 44100 Hz, 16 bit depth */
    app.config = {
        channels : 1,
        sampleRate : 44100,
        bitsPerSample : 16,
    }

}());

(function(){

    var pack = app.utility.pack;
    var config = app.config;

    // constructor
    app.wave = function (_data) {
        this.data = _data;
    };

    app.wave.prototype = {

        // Generate the wave content by concatenation, and encode it to base64.
        generate : function () {
            var chunk1 = this.makeChunk1(); // format chunk
            var chunk2 = this.makeChunk2(); // data chunk
            var header = this.makeHeader(chunk1.length, chunk2.length);
            var out = header + chunk1 + chunk2;
            return "data:audio/wav;base64," + btoa(out);
        },

        // Generate the content of the audio format chunk
        makeChunk1 : function () {
            var chunk1 = [
                "fmt ",
                pack("V", 16), // Chunk length for PCM
                pack("v", 1), // linear PCM
                pack("v", config.channels),
                pack("V", config.sampleRate),
                pack("V", config.sampleRate * config.channels * config.bitsPerSample / 8), // ByteRate
                pack("v", config.channels * config.bitsPerSample / 8), // BlockAlign
                pack("v", config.bitsPerSample)
            ];
            return chunk1.join('');
        },

        // Generate the content of the data chunk
        makeChunk2 : function () {
            var data = this.data;

            var chunk2 = [
                "data", // chunk ID
                pack("V", data.samples * config.channels * config.bitsPerSample / 16), // Chunk length
                data.raw2
            ];
            return chunk2.join('');
        },

        // Generate the header chunk
        makeHeader : function () {
            var data = this.data;

            var header = [
                "RIFF",
                pack("V", 4 + (8 + 16) + (8 + data.samples * config.channels * config.bitsPerSample / 8)), // total lenght
                "WAVE"
            ];
            return header.join('');
        }

    };

}());



/******fin de la troisième partie**encodeur aux normes audio*************************/


/***********cinquième partie génère la balise et lance la lecture**************/



function genereLaFin()
{

/**************genere balise*******/
/*
<audio id="audiojoa" controls="controls" autobuffer=""> 
<source src="data:audio/wav;base64wave,"></audio>
*/

var mon_audio = null;
var nouveauaudio = null;

function ajouteElement() {
  // crée un nouvel élément audio




  nouveauaudio = document.createElement("div");

  nouveauaudio.innerHTML = "<audio id=\"audiojoa\" controls=\"controls\" autobuffer=\"\"><source src=\"data:audio/wav;base64wave,\"></audio>";

  // ajoute l'élément qui vient d'être créé et son contenu au DOM
  mon_audio = document.getElementById("org_div1");
  document.body.insertBefore(nouveauaudio, mon_audio);
}


ajouteElement();


/**reglage force de l'amplitude***/
var volume = Math.floor(65535 / 8);

//samples = NbPtTotal*0.25;
durerentete=NbPtTotal*2;

samples = durerentete*16;

var data = {raw2: raw2.join(''), samples: samples};

var wave = new app.wave(data);
var base64wave = wave.generate();
console.log(base64wave);
var audio = document.getElementById("audiojoa");
var source = document.createElement("source");
source.setAttribute("src", base64wave);
audio.appendChild(source);

}



function lecjo(FichierAudioJo)
{
var ludion = 32768, amplitude = 32768, nbdepoints = 5;

	function actiontotale(amplitude, nbdepoints, ludion)

	{

				var samples = 0, ote, ote1, reste, boucle;
			      var ideb, j, p, avec1, avec2, avec3;


/****debut front descend****/
		function frontdescend(amplitude, nbdepoints)
		{
				var ote1;

			      boucle = Math.round(nbdepoints *0.5);

			      reste = nbdepoints - boucle;

			      ote = Math.round( (ludion-amplitude)*0.5 );

				avec1 = boucle-1;
				p = table[avec1];

			function calcul1 (ludion, ote, ote1)
			{
			codebash = Math.round(ludion + ote1 - ote);
			var codebash1 = Math.round(codebash * 0.2);
			var ji;
			var ij;
			var ola;
			ola = codebash;

			 ij = Math.floor(ola * 0.00390625);
			 ji = ola - (256 * ij);
			 monhexa = tab[ji];
			 var total = raw.push(monhexa);
			 monhexa = tab[ij];
			 var total = raw.push(monhexa);
			 monhexa = ji;
			 var total = raw1.push(monhexa);
			 monhexa = ij;
			 var total = raw1.push(monhexa);
			 var volume = Math.floor(65535);
			 monhexa = Math.floor(volume * (codebash1/app.config.sampleRate));
			 var total = raw2.push(app.utility.pack("v", monhexa));

			 }//fin calcul1


			for (ideb = boucle-1; ideb > 0; ideb--) {
			ote1 = Math.floor((ote * 0.00001 * p[ideb]));
   			calcul1 (ludion, ote, ote1);
			}// fin frontdescend partie1 et fin for


/********deuxieme partie front descend****************/

			function sens2inverse(amplitude, nbdepoints)
			{
			var ote1;

			 boucle = Math.round(nbdepoints *0.5);
			 reste = nbdepoints - boucle;
			 ote = Math.round( (ludion-amplitude)*0.5 );

			avec1 = boucle-1;
			p = table[avec1];

			function calcul2 (ludion, ote, ote1)
			{
			codebash = Math.round(amplitude + ote - ote1);
			var codebash1 = Math.round(codebash * 0.2);
			 var ji;
			  var ij;
			   var ola;
			   ola = codebash;

			  ij = Math.floor(ola * 0.00390625);
			  ji = ola - (256 * ij);
			 monhexa = tab[ji];
			 var total = raw.push(monhexa);
			 monhexa = tab[ij];
			 var total = raw.push(monhexa);
			 monhexa = ji;
			 var total = raw1.push(monhexa);
			 monhexa = ij;
			  var total = raw1.push(monhexa);
			  var volume = Math.floor(65535);
			 monhexa = Math.floor(volume * (codebash1/app.config.sampleRate));
			  var total = raw2.push(app.utility.pack("v", monhexa));

			 }// fin calcul2

			 for (ideb = 0; ideb < reste -1; ideb++) {
			 ote1 = Math.floor((ote * 0.00001 * p[ideb]));
   			 calcul2 (amplitude, ote, ote1);
			 } // fin du for

			 } // fin sens2inverse

			sens2inverse(amplitude, nbdepoints);		 

			ludion = amplitude
			return ludion;
			}// fin frontdescend

/********fin front descend *************************/


/****debut front montant*********************/
		function frontmontant(amplitude, nbdepoints)
		{
		ote = Math.round( (amplitude-ludion)*0.5 );			     
		 boucle = Math.round(nbdepoints * 0.5);
		reste = nbdepoints - boucle;
		
		var iee, j, p;
		avec1 = boucle-1;
		p = table[avec1];
		
			function calcul3 (ludion, ote, ote1)
			{
  			codebash = Math.round(ludion + ote - ote1);
			var codebash1 = Math.round(codebash * 0.2);
			var ji;
			var ij;
			var ola;
			ola = codebash;

			ij = Math.floor(ola * 0.00390625);
			ji = ola - (256 * ij);
			monhexa = tab[ji];
			var total = raw.push(monhexa);
			monhexa = tab[ij];
			var total = raw.push(monhexa);
			monhexa = ji;
			var total = raw1.push(monhexa);
			monhexa = ij;
			var total = raw1.push(monhexa);
			var volume = Math.floor(65535 );
			monhexa = Math.floor(volume * (codebash1/app.config.sampleRate));
			var total = raw2.push(app.utility.pack("v", monhexa));

			}// fin calcul3



			for (ideb = boucle-1; ideb > 0; ideb--) {
			ote1 = Math.floor(ote * 0.00001 * p[ideb]);
   			calcul3 (ludion, ote, ote1);
			}// fin premiere partie du fron et du for



				
			function sensinverse(amplitude, nbdepoints)
			{

			boucle = Math.round(nbdepoints * 0.5);
			reste = nbdepoints - boucle;
			ote = Math.round((amplitude-ludion)*0.5 );


   			function calcul4 (ludion, ote, ote1)
			 {

			 codebash = Math.round(amplitude -ote + ote1);
			var codebash1 = Math.round(codebash * 0.2);
			 var ji;
			   var ij;
			   var ola;
			   ola = codebash;

			   ij = Math.floor(ola * 0.00390625);
			   ji = ola - (256 * ij);
			   monhexa = tab[ji];
			   var total = raw.push(monhexa);
			  monhexa = tab[ij];
			  var total = raw.push(monhexa);
			  monhexa = ji;
			  var total = raw1.push(monhexa);
			  monhexa = ij;
			   var total = raw1.push(monhexa);
			   var volume = Math.floor(65535);
			    monhexa = Math.floor(volume * (codebash1/app.config.sampleRate));
			   var total = raw2.push(app.utility.pack("v", monhexa));


				}//fin calcul4

/******/
				for (ideb = 0; ideb < reste-1; ideb++) {
				    ote1 = Math.round(ote * 0.00001 * p[ideb]);
   					calcul4 (amplitude, ote, ote1);
				}
/********/






}

/* debut montant inverse du sens 1 */
sensinverse(amplitude, nbdepoints);

			ludion = amplitude
			return ludion;

			} //fin frontmontant





/****fin front montant***/







/*choix du sens du front*/

		  if (ludion > amplitude)
		    {
		 frontdescend(amplitude, nbdepoints);
		    }
		  else
		    {
		frontmontant(amplitude, nbdepoints);
		    }

/* fin choix du sens du front*/



}
/****fin action totale****/

for(var idejo= 0; idejo < FichierAudioJo.length; idejo++)
{//1

if (idejo/2 == Math.round(idejo/2)) {
	ludion = amplitude;
	amplitude = FichierAudioJo[idejo] * 256;
} else {//2
	nbdepoints = FichierAudioJo[idejo];
NbPtTotal += nbdepoints; /*44100 nbdepoints = 1 seconde*/
	actiontotale(amplitude, nbdepoints, ludion);




}//  fin du else de trie de récpération de données (amplitude et nbpoints)
}// fin de la boucle for de trie de récpération de données (amplitude et nbpoints)

genereLaFin();


return NbPtTotal;





}// fin fonction lecjo










/**************************premiere partie ouvre le fichier audio************************/      

function lecjoa() {


FichierAudioJox = document.getElementById("dessindeforme1").value;
FichierAudioJo = FichierAudioJox.split(",").map(Number);
lecjo(FichierAudioJo);




//console.log(e.target.result);
console.log(choixjojoa);
console.log(FichierAudioJo);
console.log(FichierAudioJo.length);

/****************************fin premier niveau qui ouvre le fichier*****************************************************/



    }


</script>

                   <a href="mailto:temps.jo@gmail.com">Contact et support: Joris Abadie</a>
</body>

</html> 
 

Lien vers la page du code énoncé http://www.letime.net/lecjo/decouverte.html

Cordialement

Dernière modification par temps (Le 13/07/2016, à 07:53)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#3 Le 04/07/2016, à 15:28

temps

Re : [résolu] javascript data

Bonjour,

Un petit up

il y a deux pages qui peuvent aider,
la première est une application équivalent en c dans la doc ubuntu : https://doc.ubuntu-fr.org/lecjo
et la deuxième est une page qui indique quelques formes de base pour commencer à dessiner ses propres sons : http://www.letime.net/um/

P.S.

Bilan

Pour dessiner ses sons à l'aide de formes,

wget -c http://www.letime.net/lecjo/decouverte.html

La solution pour passer un string à array de number, avec un bouton div nommé dessindeforme1

 FichierAudioJox = document.getElementById("dessindeforme1").value;
 FichierAudioJo = FichierAudioJox.split(",").map(Number);

Mais je dois rendre encore les variables dynamiques afin qu'un nouveau fichier son soit généré à l'introduction d'un nouveau dessin



Pour lire un fichier au format audio .jo, il manque le traitement du fichier téléchargé pour dire que c'est de l'hexa(16)

wget -c http://www.letime.net/lecjo/jo.html

Et là c'est pas évident, car le problème n'est pas apprendre des conventions, ou associer de la logique. La le problème est que le navigateur est verrouillé pour nous laisser faire que ce qu'il a envie que l'on puisse faire(en exemple avec la balise audio, il détruit mes fichiers en imaginant qu'aucun fichier son ne peut être créé avec l'écart de mes données). La question devient est-ce que je crée une fausse entête pour tromper le navigateur, mais par la même perd la compatibilité avec les applications créées en d'autres langages, est-ce que je change le format pour le mettre aux normes d'encodage actuel du navigateur, est-ce que , est-ce que je crée un adaptateur qui corrige les déformations induites par le navigateur en passant par la balise href... ?
Sachant que derrière j'ai dans le tiroir la version du format audio jo en H.D. ma version préférée du début à 4 octets par fronts
Avant d'avancer, il faut réfléchir car une fois Add ons réalisé, je vais mettre une banque audio libre en ligne, et il sera très difficile de revenir en arrière, surtout si des sites commencent à utiliser mon format. Je vais peut-être attendre septembre sur ce projet.

Cordialement

Dernière modification par temps (Le 08/07/2016, à 01:33)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#4 Le 11/07/2016, à 10:35

temps

Re : [résolu] javascript data

Bonjour,
Pour le fun, pour l'Art ou tout juste par curiosité, le code transitoire du lecteur de fichier jo, permet de transformer n'importe quel fichier de votre ordinateur en fichier musique.
Pour tester c'est ici http://www.letime.net/lecjo/jo.html
voici l'ancien code que j'utilise que j'améliorerai après septembre ou si je peux avant :

 
  <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Lecteur fichier abadie.jo</title>
<script>

function onInitFs(fs) {
   fs.root.getFile('genere.jo', {create: true, exclusive: true}, function(fileEntry) {
      alert(fileEntry.name);
   }, errorHandler);
}


//Add-ons pour firefox
</script>
</head>

<body>

<h1>Préparation à l'utilisation de l'Add on nommé lecjo</h1>
<h2>Découverte des lois de l'acoustique en fonction des dimensions en passant par le dessin</h2>



<input type="file" id="input" onchange="handleFiles(this.files)" style="padding:100px" size="1" data-src="jo.jo" data-type="uint8" multiple="multiple" /><div id='org_div1'> </div>

<p>
Au début nous construisons une signature de forme guitare, c'est un marteau acoustique<br>
puis on laisse couler les durées en diminuant les amplitudes
</p>

<p>Pour découvrir les lois de l'acoustiques entrer ici vos formes pour découvrir les différentes dimensions:</p>
<br/>


<form id="dessindeforme" method="post" >
  Dessin de forme: <input id="dessindeforme1" class="register" type="text" name="dessin" data-code="'+value '" value="127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 127, 240, 128, 5, 127, 240, 128, 5, 127, 240, 128, 5, 127, 240, 5, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 96, 22, 165, 106, 81, 64, 172, 174, 56, 110, 203, 100, 38, 78, 175, 112, 75, 115, 221, 90, 25, 87, 170, 123, 84, 120, 239, 98, 21, 118, 170, 126, 96, 119, 239, 98, 22, 116, 170, 125, 99, 118, 226, 169, 28, 114, 160, 124, 99, 117, 220, 250, 32, 112, 160, 121, 99, 31, 208, 250, 36, 110, 151, 116, 91, 31, 204, 250, 40, 108, 151, 122, 96, 31, 202, 250, 44, 106, 151, 118, 99, 31, 200, 250, 48, 104, 145, 114, 94, 31, 196, 250, 52, 102, 145, 113, 95, 31, 192, 250, 56, 100, 145, 112, 97, 31, 188, 250, 60, 98, 142, 111, 99, 31, 184, 250, 64, 96, 142, 110, 101, 31, 180, 250, 68, 94, 142, 109, 103, 31, 176, 250, 72, 92, 139, 108, 105, 31, 172, 250, 76, 90, 139, 107, 107, 31, 168, 250, 80, 88, 139, 106, 109, 31, 164, 250, 84, 86, 136, 105, 111, 31, 160, 250, 88, 84, 136, 104, 113, 31, 156, 250, 92, 82, 136, 103, 115, 31, 152, 250, 96, 80, 133, 102, 117, 31, 148, 250, 100, 78, 133, 101, 119, 31, 144, 250, 104, 76, 133, 100, 121, 31, 140, 250, 108, 74, 130, 99, 123, 31, 136, 250, 112, 72, 130, 98, 125, 31, 132, 250, 116, 70, 130, 97, 127, 31, 128, 250, 120, 68, 127, 96, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240, 128, 240, 127, 240"/><br>
<br><br>
</form> 
<p>Le dessin ce fait avec deux valeurs, l'une pour la hauteur, l'autre pour la largeur. Ces valeurs doivent être comprise entre 30 et 220, chaque valeur étant séparée par une virgule.</p>
<button onclick="lecjoa();">Générer le son dessiné</button><br>


<h2>Pour comprendre ce qui est fait, le concept et ses sources</h2>
<p>
A la préhistoire nous trouvons dans les grottes Ariégeoise, des dessins animés qui utilisaient le langage multidirectionnel. Bien plus tard la langue Celte c'est développée sur ce modèle de perception, en ayant conscience que notre entendement est multidirectionnel et que les mouvements des événements qui nous entourent sont multidirectionnels. <br>
En opposition, est apparue en Asie des langages à la recherche d'absolus, des langages unidirectionnels construisant ce qu'ils nommèrent la tour de Babel. <br>
De cet événement c'est développé deux courants dans le maniement des langages. Le premier reprenant le celte et mis à l'honneur par le siècle des lumières, en indiquant qu'il ne fallait pas utiliser des dictionnaires mais des encyclopédies, le deuxième qui en opposition cherchait des absolus en chaque terme, en déployant ceci jusqu'aux sciences, ou politiques en nommant des présidents et des rois. <br>
De cet événement nous pouvons dans les sciences discerner deux courants, celui de Henri Poincaré (Mathématicien, physicien et philosophe) qui travaille en multidirectionnel en équilibrant plusieurs sciences, et celui de Albert Einstein qui est à recherche d'absolus même en science en énonçant des formules présentées comme sacrées (sans étude aux limites ou vérifier la véracité).<br>
 Ce jour nous remarquons que les principaux moteurs de recherches d'internet, (la bible de nos enfants) sont construits sur un langage unidirectionnel, que les pages des journaux sont aussi construites sur de l'unidirectionnel, un formatage, un conditionnement bien triste. L'inconvénient de l'unidirectionnel est qu'il impose un rythme et surtout une méthode d'association des idées loin des possibilités de notre entendement qui est multidirectionnel. une traitrise contre laquelle de nombreux de nos ancêtres sont morts, car un pays n'est composé que d'hommes, pas de zombies.<br>
Nous pourrions voir aussi, le multidirectionnel dans l'ancien socialisme pure à la française, et l'unidirectionnel dans le socialisme réactionnaire contemporain ; ou bien même encore le multidiretionnel dans l'entendement de l'homme qui se repère à l'aide de spatialisation, en opposition au cerveau féminin qui cherche des termes sur des parcours fléchés ; mais cette analyse serait trop simpliste car unidirectionnelle, et ne tient pas compte des équilibres induits de niveaux supérieurs. Car si la politique n'a pas su sortir d'une mauvaise base, de nombreuses femmes, ajoutent des coefficients correcteurs en jouant sur plusieurs dimensions pour retrouver un équilibre salvateur. Plusieurs causes peuvent avoir le même effet, et nul n'impose d'utiliser les lois de tel ou tel dimension pour retrouver son humanité.<br>
Si pour certains la pensée et l'expression multidirectionnelle est évidente, pour d'autres, elle n'est pas accessible, aussi j'ai décidé de présenter les lois physiques en fonction des différentes dimensions de l'acoustique en utilisant des formes spécifiques à plusieurs dimensions. Cette technique géométrique, inventée par la Grèce antique pour traduire le celte, cette technique, bien que peu puissante, a l'avantage d'être perçue par les pratiquant du culte unidirectionnel.<br>
L'application lecjo utilise les lois physiques de plusieurs dimensions aux lois opposées pour produire l'effet désirée en utilisant le moins de ressources possible.<br> Bien que le concept soit multidirectionnel, il peut être entrevue en dessinant des formes<br>
Les formes se dessinnent à l'aide deux valeurs séparée d'un espace, comprises entre 20 et 230, la première pour la hauteur et la deuxième pour la largeur<br> Inutile d'en dire plus, car comme pour conduire une voiture, nul besoin de savoir ce qu'il y a sous le capot
</p>
<p> Documentation sur la même application que j'ai écris en langage c et cpp : <a href="https://doc.ubuntu-fr.org/lecjo" target="_blank">https://doc.ubuntu-fr.org/lecjo</a></p>
<p> Exemple de formes dessinnées et leurs sons générés : <a href="http://www.letime.net/um/" target="_blank">http://www.letime.net/um/</a></p>

<div>
 <a href="http://www.letime.net/lecjo/1.jo" download>Exemple  fichier son au format jo à télécharger : </a><br>
 <a href="http://www.letime.net/lecjo/jo.jo" download> Exemple 1 de fichier son au format jo à télécharger :</a><br>
<a href="http://www.letime.net/lecjo/jo.jo" download> Exemple 2 de fichier son au format jo à télécharger : </a><br>

<br><br>
<a href="http://www.letime.net/lecjo/1.jo.tar.gz" download> Exemple 1 de fichier son au format jo compressé à télécharger : </a><br>
</div><br><br>

<script>

/*******zone de test*****/
/*
function load() {
var request;

if (window.XMLHttpRequest) { // Firefox
	request = new XMLHttpRequest();
}
else if (window.ActiveXObject) { // IE
	request = new ActiveXObject("Microsoft.XMLHTTP");
}
else {
	return; // Non supporte
}	

request.open('GET', 'jo.jo', false); // Synchro
request.send(null);

return request.responseText;
}

*/
/********************/



/**************************premiere partie ouvre le fichier audio************************/          
			var FichierAudioJo=[];
var text1={};


var tab1x =
    ["\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0A", "\x0B", "\x0C", "\x0D", "\x0E", "\x0F", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1A", "\x1B", "\x1C", "\x1D", "\x1E", "\x1F", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2A", "\x2B", "\x2C", "\x2D", "\x2E", "\x2F", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3A", "\x3B", "\x3C", "\x3D", "\x3E", "\x3F", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4A", "\x4B", "\x4C", "\x4D", "\x4E", "\x4F", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5A", "\x5B", "\x5C", "\x5D", "\x5E", "\x5F", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6A", "\x6B", "\x6C", "\x6D", "\x6E", "\x6F", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7A", "\x7B", "\x7C", "\x7D", "\x7E", "\x7F", "\x80", "\x81", "\x82", "\x83", "\x84", "\x85", "\x86", "\x87", "\x88", "\x89", "\x8A", "\x8B", "\x8C", "\x8D", "\x8E", "\x8F", "\x90", "\x91", "\x92", "\x93", "\x94", "\x95", "\x96", "\x97", "\x98", "\x99", "\x9A", "\x9B", "\x9C", "\x9D", "\x9E", "\x9F", "\xA0", "\xA1", "\xA2", "\xA3", "\xA4", "\xA5", "\xA6", "\xA7", "\xA8", "\xA9", "\xAA", "\xAB", "\xAC", "\xAD", "\xAE", "\xAF", "\xB0", "\xB1", "\xB2", "\xB3", "\xB4", "\xB5", "\xB6", "\xB7", "\xB8", "\xB9", "\xBA", "\xBB", "\xBC", "\xBD", "\xBE", "\xBF", "\xC0", "\xC1", "\xC2", "\xC3", "\xC4", "\xC5", "\xC6", "\xC7", "\xC8", "\xC9", "\xCA", "\xCB", "\xCC", "\xCD", "\xCE", "\xCF", "\xD0", "\xD1", "\xD2", "\xD3", "\xD4", "\xD5", "\xD6", "\xD7", "\xD8", "\xD9", "\xDA", "\xDB", "\xDC", "\xDD", "\xDE", "\xDF", "\xE0", "\xE1", "\xE2", "\xE3", "\xE4", "\xE5", "\xE6", "\xE7", "\xE8", "\xE9", "\xEA", "\xEB", "\xEC", "\xED", "\xEE", "\xEF", "\xF0", "\xF1", "\xF2", "\xF3", "\xF4", "\xF5", "\xF6", "\xF7", "\xF8", "\xF9", "\xFA", "\xFB", "\xFC", "\xFD", "\xFE", "\xFF"];




function setupReader(file) {
    var name = file.name;
    var reader = new FileReader();  
    reader.onload = function(e) {  
 text1 = e.target.result.split(""); 
console.log(text1.length);
console.log(text1);

    			for (var i = 0; i < text1.length; i++)
			{

if(text1[i]=="\x80"){FichierAudioJo[i] = 28;}
else{


switch(text1[i]) {
    case "\x00":        FichierAudioJo[i] = 0;        break;
    case "\x01":        FichierAudioJo[i] = 1;        break;
    case "\x02":        FichierAudioJo[i] = 2;        break;
    case "\x03":        FichierAudioJo[i] = 3;        break;
    case "\x04":        FichierAudioJo[i] = 4;        break;
    case "\x05":        FichierAudioJo[i] = 5;        break;
    case "\x06":        FichierAudioJo[i] = 6;        break;
    case "\x07":        FichierAudioJo[i] = 7;        break;
    case "\x08":        FichierAudioJo[i] = 8;        break;
    case "\x09":        FichierAudioJo[i] = 9;        break;
    case "\x0A":        FichierAudioJo[i] = 10;        break;
    case "\x0B":        FichierAudioJo[i] = 11;        break;
    case "\x0C":        FichierAudioJo[i] = 12;        break;
    case "\x0D":        FichierAudioJo[i] = 13;        break;
    case "\x0E":        FichierAudioJo[i] = 14;        break;
    case "\x0F":        FichierAudioJo[i] = 15;        break;
/*************/
    case "\x10":        FichierAudioJo[i] = 16;        break;
    case "\x11":        FichierAudioJo[i] = 17;        break;
    case "\x12":        FichierAudioJo[i] = 18;        break;
    case "\x13":        FichierAudioJo[i] = 19;        break;
    case "\x14":        FichierAudioJo[i] = 20;        break;
    case "\x15":        FichierAudioJo[i] = 21;        break;
    case "\x16":        FichierAudioJo[i] = 22;        break;
    case "\x17":        FichierAudioJo[i] = 23;        break;
    case "\x18":        FichierAudioJo[i] = 24;        break;
    case "\x19":        FichierAudioJo[i] = 25;        break;
    case "\x1A":        FichierAudioJo[i] = 26;        break;
    case "\x1B":        FichierAudioJo[i] = 27;        break;
    case "\x1C":        FichierAudioJo[i] = 28;        break;
    case "\x1D":        FichierAudioJo[i] = 29;        break;
    case "\x1E":        FichierAudioJo[i] = 30;        break;
    case "\x1F":        FichierAudioJo[i] = 31;        break;
/************/
    case "\x20":        FichierAudioJo[i] = 32;        break;
    case "\x21":        FichierAudioJo[i] = 33;        break;
    case "\x22":        FichierAudioJo[i] = 34;        break;
    case "\x23":        FichierAudioJo[i] = 35;        break;
    case "\x24":        FichierAudioJo[i] = 36;        break;
    case "\x25":        FichierAudioJo[i] = 37;        break;
    case "\x26":        FichierAudioJo[i] = 38;        break;
    case "\x27":        FichierAudioJo[i] = 39;        break;
    case "\x28":        FichierAudioJo[i] = 40;        break;
    case "\x29":        FichierAudioJo[i] = 41;        break;
    case "\x2A":        FichierAudioJo[i] = 42;        break;
    case "\x2B":        FichierAudioJo[i] = 43;        break;
    case "\x2C":        FichierAudioJo[i] = 44;        break;
    case "\x2D":        FichierAudioJo[i] = 45;        break;
    case "\x2E":        FichierAudioJo[i] = 46;        break;
    case "\x2F":        FichierAudioJo[i] = 47;        break;
/*****************/
    case "\x30":        FichierAudioJo[i] = 48;        break;
    case "\x31":        FichierAudioJo[i] = 49;        break;
    case "\x32":        FichierAudioJo[i] = 50;        break;
    case "\x33":        FichierAudioJo[i] = 51;        break;
    case "\x34":        FichierAudioJo[i] = 52;        break;
    case "\x35":        FichierAudioJo[i] = 53;        break;
    case "\x36":        FichierAudioJo[i] = 54;        break;
    case "\x37":        FichierAudioJo[i] = 55;        break;
    case "\x38":        FichierAudioJo[i] = 56;        break;
    case "\x39":        FichierAudioJo[i] = 57;        break;
    case "\x3A":        FichierAudioJo[i] = 58;        break;
    case "\x3B":        FichierAudioJo[i] = 59;        break;
    case "\x3C":        FichierAudioJo[i] = 60;        break;
    case "\x3D":        FichierAudioJo[i] = 61;        break;
    case "\x3E":        FichierAudioJo[i] = 62;        break;
    case "\x3F":        FichierAudioJo[i] = 63;        break;
/*************/
    case "\x40":        FichierAudioJo[i] = 64;        break;
    case "\x41":        FichierAudioJo[i] = 65;        break;
    case "\x42":        FichierAudioJo[i] = 66;        break;
    case "\x43":        FichierAudioJo[i] = 67;        break;
    case "\x44":        FichierAudioJo[i] = 68;        break;
    case "\x45":        FichierAudioJo[i] = 69;        break;
    case "\x46":        FichierAudioJo[i] = 70;        break;
    case "\x47":        FichierAudioJo[i] = 71;        break;
    case "\x48":        FichierAudioJo[i] = 72;        break;
    case "\x49":        FichierAudioJo[i] = 73;        break;
    case "\x4A":        FichierAudioJo[i] = 74;        break;
    case "\x4B":        FichierAudioJo[i] = 75;        break;
    case "\x4C":        FichierAudioJo[i] = 76;        break;
    case "\x4D":        FichierAudioJo[i] = 77;        break;
    case "\x4E":        FichierAudioJo[i] = 78;        break;
    case "\x4F":        FichierAudioJo[i] = 79;        break;
/***************/
    case "\x50":        FichierAudioJo[i] = 80;        break;
    case "\x51":        FichierAudioJo[i] = 81;        break;
    case "\x52":        FichierAudioJo[i] = 82;        break;
    case "\x53":        FichierAudioJo[i] = 83;        break;
    case "\x54":        FichierAudioJo[i] = 84;        break;
    case "\x55":        FichierAudioJo[i] = 85;        break;
    case "\x56":        FichierAudioJo[i] = 86;        break;
    case "\x57":        FichierAudioJo[i] = 87;        break;
    case "\x58":        FichierAudioJo[i] = 88;        break;
    case "\x59":        FichierAudioJo[i] = 89;        break;
    case "\x5A":        FichierAudioJo[i] = 90;        break;
    case "\x5B":        FichierAudioJo[i] = 91;        break;
    case "\x5C":        FichierAudioJo[i] = 92;        break;
    case "\x5D":        FichierAudioJo[i] = 93;        break;
    case "\x5E":        FichierAudioJo[i] = 94;        break;
    case "\x5F":        FichierAudioJo[i] = 95;        break;
/***************/
    case "\x60":        FichierAudioJo[i] = 96;        break;
    case "\x61":        FichierAudioJo[i] = 97;        break;
    case "\x62":        FichierAudioJo[i] = 98;        break;
    case "\x63":        FichierAudioJo[i] = 99;        break;
    case "\x64":        FichierAudioJo[i] = 100;        break;
    case "\x65":        FichierAudioJo[i] = 101;        break;
    case "\x66":        FichierAudioJo[i] = 102;        break;
    case "\x67":        FichierAudioJo[i] = 103;        break;
    case "\x68":        FichierAudioJo[i] = 104;        break;
    case "\x69":        FichierAudioJo[i] = 105;        break;
    case "\x6A":        FichierAudioJo[i] = 106;        break;
    case "\x6B":        FichierAudioJo[i] = 107;        break;
    case "\x6C":        FichierAudioJo[i] = 108;        break;
    case "\x6D":        FichierAudioJo[i] = 109;        break;
    case "\x6E":        FichierAudioJo[i] = 110;        break;
    case "\x6F":        FichierAudioJo[i] = 111;        break;
/**********/
    case "\x70":        FichierAudioJo[i] = 112;        break;
    case "\x71":        FichierAudioJo[i] = 113;        break;
    case "\x72":        FichierAudioJo[i] = 114;        break;
    case "\x73":        FichierAudioJo[i] = 115;        break;
    case "\x74":        FichierAudioJo[i] = 116;        break;
    case "\x75":        FichierAudioJo[i] = 117;        break;
    case "\x76":        FichierAudioJo[i] = 118;        break;
    case "\x77":        FichierAudioJo[i] = 119;        break;
    case "\x78":        FichierAudioJo[i] = 120;        break;
    case "\x79":        FichierAudioJo[i] = 121;        break;
    case "\x7A":        FichierAudioJo[i] = 122;        break;
    case "\x7B":        FichierAudioJo[i] = 123;        break;
    case "\x7C":        FichierAudioJo[i] = 124;        break;
    case "\x7D":        FichierAudioJo[i] = 125;        break;
    case "\x7E":        FichierAudioJo[i] = 126;        break;
    case "\x7F":        FichierAudioJo[i] = 127;        break;
/***********/
    case "€":           FichierAudioJo[i] = 128;        break;
    case " ":        FichierAudioJo[i] = 129;        break;
    case " ‚":        FichierAudioJo[i] = 130;        break;
    case "ƒ":        FichierAudioJo[i] = 131;        break;
    case "„":        FichierAudioJo[i] = 132;        break;
    case "…"   :     FichierAudioJo[i] = 133;        break;
    case "†":        FichierAudioJo[i] = 134;        break;
    case "‡":        FichierAudioJo[i] = 135;        break;
    case "ˆ":        FichierAudioJo[i] = 136;        break;
    case "‰":        FichierAudioJo[i] = 137;        break;
    case "Š":        FichierAudioJo[i] = 138;        break;
    case "‹":        FichierAudioJo[i] = 139;        break;
    case "Œ":        FichierAudioJo[i] = 140;        break;
    case " ":        FichierAudioJo[i] = 141;        break;
    case "Ž":        FichierAudioJo[i] = 142;        break;
    case " ":        FichierAudioJo[i] = 143;        break;
/******************/
    case "\x90":        FichierAudioJo[i] = 144;        break;
    case "\x91":        FichierAudioJo[i] = 145;        break;
    case "\x92":        FichierAudioJo[i] = 146;        break;
    case "\x93":        FichierAudioJo[i] = 147;        break;
    case "\x94":        FichierAudioJo[i] = 148;        break;
    case "\x95":        FichierAudioJo[i] = 149;        break;
    case "\x96":        FichierAudioJo[i] = 150;        break;
    case "\x97":        FichierAudioJo[i] = 151;        break;
    case "\x98":        FichierAudioJo[i] = 152;        break;
    case "\x99":        FichierAudioJo[i] = 153;        break;
    case "\x9A":        FichierAudioJo[i] = 154;        break;
    case "\x9B":        FichierAudioJo[i] = 155;        break;
    case "\x9C":        FichierAudioJo[i] = 156;        break;
    case "\x9D":        FichierAudioJo[i] = 157;        break;
    case "\x9E":        FichierAudioJo[i] = 158;        break;
    case "\x9F":        FichierAudioJo[i] = 159;        break;
/*****/
    case "\xA0":        FichierAudioJo[i] = 160;        break;
    case "\xA1":        FichierAudioJo[i] = 161;        break;
    case "\xA2":        FichierAudioJo[i] = 162;        break;
    case "\xA3":        FichierAudioJo[i] = 163;        break;
    case "\xA4":        FichierAudioJo[i] = 164;        break;
    case "\xA5":        FichierAudioJo[i] = 165;        break;
    case "\xA6":        FichierAudioJo[i] = 166;        break;
    case "\xA7":        FichierAudioJo[i] = 167;        break;
    case "\xA8":        FichierAudioJo[i] = 168;        break;
    case "\xA9":        FichierAudioJo[i] = 169;        break;
    case "\xAA":        FichierAudioJo[i] = 170;        break;
    case "\xAB":        FichierAudioJo[i] = 171;        break;
    case "\xAC":        FichierAudioJo[i] = 172;        break;
    case "\xAD":        FichierAudioJo[i] = 173;        break;
    case "\xAE":        FichierAudioJo[i] = 174;        break;
    case "\xAF":        FichierAudioJo[i] = 175;        break;
/*************/
    case "\xB0":        FichierAudioJo[i] = 176;        break;
    case "\xB1":        FichierAudioJo[i] = 177;        break;
    case "\xB2":        FichierAudioJo[i] = 178;        break;
    case "\xB3":        FichierAudioJo[i] = 179;        break;
    case "\xB4":        FichierAudioJo[i] = 180;        break;
    case "\xB5":        FichierAudioJo[i] = 181;        break;
    case "\xB6":        FichierAudioJo[i] = 182;        break;
    case "\xB7":        FichierAudioJo[i] = 183;        break;
    case "\xB8":        FichierAudioJo[i] = 184;        break;
    case "\xB9":        FichierAudioJo[i] = 185;        break;
    case "\xBA":        FichierAudioJo[i] = 186;        break;
    case "\xBB":        FichierAudioJo[i] = 187;        break;
    case "\xBC":        FichierAudioJo[i] = 188;        break;
    case "\xBD":        FichierAudioJo[i] = 189;        break;
    case "\xBE":        FichierAudioJo[i] = 190;        break;
    case "\xBF":        FichierAudioJo[i] = 191;        break;
/**************/
    case "\xC0":        FichierAudioJo[i] = 192;        break;
    case "\xC1":        FichierAudioJo[i] = 193;        break;
    case "\xC2":        FichierAudioJo[i] = 194;        break;
    case "\xC3":        FichierAudioJo[i] = 195;        break;
    case "\xC4":        FichierAudioJo[i] = 196;        break;
    case "\xC5":        FichierAudioJo[i] = 197;        break;
    case "\xC6":        FichierAudioJo[i] = 198;        break;
    case "\xC7":        FichierAudioJo[i] = 199;        break;
    case "\xC8":        FichierAudioJo[i] = 200;        break;
    case "\xC9":        FichierAudioJo[i] = 201;        break;
    case "\xCA":        FichierAudioJo[i] = 202;        break;
    case "\xCB":        FichierAudioJo[i] = 203;        break;
    case "\xCC":        FichierAudioJo[i] = 204;        break;
    case "\xCD":        FichierAudioJo[i] = 205;        break;
    case "\xCE":        FichierAudioJo[i] = 206;        break;
    case "\xCF":        FichierAudioJo[i] = 207;        break;
/***********************/
    case "\xD0":        FichierAudioJo[i] = 208;        break;
    case "\xD1":        FichierAudioJo[i] = 209;        break;
    case "\xD2":        FichierAudioJo[i] = 210;        break;
    case "\xD3":        FichierAudioJo[i] = 211;        break;
    case "\xD4":        FichierAudioJo[i] = 212;        break;
    case "\xD5":        FichierAudioJo[i] = 213;        break;
    case "\xD6":        FichierAudioJo[i] = 214;        break;
    case "\xD7":        FichierAudioJo[i] = 215;        break;
    case "\xD8":        FichierAudioJo[i] = 216;        break;
    case "\xD9":        FichierAudioJo[i] = 217;        break;
    case "\xDA":        FichierAudioJo[i] = 218;        break;
    case "\xDB":        FichierAudioJo[i] = 219;        break;
    case "\xDC":        FichierAudioJo[i] = 220;        break;
    case "\xDD":        FichierAudioJo[i] = 221;        break;
    case "\xDE":        FichierAudioJo[i] = 222;        break;
    case "\xDF":        FichierAudioJo[i] = 223;        break;
/******************/
    case "\xE0":        FichierAudioJo[i] = 224;        break;
    case "\xE1":        FichierAudioJo[i] = 225;        break;
    case "\xE2":        FichierAudioJo[i] = 226;        break;
    case "\xE3":        FichierAudioJo[i] = 227;        break;
    case "\xE4":        FichierAudioJo[i] = 228;        break;
    case "\xE5":        FichierAudioJo[i] = 229;        break;
    case "\xE6":        FichierAudioJo[i] = 230;        break;
    case "\xE7":        FichierAudioJo[i] = 231;        break;
    case "\xE8":        FichierAudioJo[i] = 232;        break;
    case "\xE9":        FichierAudioJo[i] = 233;        break;
    case "\xEA":        FichierAudioJo[i] = 234;        break;
    case "\xEB":        FichierAudioJo[i] = 235;        break;
    case "\xEC":        FichierAudioJo[i] = 236;        break;
    case "\xED":        FichierAudioJo[i] = 237;        break;
    case "\xEE":        FichierAudioJo[i] = 238;        break;
    case "\xEF":        FichierAudioJo[i] = 239;        break;
/**********/
    case "\xF0":        FichierAudioJo[i] = 240;        break;
    case "\xF1":        FichierAudioJo[i] = 241;        break;
    case "\xF2":        FichierAudioJo[i] = 242;        break;
    case "\xF3":        FichierAudioJo[i] = 243;        break;
    case "\xF4":        FichierAudioJo[i] = 244;        break;
    case "\xF5":        FichierAudioJo[i] = 245;        break;
    case "\xF6":        FichierAudioJo[i] = 246;        break;
    case "\xF7":        FichierAudioJo[i] = 247;        break;
    case "\xF8":        FichierAudioJo[i] = 248;        break;
    case "\xF9":        FichierAudioJo[i] = 249;        break;
    case "\xFA":        FichierAudioJo[i] = 250;        break;
    case "\xFB":        FichierAudioJo[i] = 251;        break;
    case "\xFC":        FichierAudioJo[i] = 252;        break;
    case "\xFD":        FichierAudioJo[i] = 253;        break;
    case "\xFE":        FichierAudioJo[i] = 254;        break;
    case "\xFF":        FichierAudioJo[i] = 255;        break;
    default:        FichierAudioJo[i] = 128;
} 

}
			} //fin for texte1

 
//console.log(e.target.result);
console.log(FichierAudioJo);
console.log(FichierAudioJo.length);


/*********************************deuxième partie*********************************************************************************/
/* mes tables de generations*/

var placement, affiche1, placementlong, repere1, samples;



placement = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128];


var tab1jo17 = [99997];
var tab2jo17 = [53564, 99997];
var tab3jo17 = [38191, 71298, 99997];
var tab4jo17 = [30582, 57094, 80076, 99998];
var tab5jo17 = [26078, 48685, 68282, 85271, 99998];
var tab6jo17 = [23126, 43173, 60552, 75617, 88677, 99998];
var tab7jo17 = [21059, 39315, 55141, 68860, 80752, 91062, 99999];
var tab8jo17 = [19545, 36488, 51176, 63909, 74946, 84514, 92809, 99999];
var tab9jo17 = [18398, 34347, 48173, 60158, 70548, 79555, 87363, 94131, 99998];
var tab10jo17 = [17508, 32685, 45842, 57247, 67134, 75705, 83134, 89575, 95158, 99999];
var tab11jo17 = [16803, 31369, 43996, 54942, 64431, 72656, 79787, 85968, 91327, 95972, 99999];
var tab12jo17 = [16236, 30311, 42512, 53088, 62257, 70205, 77095, 83068, 88246, 92735, 96626, 99998];
var tab13jo17 = [15775, 29450, 41304, 51580, 60489, 68211, 74906, 80709, 85739, 90100, 93881, 97158, 99999];
var tab14jo17 = [15396, 28742, 40311, 50341, 59035, 66572, 73105, 78769, 83679, 87935, 91625, 94823, 97596, 99999];
var tab15jo17 = [15081, 28155, 39488, 49313, 57830, 65213, 71613, 77161, 81971, 86140, 89754, 92887, 95603, 97958, 99999];
var tab16jo17 = [14819, 27666, 38802, 48456, 56824, 64079, 70368, 75819, 80545, 84642, 88194, 91272, 93941, 96255, 98260, 99999];
var tab17jo17 = [14599, 27255, 38226, 47736, 55981, 63127, 69323, 74694, 79349, 83385, 86884, 89917, 92546, 94825, 96801, 98514, 99999];
var tab18jo17 = [14414, 26909, 37740, 47130, 55270, 62326, 68442, 73745, 78342, 82326, 85781, 88775, 91371, 93621, 95572, 97263, 98729, 99999];
var tab19jo17 = [14257, 26615, 37329, 46616, 54667, 61646, 67696, 72941, 77487, 81429, 84845, 87807, 90375, 92600, 94530, 96202, 97652, 98909, 99999];
var tab20jo17 = [14123, 26366, 36979, 46180, 54155, 61069, 67063, 72258, 76762, 80667, 84051, 86985, 89529, 91734, 93645, 95302, 96738, 97984, 99063, 99999];
var tab21jo17 = [14010, 26154, 36682, 45809, 53720, 60578, 66524, 71677, 76145, 80018, 83376, 86286, 88809, 90996, 92892, 94536, 95961, 97196, 98266, 99195, 99999];
var tab22jo17 = [13913, 25973, 36428, 45491, 53348, 60159, 66063, 71181, 75618, 79464, 82798, 85688, 88194, 90366, 92249, 93881, 95296, 96522, 97586, 98507, 99306, 99999];
var tab23jo17 = [13829, 25818, 36210, 45219, 53029, 59799, 65668, 70756, 75166, 78989, 82303, 85176, 87667, 89826, 91698, 93320, 94727, 95946, 97003, 97919, 98713, 99402, 99999];
var tab24jo17 = [13758, 25685, 36024, 44987, 52756, 59491, 65330, 70391, 74779, 78583, 81880, 84738, 87216, 89364, 91226, 92840, 94239, 95452, 96503, 97415, 98205, 98890, 99484, 99999];
var tab25jo17 = [13697, 25571, 35864, 44787, 52522, 59228, 65040, 70079, 74447, 78234, 81517, 84362, 86829, 88967, 90821, 92428, 93821, 95029, 96075, 96983, 97770, 98452, 99043, 99555, 99999];
var tab26jo17 = [13645, 25473, 35726, 44615, 52320, 59000, 64790, 69810, 74161, 77933, 81203, 84038, 86495, 88625, 90472, 92073, 93460, 94663, 95706, 96610, 97394, 98073, 98662, 99173, 99615, 99999];
var tab27jo17 = [13599, 25388, 35608, 44467, 52147, 58805, 64576, 69579, 73916, 77675, 80935, 83760, 86209, 88332, 90173, 91768, 93151, 94350, 95389, 96290, 97071, 97749, 98335, 98844, 99285, 99668, 99999];
var tab28jo17 = [13561, 25316, 35506, 44340, 51998, 58636, 64391, 69380, 73704, 77453, 80703, 83520, 85962, 88079, 89914, 91505, 92884, 94080, 95116, 96015, 96794, 97469, 98054, 98561, 99001, 99382, 99713, 99999];
var tab29jo17 = [13527, 25253, 35418, 44230, 51869, 58491, 64231, 69208, 73521, 77261, 80503, 83313, 85749, 87861, 89691, 91278, 92654, 93847, 94881, 95777, 96554, 97227, 97811, 98317, 98756, 99136, 99466, 99751, 99999];
var tab30jo17 = [13498, 25199, 35342, 44135, 51757, 58365, 64093, 69059, 73363, 77095, 80330, 83134, 85565, 87672, 89499, 91082, 92455, 93645, 94677, 95571, 96346, 97018, 97601, 98106, 98543, 98923, 99252, 99537, 99784, 99999];
var tab31jo17 = [13473, 25152, 35277, 44053, 51662, 58257, 63975, 68931, 73228, 76952, 80181, 82980, 85406, 87510, 89333, 90914, 92284, 93472, 94501, 95394, 96168, 96838, 97420, 97924, 98361, 98740, 99068, 99353, 99599, 99813, 99999];
var tab32jo17 = [13451, 25112, 35220, 43983, 51579, 58164, 63872, 68820, 73110, 76829, 80052, 82847, 85269, 87369, 89189, 90767, 92135, 93321, 94349, 95241, 96013, 96683, 97263, 97767, 98203, 98581, 98909, 99193, 99439, 99653, 99838, 99999];
var tab33jo17 = [13433, 25077, 35171, 43922, 51507, 58083, 63784, 68725, 73009, 76722, 79941, 82732, 85151, 87248, 89066, 90642, 92008, 93192, 94219, 95109, 95880, 96549, 97129, 97631, 98067, 98445, 98772, 99056, 99302, 99515, 99700, 99860, 99999];
var tab34jo17 = [13416, 25047, 35129, 43869, 51445, 58013, 63706, 68642, 72921, 76630, 79845, 82632, 85048, 87143, 88958, 90532, 91897, 93080, 94105, 94994, 95764, 96432, 97011, 97513, 97949, 98326, 98653, 98936, 99182, 99395, 99580, 99740, 99878, 99999];
var tab35jo17 = [13402, 25021, 35092, 43823, 51392, 57953, 63640, 68571, 72845, 76550, 79762, 82546, 84960, 87052, 88866, 90439, 91802, 92983, 94007, 94895, 95665, 96332, 96911, 97412, 97847, 98224, 98550, 98834, 99079, 99292, 99476, 99636, 99775, 99895, 99999];
var tab36jo17 = [13390, 24998, 35060, 43783, 51345, 57900, 63583, 68509, 72779, 76481, 79690, 82472, 84883, 86974, 88786, 90357, 91718, 92899, 93922, 94809, 95579, 96245, 96823, 97324, 97758, 98135, 98461, 98744, 98989, 99202, 99386, 99546, 99685, 99805, 99909, 99999];
var tab37jo17 = [13380, 24978, 35033, 43749, 51305, 57855, 63533, 68455, 72722, 76421, 79627, 82407, 84817, 86905, 88716, 90286, 91647, 92826, 93849, 94735, 95504, 96170, 96747, 97248, 97682, 98058, 98384, 98667, 98912, 99124, 99308, 99468, 99606, 99726, 99830, 99921, 99999];
var tab38jo17 = [13371, 24962, 35009, 43720, 51270, 57816, 63490, 68409, 72673, 76369, 79574, 82351, 84759, 86847, 88656, 90225, 91585, 92764, 93786, 94671, 95439, 96105, 96682, 97182, 97616, 97992, 98318, 98600, 98845, 99057, 99242, 99401, 99539, 99659, 99763, 99853, 99931, 99999];
var tab39jo17 = [13363, 24947, 34989, 43694, 51241, 57782, 63453, 68369, 72631, 76325, 79527, 82304, 84710, 86796, 88605, 90173, 91532, 92710, 93731, 94616, 95384, 96049, 96626, 97126, 97559, 97935, 98261, 98543, 98788, 99000, 99184, 99343, 99481, 99601, 99705, 99795, 99873, 99941, 99999];
var tab40jo17 = [13356, 24934, 34971, 43672, 51214, 57753, 63421, 68334, 72594, 76286, 79487, 82261, 84667, 86752, 88559, 90126, 91485, 92662, 93683, 94568, 95335, 96000, 96576, 97076, 97509, 97885, 98210, 98492, 98737, 98949, 99133, 99292, 99430, 99550, 99654, 99744, 99822, 99890, 99948, 99999];
var tab41jo17 = [13350, 24923, 34956, 43653, 51192, 57727, 63393, 68304, 72561, 76252, 79452, 82225, 84629, 86714, 88520, 90087, 91444, 92621, 93642, 94526, 95293, 95958, 96534, 97033, 97466, 97842, 98167, 98449, 98694, 98906, 99089, 99249, 99387, 99506, 99610, 99700, 99778, 99846, 99904, 99955, 99999];
var tab42jo17 = [13345, 24914, 34942, 43636, 51172, 57705, 63369, 68278, 72534, 76223, 79421, 82194, 84597, 86681, 88487, 90052, 91410, 92586, 93606, 94490, 95257, 95921, 96497, 96996, 97429, 97804, 98130, 98412, 98656, 98868, 99052, 99211, 99349, 99468, 99572, 99662, 99740, 99808, 99866, 99917, 99961, 99999];
var tab43jo17 = [13341, 24906, 34931, 43622, 51155, 57686, 63348, 68255, 72510, 76198, 79395, 82167, 84569, 86652, 88457, 90023, 91379, 92555, 93575, 94459, 95225, 95889, 96465, 96964, 97397, 97772, 98097, 98379, 98623, 98835, 99019, 99178, 99316, 99436, 99539, 99629, 99707, 99775, 99833, 99884, 99928, 99966, 99999];
var tab44jo17 = [13337, 24898, 34921, 43609, 51140, 57669, 63329, 68236, 72489, 76176, 79372, 82143, 84545, 86627, 88432, 89996, 91353, 92529, 93548, 94431, 95197, 95861, 96437, 96936, 97369, 97744, 98069, 98350, 98595, 98806, 98990, 99149, 99287, 99407, 99510, 99600, 99678, 99746, 99804, 99855, 99899, 99937, 99970, 99999];
var tab45jo17 = [13334, 24892, 34912, 43598, 51128, 57655, 63313, 68218, 72471, 76157, 79352, 82122, 84523, 86605, 88410, 89974, 91330, 92505, 93524, 94408, 95174, 95837, 96413, 96912, 97344, 97719, 98044, 98326, 98570, 98782, 98965, 99124, 99262, 99382, 99485, 99575, 99653, 99721, 99779, 99830, 99874, 99912, 99945, 99974, 99999];
var tab46jo17 = [13331, 24887, 34905, 43589, 51117, 57643, 63300, 68204, 72455, 76141, 79335, 82105, 84506, 86587, 88391, 89955, 91311, 92486, 93505, 94388, 95154, 95817, 96393, 96891, 97324, 97699, 98023, 98305, 98549, 98761, 98944, 99103, 99241, 99361, 99464, 99554, 99632, 99700, 99758, 99809, 99853, 99891, 99924, 99953, 99977, 99999];
var tab47jo17 = [13328, 24882, 34898, 43580, 51107, 57632, 63288, 68191, 72442, 76126, 79320, 82089, 84490, 86570, 88374, 89938, 91293, 92468, 93487, 94370, 95135, 95799, 96374, 96873, 97305, 97680, 98005, 98286, 98530, 98742, 98926, 99085, 99222, 99342, 99446, 99535, 99613, 99681, 99739, 99790, 99834, 99872, 99905, 99934, 99958, 99980, 99999];
var tab48jo17 = [13326, 24878, 34892, 43574, 51099, 57623, 63278, 68180, 72430, 76114, 79308, 82076, 84476, 86556, 88360, 89923, 91279, 92454, 93472, 94355, 95120, 95784, 96359, 96857, 97290, 97664, 97989, 98271, 98515, 98726, 98910, 99069, 99207, 99326, 99430, 99519, 99597, 99665, 99723, 99774, 99818, 99856, 99889, 99918, 99942, 99964, 99983, 99999];
var tab49jo17 = [13324, 24875, 34887, 43567, 51092, 57615, 63269, 68171, 72420, 76103, 79297, 82065, 84464, 86544, 88348, 89911, 91266, 92441, 93459, 94342, 95107, 95770, 96345, 96844, 97276, 97651, 97975, 98257, 98501, 98712, 98896, 99055, 99193, 99312, 99416, 99505, 99583, 99651, 99709, 99760, 99804, 99842, 99875, 99904, 99928, 99950, 99969, 99985, 99999];
var tab50jo17 = [13323, 24872, 34883, 43562, 51086, 57608, 63261, 68163, 72411, 76094, 79287, 82055, 84454, 86534, 88337, 89900, 91255, 92429, 93448, 94330, 95095, 95759, 96334, 96832, 97264, 97639, 97964, 98245, 98489, 98701, 98884, 99043, 99181, 99300, 99404, 99494, 99571, 99639, 99697, 99748, 99792, 99830, 99863, 99892, 99916, 99938, 99957, 99973, 99987, 99999];
var tab51jo17 = [13321, 24869, 34880, 43558, 51081, 57602, 63255, 68156, 72404, 76087, 79279, 82047, 84446, 86525, 88328, 89891, 91246, 92420, 93438, 94321, 95086, 95749, 96324, 96823, 97255, 97629, 97954, 98235, 98479, 98691, 98874, 99033, 99171, 99290, 99394, 99484, 99561, 99629, 99687, 99738, 99782, 99820, 99853, 99882, 99906, 99928, 99947, 99963, 99977, 99989, 99999];
var tab52jo17 = [13320, 24867, 34876, 43553, 51075, 57596, 63249, 68149, 72397, 76079, 79271, 82038, 84437, 86517, 88319, 89882, 91237, 92411, 93429, 94311, 95076, 95740, 96314, 96813, 97245, 97619, 97944, 98225, 98469, 98681, 98864, 99023, 99161, 99280, 99384, 99474, 99551, 99619, 99677, 99728, 99772, 99810, 99843, 99872, 99896, 99918, 99937, 99953, 99967, 99979, 99989, 99999];
var tab53jo17 = [13319, 24865, 34874, 43550, 51071, 57592, 63244, 68143, 72391, 76073, 79265, 82032, 84430, 86510, 88312, 89875, 91229, 92404, 93421, 94304, 95069, 95732, 96307, 96805, 97237, 97612, 97936, 98218, 98461, 98673, 98856, 99015, 99153, 99272, 99376, 99466, 99543, 99611, 99669, 99720, 99764, 99802, 99835, 99864, 99888, 99910, 99929, 99945, 99959, 99971, 99981, 99991, 99999];
var tab54jo17 = [13318, 24863, 34871, 43547, 51068, 57588, 63240, 68139, 72387, 76068, 79260, 82027, 84425, 86505, 88307, 89869, 91224, 92398, 93416, 94298, 95063, 95726, 96301, 96799, 97231, 97606, 97930, 98212, 98456, 98667, 98850, 99009, 99147, 99266, 99370, 99460, 99537, 99605, 99663, 99714, 99758, 99796, 99829, 99858, 99882, 99904, 99923, 99939, 99953, 99965, 99975, 99985, 99993, 99999];
var tab55jo17 = [13317, 24862, 34869, 43545, 51065, 57585, 63236, 68135, 72382, 76064, 79255, 82022, 84420, 86499, 88302, 89864, 91218, 92392, 93410, 94293, 95057, 95720, 96295, 96793, 97225, 97600, 97924, 98206, 98450, 98661, 98844, 99003, 99141, 99260, 99364, 99454, 99531, 99599, 99657, 99708, 99752, 99790, 99823, 99852, 99876, 99898, 99917, 99933, 99947, 99959, 99969, 99979, 99986, 99993, 99999];
var tab56jo17 = [13317, 24860, 34868, 43543, 51063, 57582, 63233, 68132, 72379, 76060, 79251, 82018, 84416, 86495, 88297, 89860, 91214, 92388, 93406, 94288, 95053, 95716, 96290, 96789, 97221, 97595, 97919, 98201, 98445, 98656, 98839, 98998, 99136, 99255, 99359, 99449, 99527, 99594, 99652, 99703, 99747, 99785, 99818, 99847, 99871, 99893, 99912, 99928, 99942, 99954, 99964, 99974, 99981, 99988, 99994, 99999];
var tab57jo17 = [13316, 24859, 34866, 43540, 51060, 57579, 63230, 68128, 72375, 76056, 79247, 82014, 84412, 86491, 88293, 89855, 91209, 92383, 93401, 94283, 95048, 95711, 96286, 96784, 97216, 97590, 97915, 98196, 98440, 98651, 98835, 98993, 99131, 99251, 99354, 99444, 99522, 99589, 99647, 99698, 99742, 99780, 99813, 99842, 99866, 99888, 99907, 99923, 99937, 99949, 99959, 99969, 99976, 99983, 99989, 99994, 99999];
var tab58jo17 = [13315, 24858, 34864, 43539, 51058, 57577, 63227, 68126, 72372, 76053, 79244, 82010, 84408, 86487, 88289, 89851, 91206, 92380, 93397, 94279, 95044, 95707, 96282, 96780, 97212, 97586, 97911, 98192, 98436, 98647, 98831, 98989, 99127, 99247, 99350, 99440, 99518, 99585, 99643, 99694, 99738, 99776, 99809, 99838, 99862, 99884, 99903, 99919, 99933, 99945, 99955, 99965, 99972, 99979, 99985, 99990, 99995, 99999];
var tab59jo17 = [13315, 24857, 34863, 43537, 51057, 57575, 63225, 68124, 72370, 76051, 79242, 82008, 84406, 86485, 88287, 89849, 91203, 92377, 93394, 94277, 95041, 95704, 96279, 96777, 97209, 97583, 97908, 98189, 98433, 98644, 98828, 98986, 99124, 99244, 99347, 99437, 99515, 99582, 99640, 99691, 99735, 99773, 99806, 99835, 99859, 99881, 99900, 99916, 99930, 99942, 99952, 99962, 99969, 99976, 99982, 99987, 99992, 99996, 99999];
var tab60jo17 = [13315, 24857, 34862, 43536, 51055, 57573, 63223, 68122, 72368, 76049, 79239, 82006, 84403, 86482, 88284, 89846, 91200, 92374, 93392, 94274, 95038, 95701, 96276, 96774, 97206, 97580, 97905, 98186, 98430, 98641, 98825, 98983, 99121, 99241, 99344, 99434, 99512, 99579, 99637, 99688, 99732, 99770, 99803, 99832, 99856, 99878, 99897, 99913, 99927, 99939, 99949, 99959, 99966, 99973, 99979, 99984, 99989, 99993, 99996, 99999];
var tab61jo17 = [13314, 24856, 34861, 43535, 51053, 57571, 63222, 68120, 72366, 76046, 79237, 82003, 84401, 86479, 88281, 89843, 91197, 92371, 93389, 94271, 95036, 95698, 96273, 96771, 97203, 97577, 97902, 98183, 98427, 98638, 98822, 98981, 99118, 99238, 99341, 99431, 99509, 99576, 99634, 99685, 99729, 99767, 99800, 99829, 99854, 99875, 99894, 99910, 99924, 99936, 99946, 99956, 99963, 99970, 99976, 99981, 99986, 99990, 99993, 99996, 99999];
var tab62jo17 = [13314, 24856, 34861, 43534, 51052, 57570, 63220, 68118, 72364, 76045, 79235, 82001, 84399, 86478, 88280, 89842, 91196, 92369, 93387, 94269, 95034, 95697, 96271, 96769, 97201, 97575, 97900, 98181, 98425, 98636, 98820, 98979, 99116, 99236, 99339, 99429, 99507, 99574, 99632, 99683, 99727, 99765, 99798, 99827, 99852, 99873, 99892, 99908, 99922, 99934, 99944, 99954, 99961, 99968, 99974, 99979, 99984, 99988, 99991, 99994, 99997, 99999];
var tab63jo17 = [13314, 24855, 34860, 43533, 51051, 57569, 63219, 68117, 72363, 76043, 79234, 82000, 84397, 86476, 88278, 89840, 91194, 92368, 93385, 94267, 95032, 95695, 96269, 96767, 97199, 97573, 97898, 98179, 98423, 98634, 98818, 98977, 99114, 99234, 99337, 99427, 99505, 99572, 99630, 99681, 99725, 99763, 99796, 99825, 99850, 99871, 99890, 99906, 99920, 99932, 99942, 99952, 99959, 99966, 99972, 99977, 99982, 99986, 99989, 99992, 99995, 99997, 99999];
var tab64jo17 = [13314, 24855, 34860, 43533, 51051, 57568, 63218, 68116, 72362, 76043, 79233, 81999, 84397, 86475, 88277, 89839, 91193, 92367, 93384, 94266, 95031, 95694, 96268, 96766, 97198, 97572, 97897, 98178, 98422, 98633, 98817, 98976, 99113, 99233, 99336, 99426, 99504, 99571, 99629, 99680, 99724, 99762, 99795, 99824, 99849, 99870, 99889, 99905, 99919, 99931, 99941, 99951, 99959, 99965, 99971, 99976, 99981, 99985, 99988, 99991, 99994, 99996, 99998, 99999];
var tab65jo17 = [13313, 24854, 34859, 43532, 51050, 57567, 63217, 68115, 72360, 76041, 79232, 81997, 84395, 86473, 88275, 89837, 91191, 92365, 93382, 94264, 95029, 95692, 96266, 96764, 97196, 97571, 97895, 98176, 98420, 98632, 98815, 98974, 99111, 99231, 99334, 99424, 99502, 99569, 99627, 99678, 99722, 99760, 99793, 99822, 99847, 99868, 99887, 99903, 99917, 99929, 99939, 99949, 99957, 99963, 99969, 99974, 99979, 99983, 99986, 99989, 99992, 99994, 99996, 99997, 99999];
var tab66jo17 = [13313, 24854, 34859, 43531, 51049, 57567, 63216, 68114, 72360, 76040, 79231, 81997, 84394, 86473, 88274, 89836, 91190, 92364, 93381, 94263, 95028, 95691, 96265, 96763, 97195, 97570, 97894, 98175, 98419, 98631, 98814, 98973, 99110, 99230, 99333, 99423, 99501, 99568, 99626, 99677, 99721, 99759, 99792, 99821, 99846, 99867, 99886, 99902, 99916, 99928, 99938, 99948, 99956, 99962, 99968, 99973, 99978, 99982, 99985, 99988, 99991, 99993, 99995, 99996, 99998, 99999];
var tab67jo17 = [13313, 24854, 34858, 43531, 51049, 57566, 63216, 68113, 72359, 76039, 79230, 81996, 84393, 86472, 88273, 89835, 91189, 92363, 93380, 94262, 95027, 95690, 96264, 96762, 97194, 97569, 97893, 98174, 98418, 98630, 98813, 98972, 99109, 99229, 99332, 99422, 99500, 99567, 99625, 99676, 99720, 99758, 99791, 99820, 99845, 99866, 99885, 99901, 99915, 99927, 99937, 99947, 99955, 99961, 99967, 99972, 99977, 99981, 99984, 99987, 99990, 99992, 99994, 99995, 99997, 99998, 99999];
var tab68jo17 = [13313, 24854, 34858, 43530, 51048, 57566, 63215, 68113, 72358, 76039, 79229, 81995, 84392, 86471, 88272, 89834, 91188, 92362, 93379, 94261, 95026, 95689, 96263, 96762, 97193, 97568, 97892, 98173, 98417, 98629, 98812, 98971, 99108, 99228, 99331, 99421, 99499, 99566, 99624, 99675, 99719, 99757, 99790, 99819, 99844, 99865, 99884, 99900, 99914, 99926, 99936, 99946, 99954, 99960, 99966, 99971, 99976, 99980, 99983, 99986, 99989, 99991, 99993, 99994, 99996, 99997, 99998, 99999];
var tab69jo17 = [13313, 24853, 34857, 43530, 51048, 57565, 63215, 68112, 72358, 76038, 79228, 81994, 84392, 86470, 88272, 89833, 91187, 92361, 93379, 94261, 95025, 95688, 96262, 96761, 97192, 97567, 97891, 98172, 98416, 98628, 98811, 98970, 99107, 99227, 99330, 99420, 99498, 99565, 99623, 99674, 99718, 99756, 99789, 99818, 99843, 99864, 99883, 99899, 99913, 99925, 99935, 99945, 99953, 99959, 99965, 99970, 99975, 99979, 99982, 99985, 99988, 99990, 99992, 99993, 99995, 99996, 99997, 99998, 99999];
var tab70jo17 = [13313, 24853, 34857, 43530, 51048, 57565, 63215, 68112, 72358, 76038, 79228, 81994, 84392, 86470, 88272, 89833, 91187, 92361, 93379, 94261, 95025, 95688, 96262, 96761, 97192, 97567, 97891, 98172, 98416, 98628, 98811, 98970, 99107, 99227, 99330, 99420, 99498, 99565, 99623, 99674, 99718, 99756, 99789, 99818, 99843, 99864, 99883, 99899, 99913, 99925, 99935, 99945, 99953, 99959, 99965, 99970, 99975, 99979, 99982, 99985, 99988, 99990, 99992, 99993, 99995, 99996, 99997, 99998, 99999, 99999];
var tab71jo17 = [13313, 24853, 34857, 43529, 51047, 57564, 63214, 68111, 72357, 76037, 79228, 81993, 84391, 86469, 88271, 89833, 91186, 92360, 93378, 94260, 95024, 95687, 96262, 96760, 97191, 97566, 97890, 98171, 98415, 98627, 98810, 98969, 99106, 99226, 99329, 99419, 99497, 99564, 99622, 99673, 99717, 99755, 99788, 99817, 99842, 99863, 99882, 99898, 99912, 99924, 99934, 99944, 99952, 99958, 99964, 99969, 99974, 99978, 99981, 99984, 99987, 99989, 99991, 99992, 99994, 99995, 99996, 99997, 99998, 99998, 99999];
var tab72jo17 = [13312, 24853, 34857, 43529, 51047, 57564, 63213, 68111, 72356, 76036, 79227, 81992, 84390, 86468, 88270, 89832, 91186, 92359, 93377, 94259, 95023, 95686, 96261, 96759, 97190, 97565, 97889, 98170, 98414, 98626, 98809, 98968, 99105, 99225, 99328, 99418, 99496, 99563, 99621, 99672, 99716, 99754, 99787, 99816, 99841, 99862, 99881, 99897, 99911, 99923, 99933, 99943, 99951, 99957, 99963, 99968, 99973, 99977, 99980, 99983, 99986, 99988, 99990, 99991, 99993, 99994, 99995, 99996, 99997, 99997, 99998, 99999];
var tab73jo17 = [13312, 24853, 34857, 43529, 51047, 57564, 63213, 68111, 72356, 76036, 79227, 81992, 84390, 86468, 88270, 89832, 91186, 92359, 93377, 94259, 95023, 95686, 96261, 96759, 97190, 97565, 97889, 98170, 98414, 98626, 98809, 98968, 99105, 99225, 99328, 99418, 99496, 99563, 99621, 99672, 99716, 99754, 99787, 99816, 99841, 99862, 99881, 99897, 99911, 99923, 99933, 99943, 99951, 99957, 99963, 99968, 99973, 99977, 99980, 99983, 99986, 99988, 99990, 99991, 99993, 99994, 99995, 99996, 99997, 99997, 99998, 99999, 99999];
var tab74jo17 = [13312, 24853, 34857, 43529, 51047, 57564, 63213, 68111, 72356, 76036, 79227, 81992, 84390, 86468, 88270, 89832, 91186, 92359, 93377, 94259, 95023, 95686, 96261, 96759, 97190, 97565, 97889, 98170, 98414, 98626, 98809, 98968, 99105, 99225, 99328, 99418, 99496, 99563, 99621, 99672, 99716, 99754, 99787, 99816, 99841, 99862, 99881, 99897, 99911, 99923, 99933, 99943, 99951, 99957, 99963, 99968, 99973, 99977, 99980, 99983, 99986, 99988, 99990, 99991, 99993, 99994, 99995, 99996, 99997, 99997, 99998, 99999, 99999, 99999];
var tab75jo17 = [13312, 24853, 34856, 43529, 51046, 57563, 63213, 68110, 72355, 76036, 79226, 81992, 84389, 86467, 88269, 89831, 91185, 92358, 93376, 94258, 95022, 95685, 96260, 96758, 97189, 97564, 97888, 98169, 98413, 98625, 98808, 98967, 99104, 99224, 99327, 99417, 99495, 99562, 99620, 99671, 99715, 99753, 99786, 99815, 99840, 99861, 99880, 99896, 99910, 99922, 99932, 99942, 99950, 99956, 99962, 99967, 99972, 99976, 99979, 99982, 99985, 99987, 99989, 99990, 99992, 99993, 99994, 99995, 99996, 99996, 99997, 99998, 99998, 99998, 99999];
var tab76jo17 = [13312, 24853, 34856, 43529, 51046, 57563, 63213, 68110, 72355, 76036, 79226, 81992, 84389, 86467, 88269, 89831, 91185, 92358, 93376, 94258, 95022, 95685, 96260, 96758, 97189, 97564, 97888, 98169, 98413, 98625, 98808, 98967, 99104, 99224, 99327, 99417, 99495, 99562, 99620, 99671, 99715, 99753, 99786, 99815, 99840, 99861, 99880, 99896, 99910, 99922, 99932, 99942, 99950, 99956, 99962, 99967, 99972, 99976, 99979, 99982, 99985, 99987, 99989, 99990, 99992, 99993, 99994, 99995, 99996, 99996, 99997, 99998, 99998, 99998, 99999, 99999];
var tab77jo17 = [13312, 24853, 34856, 43529, 51046, 57563, 63213, 68110, 72355, 76036, 79226, 81992, 84389, 86467, 88269, 89831, 91185, 92358, 93376, 94258, 95022, 95685, 96260, 96758, 97189, 97564, 97888, 98169, 98413, 98625, 98808, 98967, 99104, 99224, 99327, 99417, 99495, 99562, 99620, 99671, 99715, 99753, 99786, 99815, 99840, 99861, 99880, 99896, 99910, 99922, 99932, 99942, 99950, 99956, 99962, 99967, 99972, 99976, 99979, 99982, 99985, 99987, 99989, 99990, 99992, 99993, 99994, 99995, 99996, 99996, 99997, 99998, 99998, 99998, 99999, 99999, 99999];
var tab78jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999];
var tab79jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999];
var tab80jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999];
var tab81jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999];
var tab82jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999];
var tab83jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999];
var tab84jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999];
var tab85jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999];
var tab86jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000];
var tab87jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000];
var tab88jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000];
var tab89jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000];
var tab90jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000];
var tab91jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000];
var tab92jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab93jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab94jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab95jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab96jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab97jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab98jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab99jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab100jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab101jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab102jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab103jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab104jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab105jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab106jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab107jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab108jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab109jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab110jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab111jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab112jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab113jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab114jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab115jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab116jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab117jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab118jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab119jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab120jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab121jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab122jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab123jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab124jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab125jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab126jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab127jo17 = [13312, 24852, 34856, 43528, 51046, 57563, 63212, 68109, 72355, 76035, 79225, 81991, 84388, 86466, 88268, 89830, 91184, 92357, 93375, 94257, 95021, 95684, 96259, 96757, 97188, 97563, 97887, 98168, 98412, 98624, 98807, 98966, 99103, 99223, 99326, 99416, 99494, 99561, 99619, 99670, 99714, 99752, 99785, 99814, 99839, 99860, 99879, 99895, 99909, 99921, 99931, 99941, 99949, 99955, 99961, 99966, 99971, 99975, 99978, 99981, 99984, 99986, 99988, 99989, 99991, 99992, 99993, 99994, 99995, 99995, 99996, 99997, 99997, 99997, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
var tab128jo17 = [133122, 248523, 348561, 435282, 510458, 575627, 632121, 681093, 723547, 760349, 792252, 819908, 843882, 864665, 882681, 898299, 911837, 923574, 933748, 942567, 950213, 956841, 962586, 967567, 971884, 975627, 978872, 981684, 984123, 986236, 988068, 989657, 991034, 992227, 993262, 994159, 994937, 995611, 996195, 996701, 997141, 997521, 997851, 998137, 998385, 998600, 998787, 998948, 999088, 999210, 999315, 999406, 999485, 999554, 999613, 999665, 999709, 999748, 999781, 999811, 999836, 999858, 999877, 999893, 999907, 999920, 999930, 999940, 999948, 999955, 999961, 999966, 999970, 999974, 999978, 999981, 999983, 999986, 999987, 999989, 999991, 999992, 999993, 999994, 999995, 999995, 999996, 999997, 999997, 999997, 999998, 999998, 999998, 999999, 999999, 999999, 999999, 999999, 999999, 999999, 999999, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000];



var table =
    [tab1jo17, tab2jo17, tab3jo17, tab4jo17, tab5jo17, tab6jo17, tab7jo17,tab8jo17, tab9jo17, tab10jo17, tab11jo17, tab12jo17, tab13jo17, tab14jo17, tab15jo17,tab16jo17, tab17jo17, tab18jo17, tab19jo17, tab20jo17, tab21jo17, tab22jo17,tab23jo17, tab24jo17, tab25jo17, tab26jo17, tab27jo17, tab28jo17, tab29jo17,tab30jo17, tab31jo17, tab32jo17, tab33jo17, tab34jo17, tab35jo17, tab36jo17,tab37jo17, tab38jo17, tab39jo17, tab40jo17, tab41jo17, tab42jo17, tab43jo17,tab44jo17, tab45jo17, tab46jo17, tab47jo17, tab48jo17, tab49jo17, tab50jo17,tab51jo17, tab52jo17, tab53jo17, tab54jo17, tab55jo17, tab56jo17, tab57jo17,tab58jo17, tab59jo17, tab60jo17, tab61jo17, tab62jo17, tab63jo17, tab64jo17,tab65jo17, tab66jo17, tab67jo17, tab68jo17, tab69jo17, tab70jo17, tab71jo17,tab72jo17, tab73jo17, tab74jo17, tab75jo17, tab76jo17, tab77jo17, tab78jo17,tab79jo17, tab80jo17, tab81jo17, tab82jo17, tab83jo17, tab84jo17, tab85jo17,tab86jo17, tab87jo17, tab88jo17, tab89jo17, tab90jo17, tab91jo17, tab92jo17,tab93jo17, tab94jo17, tab95jo17, tab96jo17, tab97jo17, tab98jo17, tab99jo17,tab100jo17, tab101jo17, tab102jo17, tab103jo17, tab104jo17, tab105jo17, tab106jo17,tab107jo17, tab108jo17, tab109jo17, tab110jo17, tab111jo17, tab112jo17, tab113jo17,tab114jo17, tab115jo17, tab116jo17, tab117jo17, tab118jo17, tab119jo17, tab120jo17,tab121jo17, tab122jo17, tab123jo17, tab124jo17, tab125jo17, tab126jo17, tab127jo17,tab128jo17];


var tab =
    [0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
      0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
      0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, 0xA0,
      0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC,
      0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8,
      0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4,
      0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0,
      0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC,
      0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8,
      0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4,
      0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 0x00,
      0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C,
      0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
      0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24,
      0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30,
      0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C,
      0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
		    0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51,
		      0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A,
		      0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63,
		      0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C,
		      0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75,
		      0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E,
		      0x7F];

var tab1 =
    [0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B,
0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B,
0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B,
0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B,
0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B,
0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B,
0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B,
0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B,
0x7C, 0x7D, 0x7E, 0x7F, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B,
0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B,
0x9C, 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB,
0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB,
0xBC, 0xBD, 0xBE, 0xBF, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB,
    0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,
      0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3,
      0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
      0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB,
      0xFC, 0xFD, 0xFE, 0xFF];


/********************************fin deuxième partie******/

var monhexa, NbPtTotal = 0;
var raw = [];
var raw1 = [];
var raw2 = [];


  var durerentete = NbPtTotal * 2;
  var longueurentete = durerentete + 44 - 8;
var convertisseur = function swap16(val) {
    return ((val & 0xFF) << 8)
           | ((val >> 8) & 0xFF);
}

samples = durerentete*0.0625;



/***********troisième partie**********application qui met aux normes audio actuelles*********/

var app = {};

(function() {

    app.utility = {

        /* js port of PHP function pack */
        pack : function (fmt) {
            var output = '';
            
            var argi = 1;
            for (var i = 0; i < fmt.length; i++) {
                var c = fmt.charAt(i);
                var arg = arguments[argi];
                argi++;
                
                switch (c) {
                    case "a":
                        output += arg[0] + "\0";
                        break;
                    case "A":
                        output += arg[0] + " ";
                        break;
                    case "C":
                    case "c":
                        output += String.fromCharCode(arg);
                        break;
                    case "n":
                        output += String.fromCharCode(
                            (arg >> 8) & 255, 
                            arg & 255
                        );
                        break;
                    case "v":
                        output += String.fromCharCode(
                            arg & 255, 
                            (arg >> 8) & 255
                        );
                        break;
                    case "N":
                        output += String.fromCharCode(
                            (arg >> 24) & 255, 
                            (arg >> 16) & 255, 
                            (arg >> 8) & 255, 
                            arg & 255
                        );
                        break;
                    case "V":
                        output += String.fromCharCode(
                            arg & 255, 
                            (arg >> 8) & 255, 
                            (arg >> 16) & 255, 
                            (arg >> 24) & 255
                        );
                        break;
                    case "x":
                        argi--;
                        output += "\0";
                        break;
                    default:
                        throw new Error("Unknown pack format '"+c+"'");
                }
            }
            
            return output;
        }

    }

    /* Classic sound config : mono wav, 44100 Hz, 16 bit depth */
    app.config = {
        channels : 1,
        sampleRate : 44100,
        bitsPerSample : 16,
    }

}());

(function(){

    var pack = app.utility.pack;
    var config = app.config;

    // constructor
    app.wave = function (_data) {
        this.data = _data;
    };

    app.wave.prototype = {

        // Generate the wave content by concatenation, and encode it to base64.
        generate : function () {
            var chunk1 = this.makeChunk1(); // format chunk
            var chunk2 = this.makeChunk2(); // data chunk
            var header = this.makeHeader(chunk1.length, chunk2.length);
            var out = header + chunk1 + chunk2;
            return "data:audio/wav;base64," + btoa(out);
        },

        // Generate the content of the audio format chunk
        makeChunk1 : function () {
            var chunk1 = [
                "fmt ",
                pack("V", 16), // Chunk length for PCM
                pack("v", 1), // linear PCM
                pack("v", config.channels),
                pack("V", config.sampleRate),
                pack("V", config.sampleRate * config.channels * config.bitsPerSample / 8), // ByteRate
                pack("v", config.channels * config.bitsPerSample / 8), // BlockAlign
                pack("v", config.bitsPerSample)
            ];
            return chunk1.join('');
        },

        // Generate the content of the data chunk
        makeChunk2 : function () {
            var data = this.data;

            var chunk2 = [
                "data", // chunk ID
                pack("V", data.samples * config.channels * config.bitsPerSample / 16), // Chunk length
                data.raw2
            ];
            return chunk2.join('');
        },

        // Generate the header chunk
        makeHeader : function () {
            var data = this.data;

            var header = [
                "RIFF",
                pack("V", 4 + (8 + 16) + (8 + data.samples * config.channels * config.bitsPerSample / 8)), // total lenght
                "WAVE"
            ];
            return header.join('');
        }

    };

}());



/******fin de la troisième partie**encodeur aux normes audio*************************/


/***********cinquième partie génère la balise et lance la lecture**************/



function genereLaFin()
{

/**************genere balise*******/
/*
<audio id="audiojoa" controls="controls" autobuffer=""> 
<source src="data:audio/wav;base64wave,"></audio>
*/

var mon_audio = null;
var nouveauaudio = null;

function ajouteElement() {
  // crée un nouvel élément audio




  nouveauaudio = document.createElement("div");

  nouveauaudio.innerHTML = "<audio id=\"audiojoa\" controls=\"controls\" autobuffer=\"\"><source src=\"data:audio/wav;base64wave,\"></audio>";

  // ajoute l'élément qui vient d'être créé et son contenu au DOM
  mon_audio = document.getElementById("org_div1");
  document.body.insertBefore(nouveauaudio, mon_audio);
}


ajouteElement();


/**reglage force de l'amplitude***/
var volume = Math.floor(65535 / 8);

//samples = NbPtTotal*0.25;
durerentete=NbPtTotal*2;

samples = durerentete*16;

var data = {raw2: raw2.join(''), samples: samples};

var wave = new app.wave(data);
var base64wave = wave.generate();
console.log(base64wave);
var audio = document.getElementById("audiojoa");
var source = document.createElement("source");
source.setAttribute("src", base64wave);
audio.appendChild(source);

}



function lecjo(FichierAudioJo)
{
var ludion = 32768, amplitude = 32768, nbdepoints = 5;

	function actiontotale(amplitude, nbdepoints, ludion)

	{

				var samples = 0, ote, ote1, reste, boucle;
			      var ideb, j, p, avec1, avec2, avec3;


/****debut front descend****/
		function frontdescend(amplitude, nbdepoints)
		{
				var ote1;

			      boucle = Math.round(nbdepoints *0.5);

			      reste = nbdepoints - boucle;

			      ote = Math.round( (ludion-amplitude)*0.5 );

				avec1 = boucle-1;
				p = table[avec1];

			function calcul1 (ludion, ote, ote1)
			{
			codebash = Math.round(ludion + ote1 - ote);
			var codebash1 = Math.round(codebash * 0.2);
			var ji;
			var ij;
			var ola;
			ola = codebash;

			 ij = Math.floor(ola * 0.00390625);
			 ji = ola - (256 * ij);
			 monhexa = tab[ji];
			 var total = raw.push(monhexa);
			 monhexa = tab[ij];
			 var total = raw.push(monhexa);
			 monhexa = ji;
			 var total = raw1.push(monhexa);
			 monhexa = ij;
			 var total = raw1.push(monhexa);
			 var volume = Math.floor(65535);
			 monhexa = Math.floor(volume * (codebash1/app.config.sampleRate));
			 var total = raw2.push(app.utility.pack("v", monhexa));

			 }//fin calcul1


			for (ideb = boucle-1; ideb > 0; ideb--) {
			ote1 = Math.floor((ote * 0.00001 * p[ideb]));
   			calcul1 (ludion, ote, ote1);
			}// fin frontdescend partie1 et fin for


/********deuxieme partie front descend****************/

			function sens2inverse(amplitude, nbdepoints)
			{
			var ote1;

			 boucle = Math.round(nbdepoints *0.5);
			 reste = nbdepoints - boucle;
			 ote = Math.round( (ludion-amplitude)*0.5 );

			avec1 = boucle-1;
			p = table[avec1];

			function calcul2 (ludion, ote, ote1)
			{
			codebash = Math.round(amplitude + ote - ote1);
			var codebash1 = Math.round(codebash * 0.2);
			 var ji;
			  var ij;
			   var ola;
			   ola = codebash;

			  ij = Math.floor(ola * 0.00390625);
			  ji = ola - (256 * ij);
			 monhexa = tab[ji];
			 var total = raw.push(monhexa);
			 monhexa = tab[ij];
			 var total = raw.push(monhexa);
			 monhexa = ji;
			 var total = raw1.push(monhexa);
			 monhexa = ij;
			  var total = raw1.push(monhexa);
			  var volume = Math.floor(65535);
			 monhexa = Math.floor(volume * (codebash1/app.config.sampleRate));
			  var total = raw2.push(app.utility.pack("v", monhexa));

			 }// fin calcul2

			 for (ideb = 0; ideb < reste -1; ideb++) {
			 ote1 = Math.floor((ote * 0.00001 * p[ideb]));
   			 calcul2 (amplitude, ote, ote1);
			 } // fin du for

			 } // fin sens2inverse

			sens2inverse(amplitude, nbdepoints);		 

			ludion = amplitude
			return ludion;
			}// fin frontdescend

/********fin front descend *************************/


/****debut front montant*********************/
		function frontmontant(amplitude, nbdepoints)
		{
		ote = Math.round( (amplitude-ludion)*0.5 );			     
		 boucle = Math.round(nbdepoints * 0.5);
		reste = nbdepoints - boucle;
		
		var iee, j, p;
		avec1 = boucle-1;
		p = table[avec1];
		
			function calcul3 (ludion, ote, ote1)
			{
  			codebash = Math.round(ludion + ote - ote1);
			var codebash1 = Math.round(codebash * 0.2);
			var ji;
			var ij;
			var ola;
			ola = codebash;

			ij = Math.floor(ola * 0.00390625);
			ji = ola - (256 * ij);
			monhexa = tab[ji];
			var total = raw.push(monhexa);
			monhexa = tab[ij];
			var total = raw.push(monhexa);
			monhexa = ji;
			var total = raw1.push(monhexa);
			monhexa = ij;
			var total = raw1.push(monhexa);
			var volume = Math.floor(65535 );
			monhexa = Math.floor(volume * (codebash1/app.config.sampleRate));
			var total = raw2.push(app.utility.pack("v", monhexa));

			}// fin calcul3



			for (ideb = boucle-1; ideb > 0; ideb--) {
			ote1 = Math.floor(ote * 0.00001 * p[ideb]);
   			calcul3 (ludion, ote, ote1);
			}// fin premiere partie du fron et du for



				
			function sensinverse(amplitude, nbdepoints)
			{

			boucle = Math.round(nbdepoints * 0.5);
			reste = nbdepoints - boucle;
			ote = Math.round((amplitude-ludion)*0.5 );


   			function calcul4 (ludion, ote, ote1)
			 {

			 codebash = Math.round(amplitude -ote + ote1);
			var codebash1 = Math.round(codebash * 0.2);
			 var ji;
			   var ij;
			   var ola;
			   ola = codebash;

			   ij = Math.floor(ola * 0.00390625);
			   ji = ola - (256 * ij);
			   monhexa = tab[ji];
			   var total = raw.push(monhexa);
			  monhexa = tab[ij];
			  var total = raw.push(monhexa);
			  monhexa = ji;
			  var total = raw1.push(monhexa);
			  monhexa = ij;
			   var total = raw1.push(monhexa);
			   var volume = Math.floor(65535);
			    monhexa = Math.floor(volume * (codebash1/app.config.sampleRate));
			   var total = raw2.push(app.utility.pack("v", monhexa));


				}//fin calcul4

/******/
				for (ideb = 0; ideb < reste-1; ideb++) {
				    ote1 = Math.round(ote * 0.00001 * p[ideb]);
   					calcul4 (amplitude, ote, ote1);
				}
/********/






}

/* debut montant inverse du sens 1 */
sensinverse(amplitude, nbdepoints);

			ludion = amplitude
			return ludion;

			} //fin frontmontant





/****fin front montant***/







/*choix du sens du front*/

		  if (ludion > amplitude)
		    {
		 frontdescend(amplitude, nbdepoints);
		    }
		  else
		    {
		frontmontant(amplitude, nbdepoints);
		    }

/* fin choix du sens du front*/



}
/****fin action totale****/

for(var idejo= 0; idejo < FichierAudioJo.length; idejo++)
{//1

if (idejo/2 == Math.round(idejo/2)) {
	ludion = amplitude;
	amplitude = FichierAudioJo[idejo] * 256;
} else {//2
	nbdepoints = FichierAudioJo[idejo];
NbPtTotal += nbdepoints; /*44100 nbdepoints = 1 seconde*/
	actiontotale(amplitude, nbdepoints, ludion);




}//  fin du else de trie de récpération de données (amplitude et nbpoints)
}// fin de la boucle for de trie de récpération de données (amplitude et nbpoints)

genereLaFin();


return NbPtTotal;





}// fin fonction lecjo


/****************************fin premier niveau qui ouvre le fichier*****************************************************/

lecjo(FichierAudioJo);
    }
    reader.readAsText(file, 'ISO-8859-1');
//    reader.readAsText(file, "UTF-8")
}

function handleFiles(fileList) {
    for (var i = 0; i < fileList.length; i++) {
        setupReader(fileList[i]);
    }


/**************/

function lecjoa() {

 FichierAudioJox = document.getElementById("dessindeforme1").value;
 FichierAudioJo = FichierAudioJox.split(",").map(Number);
lecjo(FichierAudioJo);
}
/**************/



}




/**************/






</script>

                   <a href="mailto:temps.jo@gmail.com">Contact et support: Joris Abadie</a>
</body>

</html> 
 

Cordialement

Dernière modification par temps (Le 12/07/2016, à 16:04)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#5 Le 13/07/2016, à 07:19

temps

Re : [résolu] javascript data

Bonjour,

Le code peux encore être amélioré, mais comme j'ai les deux applications fonctionnelles pour l'Add-on (celle qui permet de dessiner les formes pour générer les fichiers audio et celle qui lit le format audio jo), je passe à la création de l'Add-on pour firefox, je poste en résolu.

Une fois regroupé la multitude de fichiers audio au format jo que j'ai déjà créé, je le placerai dans un répertoire en ligne et j'indiquerai ou. Mais je pense qu'il y a beaucoup plus de plaisir à générer ses propre mélodie qu'à venir sélectionner dans une banque audio existante.

Cordialement


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#6 Le 14/07/2016, à 14:53

temps

Re : [résolu] javascript data

Évolution des appli :
J'ai créé 5 Add-ons
Le premier transforme nos dessins en fichier son afin de découvrir les lois des différentes dimensions.
Le deuxième lit le format audio abadie.jo
Et le troisième génère des vidéo sans utiliser d'images, juste avec des mixes de couleurs et génération des formes à l'aide d'une forme carré soumise à des radians, tout ceci en incorporant le mixe de sons générés en abadie.jo (rien que de l'imagination sans instrument de musique copié)

Pour firefox ici :
https://addons.mozilla.org/en-US/firefox/addon/lecjoa/
je dois encore travailler sur les lois de génération de pages en javascript, j'ai aussi placé les sources sur mon site en exemple :
http://www.letime.net/lecjo/lecjoa.zip. il suffit de l'installer avec firefox

Cordialement

P.S. Suite à une demande de l'équipe des dev, les 4 addons ont été regroupé en un seul, d’où la modification des liens

Dernière modification par temps (Le 28/07/2016, à 14:14)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne