import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.event.*;
import java.awt.*; 
import javax.swing.JButton;  
import java.util.Timer;
import java.util.TimerTask; 
import java.util.ArrayList;
import java.util.Random;
import java.awt.Dimension;
import java.awt.*;
 
public class panneauattract extends JPanel implements MouseListener
{ 
	static int anti_intempestif=5214; /* ne demarrer paint component que quand je le veux - au demarrage, eliminer le 1er appel */
	static int longueur; 		/* largeur ecran */
	static int haut; 				/* hauteur ecran */
	
	static Timer t=new Timer();
  Dimension dime = Toolkit.getDefaultToolkit().getScreenSize();
  int theight = (int)dime.getHeight();
	int twidth  = (int)dime.getWidth();
  BufferedImage buffimag1 = new BufferedImage(twidth, theight, BufferedImage.TYPE_INT_RGB);
 	private Graphics2D g1=buffimag1.createGraphics();
	
	static boolean flag=false; 	 // dessin en cours
	static boolean listen=false; // 1er demarrage
	
  static String nomcoloration[]=new String[] {"noir et blanc","couleur par nombre de frappe du pixel, limité à 18","couleur par nombre d itération","couleur par nombre de frappe du pixel, uniformisé","couleur par log(nombre de frappe du pixel)"};
  static String nomprojection[]=new String[] {"plan","sphère","cylindre horizontal","cylindre vertical","tore"};
  static String nom4emedim[]=new String[] {"projection","bande","couleur"};
  static String nom3emedim[]=new String[] {"projection","ombre","bande","couleur","anaglyph","stréréogramme","tranches"};
  
  static String[] nomgroupe;		// noms des groupes d'attracteurs	: classique A ou Sprott B
  static String[] fullnomgroupe;// noms des groupes d'attracteurs avec le détail de la lettre : Sprott B : 1 variable, 2° degré
  static String[] nomattractg;	// noms des attracteurs du groupe
  static String nomattractgroupe=new String();	// nom du groupe d attracteur
  static String fullnomattractgroupe=new String();	// nom du groupe d attracteur avec le détail de la lettre
  
	static int numgroupe=0;			// numéro du groupe d'attracteur
	static int numattractg=0;		// numéro de l'attracteur dans le groupe
 	static int numattract=1;		// numero de l attracteur
 	static int type_attract= 0; // type de l'attracteur courant - 0 : map , 1 : differentiel , 2 ... : special - 10 ... : new fonctions
 	static int degre;						// degré du polynome
	static int nbvar= 2;        // nombre des variables de l'attracteur courant : x, y, z, w
	static boolean multipoint=false;	// un seul point de départ sur plus de 10000 iterations ou plusieurs sur 50 iterations
	static boolean grossit=false; // si true l'attracteur n'en est peut etre pas un, il grossit

	static int numprojection=0;	// type de la projection : plan (plan, sphère, tore, cylindre
	static int num4emedim=2;		// type de la 4eme dimension : colors  (projection, bande, couleur)
	static int num3emedim=1;		// type de la 3eme dimension : ombre (projection, om bre, bande, couleur, anaglyphe, stereogramme, tranches)
	static int coloration=2;		/* type de coloration pour 2 dim : couleur par nb iteration (noir et blanc, couleur par frequence, couleur par nbiter */
		
	static int modifcoeff=1;		// index du coefficient à modifier
	static int sens=0;					// sens du traveling pour modifier le modifcoeff coefficient ou x0 (index_coeff+1)
	static double pastravel_coeff=0.0001; // pas du traveling sur le coefficient
	static double pastravel_iter=10000; // pas du traveling sur iter_max */
	static int travel=0;				/* 0=traveling coeff; 1= traveling iter_max */
	static int PREV=5;										/* pour les fonctions à une seule variable on considere la fonction (Xn-prev,Yn) au lieu de (X,Y) */
	static int degre_max= 5;              /* degré maximum des polynomes */

	static int NBVAR=2;										/* nombre de variable pour rechercher un attracteur */
	static int TYPE_ATTRACT=0;						/* type d'attracteur à rechercher */
	static boolean hamiltonien=false;			/* recherche d'attracteur hamiltonien */
	static boolean search_mode=false;			/* mode de recherche true=recherche false=predefini */;

	static int nbcolor=255; 				/* 17 si fond blanc 18 si fond noir (le blanc en dernier)  ou 255
															le blanc est reservé pour les points tres frequemment visités et ne peut etre utilisé si fond blanc */
	
	static int red=Color.red.getRGB();	 /* pour anaglyphes */
	static int cyan=Color.cyan.getRGB(); /* pour anaglyphes */
	static int couleur_not_fond=Color.white.getRGB();
	static int couleur_fond=Color.black.getRGB(); /* le fond par défaut est noir */
	static int gris=Color.gray.getRGB();	 /* pour l ombre */
	static int[] COLR=new int[257];					/* ensemble des nbcouleurs 18 ou 256 */
	static int[] COLR4=new int[4];					/* pour 3eme dim en ombre */
	static boolean fond_blanc=false;						/* fond blanc ou noir , noir par défaut*/

	static boolean search_attract;								/* boucle de recherche d'un attracteur */
	Random generator = new Random();              /* Reseed random number generator with time */
 
	static short[][] hits = new short[1200][1200]; /* compte des pixels atteints */
	static int maxhits;														/* plus grand nombre de hit recu par un pixel */
	static int maxloghits;												/* log du plus grand nombre de hit recu par un pixel */
	static char[] attract_code = new char[515];		/* table ascii des coefficients */

	static int index_500=0;
	static int index_coeff=0;											/* index dans A, la table des coefficients */
	static double[] A=new double[505];						/* liste des coefficients */
	static double[] B=new double[505];						/* liste intermediaire des coefficients, entre 0 et 1 */

	static double[] V=new double[100];						/* 100 nombres aleatoires */
	static double RAN;														/* le nombre aleatoire choisi puis remplacé dans les 100 */
	static double TWOD;

	static double lyapunov;									/* exposant de lyapunov */
	static double fractal_dim;							/* dimension fractale */

	static boolean do_iter;									/* continurer les iterations */

	static int act=0;												/* action à executer par paint panneau : all=0 redo=1 iter= 2 oneiterate=3*/
	static boolean manuel=false;						/* automatique par timer ou manuel*/
	static boolean rapide=true;							/* rapide ou progressif par cycle */

	static double iter_min=1000;						/* phase initiale */
	static double iter_max= 50000;				  /* Maximum number of iterations */
	static double iter_search=11000;				/* nombre d iterations en test dim et lyapunov */
	static double stepsize= .1;             /* Step size for differentiel */
	static double nbiter=0;									/* nombre d'itérations total */
	static int nbcycle_iter=0;					  	/* nombre d'iterations du cycle */
	static int iter_cycle=1000;							/* nombre d'iteration maximum d'un cycle progressif */

	static double X, Y, Z, W;								/*le point avant itération */
	static double XNEW, YNEW, ZNEW, WNEW;		/* le point itéré */
	static double v05=0.05;
	static double x0=v05;									/* point de depart des iterations */
	static double y0=v05;
	static double z0=v05;
	static double w0=v05; 

	static double XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, WMIN, WMAX;	/* les limites de l attracteur calculé sur les iter_min premiers points */
	static double MX, MY;	/* marge de 20% */
	static double xbas;		/* xmin -20% */
	static double xhaut;	/* xmax +20% */
	static double ybas;		/* ymin -20% */
	static double yhaut;	/* ymax +20% */
	static double scalex;	/* facteur d'échelle sur x */
	static double scaley;	/* facteur d'échelle sur y */
	static double zoom=1;	/* facteur de zoom */
	static double XA;			/* x moitié pour anaglyph */
	static double YA;			/* y moitié pour anaglyph */
	static double ZA;
	static double XRT, XLT, h_scale_factor;	/* mapage ecran */
	static double TH, PH, xpoint, ypoint, TT, PT, XZ, YZ, tg_eclairage;				/* projections ... */
	
	static int C4emedim;				/* couleur pour la 4ème dimension */
	static int C3emedim;				/* couleur pour la 3eme dim */
	static int Cexist;					/* couleur preexistante */						
	
	static double NL,LSUM,DLX, DLY, DLZ, DLW, DL2;	/*pour calcul liapunov */
	static double XSAVE, YSAVE, ZSAVE, WSAVE;				/* sauvegarde du point pour calcul de lyapunov */
	
	static double XE, YE, ZE, WE, DF, RS;						/* pour calcul dimension fractale */
	static double D2MAX, DX, DY, DZ, DW, D2;
	static double N1, N2;
	static double[] x500=new double[500];						/* les 500 dernièrs points utilisés pour calcul de la dimension fractale*/
	static double[] y500=new double[500];
	static double[] z500=new double[500];
	static double[] w500=new double[500]; 
	
	static int I1, I2, I3, I4, I5;					/* pour calcul polynomial */
	static double AL, SINAL, COSAL, DUM;		/* pour calcul differentiel */
	static double[] XY=new double[5];				/* equation differentielle */
	static double[] XN=new double[5];				/* XN[1, 2, 3 et 4] = x, y, z et w	*/
	
	static String str;		/* chaine pour affichage */
	static int i;					/* variables temporaires multiusages */
	static int j;
	static int k;
	static int I, J;
	static double Z2, W2;			
	
	static double lambda;	/* coefficients pour attracteurs symetriques */
	static double alpha;
	static double beta;
	static double gamma;
	static double omega;
	static double delta;
	static int numcol=1;
	static int n;
	static int np;
												/* intermediaires pour icon symetrique */
	static double zzbar;
	static double zz;
	static double zreal;
	static double zimag;
	static double za;
	static double zb;
	static double zc;
	static double zd;
	static double zn;
	static double p;		
											/* intermediaires pour quilt */
	static double p2 = 2 * Math.PI;
	static double sq3 = Math.sqrt(3);
	static double sx;
	static double sy;
	static double ma;
	static double shift;
	static double bx;
	static double by;
	static double s11,s12,s13,s21,s22,s23,s31,s32,s33,s3h1,s3h2,s3h3;
	static double a11,a12,a21,a22,a31,a32;
	static double ah11,ah12,ah21,ah22,ah31,ah32;
	static double k11,k12,k21,k22,el11,el12,el21,el22,el31,el32,em11,em12,em21,em22,em31,em32,en11,en12,en21,en22,en31,en32,enh11,enh12,enh21,enh22,enh31,enh32;
	
											/* intermediaires pour ifs */
	static double sin;
	static double cos;
	static int m;
	static int conj;
	static double x;
	static double y;
   
static String lettre_groupe[][]=new String [][]{
{"A","1 variable, 2° degré"},
{"B","1 variable, 3° degré"},
{"C","1 variable, 4° degré"},
{"D","1 variable, 5° degré"},

{"E","2 variables, 2° degré"},
{"F","2 variables, 3° degré"},
{"G","2 variables, 4° degré"},
{"H","2 variables, 5° degré"},

{"I","3 variables, 2° degré"},
{"J","3 variables, 3° degré"},
{"K","3 variables, 4° degré"},
{"L","3 variables, 5° degré"},

{"M","4 variables, 2° degré"},
{"N","4 variables, 3° degré"},
{"O","4 variables, 4° degré"},
{"P","4 variables, 5° degré"},
 
{"Q","différentiel, 3 variables, 2° degré"},
{"R","différentiel, 3 variables, 3° degré"},
{"S","différentiel, 3 variables, 4° degré"},
{"T","différentiel, 3 variables, 5° degré"},

{"U","différentiel, 4 variables, 2° degré"},
{"V","différentiel, 4 variables, 3° degré"},
{"W","différentiel, 4 variables, 4° degré"},
{"X","différentiel, 4 variables, 5° degré"},

{"Y","abs, 4 variables"},
{"Z","and et or, 4 variables"},
{"[","puissance non entière, 4 variables"},
{"\\","sinus, 4 variables"},
{"]","symetrique sinus, 4 variables"},
{"^","différentiel, sinus, 4 variables"},

{"#","Field, Rotations sans Symetries","10"},		//omega!=0
{"$","Field, Rotations et Symetries","11"},	// omega = 0
{"%","Field, Rotations, symetries et irregularités","12"},
{"&","Field, ifs fractal rotations","13"},
{"'","Field, ifs fractal rotations et symetries","14"},
{"(","Field, square quilt rotations et symetriesx","15"},
{")","Field, square quilt rotationsy","16"},	
{"*","Field, hexagonal quilt rotations et symetries","17"},
{"+","Field, hexagonal quilt rotations","18"}, 
{",","Quadrup two","19"},
{"-","Ikeda","20"},
{".","Martin","21"},
{"/","Gingerbread man, 2 variables","22"},
{"0","Martin-Hopalong, sqrt, 2 variables","23"},
{"1","Mira, 2 variables","24"},
{"2","Gumwoski-Mira, 2 variables","25"},
{"3","Kaneko, 2 variables","26"},
{"4","Ham","27"},
{"5","Threeply","28"},
{"6","Pickover, sinus, 3 variables","29"},
{"7","Pickover bis, sinus(sinus), 3 variables","30"},
{"8","Peter de Jong, sinus, 2 variables","31"},
{"9","Swinson, sinus, 2 variables","32"},
{":","Clifford, sinus, 2 variables","33"},
{";","Logistic map, 1 variable","34"},
//{"<","logistic map symetrique, 2 variables","35"},
//{"=","Pickover, tesselation","36"},
//{">","Kantor, sinus, 2 variables","37"},
//{"?","unity, 2 variables","38"},
//{" ","Popcorn","39"},
};

static String nomtypeattract[]=new String [] {"Sprott polynomial","Sprott différentiel polynomial","abs","and et or","puissance non entière","sinus","symetrique sinus","différentiel sinus","libre","libre",
	"Field Rotations sans Symetries","Field rotations et symetries","Field Rotations, Field symetries et irregularités","Field ifs rotations",
	"Field ifs rotations et symetries","Field square quilt rotations et symetries","Field square quilt rotations","Field hexagonal quilt rotations et symetrie",
	"Field hexagonal quile rotations","quadrup two","Ikeda","Martin","Gingerbread man",
	"Martin - Hopalong","Mira","Gumwoski-Mira","Kaneko","Ham","Threeply","Pickover","Pickover bis","Peter de Jong","Swinson","Clifford","logistic map"};
//	"logistic map symetrique","pickover tesselation","Kantor","unity","popcorn"};
     
static String attracteurs[][]=new String [][]{
{"search mode","Attracteur trouvé"," ","XXX","x","y"},
{"Classiques","Logistic map",";",";4.","0.86","1.00"},
{"Classiques","odd logistic map","B","BMfM4","x","y"},
//{"Classiques","logistic map symetrique","<","<1.","x","y"},
{"Classiques","Tinkerbell Map","E","EMVWMGCMaMaRM","1.14","0.27"},
{"Classiques","Henon map","E","EWM?MPMMWMMMM","1.20","0.60"},
{"Classiques","Three-Fold Symmetric Icon","F","FMXUEMMIMEMMMMMC=MXMG","0.79","0.32"},
{"Classiques","Four-Fold Symmetric Icon","G","GMBMYOMMAMAMMMMOMMMMMUAMMMEBMYM","1.21","0.35"},
//{"Classiques","Five-Fold Symmetric Icon","H","HMMMMMjQLMMWMMMMMMMjMHMMMQMMMMMMMH=MjMWMM]MMMMMjML","1.13","0.48"},
																							//	HM4MjQLM2WM5M2jMHM3QM7H=MjMWM2]M4MjML
																							//HMMMMMjQLMMWMMMMMMMjMHMMMQMMMMMMMH=MjMWMM]MMMMMjML
{"Classiques","Lorenz Attractor","Q","QMCMMMWMMMMMiMMLLMMMMMMMNMMMMJM","2.21","0.15"},
//{"Classiques","Point Attractor","Q","QMLMMMNMMMMMLMMMLM4","0.00","-0.14"},
																	// QMLM3NM5LM3LM14
{"Classiques","Rössler Attractor","Q","QMMMMMIMMIMMQMMMNMMMMNMMMQMMM0M","1.94","0.08"},
{"Classiques","Point Repellor","Q","QMMMMMNMMMMMLM18","1.00","0.00"}, // QM5NM5LM18
{"Classiques","Van der Pol Equation","R","RMMMMMMMMMMMOMMMMMMMMMKMMKMMMMMMOM","1.04","0.00"},
{"Classiques","Symmetric Limit Cycle","R","RMNMAMMMAMMMNMMMMMMMMMLMMAMMMMMMNMAM","1.04","0.00"},
//{"Classiques","2-Torus","V","VMNMAMMMMAMMMMMMMNM9LMMAM1NMAMMMM2NMAMMAOMM8LMMAMMNMA","1.04","0.00"},
											// VMNMAM4AM7NM19LM2AM11NMAM42NMAM2AOM28LM2AM2NMA
//{"Classiques","2-Torus (rotated)","V","VMNMAMMMMMMMMAM3NMM4NMAMMMMMMAMMMMMMOMMMLMMMAMM0NMAMM2LMMMAM1NMA","1.04","0.00"},
										// VMNMAM8AM13NM24NMAM6AM6OM3LM3AM20NMAM22LM3AM11NMA
{"Classiques","Gingerbread Man","Y","YCMCCMMWMMM","1.42","0.11"},
{"Classiques","Tent Map","Y","YMMWMMVMMM9","1.23","1.00"},
{"Classiques","Lozi Attractor","Y","YWMW<MMRMMM","1.67","0.68"},
{"Classiques","Chirikov (Standard) Map","\\","\\MWMMMMdWqMWWMMMdWq","1.13","0.04"},
{"Classiques","Circle Map","\\","\\NWMyWMMMMNMMyWMMMM","1.16","1.28"},
{"Classiques","Birkhoff's Bagel","^","^BVKBDVHIK","1.90","0.22"},
{"Classiques","Forced Damped Hard Spring","^","^WCLMMKMWJ","1.01","-0.01"},
{"Classiques","Forced Van der Pol Oscillator","^","^WCMCMWMSD","1.68","0.00"},
{"Classiques","Forced Damped Linear Spring","^","^WCMMMKMWJ","0.92","-0.07"},
{"Classiques","Forced Damped Soft Spring","^","^WCNMMJMWJ","1.01","-0.20"},
{"Classiques","Duffing Two-Well Oscillator","^","^WWCMMKMRD","2.84","0.15"},
{"Classiques","Ikeda","-","-0.8","x","y"},
{"Classiques","Ham","4","40.8 0.9 2.","x","y"},
{"Classiques","Threeply","5","5-55. -0.9999 -42.","x","y"},
{"Classiques","Quadrupto",",",",34. 1. 5.","x","y"},
{"Classiques","Martin",".",".3.14","x","y"},
{"Classiques","Gingerbread Man","/","/1.095 1.095","1.42","0.11"},
{"Classiques","Hopalong 1","0","00.4 1. 0.","x","y"},
{"Classiques","Hopalong 2","0","04. 1. 1.","x","y"},
{"Classiques","Hopalong 3","0","01. 1. 4.","x","y"},
{"Classiques","Hopalong 4","0","00.5 -0.6 0.7","x","y"},
{"Classiques","Hopalong 5","0","0-0.5 0.5 0.7","x","y"}, 
{"Classiques","Hopalong 6","0","0-0.25 -0.6 -1.7","x","y"},
{"Classiques","Hopalong 7","0","0-2 0.7824 0.9649","x","y"},
{"Classiques","Hopalong 8","0","0-3.14 0.301 0.3","x","y"},
{"Classiques","Hopalong 9","0","0-200. 0.1 -80.","x","y"},
{"Classiques","Mira 1","1","1-0.105 1","x","y"},
{"Classiques","Mira 2","1","1-0.49 0.93","x","y"},
{"Classiques","Mira 3","1","1-0.417625 0.9999","x","y"},
{"Classiques","Mira 4","1","1-0.19 1.","x","y"},
{"Classiques","Gumwoski-Mira 1","2","2-0.6 1.","x","y"},
{"Classiques","Gumwoski-Mira 2","2","20.165 1.0005","x","y"},
{"Classiques","Gumwoski-Mira 3","2","2-0.48 0.93","x","y"},
{"Classiques","Gumwoski-Mira 4","2","2-0.405 0.9999","x","y"},
{"Classiques","Gumwoski-Mira 5","2","2-0.19 1.","x","y"},
{"Classiques","Kaneko 1","3","30.1 1.67","x","y"},
{"Classiques","Kaneko 2","3","30.5 4.","x","y"},
{"Classiques","Kaneko 3","3","30.17 1.3","x","y"},
{"Classiques","Kaneko 4","3","30.562 2.76","x","y"},
{"Classiques","Pickover 1","6","62.008 1.632 0.36 1.67","x","y"},
{"Classiques","Pickover 2","6","62.24 0.43 -0.65 -2.43","x","y"},
{"Classiques","Pickover bis 1","7","7-2.6 -1.1 2.6 .5","x","y"},
{"Classiques","Pickover bis 2","7","72.74 1.19 1.6 0.99","x","y"},
{"Classiques","Pickover bis 3","7","72.95 7.23 9.17 -0.37","x","y"},
{"Classiques","Peter de Jong 1","8","81.4 -2.3 2.4 -2.1","x","y"},
{"Classiques","Peter de Jong 2","8","82.01 -2.53 1.61 -0.33","x","y"},
{"Classiques","Peter de Jong 3","8","8-2.7 -0.09 -0.86 -2.2","x","y"},
{"Classiques","Peter de Jong 4","8","8-2.24 0.43 -0.65 -2.43","x","y"},
{"Classiques","Peter de Jong 5","8","8-2. -2. -1.2 2.","x","y"},
{"Classiques","Swinson","9","91.4 1.56 1.4 -6.56","x","y"},
{"Classiques","Clifford 1",":",":1.5 -1.8 1.6 0.9","x","y"},
{"Classiques","Clifford 2",":",":-1.4 1.6 1.0 0.7","x","y"},
{"Classiques","Clifford 3",":",":1.1 -1.0 1.0 1.5","x","y"},
{"Classiques","Clifford 4",":",":1.6 -0.6 -1.2 1.6","x","y"},
{"Classiques","Clifford 5",":",":1.7 1.7 0.06 1.2","x","y"},
{"Classiques","Clifford 6",":",":1.3 1.7 0.5 1.4","x","y"},

//{"Classiques","Logistic Map","A","AMu%","0.86","1.00"},
//{"Classiques","Delayed Logistic Map","E","EMMMMWMMMM8bM","0.99","0.00"},
//{"Classiques","Pickover tesselation","=","=0.1 3.","x","y"},
//{"Classiques","Kantor",">",">1.","x","y"},
//{"Classiques","unity","?","?2.","x","y"},
//{"Classiques","Popcorn","-","-0.05 -3.","x","y"},

{"Field","Field, Rotations sans Symetries1","#","#4. -1.8 2. 0. 1. 0.12","x","y"},
{"Field","Field, Rotations sans Symetries2","#","#3. 1.56 -1. 0.1 -0.82 0.12","x","y"},
{"Field","Field, Rotations sans Symetries3","#","#4 -1.86 2. 0. 1. 0.1","x","y"},
{"Field","Field, Rotations sans Symetries4","#","#5 -2.5 5. _1.9 1. 0.188","x","y"},
{"Field","Field, Rotations sans Symetries5","#","#16 2.39 -2.5 -0.1 0.9 -0.15","x","y"},
{"Field","Field, Rotations sans Symetries6","#","#7 -2.528 4.892 -0.665 -0.016 -0.1962","x","y"},
{"Field","Field, Rotations sans Symetries7","#","#11 -2.2589 3.6373 0.4 1.4161 0.5789","x","y"},
{"Field","Field, Rotations sans Symetries8","#","#10 -2.749 5.38 -0.927 1.1268 -0.42 ","x","y"},

{"Field","Field, Rotations et Symetries1","$","$4. -1.8 2. 0. 1.","x","y"},
{"Field","Field, Rotations et Symetries2","$","$7. -2.08 1.0 -0.1 0.167","x","y"},
{"Field","Field, Rotations et Symetries3","$","$6 -2.7 5. 1.5 1.","x","y"},
{"Field","Field, Rotations et Symetries5","$","$5 -1.806 1.806 0. 1.","x","y"},
{"Field","Field, Rotations et Symetries6","$","$3 -2.18 10. -12. 1.","x","y"},	// pb
{"Field","Field, Rotations et Symetries7","$","$3 -2.195 10. -12. 1.","x","y"},
{"Field","Field, Rotations et Symetries8","$","$5 -2.34 2. 0.2 0.1","x","y"},
{"Field","Field, Rotations et Symetries9","$","$5 2.6 -2. 0. -0.5","x","y"},
{"Field","Field, Rotations et Symetries10","$","$23 2.409 -2.5 0. 0.9","x","y"},
{"Field","Field, Rotations et Symetries11","$","$24 2.409 -2.5 -0.2 0.81","x","y"},
{"Field","Field, Rotations et Symetries12","$","$9 -2.05 3. -16.79 1.","x","y"},
{"Field","Field, Rotations et Symetries13","$","$5 -2.32 2.32 0. 0.75","x","y"},
{"Field","Field, Rotations et Symetries14","$","$3 2.5 -2.5 0. 0.9","x","y"},
{"Field","Field, Rotations et Symetries15","$","$3 1.455 -1. 0.03 -0.8","x","y"},
{"Field","Field, Rotations et Symetries16","$","$16 2.39 -2.5 -0.1 0.9","x","y"},
{"Field","Field, Rotations et Symetries17","$","$2 1.5 -1. 0.1 -0.8","x","y"},	// pb
{"Field","Field, Rotations et Symetries18","$","$3 1.5 -1. 0.1 -0.805","x","y"},
{"Field","Field, Rotations et Symetries19","$","$7 -2.3188 2.613 -0.8745 0.81","x","y"},
{"Field","Field, Rotations et Symetries20","$","$3 -1.8188 4.4862 -0.3335 -0.93998","x","y"},
{"Field","Field, Rotations et Symetries21","$","$11 2.3569 -2.5277 -1.6386 0.533","x","y"},

//{"Field","Field, Rotations, symetries et irregularités2","%","%3. 1.5 -1. -0.2 -0.75 0.04 24.","x","y"},  // pb
{"Field","Field, Rotations, symetries et irregularités3","%","%9. -2.5 8. -0.7 1. -0.9 0.","x","y"},
{"Field","Field, Rotations, symetries et irregularités4","%","%5. -2.38 10. -12.3 0.75 0.02 1.","x","y"},
{"Field","Field, Rotations, symetries et irregularités5","%","%3. 1.0 -2.1 0. 1. 1. 1.","x","y"},
{"Field","Field, Rotations, symetries et irregularités6","%","%57 -2.225 1.5 -0.014 0.002 -0.02 0.","x","y"},
{"Field","Field, Rotations, symetries et irregularités7","%","%6 -2.42 1.0 -0.04 0.14 0.088 0.","x","y"},
{"Field","Field, Rotations, symetries et irregularités8","%","%3 1.455 -1.0 0.03 -0.8 -0.025 0.","x","y"},
{"Field","Field, Rotations, symetries et irregularités9","%","%6 -2.644 6.467 -1.8 -0.95 -0.5554 8.846","x","y"},
{"Field","Field, Rotations, symetries et irregularités10","%","%5 -1.822 4.2 -1.9515 0.8929 0.6705 8.9059","x","y"},
{"Field","Field, Rotations, symetries et irregularités11","%","%3 -1.646 4.075 0.2879 1.8662 -0.577 6.5888","x","y"},

{"Field","Field, rotations ifs l","&","&3 0.5 0. 0. 0.5 0.5 0.","x","y"},
{"Field","Field, rotations ifs 2","&","&5 0.5 0. 0. 0.5 0.5 0.","x","y"},
{"Field","Field, rotations ifs 3","&","&6 0.5 0. 0. 0.5 0.5 0.","x","y"},
{"Field","Field, rotations ifs 4","&","&3 0.45 0. 0. 0.45 0.55 0.","x","y"},
{"Field","Field, rotations ifs 5","&","&3 0.55 0. 0. 0.55 0.45 0.","x","y"},
{"Field","Field, rotations ifs 6","&","&11  0.45 -0.1 -0.31 0.45 0.1 0.2","x","y"},
{"Field","Field, rotations ifs 7","&","&9 0.4 -0.1 -0.35 0.4 0.01 0.2","x","y"},
{"Field","Field, rotations ifs 8","&","&4 0.46 0. 0. 0.46 0.46 0.54 0.","x","y"},
{"Field","Field, rotations ifs 9","&","&12 -0.25 -0.3 0.14 -0.26 0.5 0.5","x","y"},
{"Field","Field, rotations ifs 10","&","&8 0.45 -0.1 0.3 -0.4 0.15 0.1","x","y"},
{"Field","Field, rotations ifs 11","&","&5 0.4 -0.1 -0.31 0.45 0.01 0.0","x","y"},
{"Field","Field, rotations ifs 12","&","&50 -0.15 0.75 0.2 -0.3 0.075 0.4","x","y"},
{"Field","Field, rotations ifs 13","&","&6 -0.3898 0.05 0.1736 0.2996 0.3978 -1.07188","x","y"},
{"Field","Field, rotations ifs 14","&","&9.7234 -0.047 0.1097 -0.96 -0.2639 -0.488 -1.16339","x","y"},


{"Field","Field, rotations et symetries ifs 1","'","'3 -0.1 0.35 0.2 0.5 0.5 0.4","x","y"},
{"Field","Field, rotations et symetries ifs 2","'","'4 -0.25 -0.3 0.3 -0.34 0.5 0.5","x","y"},
{"Field","Field, rotations et symetries ifs 3","'","'8 -0.25 -0.3 0.3 -0.26 0.5 0.5","x","y"},
{"Field","Field, rotations et symetries ifs 4","'","'7 0.09 -0.5926 -0.1778 0.543 1.2722 -0.4482","x","y"},
{"Field","Field, rotations et symetries ifs 5","'","'8 -0.2176 -0.3879 0.3183 0;2077 1.2874 0.8627","x","y"},

{"Field","Field, square quilt rotations et symetries 1","(","(-0.59 0.2 0.1 -0.33 0 2","x","y"},
//{"Field","Field, square quilt rotations et symetries x","(","(-0.59 0.2 0.1 -0.27 1 0","x","y"}, // pb
{"Field","Field, square quilt rotations et symetries 2","(","(-0.59 0.2 0.1 -0.27 1 -1","x","y"},
{"Field","Field, square quilt rotations et symetries 2","(","(-0.59 0.2 0.1 -0.27 1 1","x","y"},
{"Field","Field, square quilt rotations et symetries 3","(","(-0.2 -0.1 0.1 -0.25 0 0","x","y"},
{"Field","Field, square quilt rotations et symetries 4","(","(0.25 -0.3 0.2 0.3 0 1","x","y"},
{"Field","Field, square quilt rotations et symetries 5","(","(-0.28 0.25 0.05 -0.24 0 -1","x","y"},
{"Field","Field, square quilt rotations et symetries 6","(","(-0.12 -0.36 0.18 -0.14 1 1","x","y"}, //pb
{"Field","Field, square quilt rotations et symetries 7","(","(0.1 0.2 0.1 0.39 0 -1","x","y"},
{"Field","Field, square quilt rotations et symetries 8","(","(-0.589 0.2 0.04 -0.2 1 0","x","y"},
{"Field","Field, square quilt rotations et symetries 9","(","(-0.28 0.08 0.45 -0.05 1 0","x","y"},
{"Field","Field, square quilt rotations et symetries 10","(","(-0.59 0.2 0.2 0.3 0 2","x","y"},
{"Field","Field, square quilt rotations et symetries 11","(","(-0.28 0.25 0.05 -0.24 1 -1","x","y"},
{"Field","Field, square quilt rotations",")",")-0.11 -0.26 0.19 -0.059 0.07 1. 2.","x","y"},
{"Field","Field, hexagonal quilt rotations et symetries 1","*","*0.1 -0.076 -0.6 0.1 0","x","y"},
{"Field","Field, hexagonal quilt rotations et symetries 2","*","*0.2 0.04 0.1 0.1 1","x","y"},
{"Field","Field, hexagonal quilt rotations et symetries 3","*","*-0.105 -0.15 0.06 -0.03 0","x","y"},
//{"Field","Field, hexagonal quilt rotations et symetries 4","*","*0.02 -0.01 0.14 0.052 0","x","y"},
//{"Field","Field, hexagonal quilt rotations et symetries 5","*","*0.02 -0.1 0.14 0.052 1","x","y"},
{"Field","Field, hexagonal quilt rotations 1","+","+0.02 -0.1 0.14 0.052 0.04 0","x","y"},
{"Field","Field, hexagonal quilt rotations 2","+","+0.1 -0.076 -0.06 0.1 0.101 0","x","y"},
{"Sprott","1","A","ABDU","0.87","0.44"},
{"Sprott","2","A","ACAV","0.80","0.70"},
{"Sprott","3","A","AXBH","0.46","0.06"},
{"Sprott","4","A","AXDA","0.86","0.89"},
{"Sprott","1","B","BZEZK","0.87","0.87"},
{"Sprott","1","C","CBLCTX","0.83","0.70"},
{"Sprott","2","C","CUTXJE","0.70","0.74"},
{"Sprott","3","D","DBOGIZI","0.77","0.90"},
{"Sprott","3","D","DFBIEVV","0.87","0.78"},
{"Sprott","3","D","DOOYRIL","0.93","0.72"},
{"Sprott","60","E","EAGHNFODVNJCP","1.36","0.27"},
{"Sprott","61","E","EBCQAFMFVPXKQ","1.31","0.13"},
{"Sprott","62","E","ECMMMEWHXRMMM","1.04","0.09"},
{"Sprott","63","E","ECSRKVVQLGFFS","1.79","0.22"},
{"Sprott","64","E","ECVQKGHQTPHTE","1.78","0.14"},
{"Sprott","65","E","EDSYUECINGQNV","1.42","0.03"},
{"Sprott","66","E","EELXAPXMPQOBT","1.55","0.27"},
{"Sprott","67","E","EEYYMKTUMXUVC","1.54","0.08"},
{"Sprott","68","E","EJTTSMBOGLLQF","1.37","0.23"},
{"Sprott","69","E","EKPNERVOTBYCM","1.49","0.26"},
{"Sprott","70","E","ENNMJRCTVVTYG","1.07","0.01"},
{"Sprott","71","E","EOUGFJKDHSAJU","1.38","0.24"},
{"Sprott","72","E","EQKOCSIDVTPGY","1.60","0.34"},
{"Sprott","73","E","EQLOIARXYGHAJ","1.47","0.06"},
{"Sprott","74","E","ERMMMQEASYMMM","1.02","0.23"},
{"Sprott","75","E","ETJUBWEDNRORR","1.42","0.16"},
{"Sprott","76","E","ETSILUNDQSIFA","1.45","0.17"},
{"Sprott","77","E","EUEBJLCDISIIQ","1.25","0.24"},
{"Sprott","78","E","EUWACXDQIGKHF","1.72","0.15"},
{"Sprott","79","E","EVDUOTLRBKTJD","1.54","0.04"},
{"Sprott","80","E","EWLKWPSMOGIGS","1.30","0.02"},
{"Sprott","82","E","EZPMSGCNFRENG","1.67","0.29"},
{"Sprott","1","E","EAEUBNVIAHERQ","1.36","0.16"},
{"Sprott","2","E","EAHSVIGTJKOTB","1.22","0.12"},
{"Sprott","3","E","EAMTMNQQXUYGA","1.27","0.10"},
{"Sprott","4","E","EBDNOAXZJNRSG","1.41","0.20"},
{"Sprott","5","E","ECDJXIYLSYQUM","1.43","0.11"},
{"Sprott","6","E","EDSZHYZHEKUNJ","1.45","0.13"},
{"Sprott","7","E","EENWUQSLHYSAT","1.46","0.15"},
{"Sprott","8","E","EEURCEQVLRNSF","1.04","0.09"},
{"Sprott","9","E","EFFRXAXMGLFNI","1.31","0.19"},
{"Sprott","10","E","EFHUPPBRKIWHO","1.43","0.05"},
{"Sprott","11","E","EFIRCDERRPVLD","1.37","0.05"},
{"Sprott","12","E","EFMMMYWCFUMMM","1.59","0.18"},
{"Sprott","13","E","EFOKRIROFDMPQ","1.01","0.09"},
{"Sprott","14","E","EGLXOESFTTPSV","1.77","0.12"},
{"Sprott","15","E","EGOSXRBRCBSPM","1.26","0.19"},
{"Sprott","16","E","EHGUHDPHNSGOH","1.46","0.03"},
{"Sprott","17","E","EHNHBMWMSVEPL","1.18","0.10"},
{"Sprott","18","E","EIFLJUWMAICIB","1.17","0.02"},
{"Sprott","19","E","EIFVQJFOOLVDV","1.58","0.11"},
{"Sprott","20","E","EIJYRRWOBTMEN","1.44","0.09"},
{"Sprott","21","E","EIXOFHUZSBQHK","1.35","0.10"},
{"Sprott","22","E","EJOYHUWIVDACF","1.31","0.12"},
{"Sprott","23","E","EJXAICXIXFRHI","1.37","0.12"},
{"Sprott","24","E","EKCBIUIPLETRR","1.20","0.03"},
{"Sprott","25","E","EKJXKXKKDYTLK","1.36","0.07"},
{"Sprott","26","E","EKMMMYSUKEMMM","1.50","0.12"},
{"Sprott","27","E","ELIRZLTCPNHOX","1.44","0.11"},
{"Sprott","28","E","ELRWEFKFHUBHS","1.33","0.06"},
{"Sprott","29","E","ELUFBBFISGJYS","1.59","0.18"},
{"Sprott","30","E","EMCRBIPOPHTBN","1.39","0.05"},
{"Sprott","31","E","EMFPGVXTIIDKB","1.48","0.35"},
{"Sprott","32","E","EMJDSFTVHGEEV","1.31","0.02"},
{"Sprott","33","E","EMLDRMQYIQWQD","1.34","0.21"},
{"Sprott","34","E","EMQPUKNVAGCBE","1.64","0.43"},
{"Sprott","35","E","EMTGETXEJWCUR","1.44","0.07"},
{"Sprott","36","E","EMTQIBOXSCMRC","1.24","0.16"},
{"Sprott","37","E","ENDVDPLVKBXEF","1.15","0.15"},
{"Sprott","38","E","EODGQCNXODNYA","1.31","0.07"},
{"Sprott","39","E","EODSTPMSDFIAO","1.46","0.08"},
{"Sprott","40","E","EOOHVSVPDBGXW","1.26","0.01"},
{"Sprott","41","E","EPKBNVOONOTTC","1.36","0.30"},
{"Sprott","42","E","EQEGJUASEDNUJ","1.41","0.25"},
{"Sprott","43","E","EQFFVSLMJJGCR","1.37","0.11"},
{"Sprott","44","E","EQHVHQHYTEYQA","1.60","0.22"},
{"Sprott","45","E","EQVEUTIPLADHO","1.26","0.09"},
{"Sprott","46","E","ERLKHGBBDLIKJ","1.48","0.20"},
{"Sprott","47","E","ESOKMLEVUMKDW","1.26","0.07"},
{"Sprott","48","E","ETAPDHJKMTUBD","1.33","0.03"},
{"Sprott","49","E","EUATWVBSHJIWR","1.35","0.11"},
{"Sprott","50","E","EVAVMXOETHDMQ","1.23","0.11"},
{"Sprott","51","E","EVBUQHNYPGJDF","1.34","0.37"},
{"Sprott","52","E","EVBWNBDELYHUL","1.47","0.13"},
{"Sprott","53","E","EWNCSLFLGIHGL","1.24","0.05"},
{"Sprott","54","E","EWQKCSBRBQDJX","1.28","0.17"},
{"Sprott","55","E","EWQLIJJHEXMPP","1.05","0.05"},
{"Sprott","56","E","EWRAHGMIKMCHF","1.07","0.07"},
{"Sprott","57","E","EWXHJEGNRHQFP","1.26","0.26"},
{"Sprott","58","E","EXXFGRHFTPDWD","1.32","0.22"},
{"Sprott","59","E","EZMCQGIXPJMJB","1.21","0.28"},
{"Sprott","31","F","FIRPGVTFIDGCSXMFPKIDJ","1.55","0.26"},
{"Sprott","32","F","FISMHQCHPDFKFBKEALIFD","1.45","0.13"},
{"Sprott","33","F","FJYCBMNFNYOEPYUGHHESU","1.23","0.16"},
{"Sprott","34","F","FKAWYMKAEUVRNBGXWUFKH","1.50","0.20"},
{"Sprott","35","F","FLGROKJFELDGKXSUEEWYE","1.25","0.15"},
{"Sprott","36","F","FLQOBBRSWKDRNYRQIRKDG","1.53","0.18"},
{"Sprott","37","F","FLUCBPVBOXRJKOFMUFDCN","1.56","0.20"},
{"Sprott","38","F","FMEGVTLMEQRFCSSTQOYRH","1.38","0.42"},
{"Sprott","39","F","FMGGNDPHWONKFQUIIHBVP","1.29","0.06"},
{"Sprott","40","F","FNHZBEETDORVLAOTUPENH","1.28","0.04"},
{"Sprott","41","F","FNMMMMMMMFUFYXMMMMMMM","1.38","0.18"},
{"Sprott","42","F","FNUYLCURDUHQUQMRZQWQB","1.35","0.15"},
{"Sprott","43","F","FOVFKWKEIBPGNYPVKWCYU","1.57","0.13"},
{"Sprott","1","F","FBOJESOSHMVVWMHJMQIIQ","1.40","0.09"},
{"Sprott","2","F","FEROJRKQNOWMUXJOIYLIM","1.21","0.07"},
{"Sprott","3","F","FFEWXYQONQQJNVELRTBPS","1.43","0.21"},
{"Sprott","4","F","FHGVGMHYSSJSHFWIBTSUA","1.16","0.06"},
{"Sprott","5","F","FHHOLCTHYWJITRPCYLEHO","1.08","0.16"},
{"Sprott","6","F","FHWHHMFMKFBEKIKSXLMYS","1.25","0.02"},
{"Sprott","7","F","FIWOJAIIXSPLVYKSUHUEW","1.21","0.12"},
{"Sprott","8","F","FJMANGGKMZMNRBNKCJGCK","1.34","0.07"},
{"Sprott","9","F","FKDPVHZGDBDFPTCQHFLXL","1.06","0.03"},
{"Sprott","10","F","FKMIABSKYNEQUXZZHSMPC","1.53","0.16"},
{"Sprott","11","F","FLAJYVHGVIHGBPQWXYSRJ","1.19","0.29"},
{"Sprott","12","F","FLUUCTCPDSRYFJWBQOCYJ","1.21","0.03"},
{"Sprott","13","F","FLWAQNQVNQOOHIQQMBWSC","1.25","0.05"},
{"Sprott","14","F","FLWIAFTKMWQJDIUCXKEKU","1.23","0.14"},
{"Sprott","15","F","FMDEEAVWKUXTHEYOHOICN","1.19","0.03"},
{"Sprott","16","F","FMKWIQQVZNEBRWNCJTLON","1.20","0.01"},
{"Sprott","17","F","FNFIVJTOSUSTJWCJAYCLM","1.49","0.08"},
{"Sprott","18","F","FNHWLFXVXQGPFILBICUJB","1.14","0.04"},
{"Sprott","19","F","FNOYESLFRWEWERNDUKOCI","1.19","0.19"},
{"Sprott","20","F","FODKJNNRHWCSUAJTUGHBP","1.29","0.17"},
{"Sprott","21","F","FOGUKSYQYMBLEUWIHRKTQ","1.34","0.14"},
{"Sprott","22","F","FOMMMMMMMKCXIDMMMMMMM","1.16","0.09"},
{"Sprott","23","F","FQFEOIKPUKEIBJOTDQAMY","1.35","0.02"},
{"Sprott","24","F","FRDLDHYKHKPWENJTOWOXD","1.63","0.31"},
{"Sprott","25","F","FRHBYPULLAQSYMQYGREQP","1.27","0.13"},
{"Sprott","26","F","FRMMMMMMMSYPVKMMMMMMM","1.22","0.19"},
{"Sprott","27","F","FSCEYJHFADPMQDMCUWKVW","1.12","0.19"},
{"Sprott","28","F","FVFOTKULQICUAFLQHUKPX","1.05","0.18"},
{"Sprott","29","F","FXHDPILBCVMHPOJFVXIWK","1.10","0.17"},
{"Sprott","30","F","FYAFYNGBDDHNVBPSPAIDF","1.39","0.14"},
{"Sprott","23","G","GEMMMMMMMMMMMMAJSDJMMMMMMMMMMMM","1.08","0.11"},
{"Sprott","24","G","GFUXRRRUIRDYKDUBPHHOMOBRIRBINCS","1.34","0.03"},
{"Sprott","25","G","GGNXVYVASWMMNFFQOFJTMRBNRFWREJH","1.47","0.13"},
{"Sprott","26","G","GJCQPYDVBNJUMEBGJROUIHUXIDNDYIH","1.54","0.12"},
{"Sprott","27","G","GLQGRLUFUCASAWSVRVEGGFFNPYHOKRM","1.14","0.07"},
{"Sprott","28","G","GLURFSRHWMSKHTQBKXJDXQSMFJBWUFG","1.46","0.10"},
{"Sprott","29","G","GNWCAVJOVLINUWMKNHCHMQOJADIWHIY","1.23","0.11"},
{"Sprott","30","G","GPFMQPPBPARCUOLSTATEXQDKEXMLOIF","1.25","0.01"},
{"Sprott","31","G","GQDIDSBTPNDBSGOKOKGAKMCCONXFHWQ","1.21","0.15"},
{"Sprott","32","G","GRMJQBCSOAFMBRRSSUHCNBWVSRICXAA","1.43","0.08"},
{"Sprott","33","G","GTNSTDPQKSQNFJAHNCYFLDWFKSPDECV","1.15","0.03"},
{"Sprott","34","G","GTPMJKFSCWUMSHBVPCBUTBRRVXHSXIT","1.25","0.08"},
{"Sprott","35","G","GUETJGIINOTHGFYLJOUVEEMXTEGDHLM","1.44","0.06"},
{"Sprott","1","G","GGTLDSNGVTBTEINQKQDPQEGNVFMOKES","1.44","0.05"},
{"Sprott","2","G","GIGXPNBBVEMODKOCLXERMUNVVPWECYS","1.38","0.07"},
{"Sprott","3","G","GISPJWDOAOFTCUBLOMEWXFCXDJQDRDU","1.30","0.17"},
{"Sprott","4","G","GJNQRXOIMQLYVLQUNWKDCMXQAOYNZOT","1.52","0.15"},
{"Sprott","5","G","GKDSEBTOQIOKPQYHKJUGSWYHMKICRYS","1.30","0.09"},
{"Sprott","6","G","GKJWTVIJQTOGJDROEPYKTNWTGABNVBN","1.13","0.18"},
{"Sprott","7","G","GKPQYRIDMPDGDKTTRRQPHOCFAOWRABQ","1.23","0.06"},
{"Sprott","8","G","GMEHSXHFEMMYNXCJPRTKWADSAPIBBWR","1.44","0.19"},
{"Sprott","9","G","GMTBIQYTGHEOJFMLDRXEIFJHLUPBBUY","1.56","0.24"},
{"Sprott","10","G","GMVMMPSBXJMZCOFROXCKAFGVDQOKGIK","1.06","0.01"},
{"Sprott","11","G","GNCDXEXXMVEOQBKWKEIMXJMLTDEDVSR","1.23","0.11"},
{"Sprott","12","G","GNVIKAVSGBOYGFMTIXSOQNOTCVDOZCR","1.36","0.04"},
{"Sprott","13","G","GOSLDJIOXHGVDTGGNCNOQYNWJBFHYLX","1.35","0.15"},
{"Sprott","14","G","GQHRLGBFRLNFSNXGUKGWEJKFMQTGRDC","1.41","0.07"},
{"Sprott","15","G","GQIWKNIRBQKIYSLXLCCKGEUQVUELLLJ","1.14","0.03"},
{"Sprott","16","G","GQXEHVCCLDWBHSHHMUUABJRSPJLTTFC","1.51","0.16"},
{"Sprott","17","G","GRLKHETMSIVYWMBBQODMFNGRISGHBSI","1.41","0.10"},
{"Sprott","18","G","GSELTBLWMEENVFBSFAXMVDXKKEDGYXL","1.40","0.04"},
{"Sprott","19","G","GTUFSHTHCLKCTBYWNMCISKERQISFVAV","1.32","0.20"},
{"Sprott","20","G","GUMMMMMMMMMMMMWEODFMMMMMMMMMMMM","1.02","0.08"},
{"Sprott","21","G","GUOBMPCJRXSHHSCPMQFZVNESALEKOHY","1.49","0.24"},
{"Sprott","22","G","GXEMONYFKDJMDTPNSLGHQLHOOTOQBUN","1.20","0.18"},
{"Sprott","19","H","HDCEEYSMMMMMMMMMMWMMMMNCMMMMMMMMMMMMMMMMMMM","1.10","0.04"},
{"Sprott","20","H","HEAUYOIIEODIBEQXWIQWQKKKLWJLBXGQUUULVFJVKWG","1.54","0.11"},
{"Sprott","21","H","HFJFWKASKFNFGNFMSAUSHJNGBJCDYVGFHPWLWHSZGTQ","1.48","0.17"},
{"Sprott","22","H","HFOWFIPMMMMMMMMMMWMMMMRCMMMMMMMMMMMMMMMMMMM","1.08","0.02"},
{"Sprott","23","H","HGEQGOYIKQQPEUJBKPXTVUSJHOVJDUAYYPRNTXFLGAM","1.36","0.06"},
{"Sprott","24","H","HHJJYPHMMMMMMMMMMWMMMMUCMMMMMMMMMMMMMMMMMMM","1.49","0.09"},
{"Sprott","25","H","HHVOIEGIDJCSFUFJCQGRUGMCLHEPWKRCCYFIRQPYAPH","1.49","0.04"},
{"Sprott","26","H","HIOMYNHMMMMMMMMMMCMMMMFWMMMMMMMMMMMMMMMMMMM","1.02","0.02"},
{"Sprott","27","H","HKMMMMMMMMMMMMMMMMMMLEXJLMMMMMMMMMMMMMMMMMM","0.94","0.11"},
{"Sprott","28","H","HLTQSSRKWCLUGBNYOSUKEIIHLUDRJRKFJGTCNXKYOMC","1.30","0.08"},
{"Sprott","29","H","HMSMTNCONSQJOTKOPAOMQYNDPUQWVQJUEGNWAYGDLIT","1.60","0.13"},
{"Sprott","30","H","HOKEFWLHUMOIXLAEEGWTVRMBTSJOSCJIBARBYXSXLDJ","1.35","0.17"},
{"Sprott","31","H","HOMMMMMMMMMMMMMMMMMMYGSPPMMMMMMMMMMMMMMMMMM","1.79","0.14"},
{"Sprott","32","H","HQBKSKIXQMKEOVVMAHXLBOQQJXEYMBUMBOEFVDBAPWU","1.37","0.45"},
{"Sprott","33","H","HQDHFCNDPFVXOIXKPUMIQJJFOKCYELPTJPBSPOFGAPL","1.60","0.05"},
{"Sprott","34","H","HROXTCGMMMMMMMMMMWMMMMCCMMMMMMMMMMMMMMMMMMM","1.15","0.03"},
{"Sprott","35","H","HSARYDPNQIYYBGSXBFOFLRRPSWDEQGOSMSCONFEBVRP","1.43","0.01"},
{"Sprott","36","H","HVEMBUMMMMMMMMMMMCMMMMNWMMMMMMMMMMMMMMMMMMM","1.22","0.03"},
{"Sprott","37","H","HVFMTTCMMMMMMMMMMCMMMMQWMMMMMMMMMMMMMMMMMMM","1.35","0.02"},
{"Sprott","38","H","HVHDXLMSMKIBUMCNKOCPSPJMTFNPEDJQLNFOBTTHMPT","1.32","0.08"},
{"Sprott","39","H","HVNSGEQMMMMMMMMMMWMMMMECMMMMMMMMMMMMMMMMMMM","1.16","0.03"},
{"Sprott","40","H","HVNTBSGWPIJIQFTJZIGRJTDXWLMDPWSVUNEFVSBMYFE","1.52","0.35"},
{"Sprott","1","H","HCJBKUPMMMMMMMMMMWMMMMICMMMMMMMMMMMMMMMMMMM","1.39","0.07"},
{"Sprott","2","H","HHANQRENHONYATQYPTNXKNMNQEGDWKYPNSMMMODAOBC","1.13","0.01"},
{"Sprott","3","H","HIFZLMPJUBERQBKLRRDOWMOLICDPVRJOTHOBSFUKGVL","1.39","0.24"},
{"Sprott","4","H","HJVVHSHPOLDTXUCNMYRAYOFBMAAJFMLNAHJQOBBNXQX","1.48","0.06"},
{"Sprott","5","H","HKTSDLOMMMMMMMMMMWMMMMDCMMMMMMMMMMMMMMMMMMM","1.41","0.06"},
{"Sprott","6","H","HLONENJVYCXAJUMHKRSEUAOANAQGULOQBHKNWQOVOJN","1.22","0.13"},
{"Sprott","7","H","HMOAQRKMMMMMMMMMMWMMMMYCMMMMMMMMMMMMMMMMMMM","1.35","0.10"},
{"Sprott","8","H","HNBCTKKSQMGKBDNBXSLIFLJWOONPAPCGTYTUXWRVMQU","1.07","0.15"},
{"Sprott","9","H","HNJCYVPMFLGQMPHCQEOMHMMEIHIJJJDDCRVYEGUXBSF","1.36","0.14"},
{"Sprott","10","H","HOLTJASMMMMMMMMMMWMMMMWCMMMMMMMMMMMMMMMMMMM","1.16","0.03"},
{"Sprott","11","H","HPYIESIXFDBTDVPNOUFHZZPNFOCNTRINYYVMVLHHZLE","1.33","0.25"},
{"Sprott","11","H","HQJDYFYUMIRBQRDGPLHOBEHGBHDNKVCRSSYVJIFIVLF","1.25","0.18"},
{"Sprott","12","H","HQMXVDGMMMMMMMMMMWMMMMBCMMMMMMMMMMMMMMMMMMM","1.39","0.06"},
{"Sprott","13","H","HROIARTMMMMMMMMMMWMMMMFCMMMMMMMMMMMMMMMMMMM","1.15","0.03"},
{"Sprott","14","H","HRPMBJSMMMMMMMMMMWMMMMKCMMMMMMMMMMMMMMMMMMM","1.41","0.05"},
{"Sprott","15","H","HRUTHBNTTDGJJJDTVZBMVMIFSIDNDFEGWLJINVMMVXM","1.21","0.16"},
{"Sprott","16","H","HSAXIXDPKULROIQBVOECGZQNWTAEYJAKDETXIOCHJQV","1.24","0.04"},
{"Sprott","17","H","HUCXVGLMMMMMMMMMMWMMMMGCMMMMMMMMMMMMMMMMMMM","1.40","0.07"},
{"Sprott","18","H","HWBVVHLMMMMMMMMMMCMMMMSWMMMMMMMMMMMMMMMMMMM","1.05","0.02"},
{"Sprott","","I","IFHTXHLVDKYSIPTUFJCFCLJGVQVHLYF","1.59","0.04"},
{"Sprott","","I","IFJLRNTKMSNJOXRDYPVEOOVTPLMGEAC","1.52","0.12"},
{"Sprott","","I","IGMNIKFCCNCPQFCJRQFUALCCLJPYVYD","1.64","0.04"},
{"Sprott","","I","IGNXQDPRVJPMBASUKJCRDRWVTDRQTTD","1.41","0.12"},
{"Sprott","","I","IGVQYNBNOMJCSSJIBFIDXWGGCWUOACV","1.29","0.02"},
{"Sprott","","I","IHHFGLDKRNJIYWJPMWNUOKJMLAAHQQD","1.27","0.03"},
{"Sprott","","I","IHJJDTICQIJETXFYNUSJKJSXGADBDKR","1.48","0.17"},
{"Sprott","","I","IHJNHTBGIFNDQMDOYWRYYTFSSRXQBEK","1.50","0.03"},
{"Sprott","","I","IHORHNHPPRVIVNNJUYHHMMJEWMMSUEU","2.02","0.12"},
{"Sprott","","I","IHSTPPHHFYAJJFBRNMYMYNCEYXLFLRR","1.33","0.04"},
{"Sprott","","I","IIPPSGTMPCELDIPWPUPJCNQNFOBCYCK","1.57","0.02"},
{"Sprott","","I","IJEKESGYYFWLOGVKLMEWJMBKHSOIVTI","1.55","0.08"},
{"Sprott","","I","IJIFTNNCYIGTVRLCMNJLKUQDGJIQSJC","1.33","0.03"},
{"Sprott","","I","IJKRADSXGDBHIJTQJJDICEJKYSTXFNU","1.52","0.17"},
{"Sprott","","I","IJMUYUNOXHMLLOJREMMWFJRWTHSVXOL","2.16","0.04"},
{"Sprott","","I","IJMYRKHSAUVRKPFVIJDMANDCIGJTIOB","1.98","0.04"},
{"Sprott","","I","IJNMYBMYRJFNLFLYRRXCEHHHFPYAPST","1.33","0.04"},
{"Sprott","","I","IJVSURQUIINRDBRJAWRAKMLAHHUAOON","1.27","0.03"},
{"Sprott","","I","IKNXVQUEXYETWOOSGNSBDMHTMCPFLNG","1.49","0.04"},
{"Sprott","","I","IKRTYCFPFLTLSMOKRPEKMGPQHMUQYGY","2.19","0.23"},
{"Sprott","","I","ILITWKWUUUQIVQTIUWOLCNGELBMKGXC","1.48","0.08"},
{"Sprott","","I","ILNQAAYRNMTGVRVNPUNNKQFRBBTTYEW","1.33","0.06"},
{"Sprott","","I","ILRRHAEYWNTPWFLHTCSLYLFAKQITQTW","1.46","0.07"},
{"Sprott","","I","ILSQGYJJPISRVKJNPEXGIOSFDRQYGLO","1.51","0.03"},
{"Sprott","","I","ILURCEGOHOIQFJKBSNYGSNRUKKIKIHW","1.54","0.12"},
{"Sprott","","I","ILXRNRBKDJISQKAHRGWUTJONSIKVUBC","1.22","0.05"},
{"Sprott","","I","IMDBUAMMCSMTVFMONEEUDNEISFXDLCJ","2.00","0.08"},
{"Sprott","","I","IMROJCCRWSIMRPTLLENELIVYDEFWQHR","2.35","0.08"},
{"Sprott","","I","IMTISVBKHOIJFWSYEKEGYLWJKEOGVLM","1.56","0.08"},
{"Sprott","","I","IMYTXUJFERAEQWGBOYONOKBMHUVVXSX","1.38","0.03"},
{"Sprott","","I","INBSGKIRPRTKOEHRHUUGUHUQJNUSMOF","1.71","0.01"},
{"Sprott","","I","INDIJZIDVPJTZFFKYFLLJRPWFSHRKKU","1.82","0.11"},
{"Sprott","","I","INDVLLVRFLHPLLFCREMPLGLWNAFRPST","1.88","0.08"},
{"Sprott","","I","INRRXLCEYLFHYAPFSTPHHJMYRYJFBNM","1.32","0.04"},
{"Sprott","","I","INSIUROMOJQIEEHYJKLRKQWULFDDGVB","1.31","0.00"},
{"Sprott","","I","INWJRPOXYLDYOHNEBHCQQAVNFQWJTDP","1.57","0.03"},
{"Sprott","33","I","IOHGWFIHJPSGWTOJBXWJKPBLKFRUKKQ","1.57","0.05"},
{"Sprott","34","I","IOLORGSFDQYLISYPSQGJJRGINXVKJPE","1.53","0.03"},
{"Sprott","35","I","IOQRYLZUZAQKSKBLLHVHOLNWOMRLXMI","1.80","0.04"},
{"Sprott","36","I","IPGPJYPMITFPTBEEDRWRTUGSXCJFTWE","1.43","0.14"},
{"Sprott","37","I","IPGSYUPEGHHMIBWRLAEBQMBEGEDVGMY","2.18","0.06"},
{"Sprott","38","I","IPOBLRCRTKMWNCSJKQQABSKGDYFJGSB","1.77","0.02"},
{"Sprott","39","I","IPWRRDUTWIKBCTXUMTHLELPHJPADMQC","1.70","0.05"},
{"Sprott","40","I","IQAIENYAFHNIKRLSNRKPMICIXEOQYXR","1.30","0.02"},
{"Sprott","41","I","IQCBIKKBNREKJEWFTMAJYFGIEBHLFEH","1.80","0.25"},
{"Sprott","42","I","IQWGBEJQVSSKYETDTOSVLKHICIWJRTS","1.35","0.03"},
{"Sprott","43","I","IRMZGEBCJFBQPUHBAZLQILSTOIKPYUR","1.48","0.09"},
{"Sprott","44","I","IRQEDYQNTRPNDHNWNOFJOOLNTEEBPSA","2.08","0.10"},
{"Sprott","45","I","ISKKGLKSUNOQLCDKUOBPINHIDBKPOKR","1.90","0.05"},
{"Sprott","46","I","ISNQBNOJFJWMPQDTTFNMNNOISRYCDUN","1.50","0.06"},
{"Sprott","47","I","ISYINLLUFGELINMXFWXPALUKVMPQWMO","1.35","0.06"},
{"Sprott","48","I","IUWECTGSXJFPTFYIGPJPMPRTEWTBEDR","1.43","0.14"},
{"Sprott","49","I","IWDWOGDGWGORJOBTUHFQBPRNTCBYQHP","1.43","0.03"},
{"Sprott","50","I","IWHVUQKFCDAJPIATNPSLSFPLLUUGMGM","1.80","0.10"},
{"Sprott","51","I","IYBHCNQQEOHAWJTFDPQVNNOXYRLDPWJ","1.54","0.03"},
{"Sprott","1","I","IGHCMVFESUFJJGIUOHWFROOIGMGFBEC","1.41","0.05"},
{"Sprott","2","I","IHESJWNBMQQEOYLGPPBXGNHTJTPNTUG","1.23","0.05"},
{"Sprott","3","I","IIIQMSNRHWELIGAGIURCSRIWABJSESC","1.74","0.22"},
{"Sprott","4","I","IIUWOTLCIVQNMKGLXCBGELWUUWUQKIT","1.48","0.08"},
{"Sprott","5","I","IIXYMLIVIVWOAXXXLEHKDPICIGQUQGF","1.33","0.02"},
{"Sprott","6","I","IJVSBDFVNDDWWNMDMHDOPCFNYRIYWIU","1.08","0.03"},
{"Sprott","8","I","IJWWHJKPHMMKUVMKFSRHKJCYOISSQNB","1.98","0.02"},
{"Sprott","9","I","IKLEDDBHYJKFRYPBNYCVPRSVJILWEFP","1.50","0.10"},
{"Sprott","10","I","IKTOSTVLDYEKWJRCTSIHIQJQVBSSEWG","1.32","0.03"},
{"Sprott","11","I","IKTSIRHICWJQSSEVWGBJQKVLDSYETTO","1.33","0.03"},
{"Sprott","12","I","IKUELCPYRWJFNDCNNRBVQKQREITYMIY","1.51","0.06"},
{"Sprott","13","I","ILGEBMRRGWSRRFOQCLRDOOEARWYJBVE","1.56","0.05"},
{"Sprott","14","I","ILLMEVWJKOGMOIVHTISBKJGYYEFWSEK","1.59","0.08"},
{"Sprott","15","I","ILOTMOQYJBPLDUWTSWJQDQJVAQLEDQF","1.49","0.21"},
{"Sprott","16","I","IMNGCLHTMPFKYEQXNXVUETBDSSWOOGN","1.47","0.04"},
{"Sprott","17","I","INJWFGVSOPUNATNJMNRWDQMFKIGMRSB","1.39","0.10"},
{"Sprott","18","I","INKRCPBNOMEMVQQKSKYEIJOCQWEYOFP","1.48","0.02"},
{"Sprott","19","I","INLJYYNNEIORHAKLKJKOVJFTFGGSMQY","1.52","0.04"},
{"Sprott","20","I","INNRCKWREIASTBGRGPADGMGSHPKMPHU","1.33","0.03"},
{"Sprott","21","I","IOCVGJFNYEVPTEQLASRSELPUHOTDBXP","1.50","0.07"},
{"Sprott","22","I","IOGBGSHOUTDPTRFKCORFDLNKOSPNPHA","1.61","0.10"},
{"Sprott","23","I","IPBMEFIUKEKPDTZEJMPXSJTUFZLFRJA","1.20","0.03"},
{"Sprott","24","I","IPIIOOVNXNHPAUADBROXSSACJSXGMKX","1.52","0.07"},
{"Sprott","25","I","IPNBJINWBKXSIISTQCVRQNUPKSCLTXS","1.45","0.04"},
{"Sprott","26","I","IQETFNJNAHIINXFKUHXYHMTTBNJSIII","1.34","0.08"},
{"Sprott","27","I","IQNBDVISXIPPLGVLRMKNCMORMJOCIHX","1.60","0.19"},
{"Sprott","28","I","IRGOUVHFMIJQBAKEWDJOVQNUSGCNPDU","1.63","0.04"},
{"Sprott","29","I","IRIVIMLQBPFVPSLIKHJNDSPMWMCBGMK","1.95","0.02"},
{"Sprott","30","I","IUFPFQLVOLTUAVQYFLEVREPQLSNQRCD","1.40","0.08"},
{"Sprott","31","I","IUIMPUSPSEJNDPKKENDVSEHCVWDVEGQ","1.36","0.11"},
{"Sprott","32","I","IWUBBBVGSWOQFPMBKOPLQKUEIKHSVHM","1.62","0.14"},
{"Sprott","6","J","JHYWCCFNMLQJVCGPDQTWBPSMOBWMWVVJWNJYALSWTJGJDMRNHKKKRBDNOMFQM","1.45","0.04"},
{"Sprott","7","J","JJINFJICIFTJRQDVGRJOYMJDOKXWESQAEQSPNMBUSPSKUQXAIGWIYOMSGHRKP","2.09","0.12"},
{"Sprott","8","J","JJOPUPCMBPOTKEVGVLVKHJGVVBCECNHWHNHKECLWFNQYOAUVSWNLAKDKXPDMT","2.12","0.08"},
{"Sprott","9","J","JJXLHCRXHALLAQVJQYVATLXKTSALYIDBXICJHQWTYPDQJLMJCVYLLJXGSWJEK","1.50","0.07"},
{"Sprott","10","J","JKKELGSDRUNKNJJWFMKCOTYNISCXKYAPNPFABVLKKLRWIRDKDFUVCQVUHFBGG","2.11","0.09"},
{"Sprott","11","J","JKWNBMTOFGIDTXQJWSJXLRCHXBDXVKTBCJHKFSJGIHMXOIJNOEWXGSMMJIIYR","1.61","0.08"},
{"Sprott","12","J","JLEDOSLNEYICPJBJNOQYCQGGAVBLMEJUITFIDOJCLNBXAVCQWRMWILBUFOSTS","1.91","0.08"},
{"Sprott","13","J","JLHREQNCACHAESQUGCMLHKYPBRMHGLSRTKFMVNBNDMPBWEQSRTHSMVMNRFDYJ","2.11","0.17"},
{"Sprott","14","J","JLRTXANMYLXUVOBSEXSDALEHOCMKWCIENOKYFLHUWFFTPFAYINNQORTHTBMID","1.58","0.03"},
{"Sprott","15","J","JMGRCVAUOFUEKPMTIRMMUMWVVKPRYLUMFOURHQNHMPAQMVNGBGEGNFUGMLAMN","2.20","0.10"},
{"Sprott","16","J","JNBVPGQKEDEYUVNCYBRKXNCXBTTROOGTGTQEJTVBDMBJGWEDNVWWVMPOFNVSY","1.83","0.04"},
{"Sprott","17","J","JOKDAGSWFENMEJUEJEODDMYHMWWBAIHYWJGRDPRVFQAJVLKFMNTQAIPXMGLOY","1.96","0.05"},
{"Sprott","18","J","JPCMNJSWGQGYAUKRRQRFNOLKCYUWVFDDYDQPYBAUGNLJEOWWSCQKVUIKGELUC","1.56","0.06"},
{"Sprott","19","J","JPLFQMNURLBLITVTLBLCIJRIYXLWVQUTEHYHLEDMXPDEIMUQRLOMLBNOYBKIP","1.75","0.18"},
{"Sprott","1","J","JJICKAFXIOXFVGOCIDNIVRPSFYPFGABXKKONQWPAMJGKAGXDBBWFHGXBTPNVD","1.80","0.01"},
{"Sprott","2","J","JNRVAPNYFVEDGIVLUUFLVKNVCGQFEHWUISYBJDFJCKLMKRSYVPPKTBFUUAFQQ","1.56","0.13"},
{"Sprott","3","J","JLDMKNSOMROLNJUIPQVIFKDIYJMYLSUIWGJFWHTIPRVUTBSGQKMHYPGIDKLPH","1.19","0.11"},
{"Sprott","4","J","JONRJIUFLWTQFQFTUOCWQLPSSEQGBNLGMCKKEXSFGLHWKSDPJYIQNMJQBAIMT","1.33","0.02"},
{"Sprott","5","J","JUDGRDVXMOHNMOYGPJIXMNMJPKXEAIIHNLJKHKBWHJIQUCGCVGQRSQGQDENMX","1.95","0.06"},
{"Sprott","1","K","KIRCGTGYRFOSXCKFOIRNXFLPDLXPISDSOUTOITXGKWSQJGIMOLTWJUPPCELGSLTRERRKTKJTRUCJQVMNREJTAYYAWJEJISIXDAEUOOIKMV","1.79","0.01"},
{"Sprott","2","K","KJJUPXHPMACQRSPYGHTFLGCYTHUSKVNUTTYMMGIQFSKUJYJJHGCQYFHLVSCCXAEVHDUNJVNNBUWQRXJEPVLJLDAOBLIRTKJDDDIKQUCSVE","2.33","0.07"},
{"Sprott","3","K","KKGKUQRWVRSUTWDGTQHMAYUXCJRDWBPHICJHHSTLBDXQOFFPMNUATXRCYBMBSWHGBQPGRSOMRTLCYGRLQLTVQJIIVDLTXJEJOHAWUBVRNY","1.97","0.03"},
{"Sprott","4","K","KKLXFIMKRYNPNSNVITIBHRMPYHHCNHWLUPKCQQTYNJAKGWVWLMBYFEPMRUHRARLGHHTLGGYQHEQDHOQTFYRGVUHDCQGQHXYMNFGVGENSJI","1.79","0.02"},
{"Sprott","5","K","KKSLVGUQTYKUFHNSDSWCSITGEFKVCTWKSIENMBOLBQQTGOYPHKGPFCYUUHIOHXVMEFAMMCPRNDJRBQRQILCLELNWEMCYLUHIKCIFERQDBM","1.49","0.01"},
{"Sprott","6","K","KLGFLNWTWETVNLHHPTLPMMDAJKBJBCCHTRIBKGUEDDDDITBJVIHBUXIYGTSMGYXTQFASOOTOCDDSYAXGULLLOQCPOXSYVPXBOVOUHRNPQU","1.99","0.03"},
{"Sprott","7","K","KLLRVFAKXNTCPWXWENDJVNGQAQEXTSKIDVOYMFMKNFWOFILMGRXDMKJATLBGFUBOSWJHUDOPYLYWXQSORNXGNLNSWBEESQRTHUKAHBGKSO","1.24","0.04"},
{"Sprott","8","K","KLRLPKPHLPXFQRGNCJHUTVSFPFTSIQMIFUSUTCOGFSMQIDJECRTATYGZQKDCRBBRTDXFWKHOBMHHIRHNLETJBWAPEUCNSERHFYDLLWNFUD","1.17","0.10"},
{"Sprott","9","K","KNRRVWREMTOABPSKHMLDSDCISNDJQQUYKULFQILAWGNTHFSSYTUWHYFRWHLUUSMCBARBCWHMGALNONSDKSXXBAPKVLXITVKFAFLIYXWBPS","1.25","0.06"},
{"Sprott","10","K","KOCWVUCRHIBOOAKVSXHJOPGUQRBHRHNNOJPEMIJNYHVIGIOGPVBDQQNEASMCPJVHWGWFWTAKHYNTRBRJLCQTLMLIPJBTGHOWNGNOVOHOWQ","1.69","0.05"},
{"Sprott","11","K","KPBMLWTCBCWATDWMVHDHWFKMDLJUERTMLBNNLKKRJAVHUTANQLULIAYKQNXVBMHVGUEMWKAKECQJMETKFEQNVAVUXKQJRWBRRCSARKVMCT","2.40","0.06"},
{"Sprott","12","K","KPGQHOXCGSSBMVWFQEKRLXEATUYYGEGIEIRKLJUYDJTNBRHWPCXGGUVGFOWMSDXEDKXEJSHIHPPKQDZKMNJGMAFJLVLKWNKKLXPPVNKZEG","1.78","0.01"},
{"Sprott","13","K","KQEDOFHXFPJEPRTQBLOOAVOOACBDTUTUPFDGMBVLGYDOFHYTORPWLEYLNFTUEBOKBDXOPNWNNPKPCFAXEWRTDDLJXMVYHUPMMPPMWDEJDI","2.07","0.09"},
{"Sprott","14","K","KQMPLCKLEWODOGMAWCIYBECAQLWEHASTRBPPOMOGEQKIVIEPRCWVEFSRHKLQBVKCPPHWFVCVGJENSODIYBPYCLHVXOIQIODNHAWUUOFPCT","1.53","0.07"},
{"Sprott","15","K","KVFLHQBHLNEGRWRHQKSDSHEIHKOGGUVTRHPIGUPLRHCWBSMKROEFXQMIRIUYOLMRGUJLHMBNGUCTMOHQUEPPXETTQMNIOIJTTIAISQTBFC","2.08","0.13"},
{"Sprott","16","K","KYECWCLFXSOYVGXRWWHJIAAJLNGWPELSLMMRUMTSGJISGDSKSNKTHNBCOGHCYWLKXGLKBPOPNALOTJQNIMFOSOVGJEGQLILMTFUDYPWNSM","1.57","0.04"},
{"Sprott","17","K","KFQXCEQYBQSYWDRSDPXYWOOSLJLQQURWRIRMOONBFJJDUQVRJBFRIRCDOODRYIBWPNXSGREJIRQJWDKAOFNLUIPMCAIILSONYUNZDDNRFZ","1.72","0.16"},
{"Sprott","18","K","KKWOOHREEEJUQAVCEEBRTVVBVPUJHIUDNQUUNHZDTHDMYPUGJEGUPAJGXNMESDDGCDEMYNCDYINJQQDGYHMRMCPHSVJZPQLTVFFFSWODAS","1.35","0.01"},
{"Sprott","19","K","KLPQQUQYSIXVMQDFDAEIDXBLHEQNKPWWSFUIKWRECWGRWNTRKQSNZTQRAQODNEYETSLOBYLSFGGTDWBAYPUOSAYDSPUHJAYTEPVPSYMITP","1.24","0.04"},
{"Sprott","20","K","KNVXSIBPKCSPMTCYGJGBKBACKTUEARUPKKHGNUCXUWEMOCLDKTNJYVIHPDQRSDVGHXDRGCTPXUJIHNFFPPNDHFWFIYBINJBTDCIUATHBXG","2.00","0.02"},
{"Sprott","21","K","KPUMNHSVGHFQTTXWQLRACVNNRSOROTNEXGQIJMFGPDIJOUYATCHVNHOUBMQCGYJLGPHMBBULJUSPSVRNBKODHHLGXFYUYSANFVFVRTITDE","1.72","0.05"},
{"Sprott","1","L","LLLRGRWWWLEAGRMETGIDGUKIFLPOPTJPEVSKTMAAWFPFLFTHGJBBFDAXTKKDTNFGALOAHSBYCBSGHKYYTKWPMCGWDVYEVGBNVWYDJBRSADTVITQSMNIBADRXGKTSDKTAKFWGYOFHMSYYLKNXDMBKCLEWDHDWQVCVTFESSJUXY","1.74","0.06"},
{"Sprott","2","L","LLOBPCENCHDFPDMGXGGHXYSNDRNQASITFDLIUXNOFJOMLHRBXQNSQYRPCRINOEBDSVFJAFNWQXMEURSBQKNXCTOUCFRTVCQHUTYGJBHVKBFMDINQEMLFKHJNGBSRQBWLSLBWSIXOVFVPPYYHIWXDTWAMQDQGONQRNVWMTJGBI","1.31","0.11"},
{"Sprott","3","L","LLQEHSEAVYRIDKPRPVPPGFHEQMBKCDXTAJQMWDKCAHPLBRJOFVRSLQPBPLSTXUVHUTXHVMBIKCYXFPXSOMPOEULORCIHLXYHEFJOBDUTCPYPUCJWOUNDOWAMAMYVEMTHFDSDOFGKKDNNEFEFYUPEUFLRFWBCORHDRDOOGAUXK","1.49","0.05"},
{"Sprott","4","L","LLVXALUXCGKASBOJHLPXGYTHEMVEPBGBFUGCPTAIEENWYURWOWJEGRYJFQETREOPQPXQEJDCBLTNTRORXWRCFGHYQKUBRUAOOJAKHYAYNCCBBQUVJRBIFNWECRAJKXLREYDQUKFUITIMTEBRAUBTIQKABQSJNURTMJQCXADBS","2.01","0.18"},
{"Sprott","5","L","LMLGOLTVJPFKQEMLHWIAQGEQNIQXFAQCVHEVKBCNVWNPYMNXKYIHOIDBMJGLOACXSKILBJAHYRPOJJLUYVSOVFUSPFNMWOTPPXSTSKTOVNNGANGQHKVRBYVDGFCYWDYGJVYHBKLIBSMKBLENIPIPBNINHNOKPUIYQQGIHMXKY","2.07","0.04"},
{"Sprott","6","L","LMLMBFUTNIMWITCVCNEFQTGGWNIPARFMGTDKXFMDYYFWVUKBQAFUMKGWXMASSQVIPQOELOBOUFRTPQYAYQNCLYKCJQTSKLASOQTYTELDLKWQLQJPXLRNTVCVDYOTIFYUCEYAEROJSHYRTAVMLOXVJAHOYPUYJCQMIAKKMJNCQ","1.64","0.04"},
{"Sprott","7","L","LNKNTCMVSUJKTQRDDTSHEAOXJHGWIWLOCFOWFRINXSKEDBXULGJFPOXYXLBCPEMRHIUADATTJBLEYCKFVMPPLVNYVTWWKBNUOYGJPSPAHNTMFFWXFIMYORSYIKEKXYPKAWQAXROWMLDUSRMYQCAMPLLRTUQANETLKIQHBTVTU","2.13","0.16"},
{"Sprott","8","L","LNMIWCGDRYTSUWCVPQSEWDLMLPPCCBUBOUWQFOOVRFYPJPEPIUCKHKMXINQPLAKRHBDPYDXCMGDGFXSVPQNEFQXXJQKTCOQUBSDLVFIVWHCCKHYUDRVYHXATKBQBOMOYNPOUHDBIMCVJRXMEFLWHQCQHGRTHWSBCNWJUTHBDI","1.52","0.11"},
{"Sprott","9","L","LOKEHGAFFWVBWLYJBUSENVJSYFTEIVNIQURQXLUTNGNKCPTHIMLDFEAULSHOKOSELHUMAQVBDTLLRINVHCSQRWXJVPBTUCOWYIHIRUBFCRGOXFFMGKOPILDDMSBYSFJYFDUCXWFVSFFEKUMTKTEEMJGURWERXPJXIUOVFIDXL","1.58","0.04"},
{"Sprott","10","L","LPJDQLOHBBPUULIYJLQKECLSLTRDDKLYDGSBCCBEEORIMIEBNVADGTCOEMHEMGDAMLTJVCBQUAFBGPVIKOVHTIBUHVHQLKBMGVPKXRXNHMQRJWIKFMUDTHFTBGSPOIENGAPPKLMRNVTVTNFXQTFLLCPAANVBRFSIQQJONGSRY","1.59","0.10"},
{"Sprott","11","L","LPSONLEWSHNHOGIYSDORACSUHFFRQORDFTEDARDCDUPFSCHCLEDWNEOFBNGVDAKIYNEBQQDHXHMMICDXTPHLBFBCYOHGCLYOHQTEHXOTOBTJCFKMUNIJYRHTDLTRRWLNWJCPMGTDPWRRGUTUREPUNSSRPYRVINGECTLTCVTQR","2.02","0.16"},
{"Sprott","12","L","LQGUEQNPDOHTJIIBLBAHSGBKUBOIOLLBKGLBXTECWGJKBMLXFDGNDVKFKLBRABDOATTFJNRNOLXSEOKFDUXYHNQELGNGCGICJTNJIKGOLBNJORKRWNLKSWJTETVQFIRBCSYFRFWIPWCALLUQXKQRAQTTBJSQBHQWNIDVBFCXP","2.14","0.11"},
{"Sprott","13","L","LTASNEPHQORGLRLCDNJMWHGYYSGHKLMAPHNPOMECDNTENEXDKCRPPWXTPMTBBXPSYSDKEFLBQEVDRNGJLYFTOAUHVVUGUGONARNWMPCSNKDTYDVMGNUFGPJVOSXMCTFAYYGHXQAPUYIRVBDFRAOHWNALCSKAKPKOANEXNIOGP","1.46","0.06"},
{"Sprott","14","L","LJSWOSYKITFNRTXIFBSANRCXSEGVINFAFXVHHJJTUHOUIWJTDYOGTXANVIDRAAXUMHHJTJXVLJOFHDIJMJMAIJABSJFIFKAGSEYHSJWSIEARJBSKNKGKVOJHIGFVRFTGOLXANNQVSIIEPXDKBKKCJJLPIRHLJFTKISATMTSJP","1.55","0.13"},
{"Sprott","15","L","LJUUKNADVUXNGAFRQDMKIHUDSFRPARHYAGGMEOJWSXOGTRYQTJRFRGDWPQHKQWVVDXMSDHXKAAYFUPVTODYHVTUIRSAOBMLPYQUCWOPFTEGSRAQNWJDHVVRWHDRQRFWXTYLKIULWCBAXKGRDCFREDNPJMNDNMAOJMEOLLNDJM","1.43","0.04"},
{"Sprott","25","M","MGDGPSELYVUMRDWSTCBJFHEQVYBYSLONPKBQVMKRUEVNLKIVVQPQVTDXMDSNO","1.76","0.04"},
{"Sprott","26","M","MHBFVLWIFPNXTLUGQPKAHQFKAEHFYUTNMEXLLFOBKMQXBEIALQNEPDGPRAKRF","1.73","0.07"},
{"Sprott","27","M","MIJATENDDKJCXVMIMTSTVMKAJQUCTXEOUOOVKPPNMQNWGEOTKMYHCBBQTIJHV","1.68","0.04"},
{"Sprott","28","M","MJRMIKPDMRXMYNQCPDAFRVHUQIWKWUHLVJANFCMXDKYHIJNURYLWQGUTAGALU","1.78","0.02"},
{"Sprott","29","M","MLAEODJGEXUKTQCRFLVBLLLDGCVOBXMLBJPVBMNFXUIDNVQQMVMRLIYQLLPKJ","1.61","0.17"},
{"Sprott","30","M","MLDFKCIKGRFSHJEGMSWSUDINRZWTOMENHOJDQVBQBVWBGCOUYCCBWNJLQSNJT","1.20","0.05"},
{"Sprott","31","M","MLKSEEJIHOCNNFJYLCDPDTIIURJFAHLFYMFCTHXMUECRTONCMLWYHRXYROOTV","1.75","0.03"},
{"Sprott","32","M","MLOGSXIHUQFPVBKSLJYGHTFKCRWTOSWKTAPFYFSXOSPPOYLLSFYTCVRQPQLEO","1.60","0.02"},
{"Sprott","33","M","MLUICIOGPTITLAHPNRYGNIIWPEPLPJMSGTMTGNSFNOIEQARUKNGNDQDOXEHMD","2.40","0.06"},
{"Sprott","34","M","MLWLRTTLKAFELEGNNMCFJSUKSPEFJTPIJFEOPNOPOKIGAJMCKVIAIQULRFSGD","1.69","0.04"},
{"Sprott","35","M","MMBDLBAKPFYNXWHCMSKATJRKLYEHEDEMQSLMSRMGJAEIGCMNLNWAGBALVDEKP","1.88","0.02"},
{"Sprott","36","M","MMCRYBHOGYJKSQUSMVKNKXBOHRYFYOVMYMDHKJUEYPSTJQMAIBWIIFDUTRNOO","1.79","0.05"},
{"Sprott","37","M","MMDBTQODXOJLNOSVMTKEICYSWNSLPFNMVLKNSNYNLPFBPKMMYRUYSPDVSJDUH","1.45","0.03"},
{"Sprott","38","M","MMDWDKNSUXWRILDGMGCLITOYXODGGRBMTUSSBQICHWLNFSMQNEPKHGFMLVOOR","1.76","0.06"},
{"Sprott","39","M","MMICFXPCTGARVSOQMSWGKIIFPRMUVYQMSOEOREOYPIJJBHMLRVNUVMOHPVTOI","2.13","0.08"},
{"Sprott","40","M","MMKCVPGEMLCPWBUHMSLLWTVJFCPTLRGMQLRMYFYMRLCWURMVBIUBXPSDPCNRJ","2.29","0.12"},
{"Sprott","41","M","MMNGTRPWGPSXSRJMMMCDHAEPNDKOWJBMPDCXHXTJBJOCGLMXXXWPFYFKRPRID","2.15","0.08"},
{"Sprott","42","M","MMPIVFOBHHEHRINUMUXFNKWNAGUFUYPMFRMSWNRDGHVLRWMRRQOIMVCLQMIIO","2.35","0.11"},
{"Sprott","43","M","MMRPEQPUXBARUACIMLYRPCEAAHNRCDJMTTBWAUGSIGONHRMSSSKTJENRLNHIS","1.84","0.07"},
{"Sprott","44","M","MMSHIOLQTSKBLPTMMXHSHIETUJVNQHUMNJGXPPOEPESFWIMQIBYNMTVHDIMWD","1.79","0.08"},
{"Sprott","45","M","MMTRGGKKXNVDIJFJMEIEVINXHQKNGREMFDTYFWSBLCHHRCMFTTJBISMXIMFOL","1.73","0.01"},
{"Sprott","46","M","MMUCGTWNIGRKIMGYMDCPAPBLHJNHTJOMVFOQMWXNDHAAAEMGYQJFJGKAOACKH","1.55","0.08"},
{"Sprott","47","M","MMUDTNUFJXPTSWSIMTPMTLPKKOXFHWHMPMEBAHOSHBEXREMQVUVAJTPSLUAWY","1.72","0.06"},
{"Sprott","48","M","MMVMLIKDLYQLMDVFMVKPECJDHLCDYTOMJXOIURJCXPMSEGMPHLESLAQORDPEC","1.79","0.06"},
{"Sprott","49","M","MMWDKKHNKMEMAXYGMSYYJMJXQSUCJRXMNIIPFEIQVFPAFSMDWTHJNWILWIVNF","1.25","0.02"},
{"Sprott","50","M","MMWHELTGMYANTDKMMMCTWXKGNLBLMCKMCUWBTFKYQJNKHLMFSRVUTQUXLSPGX","1.93","0.01"},
{"Sprott","51","M","MMWIJHYUXDOIMAYURLHGMNJROEJLFSIMMJYFIIHYJJGSDFGVPAYQSSYGWBQPX","1.59","0.02"},
{"Sprott","52","M","MMXBCTVQDXMLKMLKMIGWODOXLBKHMTVMKEKXASLXELLAQQMDDPRFUFYVHLSDQ","1.68","0.11"},
{"Sprott","53","M","MNGFOFMKCYIFGJSSOVQKUYKUHTITJWEMUHNPXMFABUWXGAMQNQOXMGQTVJQOA","2.05","0.02"},
{"Sprott","54","M","MNGPYOCMJXHJYBRPINWEMXWNDCFTVTEKLKBWHQXQDGBTQDSHGXEXJDSPVFSJM","1.49","0.15"},
{"Sprott","55","M","MOEYLVDUTREJKVUFPXGOWKFYHFVKTDDIQHBSWERWJSUOSNKJXIVUELXGLMSXV","1.98","0.04"},
{"Sprott","56","M","MOFUUMXCSQOGVSMDRLXJIUCTUGHDYJJJSENYNHFVENLYFJIKPOESTOJJFEEWF","1.43","0.03"},
{"Sprott","57","M","MPGPMWGTAHHNLTBLMELMJBDCXALDYXMUPDLEVAAGYHGXLRRUGOGBABMXJCWNX","1.78","0.03"},
{"Sprott","58","M","MUACOEKVOIPOPRTPMOCPMTXVWAWWFGHPFJQVHYQCQOYCWKUEJDPDMAKFRIBQM","1.80","0.05"},
{"Sprott","59","M","MUDPYXTBXRCCSIDEINXLCHKRYJUJVEASHHHIJTVJFJYVDWOAVJGXGEVPXBQQE","2.59","0.02"},
{"Sprott","1","M","MKAIUOAYHHCLXYSITCWUNWOLMMDCEQLNQCCMPPHAONXEFCHLXVGVPLRKOFNPS","1.41","0.01"},
{"Sprott","2","M","MKWWFTQHWFFBKCFHMUSVFFFANCROGSSPPGOYTTCAONIULPGRITEAQVVQICBKK","1.59","0.05"},
{"Sprott","3","M","MMDBTQODXOJLNOSVMTKEICYSWNSLPFNMVLKNSNYNLPFBPKMMYRUYSPDVSJDUH","1.45","0.03"},
{"Sprott","4","M","MNGFOFMKCYIFGJSSOVQKUYKUHTITJWEMUHNPXMFABUWXGAMQNQOXMGQTVJQOA","2.05","0.02"},
{"Sprott","5","M","MFFJSKNPJKXDRXXJIJJGLJAAMGNLVJTMPLNHEBDFIEMMHRNVSGIRVTVOIPFMI","1.48","0.14"},
{"Sprott","6","M","MGRWGVPWQGWJCPIRJWMNTPPPGTQFHNLMLUPPLJVWESGISIHPHRYLXPAWOAPHN","1.54","0.06"},
{"Sprott","7","M","MINXSAGQQMMODEJKPNPITOHHGAQNNPJSUMWCQYQHHFPXIJMSFWPWLNWNQVLRH","1.73","0.18"},
{"Sprott","8","M","MKSOKQDGVGUFHWQYLSFUYFQBDHTBSXEMHOUSNDCJPGIDNKNGPKQLSLDQWPJNQ","1.72","0.05"},
{"Sprott","9","M","MLQALFYIJMJKKCOBFIVNXFELUGSGBNWHAYWDIQYDRJOUWNLMLOPAKJFBFQHHD","1.69","0.06"},
{"Sprott","10","M","MLRLDVIRFJRJGILUQYYYSFKHMQQOWRMIIPRGNQJHRKKHYDMXSIYMFPLQRWSSD","1.51","0.04"},
{"Sprott","11","M","MMACCBHNSGDQNRKVMRDNJWQBFSLRBGBMLPBRKMNMIORGMDMNTHAVXNEHCLPJA","1.76","0.07"},
{"Sprott","12","M","MMDDKCBROKYJMXXQKPBMJSSMSURNIKSONBTWUCCOPRAGMFPNNTVGRNEQDQYNL","1.57","0.05"},
{"Sprott","13","M","MMHOQKISLPQJCPKHMRKWOCRJYWDDHCCMOGJRFCIXILWTJQMUXFLCRKNBGQNFX","1.79","0.01"},
{"Sprott","14","M","MMLIYSWAWFBMXHXQMMWBHKOECJXSHCGMFJSGCGVQFFNBQXMNFMLIRCGTNHSPJ","1.42","0.03"},
{"Sprott","15","M","MMLOLQBGOTTARNTOMGDQKMUPTBDFTBNMEAWCOWUXLXSIACMNBDWPTMARNKEFN","1.06","0.01"},
{"Sprott","16","M","MMMNLPBOWPGCVVDNMPQURKHKNXKSVKNMTVMUQLJYKOJFNWMUVCIVGROFBTKNK","1.36","0.02"},
{"Sprott","17","M","MMMTHIGVYGFFABIQMTDXTWMBDVACEUXMHHBJLSXROGSPJUMCNYFRYMTEWRXOX","1.30","0.02"},
{"Sprott","18","M","MMOUOUYJTCQPFCPFMXWQCKIWBKFXTMKMCUNEFQEQOGAKEHMODHRGLONHWMCRN","1.36","0.16"},
{"Sprott","19","M","MMQSQNAJVTXENLDPMEUWPPGVLAIGBWOMWTSAFWOBIKWMYQMGBTOVXDILQKJOE","1.64","0.05"},
{"Sprott","20","M","MMWYKARXJGXRDLMKKESHNSJEQHJRVEERSWWFXEELSGGMUAOEHWYXLMHNLMLON","1.73","0.01"},
{"Sprott","21","M","MPGBTHKTSSWCKASIJIUFPXNLESSLJNUNICHOHEETONYWOGJSWMNXHOXEBLFLG","1.71","0.03"},
{"Sprott","22","M","MQCQGOBGVFLHSXPTPDOOVIREBODHGUMPIYTYPHFWBENBNKOFFBLOLOAPMEHUI","1.85","0.02"},
{"Sprott","23","M","MQVEIINRFUOYTBNCLVDSANJJXUTTSAWFRMGWDETGAKRMRDVAVSIKBLBUWLCHQ","1.14","0.01"},
{"Sprott","24","M","MSOJMJRQYAJSCATEFVCPNKHPIKKNKQOIWADJDWGJBJFISJNSBVNPHWYMOGINL","1.47","0.07"},
{"Sprott","1","N","NMCSOXFIDMFWROAJLWHYGGVMSKDJHUDLVTYJMPAXVIOQPLTQNLFLPEERFQTWQHSOYPJBIVEMNBUEURXYUGHMQAIMVRLPNBBQENHGQUDJULMNNFXCKXRXFSGUCSIGLPUHLVXAXHIRTONKH","1.54","0.02"},
{"Sprott","2","N","NMCYETOQNYDWARWHDVVLWOFIDJMTXNDKLKYHMKWOBIJFUFRJHVSSWNBMYELRRUIFJKLIEIFMMHJGNUMKUPKFVTGBYQLRBNHIOJUQWQQWGIMATWYVFQQGPLVJLPOVSHQDRFNTCMFRKALNJ","1.46","0.02"},
{"Sprott","3","N","NMGQIXCGPIRHOBACEPHYADFLIFPRLWKUAAOPMQHHBPGAJIXKNHOPRCCRGFXHBOWBENXLJLIMQBGEQLYPJREMTOGGSXVXPMADNFRJOVQIPXMRRVWLAIJVLPRQGHFOYEVOWELJOEGNVTSGW","1.70","0.02"},
{"Sprott","4","N","NMHHSPLAXQSKPASBUMAEJFHNQGGFXFJASUJLMPGIPIHAUTXOHXCHOVDDKEKTHDKLRIISWVEMLQWHVYSTIUWBVDGAAFRWKJHYRAEQTIWEDYMJHEWFHIOTUAKVDPLEUMBRODUBBFCDVNLUI","1.72","0.02"},
{"Sprott","5","N","NMHYYGLNLOGHOXYIVNWQDVIMRNHORRRWWNKGMNYFMVVQRNRTMMTLOPCIQRNVNDUNWMGFIBOMEFWGIKFSNPRRMCTCGRQCQJQECWDQVTOJEOMLIQJMHGJCJCTUSIVRCDNNSLRCEBUFRECXS","2.17","0.13"},
{"Sprott","6","N","NMMQXNNYLNKRNTYJATXWDUVGPEQRRMQFOICLMDUEGKVRQKWMDXRNKWSIHDVBNGOXCPFPDNPMFVBFKLOSDGWVJVXASWWRQDVCUCPEBAFXMFMGJALVQEKJXSGFIANFGBWSTLQKKFQTLQHIU","1.69","0.04"},
{"Sprott","7","N","NMTICQDDQGFKKPIGLWJDRHOBVHFNIHNEQCYFMJMYASPNVWDECDEPTWEOTRWVQSOOWIPHHFRMQCVGVEJDCSVFPVMEWMMGEOJQBWLJTWMLTLMNTMRILAQOQBAUYVHHJOVLDLVNYYJDFTENB","1.58","0.03"},
{"Sprott","8","N","NMKAIYSQDHFABDWNQMFPVRJYYVNXPNDGTIOYMTGDIRTAUEXPXITIQPIKUJHOONVEEPICMHUMIDQLBCXFOFCPIACOFYJMICGPJTBAQTRFPAMQMSUNUXTSFHOOMGUNCTEHPTHPCJIAKSKBD","1.85","0.08"},
{"Sprott","9","N","NMQJNUVMGQFSHIJOYQCMLIOGXAXUCDXMCPKNMDGFQUKRFBVPKWPBLKTUFEREGFHOYOXRKMAMAYUNAGEECHJDELBJWAGLDINGXIJXEPSGHPMPLFMCGQWAAOLMHYPATAKUYYTPQFIEEITNH","1.58","0.14"},
{"Sprott","1","O","OKPMLHFLJLOIOOEUWKLFIADMWLEJEEKLCNOGRJKVJIMGQTRWUUILEPNLRJWOEQSMSKWNLFKKSLLNALSTGWDDIIHMJIYJHIAVSNYUTDSOSJEPYDIWSMQXKBPNHOFPJRLPIISVADUTAHTPSJSSMMNKTEXHEJWRGGLIVOIHXIRKDJPMDKGGELUUSABCJJJDHBJOMSWXSFJLPNPMXFOWYKUKOHLUCYWYTNGJODDJKGGYAKFNEGKNDQKEYQRAQWINBBMBQKTRNDBJBVJQEPXFMXTFOMDCO","1.55","0.05"},
{"Sprott","2","O","OMMOXNKSAWSVADFBDLAERLYNSOBBXKHLXKHHVAUUERRTVOYMCUIBQFGJCNSOPJDCWSJBVUNMWSYJHFAEMDENRIUJMAHYQTTPFIEBBAFEJGTNXLNLPYTBWGEFMPYXLDTPIQTJLOGSAWGTTMMFKDXHESYMDKGCTDLNXDCVGXYJPBBFHAJGTKYHIWVHFCDHQIKQFQKPXIXRCLQTDMCRTBJMMGXQYRQWEKDWWCYSLFCUQUSFBCBSMSXMXMQTFGVCNUVJAHCVJQDGMHYSOUUHTGGVPNIWT","1.95","0.02"},
{"Sprott","3","O","OMOQRUJSLQIHLLAVGPORHXCLMMXSOOMGQWBEJLBCRJFIWLDFDNABPOUSJVXEIEXBYAHROFAMSPIJPMVPNJKDOSBUJKKQRGMMBNYVWQFEMEGSLQVFMUYUHLOQSPAPMIPOBHASJBTSTWEFKMKIJQTQFRVMTFAACQQFDBFWFGXSYMHPSVYYCJWEWVDOHXTPSNDJNFPGJUKRSEPQMRGNLPNMODUPOITTMGQNDXVYYBDFEPHQAGCRJHJISYGPGYIIMASXURGSBLFAMVYUWTOSHOTCEGBKT","1.44","0.05"},
{"Sprott","4","O","OMPRETYLSMVWNANPNRJDKCYFJXMPIUFGWTCYXELNGNRHDDPLWLJUMALFPIHTVLKMFGJNPOCMSWWNMCJUVHBECHDOACRFNMSWNHCOQAVCIWCDPDDJCTJHUIOVRAMIPAOPDRQBVWSCLXRTXMEHALMLKEEBVDAVLJIWOHEWBTMWEQNJVLUYVOUTPPXKDOTODRFQWKTNOPVCOJNVWRKLJSCMGRKIAGRVHJYISDDECLROVLBWFWCLPYEMMEDJRHMHPNRQWFJUOSSAYFUCYIPPYVSCTSMDP","2.16","0.04"},
{"Sprott","5","O","OMXLIBUDPLKNSYDVPOOVLCAIPMVSKGCOECHSOQEPSYBFTAWJHICAVYOHYQLKRJHTTHOPXPMMAHCRGCWLGFJERQYINJNMKTIYOHIMUQVUNLLCAHHCLJEAGULJBKPJXTGRTSBWGOJRTQOIEMFTTJLRIUFITMQFCWWONTSTLDDPVSBJQRPTEYMYXDQUONMKWALSJSLVCMCNQVNJYIAUOACMYVPCHKPAYFWYRJLKBMYRLGQYUKCDUDENHRUBIGNFKSJPBABQSDYOXHLMSHKUIIXBUDYJH","1.39","0.02"},
{"Sprott","1","P","PMRPHCDNPOKKTATVAYEPWXDJJSCWQNPYQYNJQABCSPUMFBPDWDSINIEXPVHDSMMRKOOPLGKBEHXIYONCTHMTUJSUCCROEQKNEFDWWQSKUHXOHMKUGXMUJDXRIDDATAOMTEKQETBPYBWAWVCXSRVCALBQCVBQJAIVALCCMEWBQKUQVGPLAJLWERAKSUACWGRIEMYMJTKDHCKQRBFLDHIUCBFHRBEUPWOCWNPCKIHNQORWYMADXLMUPVFMTXFIEMELXHAVEEOEHDOOGMICLEWBPQBGKMQHJOLBEMAXONWJYXETOBPOQCLTFFVRYVOVTAPJCXDVEHTQTOIOALNHVTFKVLRNKMIYMCRCWKFTWLEIAVDPLLOHHIXHFJPMQSKMLXXPDGGMFKAHLCITVIMOUPHSUSEQQQJEKNYMFPVNKUDITCUELEWPWWPLPISPMQBYFSUEKQKXNTEVUMROVRAMMIVYAWMYKMDGILFWUCEOLTMBGERMWANBPXFWKREQF","1.93","0.14"},
{"Sprott","5","Q","QAVXVXDXHILACNURDZZAATSXBNVMOWF","0.01","-0.00"},
{"Sprott","6","Q","QDEIXNUKOGYXVCISQLYFHWQAODFMDJP","1.71","0.02"},
{"Sprott","7","Q","QDIPESXNTJSOUVGMBJGTEQZIMLPUWMW","2.42","0.00"},
{"Sprott","8","Q","QEDWIVONAHLFVWRPYMTDDDLLVUHJKSL","1.05","0.41"},
{"Sprott","9","Q","QGNSFHVSUHJOBLCJXETSGKQQWWKQPFG","0.10","-0.01"},
{"Sprott","10","Q","QLOTRIDMXRBUSABPKTHBRYGBJUXEAKN","1.75","0.18"},
{"Sprott","11","Q","QMCMMMWMMMMMiMMLLMMMMMMMNMMMMJM","2.21","0.15"},
{"Sprott","12","Q","QMMMMMIMMIMMQMMMNMMMMNMMMQMMM0M","1.94","0.08"},
{"Sprott","13","Q","QQDKWCVBYCTNEUDAXLTTOQEAQJFYHIR","1.91","0.00"},
{"Sprott","14","Q","QRREQDTWELEQMTMLAAPRGDJJKLPYAFO","1.77","0.17"},
{"Sprott","15","Q","QUCTPNYFKUFMCEWDGLKCVLBOYVZLPLN","2.24","0.18"},
{"Sprott","16","Q","QUKURGZHDOESBKQOJUYROHQYUMXTKEH","1.97","0.00"},
{"Sprott","1","Q","QCGPVUQQJPHUYULGKOJNBJEAZPENSZH","1.91","0.02"},
{"Sprott","2","Q","QDPHNYGLPMVYYQOCUIYOLVKFVFIDMIN","1.52","0.01"},
{"Sprott","3","Q","QJFPNELMYBGVUOLEEMJJRICCDKLQMUK","1.80","0.33"},
{"Sprott","4","Q","QJRFPORWBILHPHKQMRUDPUDXIJYGBGF","1.29","0.25"},
{"Sprott","12","R","REZCDWWWLUDEQLWJPPVSKUWVELXIJLVKHFCIUKVNPWLVEBWUHRVYHGBQMSLOI","3.32","0.00"},
{"Sprott","14","R","RFOWMYQVLYQDQSPGYVKWKBKAUXYUSMJLJYFKJPVKEOQPJWBBURCUAMXSNFKYB","0.12","-0.02"},
{"Sprott","15","R","RHNKDRSEPTGBLEXOWYMEDQCECLQJBHQHMOECLTQTKCFEQWATHMLMIORSHBKNI","1.95","0.92"},
{"Sprott","16","R","RKCDFPFVYNCFPMWIBYKTEQAPMIFHFJXCIJASKNTYYCPTUADVMNSRSJMMSEWSL","1.33","0.19"},
{"Sprott","17","R","RMEBBMXJJAWCLWROCMVLIGQXYNQVLAITUFDWNNOSOIEABMWAYSOPLVAIHMDVM","1.02","0.76"},
{"Sprott","18","R","RMGOLOGUGIKKAQUNYYWPNQOPVIXLCONAYJGIROPFQBFMOREQJOOUBXDIVOLYK","1.58","1.05"},
{"Sprott","19","R","RNMKSFEKTRDEXQNCWWCSWQECBBFMIXAJOYLCKDIIXRXJHEAEEWJBYBKVXTIFY","2.35","0.26"},
{"Sprott","20","R","RSCVKBOZJYRMFXUTRKLPCNUEACOFHWFSTPFXNDRKGHVWCTXMLRGXVNCBPEUMH","1.69","0.00"},
{"Sprott","21","R","RXEGQFBYMERYGBWLMXYMXNCMRSTJFUYLIKHXYXVNNFBUKBGFFLSXFPXDHLDHV","2.00","-0.00"},
{"Sprott","1","R","RFEJMURNKYSKVHFJXVFDMBKSBJFFUUIBTEFUDKLRKSDLTGJBHHGPHUHLQYSPG","1.61","1.22"},
{"Sprott","2","R","RSCVKBOZJYRMFXUTRKLPCNUEACOFHWFSTPFXNDRKGHVWCTXMLRGXVNCBPEUMH","1.69","0.00"},
{"Sprott","3","R","REVUKOGCERMHXEKBCQTJRHCJVXRRIBQAQYHVCXEXIOTVIVKAKKECPWFGPTHXF","1.45","1.99"},
{"Sprott","4","R","RFTGHODREUPELRRMEVVELSQBHTDDHYYHFQNAFLQRSEAMVAJGPYWYQBUEHFHRF","1.39","0.25"},
{"Sprott","5","R","RIAFAHLTKWQMGNCDYLEJNEDYULQPHJXKUAMSMDQWKZYDFMVBREESSEGMGOJHK","1.96","1.37"},
{"Sprott","6","R","RJYQGRWLLATYZGCMHPEZNQNBEDGRLXBSVCZBXHRKLJMERQMCFKTKGKKBLOECH","1.56","1.18"},
{"Sprott","7","R","RLBVMDKPEEHKIDLRFCJPLXOYTVEUPSTSLNJZLANDNYPWYRGCPGRWNUXTWYRVJ","1.16","0.17"},
{"Sprott","8","R","RNDZJLUGWZKQUSBPXESCPJZDIJCEDQEBYGCFPNQIKBYDFYHTOPXMKTZLFHNNN","1.24","0.07"},
{"Sprott","9","R","RQPXHNHUENPJJOICSJJMEHIEJEDRVVMSTQASROWWMADDPNGXMCMYFCTRXODNA","1.30","0.47"},
{"Sprott","10","R","RVKNTJDLHNLHODWEIGXXHCCOGAZQIFOFXWJPUUFUQOVYSFENYXJSUNDQESHDL","1.17","0.11"},
{"Sprott","11","R","RYQAALUJBCNPFEHQWYTQIUSPFGLLCGHDXGAJWWOKENEFCYOVHGXGHQXURHTUC","1.36","0.99"},
{"Sprott","1","S","SAQKAETCTPFRJAKFEAQRHYFLQZXHNBZGGGJHSDMQQRYYRSWVHKUORXKNXPGISSZETJOBELEUEALMZYSDXOOLNPQSAUEBUYAACEBFPMCWJP","1.75","0.24"},
{"Sprott","2","S","SFDUKQTRGSVQGTNHJCKNNNCONFTCEJKXEIPRMJMWOZKXHIERPGSLKDHYAKJKAOLDWSRUIKJMCXAOXTXJFKBORSIAVJLCFOKYOTDUTUEWOA","1.66","1.06"},
{"Sprott","3","S","SHBNLCIMXEHDFWCTGGTHMISUIWQVKNOGMRKXUHGAWBSURGPMQGNWIYHIXDWOEMNSMHNGSNRQUXBSMODGHPAHQXBRNPLGYPFBVPMONHPRDN","1.79","1.13"},
{"Sprott","4","S","SQFECQRRYIURKSQUPQJFXYIGXSIBLHXMGPPQIAZNMOYVDLCAWDKMXOCMDFHPVRROTLEISGDMYLOIIPMIJXMNSZYMOQSTDIRJRHEUTJVULN","1.53","0.11"},
{"Sprott","5","S","SSKBHUTGPQHPOEPHRDGFXBALTEPFKACLGRQNWPIIBOGXWOJDLSKQNFXYITSIRDNIBBFLCDOURLWRFWFEFIOYBHMMTBVRVNJWWFTBULDJEB","1.55","0.15"},
{"Sprott","6","S","SUISTHIXFBRILKWHLDWTNCQZSDCNERFJGXAJMEXFVZGTQDDOVECKJQRSZDYLDBGOEVMGTKYBPSZKXUYKTNPFRMCINCDGDVNMIEXLBDRMKP","1.65","0.45"},
{"Sprott","7","S","SABKETAXTDIXENYTOTGIFVLULGFOQQJEIYGPAMRRRYBSCXNNXTYDWUIDRBFOGPFMRUUFDRLUFJILAIGYNNSMVHRGEOATODWVLDISWXMMND","1.65","0.22"},
{"Sprott","8","S","SDHVJMXJNYTYHPMPGZXFRUCGPONXGAGCVKNORVWCWDFHRJWJWDCBHIEYXJJGAKNRCTJMKMTQEHIJUUPEFAGQHINMBRWDUTYIDWHLJGFFFV","1.41","0.91"},
{"Sprott","9","S","SDKUSYQVHCLINLBFHWYDYBYIAAKVIBEUTKGIIHQCENPICOYNWAKJJXOYTYLKVEQMWRAJITCEINHLIYLOWDMHNUHWPWQQJLNMWTLOQLMFUI","1.37","0.43"},
{"Sprott","10","S","SFJBUTEWDSLJBIGEASAPGLXTCPQPBNBFMMQJFYECVALMNYGKEVZUMQRKUNUFMBPHUKDKHGJAJKLTTORHEBIFDTQLCMNGGNNJISOBIOJVTL","1.30","0.06"},
{"Sprott","11","S","SSAHQOJHWOCLGRCGOGUBHOJRGAVXWQJCSFKLBYWGBBKOKONDNQFQUEASCISKXJWBGINOUMYHRULGSPEATARYGOMQVRUQYKPSNVFTLFADPW","1.19","0.03"},
{"Sprott","12","S","SUTYTGVRGAPBEYAVPTRWRNFJSDDMUAVSCIOOXVLDHLOMNCLYGELIMXACINABQQAIKELSKDBHOGWAUPTCTMSBFEWYOPHTOPIXHTUESYNLDU","1.39","0.37"},
{"Sprott","1","T","TBEIESEQRCCJAWWIIMLCJIRCVBWJKCDDRBGOCSLIWUNQNRAGFDOBFOBCRXTVVABBAFGXLWFFADIGBVOGUROQITIGGDKEUFLVUAJOWBXNIVRAPRTWCXEMMQMDIRWJAICFNNJKGHBDFFSWPEMBKYKXGRLCSTIAGASCOSPJTFYEU","1.02","0.32"},
{"Sprott","2","T","TFRKCBHSZKGAIBHFDVHBWGRWWGWXOPMNPBBEBICJJEVAZDIIVICHNQQPQIRUMMAPIWNQXEBBOUWGQXJLQFHJPGRDNJFTSCHDLSDTLIHSHEENPJDGFQJJAMEDDILOPUECKNFIFHWGPSJCOQAPGAEILMOXOQHMRECTRKNCLNHYE","1.90","0.00"},
{"Sprott","3","T","THBDSQARKUURSXNOXNTVUHHCALECVHBGQXXACJJJVNCWCXPTXBFCKGXQSPKXZXCCKWMHVNDAJDJISIOEMRZONFYLVXNLQJNUQCNRZJJSLKDWBAXMOTQAGNMMGGIIVLOPMTSOCBTXWRDMJJBCBUJVDPEADZWDULHNXDJVFPJFT","2.28","2.36"},
{"Sprott","4","T","TIKDSMEKSFJJVOHCDMJQQCRWJAEAEOFLLTVKOUOYRQUGRWRMSRSVMHKUDOBLKEOARQFQCICONTEARQPCTCVTMLQMUDUUOLVBQUAYOYKWQILMHOJVGLADWYQJAXXLJYNXWIGHCTSAETKIEOLGBUQQFJASMQGWNWGCQRLVFADJR","1.89","1.42"},
{"Sprott","5","T","TLFBEBGPQAJQLXYMFGYJCXTKGFDZKCSTBCXBFJESQKNOGFGBPWLLDTVLLPPFBHSKMMFKJTDQQHHSHJJFXYFLNDCXZJXOCQTPAHFLISHTDHFCKIYWSGNWYKEFRWMAESTCGPRKDYEBSGWBMWQEDVEEKEZJOSQYWVJSLFBKIMPAI","2.08","0.58"},
{"Sprott","6","T","TNGLFVWPULUKVAAVNVVQFDYANMFMYAJIJYZVYMGLDVXHCPKAVXFRMJBCQMKRDETSSUZGVMQNEIYHFTEKLPTKJXUFYGQQRKKPEGHIWZPURYSXOTTTBMNYWEAUMXLEODVWIUGKNDRRILVUHLFTRLUGFNORBJEFMEEMGGQIHBPWS","0.01","-0.00"},
{"Sprott","7","T","TQHTPBVXADIMPQSVRDTOTEUGRXODMBJNGAAYTXWWDDDXDQUONAIGEDVYFXPBGHIDXJOXHBACYQNMHFONNBQXQCGUCRDYDBRYTLBMNXDKNMCQFNDDYKJTBQRFBTWCKHVMPGJUWOHPYTDNJUMKYLYRNUEBFDBOYSHODYYYAYEXC","1.73","0.31"},
{"Sprott","8","T","TSTDKLCSQYLOIQFVLHHXTBDGYMGKRJJBZAFDDDUGEKKWUWWVJVPJFTDBSBSNNIIXWMXLMPJELCNGTQHOCWFOYHLHIKZGSGQXSAQJGJJNPUQLKPCEQQWFKVQQOPSLYGPRWUQICYUFQIQWKBVGKRZCDTRSDMOQMENFDIXATYCBH","1.88 3.85"},
{"Sprott","8","U","UELMCAPHHLBLVRKPASNCVXJVFUAECFEPGVOCUDIUIKREIEBRUUBRDAJUWWWSX","1.81","0.00"},
{"Sprott","9","U","UFYVWDQLFQWKLOIJEMACITSWOGCITOAPSKIVTYSYQDYNYBEHIJKTKPRPIAJRU","1.77","0.00"},
{"Sprott","10","U","UHKOTCHADGLPGKAPVTDUMJMAHFWLTCKYMUYQDWKMMLLHJCTURPYGAUJGINYVY","2.80","0.33"},
{"Sprott","11","U","UHLDVFVIDPXYKOEPDTVJCEESBNCCQFCQDBKISIPYHYOAJHHMNCSGCBCTGJHWK","2.43","0.00"},
{"Sprott","12","U","UHUPENUENEQIBQOCKEMDVPUCYAIOQJCMJAGNRYHOWLQKWORQCPQIUKCCDWWJA","1.81","0.29"},
{"Sprott","13","U","UIDVAPPBAWUENHIRQCTPAKCMLGQESFCTLRCPKOSWLGMENYVHFAEMBNUPQHMLG","3.30","0.00"},
{"Sprott","14","U","UJKCAWNXIHCYOUPKQBEMUVIEBYFYJTRVXDHCIBIFDEPMJHDBMUVCQDFKXRRFT","1.33","0.38"},
{"Sprott","15","U","UOAUGGTFEKUAUJMBJRJYQQXYIMBIEEXPYHSUTVXRJGSSHSRSOMDPMLQKRGIVA","2.40","0.28"},
{"Sprott","16","U","URDNTMWHDVMWFNXILJHWBBXSHSSXSYSODWVWJSQMWIITXWHBNDHISNVKJOGWH","2.23","0.00"},
{"Sprott","17","U","UWBDELATGLQNRRWJMQMAIRVAIWSKPWVVOCMYQWOCEDNBNMVHPSGRGSYDHADVS","2.23","0.00"},
{"Sprott","1","U","UGLICIRJDBAEOQBFPHVDSPDIUVHNRQHCVYAEBCNPSFNBQGAQWQNKJDHQTPQPR","1.46","0.09"},
{"Sprott","2","U","UUHXPWNCEPURTFNMIOMYQOVRENSHECMCBGEDFHOKXESOIQNUGLDRHTFVNICEE","1.61","0.02"},
{"Sprott","3","U","UUJBACFHDEGOKAPREYHRDQAGWPWEWGNTXXWHPPBRCGFOLHOKQLXBIYJPQYYXL","1.55","0.00"},
{"Sprott","4","U","UBLFBKKFNATJVTJUKJFGALBIPQHVRUMAROTNVHBLAQVSHVHRGLFJAAABFRJFW","1.81","0.07"},
{"Sprott","5","U","UKDGJLEXISFBNTDVQVMXQFXCGMQKOSUHDOFPYOOECJEEOPMNLSQCPEYJEYIGO","1.10","0.16"},
{"Sprott","6","U","ULYMXJCIVBIBCHWVWSEEKQVKQIOJBQHQSHJOFBPPDWSMBTVSERGGYPPPATWSB","1.52","0.13"},
{"Sprott","7","U","UMALDKMYNVYSDIAQVVHAWOJGDLFHKPSQEDJWPSOQCBFHGYMIVIXGXYCITMAXH","1.33","0.10"},
{"Sprott","1","V","VFFSCILFFJKHLPTIXBMAJLOOIXCAIYHILEGQHADVECJFHRYWXBXOLMNCUDHJILAGGFMCPSDPKEMOHJAYDWXAGQVHVVHJIIEBONJCHSTCCXVHCEVXQGYQPCSJNPUUNHRYPQXBLLUURIXEB","2.15","0.00"},
{"Sprott","2","V","VFQGCVARGFCJIGFCJIYQWNAQARFLGRJHCABEJYGPTBQGWOWEKJTCFUJHJBJSODRBOYEAUFUCNWAJGVRNJNCGKVKBPBLVTPDELMLMBDAVFUSLIRRNBPWUNGNHUGLCFSXJGKYOSMEBKEHKY","1.55","0.53"},
{"Sprott","3","V","VGKEMAGQAQNXJEXJBSMEAXYCMKHYFGCIULBNEMFXSQCCOTXAUIWSFYKOEQGGJNJQYTTFWAQFIKTYKDBYTNGYKVEBRIABYHWJJLGUSPFUFOHINREPFALYEULXLMCQFBEVYWNXAJCPWVIJC","1.72","0.26"},
{"Sprott","4","V","VHTQNWHDQRFGFJXRDQYRWNCRCQFPSBSNVPESANICCHCSKCQQQMNCYLEEEHJGMKYLRJIWFEORUNBDYQWFHWGNIRSRKEFYOAFMGCRBBQXDPSCQGQYARKRIMHOPVKFINAHUXOTTLWMMKIBUQ","1.51","0.03"},
{"Sprott","5","V","VIPHNKSOEEWSDGCOABBNEJXOBCTAKHTDEHXIFJVHIRTQGXBOSRNRFRFRSJOJUOERMJTGMJBMMWJIKTMMIHBREBUXDQNEUYYYVLNIWJLMFQOQUEYEPDJGPJGLDMIHSFCJJLWCXEDDETIHB","2.32","0.27"},
{"Sprott","6","V","VJEVASEYAEKHGRQRDLPHAXOGBVIOCSXVLVWXGOBTFUMQTQXWSMHBQGBOUXRKYEPQKBRMRSPIFPGTBYVWFQRYGXBLBVVVELYDGKQFBVGFLJMXMBFJDTSUFPPYAVDCVDQGBMJRUBVLDOSXI","1.80","1.28"},
{"Sprott","7","V","VKCLEUHORCIEPAEPGXOXQICXPOMNDFWFOFEOSAQCERPLNFIQTPROJUBIITHOGKLCIIGENHRPIORNRXDRRISYFBBUFKBDKWSYBNORDVTFHPHDAURTMHPRVXVFWSGVHOGSCRDIKMXNCMRPI","1.90","0.04"},
{"Sprott","8","V","VBDIYXAGPEUVXXPCKVYCLPPRBAYDQTEIRDGMWBDIHIJAPGSLDYDLMTANMNMHNCLTYBJGXAYBJBLFJXDJRKOHCNPBIRTSLGSYSDOLUNAQTIJMNVOEIUOKAHLIXWPEMPQQFTMVPUFECMACT","1.69","0.60"},
{"Sprott","9","V","VHETJPMKNMHQNUVBIOTFADJUXXIQRSGDSNXAGNEKPMCJRIDEHOFTVTPLWUFLNDCWLKHXKKELUMBDOHSIBSDEWWSPLQVMWLQERMCANDUBCXULQWYGOTLGLLQFSJGVQEUIEQQXXWGEKVTPA","1.03","0.14"},
{"Sprott","10","V","VMMKMRMREPCPYAFRGJBOTPHNQRFXVNSNYQVJNBXXPKRPVHFQAFGFSTHYFKCIDWXOQJAKRFKHPYHNENTDQLJMQGMXTFPBDFUIPAIODWYAMTXJDIWGERTHDOKWFXPLSWFYPXNQMNOBKILSG","1.84","0.44"},
{"Sprott","1","W","WJCUJYONOYWSFMVSWQXTDCQTPWHWTFDISTVUNKMJGMUWRSGQIBVGUFVKPURLEQKTDUGOLJFQVVMPVBLMEHQBWHLHAXMQYTLNVMYDRQOCCKXREWDLUYMHONCRWVSEIUOJJCKIGQVOFQAXIAXCQVNNMJONXITKIDNVQSRSGWRYYBIYDHASUMAYMCHOUOPKKBKBJSTWSCVDVXDUSWXWOTQMKAYWQNPBGSHNWSGWRBUSGELGAASIBFBJUPQBIDABHCIRJEKRVSMYDRWQADIAGRNAKYYAD","1.62","0.36"},
{"Sprott","2","W","WJUKEUQUEHVWQKIVEHANFQCPGOYIGJCQUKIDROQLRFRHPMYDLFSQIOXUSODQQOPBAPNMWDLDNLITGAIXAFKFBKYUHGNPIGWXKFEEADWMAGYGGBWSSFVIBAJWJVFQGBGBNKYAJOQJADSVEMTHDRINKSTALPSNXORTFLGYYRRBLBMNKDCMWRPGVRTHHKKSDDTOBLVSGDGORQIMSAUKBIYRGLPJLPCPHFAXKFAHCGSFRSMYJPTDNGYEWSNESCHRCPLQHNOWVADJXCXFDVMSQRSYOQHEY","2.62","0.00"},
{"Sprott","3","W","WKDEDPGPQXLGMOYNFBMPSIYDQNGTDIYKHFLSCRYLVKRESBDQHBRSEHGXGELVCXDVBMQVSAOPDSITCQNBNNHUXYFAEIBOGSJMHWHTNKOHBLOHBLQBRDPNKCXEOOHMUSHPGFYNYOTLVUIIEMUNBIFHSGXOLKGBINCAPFRQVURUHEUIVARQWIWUYNECWWCVCGHINKEKFEATHVRCCHXHIROARIAFBWHHQMUTNVSEKQJJQWCGSCULQURQSNHGQAREIPCAJYXOFWJKKSNJDVYEUEPJBHELO","1.76","0.18"},
{"Sprott","4","W","WKLAAVLORDCHCPKWGNJLIXUHKAUWAREVFQSGSIKIWRQJLTRHNFUOYOEVAXJXYSTWXRYGEMQYQKEARQULSQWQIYOXEBXMFPBEOEUFTQDGSBJELDIJTEGAOHRRXDNOQFTCARAUWJLICIUKHCCAKPMTTRQAWFFWLUTLRNUJTXMALIIKBUBEVNIVMLUJTYWLPOIORFVADRHKVFCAEWRXOKSIBGUOKKBEREBMJHBEXYMJHXXMTELYSKXYSKVJCSLFSHLHPTWEGKPPGYYSPFWGNEHAVERBY","1.46","0.41"},
{"Sprott","5","W","WNFIDCJHJODNDTYMYSQPICGMDDCQYEODQHCIPAYOIERSSDVFVHQOACKDEJIKPOKVVSYAQOJPHJJXUHKYJSTGNSLFFITGPJEAUHJYLEYASIXWXFPGGBGPPMDERGKEMYNIHXRXHFPMJXEEKRFVJNVDIHGJUMWYTIEQWSAROHRUNDCYSGNQEANEWJQXHRPUDCBHXGAOHTWRKKSDAEDJYNSNARSXVUQIVWPGVVGYQQRBGODPJFYDWQQXTWPJDOKQEQHESDNCOEBMLKELJBMGHAMWETWDU","1.66","0.00"},
{"Sprott","6","W","WNHRNECEKBNTNSVBIBKNTHKYDMTDJOPAMRHQVLMOOKKCSSJETXHQFAPEEMBCJKVKBSFRDOLQJDUYVFBNGWCFNBDHTPCNODDRQUYRGXQEILCNBKRXWIGVLQMISJJXRWEUOLOTXQKAIGLOASPRAXQTEVJXGTABDDKTRGYQMBCIOKCXUHGNPXFCIMGFQMVIGYRHTQGSXOANGWBSKQVIKNCTSEEWDHOWFNWBDRKYTSLGGTKUMAWNUNTONPWMAVOTUKSYGRQGIIRGELFRKPMVPYKKKGCLL","2.21","0.17"},
{"Sprott","7","W","WTQRFNAVWGUNPKGINIXKVCVSOCGUJQDUHTMTKSROOXVKTONNHQJFHVUGKGDDJCEHHXLSVOMVDDQYMTKRVYTWRWJNGSXHDHGNRVFXNNSWINEDCAAFQBQJMRSULFUIBEKGHMEQDDRKAGWNGDCWQLXVTQABHNMOBBGHHERNQVNVWQLMAQQBPFRLAUCOQYBBSUEISAEKRJOHWMHNWTKFPKGJBLHVBGVNWSEQYXBRAFBXVJWRXRJOECFSLIQBVGXRJVVDAKIEYCCJHEERAYSCRLEVNHGER","1.78","0.47"},
{"Sprott","1","X","XJUSDQKDEJYCDRBCBQFKKINFBFCIHLYWDDGHDSYQPKWIAGKVETECIWFODMNAIJKATEBDCFMIYBYSGPFNLFPNCCDVATVLWBJCPBEXWVUPBWTJSTUUYEXOBEDDUXJNIFUUWAXIJEMTPCXKILNVLYOSNTLFTBTFMFWLBJYUHLJMEPKJXWTYIWJDPCLJIRQSROTUBHQWBMBDIYIEBCPMLBSOVXKDDKTOHRLFGJKKLGJAONUQXJYXHEPXMGROTIMOPSWHQJDELFHMAGFRPLBJIQQUKNNEWQGHRGSWNNUNIMNALFLPBGNHFYDKPDOWPKUGIMYHYTPAOHXUOTCPAVAQLOADUHOVFDSJRMIDHBPXYJDLRIPCVJBFXEQYIDDYFEICPTPLGUNRSWXJYHGQKNETCYEFRNYUSSDGXSWRBAPNFKNMAUHMHXYTUQMPXQMGSJSVFKTMJKNINYUFOBEFYGKCWIJWAEMOMTTRWBJTYOITXIJWGVGAPHMENULICMSSQ","1.65","0.33"},
{"Sprott","2","X","XNOYBECRSMOTWDWDPQGPJPPEOSJLUBTKKGOPWQGQTSPBMISYTUVHNWWXUIGGJRFKSMRAEHMLYHQCILLLKBKJJDWSUFQYAUETYMVJLCAPSUSCBUHYFTTTAGOYFVEEJXIDKCPOGBUSRXIOOAUAAKTEUXIGICEGWVULNLHBHJOLDETAXFICCSLITVXTJREJGDTSHIEJGNVHLRYTEQVNKHJBVAFGJMVQFSFPGDEFCQAEFQXFGPEROFUTWBPRFUEBNYBYMYMINMOLACTXNBWFVCHETYYKNCISHRRSUUTFWKXMUALWPESAGWQHTRBWFATKQKEAEBRGTQHDUEYMJYGIGMNPULLCFVYLMXINBUASIBHYRMKDXHMSAGSCHLVRUDLJOVIHQVTKOCCUCQSWWJKMPDROPWXFPSJLKDEIDMFXUHWFQSBLBNAISWNSWXEPCUXUAHCSVUWYGLLXNPCRXJFQYSYJJXMIWTWVPINIRPUMSDWPCTMQGWVELQMOFEBUB","1.50","0.58"},
{"Sprott","3","X","XPOOCSENDLUDHWQRTQDCQDHPWSTUYDLBKQKWIAKNPVLAFNNANJXBYNSYPASAGDEDHTDMWKRVUMRRNQIOFDKBJYQTHFYALOAPCYUORXLYQKKBDFKFYSXDIHSPKGUDUVVMGDAIQHEDMURPYAQRONAFMJIXKGLQVNXDYBKYMMHHHYVVGYDAKBLMDJMYOYFCIPCVYCCTDREHEPFEYUHUHUVRQCMBYPXUIDLUIVDLJJBNDNGERYWLFDNLGKDRYUDPVWCWNACGGKYBIEIKVKNRNFVFEVMXMHIMJGKSMQEOQFVVCBPJTYTXYVSPOQYOAPEOMXOQBHDLIBWPNHOUPUUXJXJPYOSUGQHJCEQDNAFAXDEGRJPMBKSUNCHBELOANHOQUYSWITSYNKYUMUKFPNMKGXPMTRHYIADGKKFPHAKGMONALAXAICFVKURUQGSEPDAIUPMQSEOFIDUQUEKBKGTPBYRMWUEFGEHSUDJJKBDVKCDXNIXEARYBSNEAXGCAK","1.38","0.14"},
{"Sprott","4","X","XRDYAOEYFENFXMQMXXPSSCWORVLAKLAFXSADHCQGWDRGUXUKURRLOAQTDYUAVCPJPUPCTPLWVIOXMCCHRUYNNPGYYYBTSOHALFLBLBGQVIXKUJDSCTPFDLXJOBXLKDBTDANERYUDESXIIRMJFBOSGBMIAJKCRXXNLYQAFVBACVXQVMRTJFUUGIGOBPCKAKOKPBWMRQQYVYGJWPOKTEHEBWCYYIBXVOLKVFGHDPQAOQKQUSCLDCLRBDPIIFRCMLULATVPCDSXRDIOYILULOUUCFRUGWWXAJRHNOIEHIUPMMCLPJSOLVOTTKGQNRNALLDKIIOVAQNAKEQLETILABCROPKFXXTPHGVPGUQLQIHJGODMSVDWCGPKYKJAJNMMJBIUJKYPHFYBHPEAOBETXFGKPJKTDOVEPQMHCWNARVTVIIMKUPCMUNTFLQAVWPYABQLNYEAHFIMQRLGHJYDLIGQFAGAYKNQVOSXWSLHUFTQRWIHWFDJCELYGHXFMQ","2.31","0.24"},
{"Sprott","5","X","XTPXAPOKYSXEJCLEHGQGYXTGILQANWASHNBSHSWNQHHUPOSBWSXDDRPUQPTJVPGANCRXHBFOMHXHEJKHRTIHHPBRPVEXOCFFNUUUUHUHKSHYCTJGAJMJAMUKIMQJOBQDGPDBLBNLMVAFNYGWCJUPWHNMWOLTINFJUEMSNMKUMABSHYBRTAHJRDTFGIYXOMFAYVXXSSXIUQFBGOETJKKTNVQPBFPQOCXNQJVROLJOSXIQFUAGANAJYQIXHCTJLLQAHEJODVVDGJMPBNRGFFJOYGADQESGDHSCORYQCGPYNTBMUDDOGLEKUOMQTNEXSXOQKMEHFFAGTQYIFVDRCGDTSUKEBNPPXDHHNKNOTEKMWDHDLGNEJUITQNGXDLBNGWSYJARIIIGCQGGGQUTTCJYUQNFWWTWBDIHXARWNFIFSMUNWLAPIYTBDVGVCWCPUIMFWWKYQOKKOPGXCRFSEUPOKHYTPOTECMIOHCSFGSWYCUBPAAQEDAMITQSHTG","1.81","0.45"},
{"Sprott","13","Y","YBTDNPHIJTI","1.26","0.08"},
{"Sprott","14","Y","YCHTPNOBABB","1.01","0.19"},
{"Sprott","15","Y","YCMCCMMWMMM","1.42","0.11"},
{"Sprott","16","Y","YDGPCXGXTIW","1.71","0.15"},
{"Sprott","17","Y","YKXILQORBNP","1.16","0.02"},
{"Sprott","18","Y","YOBLSVULUCA","1.41","0.19"},
{"Sprott","19","Y","YPSRTGNDKND","1.74","0.32"},
{"Sprott","20","Y","YYEQLKXBMXA","1.66","0.25"},
{"Sprott","1","Y","YAMHDWIODTE","1.49","0.09"},
{"Sprott","2","Y","YAQCXBTDRHF","1.43","0.36"},
{"Sprott","3","Y","YBJSRTYCQLD","1.50","0.22"},
{"Sprott","4","Y","YDNBSGGTQDW","1.39","0.15"},
{"Sprott","5","Y","YEBYSXDGLVB","1.54","0.42"},
{"Sprott","6","Y","YELRVNTLOBU","1.34","0.21"},
{"Sprott","7","Y","YHKTEILDYRK","1.20","0.01"},
{"Sprott","8","Y","YLNVRNDFOTX","1.30","0.12"},
{"Sprott","9","Y","YOJMOEAKWYV","1.00","0.02"},
{"Sprott","10","Y","YSMLSCXTGBR","1.20","0.03"},
{"Sprott","11","Y","YVBTGBLJNUB","1.42","0.41"},
{"Sprott","12","Y","YWOABOXTDFD","1.48","0.32"},
{"Sprott","16","Z","ZHXMLJJRQEDNPRB","1.44","0.14"},
{"Sprott","17","Z","ZIDYKMPGDIGTLSO","1.56","0.01"},
{"Sprott","18","Z","ZMEQGDPOPAFRAES","2.12","0.03"},
{"Sprott","19","Z","ZOCYAXYFJKEBRPH","2.13","0.03"},
{"Sprott","20","Z","ZOFFLRTEFSDFPKP","1.62","0.04"},
{"Sprott","21","Z","ZTXNODBPWLDVKNN","1.91","0.13"},
{"Sprott","22","Z","ZVPTKKHLBASNMXF","1.48","0.01"},
{"Sprott","23","Z","ZXQUMEEGHXINYBM","1.44","0.03"},
{"Sprott","1","Z","ZAMWBPMDUAXGGLB","1.47","0.13"},
{"Sprott","2","Z","ZBBCMQDQKTJPSUR","1.15","0.02"},
{"Sprott","3","Z","ZCBINUXAKUFLEAK","1.59","0.06"},
{"Sprott","4","Z","ZCTFTHMKITVNFFG","1.69","0.08"},
{"Sprott","5","Z","ZEIVGPLCKGALTXT","1.41","0.01"},
{"Sprott","6","Z","ZFPEIBFLSVWGFPA","1.09","0.01"},
{"Sprott","7","Z","ZKRFMRHHAVUOIKM","1.16","0.02"},
{"Sprott","8","Z","ZLFBPYYLFUKMSED","1.18","0.01"},
{"Sprott","9","Z","ZMEROSWMYGDQTKO","1.87","0.01"},
{"Sprott","10","Z","ZMIVEQTDVEEOWVN","1.70","0.03"},
{"Sprott","11","Z","ZNFEMVRCISEHSIN","1.28","0.03"},
{"Sprott","12","Z","ZNVIDLJDFUUQUBK","1.04","0.03"},
{"Sprott","13","Z","ZOCGMCVDMPDFMHJ","1.64","0.06"},
{"Sprott","14","Z","ZRLDWMOJKXHBLAN","1.73","0.03"},
{"Sprott","15","Z","ZSVGLBHQEXQQMEE","1.21","0.01"},
{"Sprott","3","[","[ADXWOPTELDGTHI","1.35","0.17"},
{"Sprott","4","[","[BLWBPPFGISPNVL","2.36","0.47"},
{"Sprott","5","[","[CBJGRMDVWFYXPI","0.89","0.24"},
{"Sprott","6","[","[EQBRGLHUWJGJAJ","1.76","0.12"},
{"Sprott","7","[","[LDTQTTLAKDRIEN","0.61","0.37"},
{"Sprott","8","[","[TTKFUVIJVWAJXS","0.98","0.07"},
{"Sprott","9","[","[TTOLLROXHSWIUS","1.31","0.08"},
{"Sprott","10","[","[WJSFLSKWACFVHI","1.50","0.04"},
{"Sprott","1","[","[IAWNTNHKJOCOSY","1.32","0.33"},
{"Sprott","2","[","[JJMLWFVTUKDTTQ","1.97","0.20"},
{"Sprott","14","\\","\\CDYVWGQYVUBQOBMVBD","1.54","0.32"},
{"Sprott","15","\\","\\GHBBADGTAYVMKIBSLG","1.55","0.15"},
{"Sprott","16","\\","\\HPBAJVWNAHSWRJWBXM","1.64","0.16"},
{"Sprott","17","\\","\\JEUALUVCWBLEXYCAVH","1.64","0.31"},
{"Sprott","18","\\","\\RQYUANROUUDKJQSTKU","1.53","0.09"},
{"Sprott","19","\\","\\TXBGOYYMWONUYGMBXX","0.76","0.25"},
{"Sprott","20","\\","\\UMLPFJYBIWSRAAOSKM","1.49","0.18"},
{"Sprott","21","\\","\\WJPOONBLHLADVDVCCR","1.62","0.20"},
{"Sprott","1","\\","\\ASEFAHYBJUVPHIMWYT","1.54","0.27"},
{"Sprott","2","\\","\\BBTXCFCJUGDJXKONUH","1.56","0.12"},
{"Sprott","3","\\","\\IUPGKKXXOTAUMPEPDN","1.30","0.29"},
{"Sprott","4","\\","\\JISPFOVANDEBNXUWBY","1.48","0.21"},
{"Sprott","5","\\","\\JJIASHWXGPXCGROCWG","1.36","0.17"},
{"Sprott","6","\\","\\KBDABMSIBRWMQNMUKW","1.69","0.21"},
{"Sprott","7","\\","\\LLXGLCOXAJDQJOICVC","1.70","0.10"},
{"Sprott","8","\\","\\MEOANCSXDVGCVLGHQT","1.65","0.10"},
{"Sprott","9","\\","\\NBIAYCYGUSVJFXEJGA","1.32","0.29"},
{"Sprott","10","\\","\\NGPKOPDSBDCBGVBBPP","1.58","0.12"},
{"Sprott","11","\\","\\SCNPBHGXICIDBPKQSI","1.48","0.20"},
{"Sprott","12","\\","\\TOFXBCFVQIXXQUWDXB","1.41","0.19"},
{"Sprott","13","\\","\\TTKFATYUYRXVWLWHQB","1.06","0.19"},
{"Sprott","16","]","]BDRSYI","1.00","0.02"},
{"Sprott","17","]","]DBYHVD","0.91","0.10"},
{"Sprott","18","]","]DTDQCM","0.95","0.03"},
{"Sprott","19","]","]ICUEBE","1.08","0.04"},
{"Sprott","20","]","]KUTEEL","1.03","0.02"},
{"Sprott","21","]","]PFXOTL","0.98","0.04"},
{"Sprott","22","]","]PHXUEG","1.28","0.02"},
{"Sprott","23","]","]RWTKEE","1.15","0.03"},
{"Sprott","24","]","]SRBOSW","0.98","0.02"},
{"Sprott","25","]","]XEUOII","1.06","0.03"},
{"Sprott","1","]","]CDUHTE","1.10","0.04"},
{"Sprott","2","]","]FDDLCE","1.06","0.03"},
{"Sprott","3","]","]HDFNTE","1.20","0.03"},
{"Sprott","4","]","]HGEWRK","1.17","0.02"},
{"Sprott","5","]","]KFUDSM","1.21","0.02"},
{"Sprott","6","]","]KSFJWS","1.02","0.01"},
{"Sprott","7","]","]LTDADG","1.09","0.03"},
{"Sprott","8","]","]MSDXEI","1.03","0.03"},
{"Sprott","9","]","]OTYGNE","1.43","0.05"},
{"Sprott","10","]","]QFWSDE","1.16","0.02"},
{"Sprott","11","]","]RBFMSH","1.10","0.02"},
{"Sprott","12","]","]SBSMKG","1.34","0.04"},
{"Sprott","13","]","]VEIVIK","1.01","0.01"},
{"Sprott","14","]","]WXSAGJ","1.07","0.03"},
{"Sprott","15","]","]YDUCBE","1.07","0.01"},
{"Sprott","4","^","^GHXTOKLXT","2.59","0.25"},
{"Sprott","5","^","^VSFFNSLIK","2.37","0.16"},
{"Sprott","6","^","^VYGJBPIJN","2.02","0.17"},
{"Sprott","7","^","^WQEODHNPH","2.39","0.17"},
{"Sprott","8","^","^XXDJQPIOL","2.10","0.16"},
{"Sprott","9","^","^YTEODIMIF","2.68","0.19"},
{"Sprott","10","^","^YVFQFFLTC","2.69","0.15"},
{"Sprott","11","^","^YXBHQPEIC","1.40","0.06"},
{"Sprott","12","^","^YXEHASJJV","2.32","0.30"},
{"Sprott","1","^","^EAVTPDJJI","2.28","0.20"},
{"Sprott","2","^","^UTKLLWIDM","2.22","0.21"},
{"Sprott","3","^","^VRDSNKGRT","2.28","0.24"},

};

public void fill(int a,int b,Color cola,Color colb)
	{
	int cr; int cg; int cb;
	Color col;
	for(int i=a+1;i<b;i++)
		{
		cr=cola.getRed()+(i-a)*(colb.getRed()-cola.getRed())/(b-a);
		cg=cola.getGreen()+(i-a)*(colb.getGreen()-cola.getGreen())/(b-a);
		cb=cola.getBlue()+(i-a)*(colb.getBlue()-cola.getBlue())/(b-a);
		col=new Color(cr,cg,cb,255);
		COLR[i]=col.getRGB();
		System.out.println(""+i+" "+COLR[i]+" "+cr+" "+cg+" "+cb);
		}
	}

public void setcolors(int nb) /* Set colors 5600  18 ou 255*/
{
nbcolor = nb;                   /* Number of colors */
COLR4[0] = 0xFFFF0000;					/* pour 3emedim en bande */
COLR4[1] = 0xFF00FF00;
COLR4[2] = 0xFF0000FF;
COLR4[3] = 0xFFFF00FF;

if (nbcolor<20)
		{
		COLR[0]=couleur_fond;	/* 0xFFFFFFFF */
		COLR[1] =0xFF000080; /* navy */
		COLR[2] =0xFF0080A0;
		COLR[3] =0xFF00AAC0;
		COLR[4] =0xFF00FFFF; /* aqua */
		COLR[5] =0xFF80AAFF;
		COLR[6] =0xFFAA80FF;
		COLR[7] =0xFFFF00FF; /* fushia */
		COLR[8] =0xFFAA80AA;
		COLR[9] =0xFF80AA80;
		COLR[10] =0xFF00FF00; /* green */
		COLR[11] =0xFF80AA00;
		COLR[12] =0xFFAA8000;
		COLR[13] =0xFFFF0000; /* red */
		COLR[14]=0xFFFF8000; 
		COLR[15]=0xFFFFAA00; 
		COLR[16]=0xFFFFFF00; /* yellow =*/
		COLR[17]=0xFFFFFF80;
		COLR[18]=0xFFFFFFFF; /* white */
		COLR[19]=0xFFFFFFFF; /* white */
		}
	else
		{
		COLR[0]=couleur_fond;
		COLR[1]=Color.blue.getRGB();
			fill(1,40,Color.blue,Color.green);
		COLR[40]=Color.green.getRGB();
			fill(40,80,Color.green,Color.magenta);
		COLR[80]=Color.magenta.getRGB();
			fill(80,120,Color.magenta,Color.orange);
		COLR[120]=Color.orange.getRGB();
			fill(120,160,Color.orange,Color.red);
		COLR[160]=Color.red.getRGB();
			fill(160,200,Color.red,Color.orange.darker());	
		COLR[200]=Color.orange.darker().getRGB();
			fill(200,240,Color.orange.darker(),Color.yellow);
		COLR[240]=Color.yellow.getRGB();
			fill(240,255,Color.yellow,Color.white);
		COLR[255]=Color.white.getRGB();
		COLR[256]=Color.white.getRGB();
		}
}

public void initialise() /* Initialise 1300 */
{
cls();
//setcolors();                  /* Set colors */
if ((type_attract>=10) && (type_attract<=14))
	{if (attracteurs[numattract][1].equals("Field, Rotations et Symetries5"))
		{iter_min=10000;}
	else
		{iter_min=4000;}}
else
	{iter_min=1000;}

/* if (search_mode == 2) {
	NE = 0;
	fclose(F1);
	F1 = fopen("SA.DIC", "a");
	fclose(F1);
	F1 = fopen("SA.DIC", "r");
	} */
	
}

public void setparameters() /* Set parameters 1500 */
{
X = x0;                    /* Initial condition */
Y = y0;
Z = z0;
W = w0;

XE = X + .000001;
YE = Y;
ZE = Z;
WE = W;

index_500 = 0;
LSUM = 0;
nbiter = 0;
NL = 0;
N1 = 0;
N2 = 0;
XMIN = 1000000;
XMAX = -XMIN;
YMIN = XMIN;
YMAX = XMAX;
ZMIN = XMIN;
ZMAX = XMAX;
WMIN = XMIN;
WMAX = XMAX;
TWOD = Math.pow(2.0, nbvar);
}

public void getcoefficients() /* Get coefficients 2600 */
{
x0=v05;
y0=v05;
z0=v05;
w0=v05;
zoom=1.;

if (search_mode == false) 
		{           /* in evaluate mode */ 
		str=attracteurs[numattract][3]; 
		for (int i=0;i<515;i++)
			{attract_code[i]='M';}
		for (int i=0;i<505;i++)
			{A[i]=0;}
		for (int i=0;i<500;i++)
			{x500[i]=0;y500[i]=0;z500[i]=0;w500[i]=0;}
		for (int i=0;i<str.length();i++)
			{attract_code[i]=str.charAt(i);}
		for (int i=0;i<5;i++)
			{XN[i]=0;XY[i]=0;}
		getdimension();       /* Get dimension and order */
		//setcolors();          /* Set colors */
		}	
else 
	{          /* en search mode - nbvar et type_attract predefinis - seul degre est random */
	double x=generator.nextDouble();
	degre = 2 + (int) Math.floor((degre_max - 1) * x);
	nbvar=NBVAR;
	if (TYPE_ATTRACT>1) {nbvar=4;}
	if (TYPE_ATTRACT>9) {nbvar=2;}
	if ((TYPE_ATTRACT==29) || (TYPE_ATTRACT==30)) {nbvar=3;}
	if (TYPE_ATTRACT==1) if (nbvar<3) {nbvar=3;}
	type_attract=TYPE_ATTRACT;
	if (type_attract<2){attract_code[0] = (char) (59 + 4 * nbvar + degre + 8 * type_attract);} // sprott
	if ((type_attract>=2) &&(type_attract <= 7)) {attract_code[0] = (char) (87 + type_attract);} // special functions y z ...
	if (type_attract >= 10) { attract_code[0] = (char) (25 + type_attract);} // new functions # $ .... 0 1 2 ...
	
	getdimension();              /* Get value of index_coeff */
	if (type_attract<9)
		{ /* sprott */
		for (I = 1; I <= index_coeff; I++)    /* Construct attract_code */
	   {randomnumbers();          /* Shuffle random numbers */ 
	   attract_code[I] = (char) (65 + (int) Math.floor(25 * RAN));	/* de -1.2 a 1.2 */
	   }
	  }
	else
		{ /* new functions */
		for (I = 1; I <= index_coeff; I++)    /* Construct attract_code */
			{randomnumbers();          /* Shuffle random numbers */ 
			attract_code[I] = (char) (65 + (int) Math.floor(25 * RAN));	/* de -1.2 a 1.2 */
			A[I]=(65.+25*RAN-77.)/10.0;
			B[I]=RAN;
			}
		 if (type_attract==10)	/* symetric icon, rotation sans symetrie, omega!=0 delta=0 */
	   		{
				A[1] = 3+9*B[1];	 n=(int) Math.floor(A[1]+0.1);degre=n;
				A[2] = -3+6*B[2]; lambda=A[2];
				A[3] = -3+12*B[3];	alpha=A[3];
				A[4] = -2+3*B[4];	beta=A[4];
				A[5] = -1+3*B[5];	gamma=A[5];
				A[6] = -1+2*B[6];	omega=A[6];
				delta=0;
				np=0;						
	   		}
	   if (type_attract==11)	/* symetric icon, rotation et symetrie, omega=0 delta=0*/
	   		{
				A[1] = 3+9*B[1];	n=(int) Math.floor(A[1]+0.1);degre=n;
				A[2] = -3+6*B[2]; lambda=A[2];
				A[3] = -3+10*B[3];	alpha=A[3];
				A[4] = -2+3*B[4];	beta=A[4];
				A[5] = -1+3*B[5];	gamma=A[5];
				omega=0;
				delta=0;	
	   		}
	   	if (type_attract==12)	/* symetric icon rotation symetrie et irregularite omega=0 delta*/
	   		{
				A[1] = 3+9*B[1]; n=(int) Math.floor(A[1]+0.1);degre=n;
				A[2] = -3+6*B[2]; lambda=A[2];
				A[3] = -3+10*B[3];	alpha=A[3];
				A[4] = -2+3*B[4];	beta=A[4];
				A[5] = -1+3*B[5];	gamma=A[5];
				omega=0;
				A[6] = -1+2*B[6];	delta=A[6];
				A[7] = 9*B[7];	np=(int) Math.floor(A[7]);
	   		} 
	  	if (type_attract==13)	/* fractal ifs sans symetrie*/
	   		{
	   		A[1] = 3+9*B[1]; n=(int) Math.floor(A[1]+0.1);degre=n;
	   		A[8]=0.;
	   		if ((Math.pow(A[2],2)+Math.pow(A[4],2)>1) || (Math.pow(A[3],2)+Math.pow(A[5],2)>1) || (Math.pow(A[2],2)+Math.pow(A[3],2)+Math.pow(A[4],2)+Math.pow(A[5],2)>1-Math.pow((A[2]*A[5]-A[4]*A[3]),2))) {x0=3000000.;} // test d'application contractante
	   		}
	   	if (type_attract==14)	/* fractal ifs avec symetrie */
	   		{
	   		A[1] = 3+9*B[1]; n=(int) Math.floor(A[1]+0.1);degre=n;
	   		A[8]=1.;
	   		if ((Math.pow(A[2],2)+Math.pow(A[4],2)>1) || (Math.pow(A[3],2)+Math.pow(A[5],2)>1) || (Math.pow(A[2],2)+Math.pow(A[3],2)+Math.pow(A[4],2)+Math.pow(A[5],2)>1-Math.pow((A[2]*A[5]-A[4]*A[3]),2))) {x0=3000000.;} // test d'application contractante
	
	   		}
	    if (type_attract==15)	/* quilt carré rotation symetrie omega =0 */
	   		{A[5]=0;
	   		if (B[5] < .5) {A[5]=1;}
	   		A[6]=Math.floor(-1+B[6]*3.1);
	   		}
	   	 if (type_attract==16)	/* quilt carré rotation omega !=0 */
	   		{
	   		A[6]=0;
	   		if (B[6] < .5) {A[6]=1;}
	   		A[7]=Math.floor(-1.1+B[7]*3.1);
	   		}
	   	 if (type_attract==17)	/* quilt hexagonal rotation symetrie omega =0 */
	   		{
	   		A[5]=Math.floor(-1+B[5]*3.1);
	   		}
	   	 if (type_attract==18)	/* quilt hexagonal rotation omega !=0 */
	   		{
	   		A[6]=Math.floor(-1+B[6]*3.1);
	   		}
	  	if (type_attract==19)	// quadrup two 34 1 5
				{
				}
		if (type_attract==20) // ikeda
			{A[1]=0.65+B[1]*(1-0.65);}
		if (type_attract==21)	// martin  3
			{
			}
		if (type_attract==22)
			{
			}
		if (type_attract==23)	// hopalong
	  	{
	  	A[1]=-10+B[1]*20;
	  	A[2]=-10+B[2]*20;
	  	A[3]=-10+B[3]*20;
	  	}
		if (type_attract==24)  // mira
	   		{
	   		A[2]=0.96+B[2]*(1.05-0.96);
	   		A[1]=-1+B[1]*(1+1.05);
	  		}   
	  if (type_attract==25)  // mira gunwoski
	   		{
	   		A[2]=0.98+B[2]*(1.05-0.98);
	   		A[1]=-1+B[1]*(1+1.05);
	  		} 
	  if (type_attract==27) // ham
			{A[1]=B[1];
			A[2]=B[2];
			A[3]=1+B[3]*2;}
	  if (type_attract==28)	// threeply   -55 -1 -42
			{
			}
	   if ((type_attract==29)|| (type_attract==30) || (type_attract==31))  // pickover et bis  et peter de jong
	   	{
	   	A[1]=-3+B[1]*6;
	   	A[2]=-3+B[2]*6;
	   	A[3]=-3+B[3]*6;
	   	A[4]=-3+B[4]*6;
	   	}
	  if ((type_attract==32) || (type_attract==33))  // swinson et clifford
	   	{
	   	A[1]=-3+B[1]*6;
	   	A[2]=-3+B[2]*6;
	   	}
		}
	attract_code[index_coeff + 1] = 0;
	}

if (type_attract<9)
	{
	for (I = 1; I <= index_coeff; I++) 
		{  /* Convert attract_code to coefficient values */
		if ((hamiltonien == true) && (search_mode == true))
					{
					if (NBVAR == 2)
						{
						if ((I > degre ) && (I != index_coeff / 2 + 1)) { attract_code[ I ]= 'M';}	/* 0 */
						attract_code[ index_coeff / 2 - degre + 1] = 'W';		/* 1 */
						attract_code[ index_coeff / 2 + 2]= 'C';					/* -1 */
						}
					}
		A[I] = (attract_code[I] - 77) / 10.0;
		if (attract_code[I]==' ') {A[I]=0;}
//	System.out.println(""+A[I]+"-"+attract_code[I]+"-");
		}
	}
else
	{ // new functions 0..9
	if (search_mode==false)
		{
		j=1;
		str=str+"      ";
		for (I=1;I<=index_coeff;I++)
			{
			k=str.indexOf(" ",j);	
			try
		     	{A[I]=Double.parseDouble(str.substring(j,k));;}
	    catch(Exception ee)
	     		{A[I]=1.;	System.out.println("parse coeff faux"+str+j+" "+k+" index="+index_coeff);}
			j=k+1;
			}
		if (type_attract==10)	/* symetric icon rotation sans symetrie , omega!=0 delta=0 */
	   		{
				n = (int) Math.floor(A[1]+0.1);
				lambda = A[2];
				alpha = A[3];	
				beta = A[4];	
				gamma = A[5];
				omega = A[6];
				delta=0;
				np=0;		
				}
		if (type_attract==11)	/* symetric icon, rotation et symetrie, omega=0 delta=0*/
	   		{
				n = (int) Math.floor(A[1]+0.1);
				lambda = A[2];
				alpha = A[3];
				beta = A[4];
				gamma = A[5];
				omega=0;
				delta=0;		
				}
			if (type_attract==12)	/* symetric icon rotation symmetrie et irregularite omega=0 delta*/
	   		{
				n = (int) Math.floor(A[1]+0.1);
				lambda = A[2];
				alpha = A[3];
				beta = A[4];
				gamma = A[5];	
				omega=0;
				delta = A[6];
				np = (int) Math.floor(A[7]+0.1);		
				}
			 if (type_attract==13)	/* fractal ifs rotation*/
	   		{
	   		n = (int) Math.floor(A[1]+0.1);
	   		A[8]=0.;
	   		}
	   	if (type_attract==14)	/* fractal ifs rotation et symetrie */
	   		{
	   		n = (int) Math.floor(A[1]+0.1);
	   		A[8]=1.;
	   		}
	    if (type_attract==15)	/* quilt carré rotation symetrie omega =0 */
	   		{
	   		}
	   	 if (type_attract==16)	/* quilt carré rotation omega !=0 */
	   		{
	   		}
	   	 if (type_attract==17)	/* quilt hexagonal rotation symetrie omega !=0 */
	   		{
	   		}
	   	 if (type_attract==18)	/* quilt hexagonal rotation omega =0 */
	   		{
	   		}
		}
	} 

if ((index_coeff>1) && (A[2]!=0))
		{modifcoeff=2;}
else
		{modifcoeff=1;}
if ((type_attract>9) && (type_attract!=34) && (type_attract!=35)) {x0=0; y0=0;}	
if ((type_attract>=10) && (type_attract<=12))
	{x0 = .01; y0 = .003; modifcoeff=2; /*x0 = 0.001;  y0 = 0.002;*/};
if ((type_attract>=15) && (type_attract<=18))	{x0 = .1; y0 = .3;}
if (type_attract==13) {x0=0.1; y0=-0.01;}
if ((type_attract==24) || (type_attract==25) || (type_attract==22)) /* mira et martin*/
	{x0=10;
	modifcoeff=1;}
}

public void randomnumbers() /* Shuffle random numbers 2800 */
{
if (V[0] == 0) 
	{for (J = 0; J <= 99; J++) {V[J] = generator.nextDouble();}}
J = (int) Math.floor(100 * RAN);
RAN = V[J];
V[J] = generator.nextDouble();
}
 
public void getdimension() /* Get dimension and order 4700 */
{
multipoint=false;
grossit=false;
if  (attract_code[0]<=63) // new functions : 0..9
	{
	type_attract=attract_code[0]-25;
	nbvar=2;
	degre=0;
	if (type_attract==34) {nbvar=1;}
	if ((type_attract==29) || (type_attract==30)) {nbvar=3;}
	special_functions();	// uniquement pour calcul index_coeff
	}
else
	{ // sprott
	nbvar = 1 + (int) Math.floor((attract_code[0] - 65) / 4);
	if (nbvar > 6) {
		type_attract = attract_code[0] - 87;
		nbvar = 4;
		special_functions();              /* Special function */
		}
	else {
		if (nbvar > 4) {
			nbvar = nbvar - 2;
			type_attract = 1;
			}
		else type_attract = 0;
		degre = 2 + (attract_code[0] - 65) % 4;
		index_coeff = 1;
		for (I = 1; I <= nbvar; I++) {index_coeff = index_coeff * (degre + I);}
		if (nbvar > 2) 
			{for (I = 3; I <= nbvar; I++) {index_coeff = index_coeff / (I - 1);}}
		}
	}
System.out.println("nbvar="+nbvar+" degre="+degre+" type_attract="+type_attract+" index_coeff="+index_coeff+" X0="+x0);
}
 
public void iterate() /* Iterate equations */
{
if (type_attract > 1)
	{special_functions();}              /* fonctions speciales */
else {		/* map et equations differentielles */
	index_coeff = 1;
	XY[1] = X;
	XY[2] = Y;
	XY[3] = Z;
	XY[4] = W;
	for (I = 1; I <= nbvar; I++) {
		XN[I] = A[index_coeff];
		index_coeff = index_coeff + 1;
		for (I1 = 1; I1 <= nbvar; I1++) {
			XN[I] = XN[I] + A[index_coeff] * XY[I1];
			index_coeff = index_coeff + 1;
			for (I2 = I1; I2 <= nbvar; I2++) {
				XN[I] = XN[I] + A[index_coeff] * XY[I1] * XY[I2];
				index_coeff = index_coeff + 1;
				for (I3 = I2; (degre > 2) && (I3 <= nbvar); I3++) {
					XN[I] = XN[I] + A[index_coeff] * XY[I1] * XY[I2] * XY[I3];
					index_coeff = index_coeff + 1;
					for (I4 = I3; (degre > 3) && (I4 <= nbvar); I4++) {
						XN[I] = XN[I] + A[index_coeff] * XY[I1] * XY[I2] * XY[I3] * XY[I4];
						index_coeff = index_coeff + 1;
						for (I5 = I4; (degre > 4) && (I5 <= nbvar); I5++) {
							XN[I] = XN[I] + A[index_coeff] * XY[I1] * XY[I2] * XY[I3] * XY[I4] * XY[I5];
							index_coeff = index_coeff + 1;
							}
						}
					}
				}
			}
		if (type_attract == 1) {XN[I] = XY[I] + stepsize * XN[I];}
		}
	XNEW = XN[1];
	YNEW = XN[2];
	ZNEW = XN[3];
	WNEW = XN[4];
	index_coeff = index_coeff - 1;
	}
nbiter = nbiter + 1;

}

public void display_results() /* Display results 2100 */
{
// System.out.println("xyzw="+X+" "+Y+" "+Z+" "+W);
if ((nbiter >= 100) && (nbiter <= iter_min)) {
	if (X < XMIN) {XMIN = X;}	/* calcul des limites de l'attracteur avec les iter_min premieres iterations en ignorant les 100 premières */
	if (X > XMAX) {XMAX = X;}
	if (Y < YMIN) {YMIN = Y;}
	if (Y > YMAX) {YMAX = Y;}
	if (Z < ZMIN) {ZMIN = Z;}
	if (Z > ZMAX) {ZMAX = Z;}
	if (W < WMIN) {WMIN = W;}
	if (W > WMAX) {WMAX = W;}
	}
if ((int)nbiter == iter_min) {resize_screen();}  /* Resize the screen - calcule les paramètres des projections */
x500[index_500] = X;
y500[index_500] = Y;
z500[index_500] = Z;
w500[index_500] = W;
index_500 = (index_500 + 1) % 500;
I = (index_500 + 500 - PREV) % 500;
if (nbvar == 1) { /* fonction (Yn,Yn-prev) */
	xpoint = x500[I];
	ypoint = XNEW;					/* x est le point et y le point itéré */
	}
else {
	xpoint = X;
	ypoint = Y;
	}
if ((nbiter >= iter_min) && (xpoint > xbas) && (xpoint < xhaut) && (ypoint > ybas) && (ypoint < yhaut)) {
	if (numprojection == 1) {projection_spere();}    								/* Project onto a sphere */
	if (numprojection == 2) {projection_cylindre_horizontal();}    	/* Project onto a horizontal cylinder */
	if (numprojection == 3) {projection_cylindre_vertical();}    		/* Project onto a vertical cylinder */
	if (numprojection == 4) {projection_tore();}    								/* Project onto a torus */
	plot_point();                  /* Plot point on screen */
//	if (son == 1) {fun3500();}    /* Produce sound */
	}
}

public void test_results() /* Test results 2400 */
{
if (Math.abs(XNEW) + Math.abs(YNEW) + Math.abs(ZNEW) + Math.abs(WNEW) > 1000000) 
	{
	System.out.println("Arret par divergence "+XNEW+" "+YNEW+" "+ZNEW+" "+WNEW);
	do_iter=false;}
if (nbiter>iter_search) 
	{if (search_mode==true) {search_mode=false;numattract=0;}}
if (search_mode == true)           /* Speed up evaluation mode */
	{
	calcule_lyapunov();              /* Calculate Lyapunov exponent */
	fractal_dimension();             /* Calculate fractal dimension */
	if (nbiter >= iter_max)     	/* Strange attractor found */
		{do_iter=false;
		if (rapide==true) {System.out.println("attractor found");}
		}
	if (Math.abs(XNEW - X) + Math.abs(YNEW - Y) + Math.abs(ZNEW - Z) + Math.abs(WNEW - W) < .000001) {do_iter=false;System.out.println("Arret par point fixe "+XNEW+" "+YNEW+" "+ZNEW+" "+WNEW);}
	if ((nbiter > 100) && (lyapunov < .005)) 
		{
		System.out.println("Arret par Lyapunov "+lyapunov);
		do_iter=false;
		} /* Limit cycle */
	} 
else
	{
	if (nbiter >= iter_max) {do_iter=false;}
	}

X = XNEW;                   /* Update value of X */
Y = YNEW;
Z = ZNEW;
W = WNEW;
}

public void calcule_lyapunov() /* Calculate Lyapunov exponent 2900 */
{
XSAVE = XNEW;
YSAVE = YNEW;
ZSAVE = ZNEW;
WSAVE = WNEW;
X = XE;
Y = YE;
Z = ZE;
W = WE;
nbiter = nbiter - 1;
iterate();                  /* Reiterate equations 1700 */
DLX = XNEW - XSAVE;
DLY = YNEW - YSAVE;
DLZ = ZNEW - ZSAVE;
DLW = WNEW - WSAVE;
DL2 = DLX * DLX + DLY * DLY + DLZ * DLZ + DLW * DLW;
if (DL2 > 0) {              /* Check for division by zero */
	DF = 1E12 * DL2;
	RS = 1 / Math.sqrt(DF);
	XE = XSAVE + RS * (XNEW - XSAVE);
	YE = YSAVE + RS * (YNEW - YSAVE);
	ZE = ZSAVE + RS * (ZNEW - ZSAVE);
	WE = WSAVE + RS * (WNEW - WSAVE);
	XNEW = XSAVE;
	YNEW = YSAVE;
	ZNEW = ZSAVE;
	WNEW = WSAVE;
	LSUM = LSUM + Math.log(DF);
	NL = NL + 1;
	lyapunov = .721347 * LSUM / NL;
	if ((type_attract == 1) || (type_attract == 7)) {lyapunov = lyapunov / stepsize;}	// differentiel
	if ((nbiter > iter_min) && ((int)nbiter % 100 == 0)) {
//		System.out.println("lyapunov="+lyapunov);
		}
	}
}

public void fractal_dimension() /* Calculate fractal dimension 3900 */
{
if (nbiter >= iter_min) {            /* Wait for transient to settle */
	if ((int)nbiter == iter_min) {
		D2MAX = Math.pow(XMAX - XMIN, 2);
		D2MAX = D2MAX + Math.pow(YMAX - YMIN, 2);
		D2MAX = D2MAX + Math.pow(ZMAX - ZMIN, 2);
		D2MAX = D2MAX + Math.pow(WMAX - WMIN, 2);
		}
	J = (index_500 + 1 + (int) Math.floor(480 * generator.nextDouble())) % 500;
	DX = XNEW - x500[J];
	DY = YNEW - y500[J];
	DZ = ZNEW - z500[J];
	DW = WNEW - w500[J];
	D2 = DX * DX + DY * DY + DZ * DZ + DW * DW;
	if (D2 < .001 * TWOD * D2MAX) {N2 = N2 + 1;}
	if (D2 <= .00001 * TWOD * D2MAX) {
		N1 = N1 + 1;
		fractal_dim = .434294 * Math.log(N2 / (N1 - .5));
//		_settextposition(1, WID - 14);
//		printf("%5.2f", fractal_dim);
		}
	}
}

public void resize_screen() /* Resize the screen 3100 */
{
if (fond_blanc == true)
	{g1.setColor(Color.black);}
else
	{g1.setColor(Color.white);}
if (nbvar == 1) {
	YMIN = XMIN;
	YMAX = XMAX;
	}
if (XMAX - XMIN < .000001) {
	XMIN = XMIN - .0000005;
	XMAX = XMAX + .0000005;
	}
if (YMAX - YMIN < .000001) {
	YMIN = YMIN - .0000005;
	YMAX = YMAX + .0000005;
	}
if (ZMAX - ZMIN < .000001) {
	ZMIN = ZMIN - .0000005;
	ZMAX = ZMAX + .0000005;
	}
if (WMAX - WMIN < .000001) {
	WMIN = WMIN - .0000005;
	WMAX = WMAX + .0000005;
	}
	
System.out.println("resize="+XMIN+" "+XMAX+" "+YMIN+" "+YMAX+" "+x0);
if ((attracteurs[numattract][3].charAt(0)!='[') && (grossit != true))
	{MX = .3 *zoom* (XMAX - XMIN);
	MY = .3 *zoom* (YMAX - YMIN);}
else
	{MX = 0.8 *zoom* (XMAX - XMIN);		/* un orbital grossit */
	MY =  0.8 *zoom* (YMAX - YMIN);}
if ((type_attract>=15) && (type_attract<=18))
	{MX = 1.1 *zoom* (XMAX - XMIN);		/* un quilt doit avoir trois fois la place et martin et hopalong grossissent beaucoup */
	MY =  1.1 *zoom* (YMAX - YMIN);}
if ((type_attract==21) || (type_attract==23))
	{MX = 2 *zoom* (XMAX - XMIN);		/*  martin et hopalong grossissent beaucoup */
	MY =  2 *zoom* (YMAX - YMIN);}
xbas = XMIN - MX;
xhaut = XMAX + MX;
ybas = YMIN - MY;
yhaut = YMAX + 1.5 * MY;
scalex = longueur / (xhaut - xbas);
scaley = haut / (yhaut - ybas);
//System.out.println("sizes MX"+MX+" MY"+MY+" scalex"+scalex+" xbas"+xbas+" scaley"+scaley+" ybas"+ybas+" xhaut"+xhaut+" yhaut"+yhaut);
//_setvieworg((short)(-scalex * xbas), (short)(-scaley * yhaut));
//_clearscreen(_GCLEARSCREEN);
cls();
//yhaut = yhaut - .5 * MY;
XA = (xbas + xhaut) / 2;
YA = (ybas + yhaut) / 2;

drawrect( 5+scalex * (xbas-xbas) , 5+scaley * (ybas - ybas), scalex * (xhaut - xbas) -10, scaley * (yhaut-ybas) - 10);

if (nbvar > 2) {
	ZA = (ZMAX + ZMIN) / 2;
	if (num3emedim == 1) {		// ombre
		background_grid();          /* Plot background grid */
		}
	if (num3emedim == 4) {	// anaglyph
		}
	if (num3emedim == 5) {	// stéréogramme
		drawline(scalex * (XA-xbas), scaley * (ybas-ybas),scalex * (XA-xbas), scaley * (yhaut-ybas));
		}
	if (num3emedim == 6) {	// tranches
		for (I = 1; I <= 3; I++) {
			xpoint = xbas + I * (xhaut - xbas) / 4;
			drawline(scalex * (xpoint-xbas), scaley * (ybas-ybas), scalex * (xpoint-xbas), scaley * (yhaut-ybas));
			ypoint = ybas + I * (yhaut - ybas) / 4;
			drawline(scalex * (xbas-xbas), scaley * (ypoint-ybas), scalex * (xhaut-xbas), scaley * (ypoint-ybas));
			}
		}
	}
if ((numprojection == 1) && (num3emedim < 5)) {drawellipse( scalex * xbas - scaley * (yhaut - ybas) / 6, scaley * yhaut, scalex * xhaut + scaley * (yhaut - ybas) / 6, scaley * ybas);}
TT = Math.PI / (XMAX - XMIN);
PT = Math.PI / (YMAX - YMIN);

//if (search_mode == 2) {              /* In evaluate mode */
//	_settextposition(1, 1);
//	printf("<Space Bar>: Discard       <Enter>: Save");
//	if (WID >= 80) {
//		_settextposition(1, 49);
//		printf("<Esc>: Exit");
//		_settextposition(1, 69);
//		printf("%d K left", (int)((filelength(fileno(F1)) - ftell(F1)) / 1024.0));
//	}}
//else {
//	_settextposition(1, 1);
//	if (strlen(attract_code) < WID - 18)
//		_outtext(attract_code);
//	else {
//		printf("%*.*s...", WID - 23, WID - 23, attract_code);
//	}
//	_settextposition(1, WID - 17);
//	printf("fractal dim =");
//	_settextposition(1, WID - 7);
//	printf("lyapunov = ");
//	}

tg_eclairage = .05;                  /* Tangent of illumination angle */
XZ = -tg_eclairage * (XMAX - XMIN) / (ZMAX - ZMIN);
YZ = tg_eclairage * (YMAX - YMIN) / (ZMAX - ZMIN);
}

public void plot_point() 						/* Plot point on screen 5000 */
{
C4emedim = couleur_not_fond;
C3emedim = couleur_not_fond;
if (nbvar > 3) 
	{
   if (num4emedim == 1) 	// bande
   	{
   	int dd=(int) Math.floor(30 * (W - WMIN) / (WMAX - WMIN) );
   	if ((dd % 2)==0) {return;}		/* selon w on plot ou pas */
   	}
   if (num4emedim == 2) 	// couleur
   		{C4emedim = COLR[1 + (int) Math.floor(nbcolor * (W - WMIN) / (WMAX - WMIN) + nbcolor) % nbcolor];}
	}
if (nbvar < 3) {                /* Skip 3-D et 4-D stuff */
	Cexist=couleur_not_fond;
	if (nbvar==1)
		{if (coloration>=3) {coloration=2;};}
	if (coloration==1)
		{ /* pour les nombres de frappe on fait un affichage temporaire qu'on recalcule à la fin */
		Cexist = getrgb(scalex * (xpoint-xbas), scaley * (ypoint-ybas));
		if (Cexist==couleur_fond) 
			{Cexist=COLR[1];}
		else
			{int i=1;
			int cold=Cexist;
			while (i<nbcolor-1)
				{if (Cexist==COLR[i])
					{Cexist=COLR[i+1];
					i=nbcolor;}
				else {i=i+1;}
				}
			}
		}
	if (coloration==2)
		{
		int i=1+(int) ( nbiter*nbcolor / iter_max) % nbcolor;
		Cexist=COLR[i];
		//System.out.println(""+i+" "+nbiter+" "+Cexist);
		}

	if ((coloration==3) || (coloration==4))
		{setpixelcompte(scalex * (xpoint-xbas), scaley * (ypoint-ybas),Cexist);
		}
	else
		{	setpixel(scalex * (xpoint-xbas), scaley * (ypoint-ybas),Cexist);}
	return;
	}
if (num3emedim == 0) {	// projection
	setpixel(scalex * (xpoint-xbas), scaley * (ypoint-ybas),C4emedim);
	}
if (num3emedim == 1) {	// ombre
	if ((nbvar > 3) && (num4emedim == 2)) {	// couleur
		setpixel(scalex * (xpoint-xbas), scaley * (ypoint-ybas), C4emedim);
		}
	else {			/* 4emedim=bande */
		Cexist = getrgb(scalex * (xpoint-xbas), scaley * (ypoint-ybas));
		if (Cexist == COLR4[2]) {
			setpixel(scalex * (xpoint-xbas), scaley * (ypoint-ybas), COLR4[3]);}
		else {
			if (Cexist != COLR4[3]) {
				setpixel(scalex * (xpoint-xbas), scaley * (ypoint-ybas), COLR4[2]);
				}
			}
		}
	xpoint = xpoint - XZ * (Z - ZMIN);	/* mise de l ombre s'il n'y a rien */
	ypoint = ypoint - YZ * (Z - ZMIN);
	if (getrgb(scalex * (xpoint-xbas), scaley * (ypoint-ybas)) == couleur_fond) {
		setpixel(scalex * (xpoint-xbas), scaley * (ypoint-ybas),gris);
		}
	}
if (num3emedim == 2) {	// bande
	if ((nbvar > 3) && (num4emedim == 2) && (((int) Math.floor(nbcolor * (Z - ZMIN) / (ZMAX - ZMIN) + 2) % 2)) == 1) {	// couleur
		setpixel(scalex * (xpoint-xbas), scaley * (ypoint-ybas), C4emedim);}
	else {
		C3emedim = COLR4[(int) Math.floor(60 * (Z - ZMIN) / (ZMAX - ZMIN) + 4) % 4];
		setpixel(scalex * (xpoint-xbas), scaley * (ypoint-ybas), C3emedim);
		}
	
	}
if (num3emedim == 3) // couleur
	{C3emedim=COLR[1+(int) Math.floor(nbcolor * (Z - ZMIN) / (ZMAX - ZMIN) + nbcolor) % nbcolor];
	setpixel(scalex * (xpoint-xbas), scaley * (ypoint-ybas), C3emedim);
	}
if (num3emedim == 4) {	// anaglyph
	XRT = xpoint + XZ * (Z - ZA);
	Cexist = getrgb(scalex * (XRT-xbas), scaley * (ypoint-ybas));
	if (Cexist == couleur_fond) {
		setpixel(scalex * (XRT-xbas), scaley * (ypoint-ybas), red);
		}
	if (Cexist == cyan) {
		setpixel(scalex * (XRT-xbas), scaley * (ypoint-ybas),couleur_not_fond);
		}
	XLT = xpoint - XZ * (Z - ZA);
	Cexist = getrgb(scalex * (XLT-xbas), scaley * (ypoint-ybas));
	if (Cexist == couleur_fond) {
		setpixel(scalex * (XLT-xbas), scaley * (ypoint-ybas),cyan);
		}
	if (Cexist == red) {
		setpixel(scalex * (XLT-xbas), scaley * (ypoint-ybas),couleur_not_fond);
		}
	}
if (num3emedim == 5) {	// stéréogramme
	h_scale_factor = 2;                /* Horizontal scale factor */
	XRT = XA + (xpoint + XZ * (Z - ZA) - xbas) / h_scale_factor;
	setpixel(scalex * (XRT-xbas), scaley * (ypoint-ybas), C4emedim);
	XLT = XA + (xpoint - XZ * (Z - ZA) - xhaut) / h_scale_factor;
	setpixel(scalex * (XLT-xbas), scaley * (ypoint-ybas),C4emedim);
	}
if (num3emedim == 6) {	// tranches
   DZ = (15 * (Z - ZMIN) / (ZMAX - ZMIN) + .5) / 16;
   xpoint = (xpoint - xbas + ((int) Math.floor(16 * DZ) % 4) * (xhaut - xbas)) / 4 + xbas;
   ypoint = (ypoint - ybas + (3 - (int) Math.floor(4 * DZ) % 4) * (yhaut - ybas)) / 4 + ybas;
   setpixel(scalex * (xpoint-xbas), scaley * (ypoint-ybas),C4emedim);
	}
}



public void special_functions() /* Special function definitions 6200 */
{
ZNEW = X * X + Y * Y;       /* Default 3rd and 4th dimension */
WNEW = (nbiter - 100) / 900;
if (nbiter > iter_min) {WNEW = (nbiter - iter_min) / (iter_max - iter_min);}
if (type_attract == 2) {	// Y
	index_coeff = 10;
	XNEW = A[1] + A[2] * X + A[3] * Y + A[4] * Math.abs(X) + A[5] * Math.abs(Y);
	YNEW = A[6] + A[7] * X + A[8] * Y + A[9] * Math.abs(X) + A[10] * Math.abs(Y);
	}
if (type_attract == 3) {	// Z
	index_coeff = 14;
	XNEW = A[1] + A[2] * X + A[3] * Y + ((int)(A[4] * X + .5) & (int)(A[5] * Y + .5)) + ((int)(A[6] * X + .5) | (int)(A[7] * Y + .5));
	YNEW = A[8] + A[9] * X + A[10] * Y + ((int)(A[11] * X + .5) & (int)(A[12] * Y + .5)) + ((int)(A[13] * X + .5) | (int)(A[14] * Y + .5));
	}
if (type_attract == 4) {
	index_coeff = 14;
	XNEW = A[1] + A[2] * X + A[3] * Y + A[4] * Math.pow(Math.abs(X), A[5]) + A[6] * Math.pow(Math.abs(Y), A[7]);
	YNEW = A[8] + A[9] * X + A[10] * Y + A[11] * Math.pow(Math.abs(X), A[12]) + A[13] * Math.pow(Math.abs(Y), A[14]);
	}
if (type_attract == 5) {
	index_coeff = 18;
	XNEW = A[1] + A[2] * X + A[3] * Y + A[4] * Math.sin(A[5] * X + A[6]) + A[7] * Math.sin(A[8] * Y + A[9]);
	YNEW = A[10] + A[11] * X + A[12] * Y + A[13] * Math.sin(A[14] * X + A[15]) + A[16] * Math.sin(A[17] * Y + A[18]);
	}
if (type_attract == 6) {
	index_coeff = 6;
	if (nbiter < 2) {
		AL = 2*Math.PI / (13 + 10 * A[6]);
		SINAL = Math.sin(AL);
		COSAL = Math.cos(AL);
		}
	DUM = X + A[2] * Math.sin(A[3] * Y + A[4]);
	XNEW = 10 * A[1] + DUM * COSAL + Y * SINAL;
	YNEW = 10 * A[5] - DUM * SINAL + Y * COSAL;
	}
if (type_attract == 7) {
	index_coeff = 9;
	XNEW = X + stepsize * A[1] * Y;
	YNEW = Y + stepsize * (A[2] * X + A[3] * X * X * X + A[4] * X * X * Y + A[5] * X * Y * Y + A[6] * Y + A[7] * Y * Y * Y + A[8] * Math.sin(Z));
	ZNEW = Z + stepsize * (A[9] + 1.3);
	if (ZNEW > 2*Math.PI) {ZNEW = ZNEW - 2*Math.PI;}
	}
	
if (type_attract==10) { // field icon Rotations sans Symetries (omega!=0) - delta = 0
	index_coeff=6;
/* F(z)=(lambda +alpha * z*conjug(z) + beta * real(z^n) + omega*i)*z + gamma * conjug(z^(n-1)) */
	zzbar=X*X+Y*Y;		/* z*conjug(z) */
	zreal=X;
	zimag=Y;
	for (i=1;i<=n-2;i++)
		{	/* calcul de Z^(n-1)*/
		za=zreal*X-zimag*Y;
		zb=zimag*X+zreal*Y;
		zreal=za;		/* z^(n-1) */
		zimag=zb;
		}
	zn=X*zreal-Y*zimag;		/* real(z^n) */
	p=lambda+alpha*zzbar+beta*zn;
	XNEW=p*X+gamma*zreal-omega*Y;
	YNEW=p*Y-gamma*zimag+omega*X;
	}
if (type_attract==11) { // field icon rotation et symetrie - omega =0 delta = 0
	index_coeff=5;

/* F(z)=(lambda +alpha * z * conjug(z) + beta * real(z^n) ) * z + gamma * conjug(z^(n-1)) */

	zzbar=X*X+Y*Y;		/* z conjug(z) */
	zreal=X;
	zimag=Y;
	for (i=1;i<=n-2;i++)
		{	/* calcul de Z^(n-1) */
		za=zreal*X-zimag*Y;
		zb=zimag*X+zreal*Y;
		zreal=za;		/* z^(n-1) */
		zimag=zb;
		}
	zn=X*zreal-Y*zimag;		/* real(z^n) */
	p=lambda+alpha*zzbar+beta*zn;
	XNEW=p*X+gamma*zreal;
	YNEW=p*Y-gamma*zimag;
	}
if (type_attract==12) { // field rotation symetrie et irregularite  - omega=0 delta !=0

/* F(z)=(lambda + alpha * z * conjug(z) + beta * real(z^n) + delta * Real((z/|z|)^(n*p))) * |z|) * z + gamma * conjug(z^(n-1))*/
		
		index_coeff=7;

    	zzbar = X*X+Y*Y;
      zz = Math.sqrt(zzbar);
      zc = 1.;
      zd = 0.;
      zreal = X / zz;	// z/|z|
      zimag = Y / zz;

      for ( j = 0; j < np*n; j++) {  //
        za = zc * zreal - zd * zimag;  // z/|z| ^ (n*np)
        zb = zd * zreal + zc * zimag;
        zc = za;
        zd = zb;
      }
    zreal=X;
    zimag=Y;
    for ( i = 0; i < n-2; i++) {
      za = zreal*X-zimag*Y;	// z^(n-1)
      zb = zimag*X+zreal*Y;
      zreal=za;
      zimag=zb;
    }

    zn=X*zreal-Y*zimag;	// real(z^n)
    p=lambda + alpha*zzbar + beta*zn + delta*zz*zc;

    XNEW=p*X+gamma*zreal;	//-omega*Y;
    YNEW=p*Y-gamma*zimag;	//+omega*X;
}
if ((type_attract==13)|| (type_attract==14)) { // field fractal rotation / rotation et symetrie
/*
 pi = 355 / 113
        a11 = .4; a12 = .35; a21 = .2; a22 = .4;n = 3: conj=1;
        b1 = 0; b2 = .4;
        x = .1: y = -.01:
      for(i=0; i<=50 ;i++)
        {cos(i) = Math.cos(2 * Math.PI * i / n)
        sin(i) = Math.sin(2 * Math.PI * i / n)}
        */
  index_coeff=7;
	XNEW=A[2]*X+A[3]*Y+A[6];
	YNEW=A[4]*X+A[5]*Y+A[7];
	m=(int) Math.floor(n*generator.nextDouble());
	x=XNEW;
	y=YNEW;
	cos=Math.cos(2*Math.PI*m/n);
	sin=Math.sin(2*Math.PI*m/n);
	XNEW=cos*x-sin*y;
	YNEW=sin*x+cos*y;
	//System.out.println("n m="+n+" "+m+" "+XNEW+" "+YNEW+" "+nbiter);
	if (type_attract==14)
		{m=(int) Math.floor(2*generator.nextDouble());
		if (m==1) {YNEW=-YNEW;}
		}
	}
if ((type_attract==15) || (type_attract==16)) { // field square quilt rotation/et symetrie
			index_coeff=7;
			grossit=true;
			
        lambda = A[1]; alpha = A[2]; beta = A[3]; gamma = A[4];omega=A[5];shift=Math.floor(A[6])/2;ma = Math.floor(A[7]);

        if (type_attract==15) {omega=0;index_coeff=6;shift=Math.floor(A[5])/2;ma=Math.floor(A[6]);}
        
        /*  x = .1: y = .334:
        nperiod = 3
        FOR j = 0 TO (npixelx - nstartx) / nperiod
                FOR i = 0 TO npixely / nperiod
                        mcount(j, i) = 0
                NEXT i
        NEXT j
				*/
				sx = Math.sin(p2 * X); sy = Math.sin(p2 * Y);
        XNEW = (lambda + alpha * Math.cos(p2 * Y)) * sx - omega * sy + beta * Math.sin(2 * p2 * X) + gamma * Math.sin(3 * p2 * X) * Math.cos(2 * p2 * y) + ma * X + shift;
        YNEW = (lambda + alpha * Math.cos(p2 * X)) * sy + omega * sx + beta * Math.sin(2 * p2 * Y) + gamma * Math.sin(3 * p2 * Y) * Math.cos(2 * p2 * x) + ma * Y + shift;
        if (XNEW > 1) {XNEW = XNEW - (int)Math.floor(XNEW);}
        if (YNEW > 1) {YNEW = YNEW - (int)Math.floor(YNEW);}
        if (XNEW < 0) {XNEW = XNEW + (int)Math.floor(-XNEW) + 1;}
        if (YNEW < 0) {YNEW = YNEW + (int)Math.floor(-YNEW) + 1;}
        
        //mxnew = xnew * (npixelx - nstartx) / nperiod: mynew = ynew * npixely / nperiod
        //mcount(mxnew, mynew) = mcount(mxnew, mynew) + 1

				}
if ((type_attract==17) || (type_attract==18)) { // field hexagonal quilt rotations/et symetrie

	index_coeff=6;
	grossit=true;
	lambda=A[1];alpha=A[2]; beta= A[3]; gamma= A[4]; omega=A[5];ma= Math.floor(A[6]);
	if (type_attract==17) {omega=0;index_coeff=5;ma=Math.floor(A[5]);}       
        
        /*x = .1: y = .3: xnew = x: ynew = y  */
 
        k11 = 1; k12 = 0;
        k21 = 1 / 2.; k22 = sq3 / 2;
       
        el11 = 1; el12 = -1 / sq3;
        el21 = 0; el22 = 2 / sq3;
        el31 = -(el11 + el21); el32 = -(el12 + el22);

        em11 = 2 * el11 + el21; em12 = 2 * el12 + el22;
        em21 = 2 * el21 + el31; em22 = 2 * el22 + el32;
        em31 = 2 * el31 + el11; em32 = 2 * el32 + el12;

        en11 = 3 * el11 + 2 * el21; en12 = 3 * el12 + 2 * el22;
        en21 = 3 * el21 + 2 * el31; en22 = 3 * el22 + 2 * el32;
        en31 = 3 * el31 + 2 * el11; en32 = 3 * el32 + 2 * el12;

        enh11 = 3 * el11 + el21; enh12 = 3 * el12 + el22;
        enh21 = 3 * el21 + el31; enh22 = 3 * el22 + el32;
        enh31 = 3 * el31 + el11; enh32 = 3 * el32 + el12;

        a11 = beta; a12 = gamma;
        a21 = (-a11 - sq3 * a12) / 2; a22 = (sq3 * a11 - a12) / 2;
        a31 = -a11 - a21; a32 = -a12 - a22;

        ah11 = a11; ah12 = -a12;
        ah21 = (-ah11 - sq3 * ah12) / 2; ah22 = (sq3 * ah11 - ah12) / 2;
        ah31 = -ah11 - ah21; ah32 = -ah12 - ah22;

				s11 = Math.sin(p2 * (el11 * X + el12 * Y));
        s12 = Math.sin(p2 * (el21 * X + el22 * Y));
        s13 = Math.sin(p2 * (el31 * X + el32 * Y));
        s21 = Math.sin(p2 * (em11 * X + em12 * Y));
        s22 = Math.sin(p2 * (em21 * X + em22 * Y));
        s23 = Math.sin(p2 * (em31 * X + em32 * Y));
        s31 = Math.sin(p2 * (en11 * X + en12 * Y));
        s32 = Math.sin(p2 * (en21 * X + en22 * Y));
        s33 = Math.sin(p2 * (en31 * X + en32 * Y));
        s3h1 = Math.sin(p2 * (enh11 * X + enh12 * Y));
        s3h2 = Math.sin(p2 * (enh21 * X + enh22 * Y));
        s3h3 = Math.sin(p2 * (enh31 * X + enh32 * Y));
       
        sx = (el11 * s11 + el21 * s12 + el31 * s13);
        sy = (el12 * s11 + el22 * s12 + el32 * s13);
        XNEW = ma * X + lambda * sx - omega * sy;
        YNEW = ma * Y + lambda * sy + omega * sx;
        XNEW = XNEW + alpha * (em11 * s21 + em21 * s22 + em31 * s23);
        YNEW = YNEW + alpha * (em12 * s21 + em22 * s22 + em32 * s23);
        XNEW = XNEW + a11 * s31 + a21 * s32 + a31 * s33;
        YNEW = YNEW + a12 * s31 + a22 * s32 + a32 * s33;
        XNEW = XNEW + ah11 * s3h1 + ah21 * s3h2 + ah31 * s3h3;
        YNEW = YNEW + ah12 * s3h1 + ah22 * s3h2 + ah32 * s3h3;

        by = 2 * YNEW / sq3; bx = XNEW - by / 2;

        if (bx > 1) {bx = bx - (int)Math.floor(bx);}
        if (by > 1) {by = by - (int)Math.floor(by);}
        if (bx < 0) {bx = bx + (int)Math.floor(-bx) + 1;}
        if (by < 0) {by = by + (int)Math.floor(-by) + 1;}

        XNEW = bx * k11 + by * k21; YNEW = bx * k12 + by * k22;
        
        
       
        //mxnew = bx*(npixelx-nstartx)/nperiod: mynew = by*npixely/nperiod
        //mcount(mxnew, mynew) = mcount(mxnew, mynew) + 1
       
				}
if (type_attract==19) { // quadrup two  34,1,5
	grossit=true;
	index_coeff=3;
//	Z=Math.sin(Math.log(Math.abs(A[2]*X-A[3])))*Math.atan(Math.sqrt(Math.log(Math.abs(A[3]*X-A[2]))));
	W=Math.abs(A[3]*X-A[2]);  // log(abs(cx-b)
	Z=Math.sin(Math.log(Math.abs(A[2]*X-A[3])))*Math.atan(W*W);
	if (X>0)
		{XNEW=Y-Z;}
	else
		{XNEW=Y+Z;}
	YNEW=A[1]-X;     
	}
if (type_attract==20) { // ikeda  a = 0.8;
	index_coeff=1;
 	Z = 0.4-6.0/(1+(X*X)+(Y*Y));
  XNEW = 1+A[1]*(X*Math.cos(Z)-Y*Math.sin(Z));
  YNEW = A[1]*(X*Math.sin(Z)+Y*Math.cos(Z));
	}

if (type_attract==21) { // martin 3
	index_coeff=1;
	grossit=true;
	XNEW=Y-Math.sin(X);
	YNEW=A[1]-X;   
	}
if (type_attract == 22) { // gingerbread man
	index_coeff = 2;
	XNEW = A[1] - Y + A[2] * Math.abs(X) ;
	YNEW = X;
	}
if (type_attract == 23) { // hopalong
	index_coeff = 3;
	grossit=true;
	if (X<0){XNEW = Y + Math.sqrt(Math.abs(A[2]*X - A[3]));}
	if (X>0){XNEW = Y - Math.sqrt(Math.abs(A[2]*X - A[3]));}
	if (X==0){XNEW = Y;}
	YNEW = A[1]-X;
	}
if (type_attract == 24) { // mira
	index_coeff = 2;
	grossit=true;
	XNEW = A[2]*Y + A[1]*X - (1-A[1])*2*X*X/(1+X*X); 
	YNEW = -X+ A[1]*XNEW - (1-A[1])*2*XNEW*XNEW/(1+XNEW*XNEW);
	}
if (type_attract == 25) { // mira gumowski
	index_coeff = 2;
	grossit=true;
	XNEW = A[2]*Y + A[1]*X + (1-A[1])*2*X*X/(1+X*X); 
	YNEW = -X+ A[1]*XNEW + (1-A[1])*2*XNEW*XNEW/(1+XNEW*XNEW);
	}
if (type_attract == 26) { // Kaneko
	index_coeff = 2;
	XNEW = A[1]*X+(1-A[1])*(1-A[2]*Y*Y);
	YNEW = X;
	}
if (type_attract==27) { // * ham   0<a et b<1  1<c<3
	index_coeff=3;
	Z=Math.tan(X); Z2=Z*Z;
	W=Math.sin(Y); W2=W*W;
	XNEW = Z2-W2+A[1];
  YNEW = A[3]*Z*W + A[2];
	}

if (type_attract==28) {  // threeply a = -55.0, b = -1, c = -42;
	grossit=true;
	index_coeff=3;
	Z=Math.abs(Math.sin(X)*Math.cos(A[2])+A[3]-X*Math.sin(A[1]+A[2]+A[3]));
	if (X>0)
		{XNEW=Y-Z;}
	else
		{XNEW=Y+Z;}
	YNEW=A[1]-X;
	}
if (type_attract == 29) { // pickover 1		= -0.75 2.44 1.25 1.5
	index_coeff = 4;
	XNEW = Math.sin(A[1]*Y) - Z*Math.cos(A[2]*X);
	YNEW = Z*Math.sin(A[3]*X) - Math.cos(A[4]*Y);
	ZNEW = Math.sin(X);
	}
if (type_attract == 30) { // pickover bis
	index_coeff = 4;
	XNEW = A[1]*Math.cos(A[4]*Math.sin(A[1]*Y)) - A[3]*Math.sin(A[2]*X);
	YNEW = A[2]*Math.sin(A[3]*Math.cos(A[2]*X)) - A[4]*Math.cos(A[1]*Y);
	ZNEW = X+Y;
	}
if (type_attract == 31) { // peter de jong  -2 -2 -1.2 2
	index_coeff = 4;
	XNEW = Math.sin(A[1]*Y) - Math.cos (A[2]*X);
	YNEW = Math.sin(A[3]*X) - Math.cos (A[4]*Y);
	}
if (type_attract == 32) { // swinson
	index_coeff = 4;
	XNEW = A[4]*Math.sin(A[1]*X) - Math.sin(A[2]*Y);
	YNEW = A[3]*Math.cos(A[1]*X) + Math.cos(A[2]*Y);
	}
if (type_attract == 33) { // clifford -1.4 1.6 -1 -0.7
	index_coeff = 4;
	XNEW = Math.sin(A[1]*Y) + A[3]*Math.cos(A[1]*X);
	YNEW = Math.sin(A[2]*X) + A[4]*Math.cos(A[2]*Y);
	}
	
if (type_attract == 34) { // logistic map
	index_coeff=1;
	XNEW=A[1]*X*(1-X);
	}
if (type_attract == 35) { // logistic map 2D symetrique
	index_coeff=1;
	Z=X*X+Y*Y;
	XNEW=A[1]*X*(1-Z);
	YNEW=A[1]*Y*(1-Z);
	}
if (type_attract==36) { // pickover tesselation
	index_coeff=2;
	multipoint=true;
	grossit=true;
	XNEW=X-A[1]*Math.sin(Y+Math.sin(A[2]*Y));
	YNEW=Y-A[1]*Math.sin(X+Math.sin(A[2]*X));
	}
if (type_attract == 37) { // kantor   3   x0=y0=orbit/3   150 points step 
	index_coeff = 1;
	multipoint=true;
	XNEW = X*Math.cos(A[1]) + (X*X-Y)*Math.sin(A[1]);
	YNEW = X*Math.sin(A[1]) - (X*X-Y)*Math.cos(A[1]);
	}
if (type_attract == 38) { // unity
	index_coeff = 1;
	multipoint=true;
	Z=X*X+Y*Y;
	XNEW = (A[1]-Z)*Y;
	YNEW = (A[1]-Z)*X;
	}
if (type_attract==39) { // 	popcorn   3 0.05
	index_coeff=2;
	multipoint=true;
	grossit=true;
	XNEW=X-A[1]*(Math.sin(Y+Math.tan(A[2]*Y)));
	YNEW=Y-A[1]*(Math.sin(X+Math.tan(A[2]*X)));
	}

}

public void drawline(double x, double y, double z, double t)
{
g1.drawLine((int) Math.floor(x),(int) Math.floor(haut-1-y),(int) Math.floor(z),(int) Math.floor(haut-1-t));
}

public void drawrect(double x, double y, double z, double t)
{
g1.drawRect((int) Math.floor(x),(int) Math.floor(y),(int) Math.floor(z),(int) Math.floor(t));
}

public void drawellipse(double x, double y, double z, double t)
{
// g1.drawEllipse((int) Math.floor(x),(int) Math.floor(y),(int) Math.floor(z), (int) Math.floor(t));
}

public void setrgb(int x,int y,int col)
{
if ((x>0) && (x<longueur) && (y>0) && (y<haut))
	{buffimag1.setRGB(x,haut-1-y,col);}
}

public int getrgb(double x,double y)
{
if ((x<=0) || (x>=longueur) || (y<=0) || (y>=haut-1)) {return 0;}
return buffimag1.getRGB((int) Math.floor(x),(int) Math.floor(haut-1-y));
}

public void setpixel(double x,double y, int col)
{
// System.out.println("setpixel "+x+" "+y);
if ((x>0) && (x<longueur) && (haut-1>y))
	{buffimag1.setRGB((int)Math.floor(x),(int)Math.floor(haut-1-y),col);}
}

public void setpixelcompte(double x,double y, int col)
{
// System.out.println("setpixel "+x+" "+y);
if ((x>0) && (x<longueur) && (haut-1>y))
	{
	i=(int)Math.floor(x);
	j=(int)Math.floor(haut-1-y);
	k=hits[i][j]+1;
	if (k>maxhits) {maxhits=k;} 
	hits[i][j]=(short) k;
//	if (coloration==3)
//		{col=COLR[(int) Math.floor(1 + nbcolor*k/maxhits)];}
//	else
//		{col=COLR[(int) Math.floor(1 + nbcolor*Math.log(k)/Math.log(maxhits))];}
	//buffimag1.setRGB(i,j,col);
	}
}

public void cls()
{
maxhits=0;
int x;
int y;
for (x=0;x<longueur-1;x++)
	{for (y=0;y<haut-1;y++)
		{
		setrgb(x,y,couleur_fond);
		hits[x][y]=0;
		}
	}
}

public void background_grid() /* Plot background grid 5400 */
{
if (fond_blanc == true)
	{g1.setColor(Color.black);}
else
	{g1.setColor(Color.white);}
for (I = 0; I <= 15; I++) { /* Draw 15 vertical grid lines */
	xpoint = XMIN + I * (XMAX - XMIN) / 15;
	drawline(scalex * (xpoint-xbas), scaley * (YMIN-ybas), scalex * (xpoint-xbas), scaley * (YMAX-ybas));
	}      
for (I = 0; I <= 10; I++) { /* Draw 10 horizontal grid lines */
	ypoint = YMIN + I * (YMAX - YMIN) / 10;
	drawline(scalex * (XMIN-xbas), scaley * (ypoint-ybas), scalex * (XMAX-xbas), scaley * (ypoint-ybas));
	}
}

public void projection_spere() /* Project onto a sphere */
{
TH = TT * (XMAX - xpoint);
PH = PT * (YMAX - ypoint);
xpoint = XA + .36 * (xhaut - xbas) * Math.cos(TH) * Math.sin(PH);
ypoint = YA + .5 * (yhaut - ybas) * Math.cos(PH);
}

public void projection_cylindre_horizontal() /* Project onto a horizontal cylinder */
{
PH = PT * (YMAX - ypoint);
ypoint = YA + .5 * (yhaut - ybas) * Math.cos(PH);
}

public void projection_cylindre_vertical() /* Project onto a vertical cylinder 6800 */
{
TH = TT * (XMAX - xpoint);
xpoint = XA + .5 * (xhaut - xbas) * Math.cos(TH);
}

public void projection_tore() /* Project onto a torus (unity aspect ratio) 6900 */
{
TH = TT * (XMAX - xpoint);
PH = 2 * PT * (YMAX - ypoint);
xpoint = XA + .18 * (xhaut - xbas) * (1 + Math.cos(TH)) * Math.sin(PH);
ypoint = YA + .25 * (yhaut - ybas) * (1 + Math.cos(TH)) * Math.cos(PH);
}


public void mousePressed(MouseEvent e) 
{ 
int i,j;
//System.out.println("mouse event");
int buttonDown = e.getButton();
double vx=e.getX();
double vy=e.getY();
i=(int)Math.floor(vx);
j=(int)Math.floor(vy);

if (buttonDown == MouseEvent.BUTTON3) 
	{//Bouton gauche enfoncé
//double vRC=xbas + (xhaut - xbas)/(double)longueur * (double)vx;
//double vIC=minY + (maxY - minY)/(double)haut * (double)vy;
// 	repaint();
	}
else 
	{ 
	if (buttonDown == MouseEvent.BUTTON2) 
		{
		
		//System.out.println("bouton milieu");}	// Bouton milieu enfoncé 
		}
	else
		{
		if (buttonDown == MouseEvent.BUTTON1) {}//Bouton GAUCHE enfoncé
			{ 
			if ((i<1200) && (j<1200))
				{int nb=hits[i][j];
				System.out.println("droit "+i+" "+j+" "+nb);
				}
			} // gauche
		}// milieu
	} //droit
}
 
public void mouseClicked(MouseEvent e) {
	//System.out.println("Clicked");
	}
	//Invoked when a mouse button has been pressed on a component.

public void mouseReleased(MouseEvent e) {
	//System.out.println("Released");
	} 
	//Invoked when a mouse button has been released on a component.

public void mouseEntered(MouseEvent e) {
	//System.out.println("Entered");
	}
	//Invoked when the mouse enters a component.

public void mouseExited(MouseEvent e) {
	//System.out.println("Exited");
	}
	//Invoked when the mouse exits a component.

public void paintComponent(Graphics g)
{
//System.out.println(""+anti_intempestif+" "+flag);
if  (anti_intempestif != 5215)
	{g.drawImage(buffimag1, 0, 0, null);}
if ((flag==false) && (anti_intempestif==5215))
	{
	anti_intempestif=0;
	flag=true;
	if (listen==false) 
		{
		setcolors(255);
//	addMouseListener(this);
//	t.schedule(new timetask(),50,800);
		listen=true;
		}
	if (act==1) /* redo */
		{
												if (type_attract==10)
                				{	n = (int) Math.floor(Math.abs(A[1])+0.1);
                				lambda = A[2];
												alpha = A[3];	
												beta = A[4];	
												gamma = A[5];
												omega = A[6];}
                			if (type_attract==11)
                				{ n = (int) Math.floor(Math.abs(A[1])+0.1);
                				lambda = A[2];
												alpha = A[3];
												beta = A[4];
												gamma = A[5];}
                			if (type_attract==12)
                				{n = (int) Math.floor(Math.abs(A[1])+0.1);
												lambda = A[2];
												alpha = A[3];
												beta = A[4];
												gamma = A[5];	
												omega=0;
												delta = A[6];
												np = (int) Math.floor(Math.abs(A[7])+0.1);}
		}
		
	if ((act != 2) && (act != 3))	/* iter */
		{
		cls();
		 
		initialise();  				/* Initialize */
		if (act== 0)	/* all */
			{getcoefficients();}
		if (act != 2)
			{ setparameters();}  		/* Set parameters */
		}
	if (act==3)
		{search_attract=false;}
	else
		{search_attract=true;}
	while (search_attract==true)
		{ 
		search_attract=false;
		do_iter=true;
		nbcycle_iter=0;
		while (do_iter==true)
			{
			iterate();					/* calculate next point */
		
			display_results();	/* plot points */
			test_results();  		/* Test results */
			if (nbiter > iter_min)
				{nbcycle_iter=nbcycle_iter+1;}
			if ((search_mode==false) && (nbcycle_iter==iter_cycle) && (rapide==false) && (nbiter<iter_max))
				{do_iter=false;}
			if ((act==2) && (nbcycle_iter>iter_max/2)) {do_iter=false;}
			}
		if (search_mode==true)
			{
			if (nbiter < iter_max)
				{cls(); 
				search_attract=true;
				getcoefficients();
				if ((type_attract==24) || (type_attract==25) || (type_attract==22)) /* mira et martin*/
					{x0=10;}
				setparameters();
				search_attract=true;
				}
			}
		}

// System.out.println("redraw"); 

	if ((nbvar==2) && ((coloration==3) || (coloration==4)))
		{
		//System.out.println("redraw maxhits="+maxhits);
		int col=couleur_fond;
		for (i=0;i<longueur-1;i++)
			{for (j=0;j<haut-1;j++)
				{
				k=hits[i][j];
				if (k==0) 
					{col=couleur_fond;}
				else
					{if (coloration==3)
						{col=COLR[1 + (int) Math.floor((nbcolor*k)/maxhits)];}
					else
						{col=COLR[1 + (int) Math.floor((nbcolor*Math.log(k))/Math.log(maxhits))];}
						//col=COLR[numcol];
					}
				setrgb(i,haut-1-j,col);
				} // for j
			} // for i
		} // coloration 3 ou 4
		numcol=numcol+1;
	if ((type_attract>=15) && (type_attract<=18))
			{ // afficher les quilt periodiques
			//System.out.println("period");
			int col=couleur_fond;
			int c0=(int)Math.floor(scalex*(-xbas));
			
			int c1=(int)Math.floor(scalex*(1-xbas));
			int dx=c1-c0;
			int dx2=0;
			int e0=haut-1-(int)Math.floor(scaley*(-ybas));
			int e1=haut-1-(int)Math.floor(scaley*(1-ybas));
			int dy=e0-e1;
			int dy2=dy;
			if (type_attract>=17) { dx2=dx/2;dy2=(int)Math.floor((e0-e1)*sq3/2);}
			//int dx=208; 
			//int dy=265;
			//System.out.println("c0="+c0+" "+c1+" "+e0+" "+e1+" "+dx+" "+dy);
			for(i=c0;i<=c0+dx+dx2;i++)
				{for (j=e1;j<=e1+dy;j++)
					{
					try
						{if ((i>0) && (j>0) && (i<haut) && (j<haut))
							{col=buffimag1.getRGB(i,j);
							if (col != couleur_fond)
								{
								buffimag1.setRGB(i+dx,j,col);
								buffimag1.setRGB(i-dx,j,col);
								if (type_attract<=16)
									{buffimag1.setRGB(i,j-dy,col);
									buffimag1.setRGB(i+dx,j-dy,col);
									buffimag1.setRGB(i-dx,j-dy,col);
									buffimag1.setRGB(i,j+dy,col);
									buffimag1.setRGB(i+dx,j+dy,col);
									buffimag1.setRGB(i-dx,j+dy,col);
									}
								else
									{buffimag1.setRGB(i+dx+dx,j,col);}
								} // if col
							} // if i
						} // try
					catch(Exception ee) {}
					} // for j
				} // for i
			if (type_attract>=17)
				{
				for(i=c0-dx;i<=c0+dx+dx+dx+dx2;i++)
					{for (j=e1;j<=e1+dy;j++)
						{
						try
							{col=buffimag1.getRGB(i,j);
							if (col != couleur_fond)
								{buffimag1.setRGB(i+dx2,j-dy2,col);
								buffimag1.setRGB(i-dx2,j+dy2,col);
								}
							}
						catch(Exception ee) {}
						}
					}
				} // if 17
				
			}
		

	g.drawImage(buffimag1, 0, 0, null); 
	if (act==3)
		{
		iterate();
		X=XNEW;
		Y=YNEW;
		Z=ZNEW;
		W=WNEW;
		if (nbvar==1)
			{x500[index_500] = X;		/* fonction (Xn-prev,Yn) */
			index_500 = (index_500 + 1) % 500;
			I = (index_500 + 500 - PREV) % 500;
			x = x500[I];
			y = X;					/* x est le point à n-prev et y le point itéré */
			}
		else
			{
			x=X;
			y=Y;
			}
		i=(int) Math.floor(scalex * (x-xbas));
		j=haut-1-(int) Math.floor(scaley * (y-ybas));
		g.setColor(Color.white);
		g.drawLine(i-5, j, i+5, j);
		g.drawLine(i, j-5, i, j+5);
		} 
	flag=false;
	}
	
if (anti_intempestif==5214) {anti_intempestif=5215;} // autoriser le 2ème appel du demarrage
} // paint 
 


} // class



		