Project

General

Profile

« Previous | Next » 

Revision 839651ce

Added by Leszek Koltunski over 2 years ago

Change the package to org.distorted

View differences:

distorted-sokoban/build.gradle
5 5
    buildToolsVersion "30.0.3"
6 6

  
7 7
    defaultConfig {
8
        applicationId "com.threedcell.sokoban"
8
        applicationId "org.distorted.sokoban"
9 9
        minSdkVersion 7
10 10
        targetSdkVersion 31
11 11
    }
distorted-sokoban/src/main/AndroidManifest.xml
1 1
<?xml version="1.0" encoding="utf-8"?>
2 2
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3
    package="com.threedcell.sokoban"
3
    package="org.distorted.sokoban"
4 4
    android:versionCode="7"
5 5
    android:versionName="1.2.10" >
6 6

  
distorted-sokoban/src/main/java/com/threedcell/sokoban/Sokoban.java
1
package com.threedcell.sokoban;
2

  
3
import android.app.Activity;
4
import android.content.Intent;
5
import android.os.Bundle;
6
import android.util.Log;
7

  
8
///////////////////////////////////////////////////////////////////
9

  
10
public class Sokoban extends Activity 
11
{
12
	private static final String TAG_SPLASH = "SokobanSplash";
13
    public static final boolean DEBUG = false;
14
    private int sleepTime=2000;
15
    
16
    private class SplashThread extends Thread
17
    {
18
    	private boolean bootup=true;
19
		
20
		public void run() 
21
		{
22
			int milis=0;
23
			
24
			while(bootup)
25
			{
26
				try
27
				{
28
					milis+=100;
29
					Thread.sleep(100);
30
				}
31
				catch( InterruptedException ex) {}
32
			}
33
			
34
			if( milis<sleepTime )
35
			{
36
				try
37
				{
38
					Thread.sleep(sleepTime-milis);
39
				}
40
				catch( InterruptedException ex) {}
41
			}
42
			finish();
43
			Intent mainInt = new Intent( getApplicationContext(), SokobanMain.class);     
44
			startActivity(mainInt);
45
		}
46
		public void bootupReady()
47
		{
48
			bootup=false;
49
		}
50
    };
51
    
52
///////////////////////////////////////////////////////////////////
53
	
54
    public void onCreate(Bundle savedInstanceState) 
55
    {
56
    	Log.d( TAG_SPLASH, "onCreate");
57
    	
58
    	super.onCreate(savedInstanceState);
59
        
60
        if( getResources().getInteger(R.integer.is_korean) == 1 )
61
  	      {
62
  	      setContentView(R.layout.grb);
63
          sleepTime=3500;  	
64
  	      }
65
  	    else
66
  	      {
67
  	      setContentView(R.layout.splash);
68
          sleepTime=2000;  		
69
  	      }
70
    }
71

  
72
///////////////////////////////////////////////////////////////////
73

  
74
    public void onStart()
75
    {
76
    	Log.d( TAG_SPLASH, "onStart");
77
    	
78
    	super.onStart();
79
    	
80
    	SplashThread splashThread = new SplashThread();
81
    	splashThread.start();
82
    	
83
    	SokobanLevels.init(this);
84
        SokobanLevels sl = SokobanLevels.getInstance();
85
        
86
    	SokobanCanvas.init(this);
87
    	SokobanCanvas.setActivity(this);
88
    	
89
    	SokobanDatabase.init(this);
90
        SokobanTimer.init();
91
        SokobanCanvas.setLevels(sl);
92
        SokobanRecords.setLevels(sl);
93
    	
94
        splashThread.bootupReady();
95
    }
96

  
97
///////////////////////////////////////////////////////////////////
98
// end of file
99
}
distorted-sokoban/src/main/java/com/threedcell/sokoban/SokobanCanvas.java
1
package com.threedcell.sokoban;
2

  
3
import android.app.Activity;
4
import android.content.Context;
5
import android.content.Intent;
6
import android.content.pm.PackageInfo;
7
import android.content.pm.PackageManager;
8
import android.content.pm.PackageManager.NameNotFoundException;
9
import android.content.res.Resources;
10
import android.graphics.Canvas;
11
import android.telephony.TelephonyManager;
12
import android.util.DisplayMetrics;
13
import android.util.Log;
14
import android.view.KeyEvent;
15
import android.view.MotionEvent;
16
import android.view.SurfaceHolder;
17
import android.view.SurfaceView;
18

  
19
import android.graphics.Paint;
20
import android.graphics.Paint.Style;
21

  
22
///////////////////////////////////////////////////////////////////
23

  
24
public class SokobanCanvas extends SurfaceView implements SurfaceHolder.Callback
25
{
26
	private static final String TAG_CANVAS = "SokobanCanvas";
27
	private static String strEmail, strName;
28
	
29
	public static final int STATE_MAIN = 1;
30
    public static final int STATE_PLAY = 2;
31
      public static final int STATE_TIME =3;
32
      public static final int STATE_NEWR =4;
33
        public static final int STATE_SUBM = 5;
34
          public static final int STATE_FAIL = 6; 
35
          public static final int STATE_RECO = 7; 
36
          public static final int STATE_EXIS = 8;
37
          public static final int STATE_SECU = 9;
38
        public static final int STATE_NAME = 10;
39
    public static final int STATE_MENU = 11;
40
      public static final int STATE_DOWN = 12;
41
        public static final int STATE_FAID = 13;
42
        public static final int STATE_SUCD = 14;
43
      public static final int STATE_DOWL = 15;
44
        public static final int STATE_FAIE = 16;
45
        public static final int STATE_SUCE = 17;
46
      public static final int STATE_CREA = 18;
47
        public static final int STATE_CRED = 19;
48
          public static final int STATE_CRES = 20;
49
            public static final int STATE_SUBC = 21;
50
              public static final int STATE_FAIC = 22;
51
              public static final int STATE_SUCC = 23;
52
      public static final int STATE_HELP = 24;
53

  
54
  	public  static final int COLOR_BAR   = 0xfffde051;
55
  	public  static final int COLOR_BLACK = 0xff000000;
56
  	public  static final int COLOR_RED   = 0xffff0000;
57
  	public  static final int COLOR_GREY  = 0xff444444;
58
  	public  static final int COLOR_WHITE = 0xffffffff;
59
  	public  static final int COLOR_DIALOG= 0xff447da7;
60

  
61
  	private static final int FRAME_INTERVAL = 70;
62

  
63
    private static int currState = STATE_MAIN;
64
    private static int scrWidth, scrHeight;
65

  
66
    private static SokobanMenu    mMenu;
67
    private static SokobanLevels  mLevels;
68
    private static SokobanRecords mRecords;
69
    private static Activity       mAct;
70
    private static SokobanCanvas  mCanvas;
71
    
72
	private static boolean mDestroy = true;
73
	private static boolean refreshScreen = true;
74
	private static boolean mFinishedBooting=false;  
75
	private GraphicsThread mThread;
76
	public  static String mVersionStr="";
77
	private Paint mPaint = new Paint();
78
	private static int isKorean;
79
	
80
    private class GraphicsThread extends Thread 
81
    {
82
        private SurfaceHolder mSurfaceHolder;
83
        private SokobanCanvas mCanvas;
84
        private boolean mRun = false;
85
     
86
        public GraphicsThread(SurfaceHolder surfaceHolder, SokobanCanvas c) 
87
        {
88
            mSurfaceHolder = surfaceHolder;
89
            mCanvas = c;
90
        }
91
     
92
        public void setRunning(boolean run) 
93
        {
94
            mRun = run;
95
        }
96
     
97
        public void run() 
98
          {	
99
          Canvas c;
100
          long time;
101
        	
102
          while (mRun) 
103
            {
104
            c = null;
105
            time = 0;
106
                
107
            if( refreshScreen && mFinishedBooting )
108
              {
109
              refreshScreen=false;	
110
              time = System.currentTimeMillis();
111
                  
112
              try 
113
                {
114
                c = mSurfaceHolder.lockCanvas(null);
115
                synchronized (mSurfaceHolder) { mCanvas.drawSurface(c); }
116
                } 
117
              finally 
118
                {
119
                if (c != null)  mSurfaceHolder.unlockCanvasAndPost(c);
120
                }
121
              
122
              time = System.currentTimeMillis() -time;
123
              }
124
                
125
            if( time<FRAME_INTERVAL )
126
              {
127
              try { Thread.sleep(FRAME_INTERVAL-time); }
128
              catch(InterruptedException ex) {}
129
              }
130
            }
131
          }
132
    };
133
    
134
///////////////////////////////////////////////////////////////////
135
	
136
	private SokobanCanvas(Context context)
137
	{		
138
		super(context);
139
		  
140
	    try 
141
	      {
142
	      PackageManager pm = context.getPackageManager();   
143
	      PackageInfo pi =  pm.getPackageInfo( "com.threedcell.sokoban", 0);
144
	      mVersionStr = pi.versionName;
145
	      } 
146
	    catch (NameNotFoundException e)  { }
147
	    
148
	    mMenu   = new SokobanMenu(context,this);    
149
	    mRecords= new SokobanRecords();
150
	    
151
	    mPaint.setColor(SokobanLevels.COLOR_BLACK);
152
	    mPaint.setStyle(Style.FILL);
153
	    
154
	    getHolder().addCallback(this);
155
        setFocusable(true);
156
        setFocusableInTouchMode(true);
157
	    
158
        strEmail = context.getString(R.string.email);
159
        strName  = context.getString(R.string.app_name);
160
        
161
        mFinishedBooting=true;
162
	}
163
	
164

  
165
///////////////////////////////////////////////////////////////////
166

  
167
	public synchronized void deallocate()
168
	{
169
		stopThread();
170
		
171
	}
172

  
173
///////////////////////////////////////////////////////////////////
174
	
175
	public static void setActivity(Activity act)
176
	{
177
		mAct = act;
178
	}
179

  
180
///////////////////////////////////////////////////////////////////
181

  
182
	public Activity getActivity()
183
	{
184
		return mAct;
185
	}
186
	
187
///////////////////////////////////////////////////////////////////
188
	
189
	public static void init(Activity act)
190
	{
191
		Log.d(TAG_CANVAS, "init");
192
		
193
		Resources res = act.getResources();
194
		isKorean = res.getInteger(R.integer.is_korean);
195
		
196
	    if( scrWidth<=0 || scrHeight<=0 )
197
		  {
198
		  DisplayMetrics dm = new DisplayMetrics();
199
		  act.getWindowManager().getDefaultDisplay().getMetrics(dm);
200
		  
201
		  scrWidth = Math.min(dm.widthPixels,dm.heightPixels);
202
		  scrHeight= Math.max(dm.widthPixels,dm.heightPixels);
203
		  }
204
		
205
		if( mCanvas==null ) mCanvas = new SokobanCanvas((Context)act);
206
	}
207
	
208
///////////////////////////////////////////////////////////////////
209
	
210
	public static SokobanCanvas getCanvas(Activity act)
211
	{
212
		init(act);
213
		return mCanvas;
214
	}
215
	
216
///////////////////////////////////////////////////////////////////
217

  
218
	public static boolean isCreated()
219
	{
220
		return mCanvas!=null;
221
	}
222
	
223
///////////////////////////////////////////////////////////////////
224

  
225
	public int getScrWidth()
226
	{
227
		return scrWidth;
228
	}
229
	
230
///////////////////////////////////////////////////////////////////
231

  
232
	public int getScrHeight()
233
	{
234
		return scrHeight;
235
	}
236
	
237
///////////////////////////////////////////////////////////////////
238
	
239
    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) 
240
    {
241
    	Log.e( TAG_CANVAS, "surfaceChanged: width="+w+" height="+h);   
242
    	
243
    	int width  = Math.min(w,h);
244
    	int height = Math.max(w,h);
245
    	
246
    	if( mMenu  !=null ) mMenu.setScrDimensions(width,height);
247
    	if( mLevels!=null) mLevels.setScrDimensions(width,height);
248
    	
249
    	scrWidth = width;
250
    	scrHeight= height;
251
   	    refreshScreen = true;
252
    }
253
 
254
///////////////////////////////////////////////////////////////////
255

  
256
    public void surfaceCreated(SurfaceHolder holder) 
257
    {
258
    	Log.e( TAG_CANVAS, "surfaceCreated");
259
    	
260
    	mThread = new GraphicsThread(getHolder(), this);
261
    	mThread.setRunning(true);
262
        mThread.start();
263
    }
264

  
265
///////////////////////////////////////////////////////////////////
266
    
267
    public void surfaceDestroyed(SurfaceHolder holder) 
268
    {
269
    	Log.e( TAG_CANVAS, "surfaceDestroyed");
270
    	      
271
        stopThread();
272
        mRecords.setDirty();
273
    }
274

  
275
///////////////////////////////////////////////////////////////////
276

  
277
    private void stopThread()
278
    {
279
        if( mThread!=null )
280
        {
281
        	boolean retry = true;
282
        	mThread.setRunning(false);
283
        
284
        	while (retry) 
285
        	{
286
        		try 
287
        		{
288
        			mThread.join();
289
        			retry = false;
290
        		} 
291
        		catch (InterruptedException e) { Log.e( TAG_CANVAS, "Joining thread interrupted!"); }
292
        	}
293
        	mThread=null;
294
        }
295
    }
296

  
297
///////////////////////////////////////////////////////////////////
298

  
299
    public static void setLevels(SokobanLevels sl)
300
    {
301
    	mLevels = sl;    
302
    }
303

  
304
///////////////////////////////////////////////////////////////////
305

  
306
    public SokobanRecords getRecords()
307
    {
308
    	return mRecords;
309
    }
310

  
311
///////////////////////////////////////////////////////////////////
312
    
313
	protected void onDraw(Canvas c)
314
	{
315
	drawSurface(c);
316
	}
317

  
318
///////////////////////////////////////////////////////////////////
319

  
320
  private void drawSurface(Canvas c)
321
		{
322
	  if( c!=null )
323
		  {
324
			if( mLevels!=null ) mLevels.render(currState,c);
325
			if( mMenu  !=null ) mMenu.render(currState,c);
326
		  }
327
		}
328

  
329
///////////////////////////////////////////////////////////////////
330

  
331
    public static void setRepaint()
332
    {
333
    	refreshScreen=true;
334
    }
335
   
336
///////////////////////////////////////////////////////////////////
337

  
338
	public boolean onKeyDown( int keyCode, KeyEvent event)
339
	{
340
		if( mMenu==null || mLevels==null ) return false;
341
	         
342
		switch(keyCode)
343
		{
344
		case KeyEvent.KEYCODE_MENU: mMenu.setPointerState(currState,  scrWidth/4,scrHeight,true);
345
			 					    refreshScreen = true;
346
			  					    break;
347
		case KeyEvent.KEYCODE_BACK: mMenu.setPointerState(currState,3*scrWidth/4,scrHeight,true);	
348
		  		                    refreshScreen = true;
349
		                            break;                     
350
		}
351
		  
352
		if( currState==STATE_PLAY || currState==STATE_CREA || currState==STATE_CRES )
353
		{
354
			switch(keyCode)
355
			{
356
			case KeyEvent.KEYCODE_DPAD_UP   : mLevels.keyboardMovePlayer(currState,1);
357
			  		                          refreshScreen = true; 
358
			  		                          break;
359
			case KeyEvent.KEYCODE_DPAD_DOWN : mLevels.keyboardMovePlayer(currState,3);
360
			                                  refreshScreen = true; 
361
			                                  break;
362
			case KeyEvent.KEYCODE_DPAD_LEFT : mLevels.keyboardMovePlayer(currState,4);
363
			                                  refreshScreen = true; 
364
			                                  break;
365
			case KeyEvent.KEYCODE_DPAD_RIGHT: mLevels.keyboardMovePlayer(currState,2);
366
			                                  refreshScreen = true; 
367
			                                  break;
368
			}
369
		}
370
		  
371
		return true;
372
	}
373

  
374
///////////////////////////////////////////////////////////////////
375

  
376
	  public boolean onKeyUp( int keyCode, KeyEvent event)
377
	  {
378
		  if( mMenu==null ) return false;
379
		  
380
		  switch(keyCode)
381
		  {
382
		  case KeyEvent.KEYCODE_MENU: mMenu.tryPress(currState,  scrWidth/4,scrHeight);
383
								      refreshScreen = true;
384
				  					  break;
385
		  case KeyEvent.KEYCODE_BACK: mMenu.tryPress(currState,3*scrWidth/4,scrHeight);
386
			  		                  refreshScreen = true;
387
			                          break;                     
388
		  }
389
		  
390
		  return true;
391
	  }
392
	  
393
///////////////////////////////////////////////////////////////////
394

  
395
	  public boolean onTouchEvent(MotionEvent event)
396
	  {
397
		  int action = event.getAction();
398

  
399
		  switch(action)
400
		  {
401
		  case MotionEvent.ACTION_DOWN: pointerPressed( (int)event.getX(), (int)event.getY() );
402
		  								break;
403
		  case MotionEvent.ACTION_UP  : pointerReleased((int)event.getX(), (int)event.getY() );
404
		  								break;
405
		  case MotionEvent.ACTION_MOVE: pointerDragged( (int)event.getX(), (int)event.getY() );
406
		  								break;
407
		  }
408

  
409
		  return true;
410
	  }
411

  
412
///////////////////////////////////////////////////////////////////
413

  
414
	private void pointerPressed(int x, int y)
415
	{
416
		if( mLevels==null || mMenu==null ) return;    
417
         
418
		mMenu.setPointerState(currState,x,y,true);
419
		if( currState==STATE_PLAY || currState==STATE_MAIN || currState==STATE_SUCD || currState==STATE_CREA || currState==STATE_CRES )
420
			mLevels.click(currState,x,y);
421

  
422
		refreshScreen = true;
423
	}
424
	
425
///////////////////////////////////////////////////////////////////
426

  
427
	private void pointerReleased(int x, int y)
428
	{
429
		if( mLevels==null || mMenu==null ) return;    
430
         
431
		mMenu.tryPress(currState,x,y);
432
		if( currState==STATE_PLAY || currState==STATE_MAIN || currState==STATE_SUCD || currState==STATE_CREA || currState==STATE_CRES )
433
			mLevels.unclick(currState,x,y);
434

  
435
		refreshScreen = true;
436
	}
437
	
438
///////////////////////////////////////////////////////////////////
439

  
440
	private void pointerDragged(int x, int y)
441
	{
442
		if( mLevels==null || mMenu==null ) return;    
443
	        
444
		mMenu.setPointerState(currState,x,y,false);
445
		if( currState==STATE_PLAY || currState==STATE_MAIN || currState==STATE_SUCD || currState==STATE_CREA || currState==STATE_CRES )
446
			mLevels.drag(currState,x,y);
447

  
448
		refreshScreen= true;
449
	}
450
	
451
///////////////////////////////////////////////////////////////////
452

  
453
	  
454
	public static String getIso()
455
	{
456
		if( isKorean==1 )
457
		  {
458
		  return "kr";
459
		  }
460
		else
461
		  {
462
          String ret="";
463
		
464
		  TelephonyManager tM =((TelephonyManager) mAct.getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE));
465
		
466
		  if( tM!=null )
467
	        {
468
		    ret = tM.getSimCountryIso();
469
		  
470
		    if( ret==null || ret.length()<=1 )
471
		      {
472
			  ret = tM.getNetworkCountryIso();  
473
		      }
474
		    }
475
		
476
		  return ret;
477
		  }		
478
	}
479
	
480
///////////////////////////////////////////////////////////////////
481

  
482
	public static void setDestroy(boolean d)
483
	{
484
		mDestroy = d;
485
	}
486
	
487
///////////////////////////////////////////////////////////////////
488

  
489
	public static boolean getDestroy()
490
	{
491
		return mDestroy;
492
	}
493
		   
494

  
495
///////////////////////////////////////////////////////////////////
496

  
497
	public void sendMail()
498
	{
499
		try
500
		  {
501
		  mDestroy = false;	
502
		  final Intent email = new Intent(android.content.Intent.ACTION_SEND);
503
		  email.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
504
		  email.setType("message/rfc822");
505
		  email.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{strEmail});
506
		  email.putExtra(android.content.Intent.EXTRA_SUBJECT, strName+" v."+mVersionStr);
507
		  mAct.startActivity(Intent.createChooser(email, "Send mail..."));
508
		  }
509
		catch( Exception ex )
510
		  {
511
		  Log.e( TAG_CANVAS, "No email application!");		
512
		  }
513
	}
514

  
515
///////////////////////////////////////////////////////////////////
516

  
517
	public static void setState(int state)
518
	{
519
		currState = state;
520
	}
521

  
522
///////////////////////////////////////////////////////////////////
523

  
524
	public static int getState()
525
	{
526
		return currState;
527
	}
528

  
529
///////////////////////////////////////////////////////////////////
530

  
531
	public static SokobanMenu getMenu()
532
	{
533
		return mMenu;
534
	}
535

  
536
///////////////////////////////////////////////////////////////////
537
// end of SokobanCanvas
538
}
distorted-sokoban/src/main/java/com/threedcell/sokoban/SokobanDatabase.java
1
package com.threedcell.sokoban;
2

  
3
import android.content.Context;
4
import android.content.SharedPreferences;
5
import android.provider.Settings.Secure;
6
import android.util.Log;
7
import android.app.Activity;
8

  
9
import java.util.Map;
10

  
11
///////////////////////////////////////////////////////////////////
12

  
13
public class SokobanDatabase 
14
{ 
15
	private static final String TAG_DB = "SokobanDatabase";
16
	private static final String PREFS_NAME = "sokobanPrefsFile";	
17
	
18
	public static final int BEGIN_LEVELS = 1000;
19
	public static final int INVALID = 1000000;
20

  
21
	private static int numrunnings;
22
	private static int numplayings;
23
	private static int hash;
24
	private static String username;
25
	private static String veriname;
26
	private static int uniqueid;
27
	private static int scrollpos;
28
	private static boolean finishedBootup = false;
29
	private static String iso = null;
30
	 
31
	private static SokobanLevels mLevels;
32
	private static SokobanDatabase rms =null;
33
	
34
	private static Context  context;
35
	
36

  
37
	private static final String[] bl = new String[]
38
	  {
39
	  "4", "12001100451111311100", // tmp/microban1.1
40
	  "4", "11111051134112411111", // tmp/microban1.2
41
	  "4", "0111010211111112010003350111", // tmp/microban1.3
42
	  "4", "111012101410141013111511", // tmp/microban1.4
43
	  "5", "000111111112321135311232111111", // tmp/microban1.5
44
	  "4", "1111133113111100012001200120111010101510", // tmp/microban1.6
45
	  "5", "111111232113231123211323111511", // tmp/microban1.7
46
	  "6", "001225001331000100000100000100000100111100101110111010001110", // tmp/microban1.8
47
	  "4", "21105331011100110002", // tmp/microban1.9
48
	  "6", "000111000501000111000301000111000301222111100300111100", // tmp/microban1.10
49
	  "6", "000111000211111210100010101110153310001110", // tmp/microban1.11
50
	  "6", "110000131000113011011511000221000101000111", // tmp/microban1.12
51
	  "5", "21000251002130003100013110111101100", // tmp/microban1.13
52
	  "4", "11211011113110401150", // tmp/microban1.14
53
	  "5", "01100011000110001000021315410101111", // tmp/microban1.15
54
	  "6", "000211111111110212010000011111011531001331000011", // tmp/microban1.16
55
	  "4", "15102220333011111111", // tmp/microban1.17
56
	  "5", "11111212111001011310003100051000110", // tmp/microban1.18
57
	  "6", "111221115331000010000110000110000110", // tmp/microban1.19
58
	  "6", "110000110000150111131111130100020100021100", // tmp/microban1.20
59
	  "4", "11101231013102010151", // tmp/microban1.21
60
	  "5", "11100212111110101011053310111101100", // tmp/microban1.22
61
	  "5", "1141111111010100352001110", // tmp/microban1.23
62
	  "5", "0011100335111001111112121", // tmp/microban1.24
63
	  "5", "0110001331022211153111100", // tmp/microban1.25
64
	  "4", "015101110031122213310011", // tmp/microban1.26
65
	  "5", "1112010010113351011121100", // tmp/microban1.27
66
	  "5", "1110015100133000212101111", // tmp/microban1.28
67
	  "7", "000011100013010001101000130100011011101501111010111121210111000", // tmp/microban1.29
68
	  "4", "11001331222115311110", // tmp/microban1.30
69
	  "5", "0011005320133111212100111", // tmp/microban1.31
70
	  "5", "0110011111244351110001100", // tmp/microban1.32
71
	  "5", "2101111311213051131121011", // tmp/microban1.33
72
	  "4", "0151013111411141014101210111", // tmp/microban1.34
73
	  "5", "0011002130023100231002310021300111500111", // tmp/microban1.35
74
	  "3", "111132012032012032011031011031011051011", // tmp/microban1.36
75
	  "6", "011100011300011100003100001351000101222111", // tmp/microban1.37
76
	  "5", "1111010020101101235010331101011020111111", // tmp/microban1.38
77
	  "7", "11101111010101111111100100000133500021210000011000001100", // tmp/microban1.39
78
	  "4", "00111132113611320011", // tmp/microban1.40
79
	  "4", "151013111301132111210020", // tmp/microban1.41
80
	  "5", "000110005100032111321013211110", // tmp/microban1.42
81
	  "7", "0000015000001100000121113112113301211110000011000", // tmp/microban1.43
82
	  "1", "532", // tmp/microban1.44
83
	  "4", "22211131103011311151", // tmp/microban1.45
84
	  "5", "011111100110131114120105001110", // tmp/microban1.46
85
	  "5", "011110305111011130201111011020110110001100011", // tmp/microban1.47
86
	  "6", "115100110100120110123331120111000111", // tmp/microban1.48
87
	  "6", "151100130100131100131000001000011011022211011111", // tmp/microban1.49
88
	  "5", "0110001300131111110101101051010200102111", // tmp/microban1.50
89
	  "5", "111001110001311014210050100111", // tmp/microban1.51
90
	  "4", "001511311142114211310011", // tmp/microban1.52
91
	  "5", "0212014141110111313101510", // tmp/microban1.53
92
	  "6", "000110000351001131001131000311000100110110122220111110111000", // tmp/microban1.54
93
	  "6", "110000510000110000010000113131111111000020000020", // tmp/microban1.55
94
	  "4", "11001141131101210115", // tmp/microban1.56
95
	  "6", "001100005100001100001000111141113111000021", // tmp/microban1.57
96
	  "5", "1100024311123010151101110", // tmp/microban1.58
97
	  "7", "11111001000300101131010111101013000101100010110001011011111002115111210011121", // tmp/microban1.59
98
	  "8", "0111111105000001110111011101113211003002030011021113110211101100", // tmp/microban1.60
99
	  "7", "11111101000010102225010003001011111113313100011100002000", // tmp/microban1.61
100
	  "4", "01110111031113101310121012000200020013101510", // tmp/microban1.62
101
	  "4", "11001100111101110100010001000300111121210030001000100010001100510011", // tmp/microban1.63
102
	  "7", "01100001110000113100013322221110011000011000005300000110", // tmp/microban1.64
103
	  "7", "0011110001131000003100131310222201011111510110111", // tmp/microban1.65
104
	  "7", "000500000030000112110110101110111011011101101110111010110131310002120000111000011100", // tmp/microban1.66
105
	  "5", "111001011053420011210130100111", // tmp/microban1.67
106
	  "5", "0011111222110050113101300031000110001100", // tmp/microban1.68
107
	  "6", "111151111111000201011102011211001000111311113131000111", // tmp/microban1.69
108
	  "6", "151000111111131331030011111000122110022110000110", // tmp/microban1.70
109
	  "7", "11111111300001150110113111011101101000100111011011211101110110101000010211111", // tmp/microban1.71
110
	  "8", "001100000113115101130111000100001101110011113100122011001120000011000000", // tmp/microban1.72
111
	  "6", "110000133131111111010010222050100010111111110111", // tmp/microban1.73
112
	  "6", "000110131110110311053101003111011000011000011200022200", // tmp/microban1.74
113
	  "5", "0110011100211102031020131203110013100511", // tmp/microban1.75
114
	  "8", "011100001111000011020111510201311102011011110110011003300011111000110000", // tmp/microban1.76
115
	  "5", "110005111111031201112011020310201101331000110", // tmp/microban1.77
116
	  "6", "011000113150131011113011131021113121011021000020000020", // tmp/microban1.78
117
	  "4", "00111111132210301321005111111111", // tmp/microban1.79
118
	  "8", "110000001121001213011112010010120111101100001011001531000013310000111100", // tmp/microban1.80
119
	  "4", "0111012101411140115001310111", // tmp/microban1.81
120
	  "6", "111000121110040311120131150010111110", // tmp/microban1.82
121
	  "6", "111100131310013311010111010010011212015212011000", // tmp/microban1.83
122
	  "8", "11100000111111112000001120151011203330101111111000111010000000110000001100000011", // tmp/microban1.84
123
	  "9", "000000011013111111011131311010000000010121100110101100115121000010101000011121000", // tmp/microban1.85
124
	  "6", "000111001522013022031310111310110100011100", // tmp/microban1.86
125
	  "7", "00000111111111112221203000001311000111300001131100015110", // tmp/microban1.87
126
	  "9", "000001100000111100000110100000310200000110100000310200000110100000310200151111100111011000", // tmp/microban1.88
127
	  "7", "11000001300000110000001122220300011151111110313111110000", // tmp/microban1.89
128
	  "5", "0001111011131315102211022131311101100011", // tmp/microban1.90
129
	  "3", "111131131150220022031131111", // tmp/microban1.91
130
	  "8", "00001100000011001110110011113000000131000003010000011100000100000001000000010000012221510101011101111100", // tmp/microban1.92
131
	  "9", "011101110111101111113101311111424111000252000111424111113101311111101111011101110", // tmp/microban1.93
132
	  "6", "110110533110110210030200110210111111110111", // tmp/microban1.94
133
	  "6", "511111123321132231132231123321111111", // tmp/microban1.95
134
	  "9", "001111000001111000000011000111020000111353111000020111000010010000111320000111000", // tmp/microban1.96
135
	  "8", "001511000010131100103101113010111311111101100000031000000200000002000000020000000200000002000000", // tmp/microban1.97
136
	  "8", "1110110011313100131311100110111000100000003000000010000001101110022222110000001100000111000001110000151100001110", // tmp/microban1.98
137
	//"8", "0011110000111100001501000011110000111000000010000000100000002000000020000011211100112011000000100011011000111310001103101111011010110310111001100000131000001110", // tmp/microban1.99
138
	  "6", "150110231110210130230111210131110111", // tmp/microban1.100
139
	  "11", "0011100000000101000000001141101110001001110100111110411001010101001140361110010111001000111011411000000001010000000011100", // tmp/microban1.101
140
	  "6", "211100211100205100211100011100110011130011131331111111", // tmp/microban1.102
141
	  "6", "001210001311121305103121113100012100", // tmp/microban1.103
142
	  "7", "0000111111131111303050010111001222100001100000110", // tmp/microban1.104
143
	  "9", "011000110111010111114212411003111300011151110003111300114212411111010111011000110", // tmp/microban1.105
144
	  "7", "00011001512300110210011023001102100133231111101010000111", // tmp/microban1.106
145
	  "6", "111111134441141141141141144421111115", // tmp/microban1.107
146
	  "6", "112120112121010501011111000110000110000110000010000110131310110110131310011100", // tmp/microban1.108
147
	  "7", "00111110010101001513100100011110001131100201311020013112000130200001020000111", // tmp/microban1.109
148
	  "7", "0011000001300000212111310131112120000031000001500", // tmp/microban1.110
149
	  "7", "1111000111122211112220000011001101100133100015311001331100013010001111", // tmp/microban1.111
150
	  "8", "0111000011333110101113101113001000110211001101110000010001110100015222200111111001110110", // tmp/microban1.112
151
	  "11", "001111000000011110000001102000000111011000001021252000011101110000000003000000000111100000001111111000001333110000001110000000011000", // tmp/microban1.113
152
	  "7", "111011011111311030011111023103512100110230000021000002300000210", // tmp/microban1.114
153
	  "6", "011000011131010131012051112031102131112030012110011000011000", // tmp/microban1.115
154
	  "5", "0011000510003100231002311123011231112100", // tmp/microban1.116
155
	  "8", "000121101121201011212030010101110101331101011310111011101511030001111100", // tmp/microban1.117
156
	  "8", "0111000011311000131311000030121000101211001002110151121001110110", // tmp/microban1.118
157
	  "7", "00111100010011013310101531010111101000101111222101111100", // tmp/microban1.119
158
	  "9", "000000110131111110130000011115011011010022111110122000131100000130000000110000000", // tmp/microban1.120
159
	  "9", "012110000032010000114110000122000000031000000010000111110000101111513131011011111", // tmp/microban1.121
160
	  "9", "111000000103110000131110000131310000130110000115000000010000000111111222111111111000000022", // tmp/microban1.122
161
	  "9", "110000000130000000110000000130000000131313111115110111000111100000000100002120100001211110002120110001111100001100000", // tmp/microban1.123
162
	  "7", "110000013111111500001130110113111011101101000100111011011211101110110112000011211111", // tmp/microban1.124
163
	  "6", "000112000212000112000110000010000110110310131110110331015101000111", // tmp/microban1.125
164
	  "5", "01111231012311123000231102301023110230101511011000", // tmp/microban1.126
165
	  "7", "00011110111151030131011101001310110022221001301100110000", // tmp/microban1.127
166
	  "6", "011000041011111011133451111010020110110100121100110000", // tmp/microban1.128
167
	  "6", "011000041011111011533411111010040110121100121000111000", // tmp/microban1.129
168
	  "5", "11100131001311103351010000111001111212012120111111", // tmp/microban1.130
169
	  "5", "111001210025200020111131113111033110110001100", // tmp/microban1.131
170
	  "6", "122000542111010101013111003100001100003110001110", // tmp/microban1.132
171
	  "6", "000110110110121530210331120111210111020330011110", // tmp/microban1.133
172
	  "8", "01100000011000000131111100100051001221100111113003022110010000101111311011100110", // tmp/microban1.134
173
	  "5", "111101301013130101111510300111001010211202112", // tmp/microban1.135
174
	  "6", "002121113201101201101111101010135330001110", // tmp/microban1.136
175
	  "8", "0011100000111111000100010002120100021211000010010111511111301000131310000131000001110000", // tmp/microban1.137
176
	  "9", "011111000010501000111111000112200000001211100002203131000013311000011101000011311000001100", // tmp/microban1.138
177
	  "10", "01111000001111100000111110000002200000110221511031022013111100000101110000010100000001310000000011100000003310000000131000000111000000011100", // tmp/microban1.139
178
	  "7", "112222011000110111101115110111111111100100000130000131000131100131100011100001100000", // tmp/microban1.140
179
	  "7", "00001110000131111011111131050100100121011124423311210111", // tmp/microban1.141
180
	  "7", "0011000001100000323111125211113230000011000001100", // tmp/microban1.142
181
	  "7", "1100000131110012011001301000121100000010000001000000100001131100103010131513112202210011100", // tmp/microban1.143
182
	  "10", "0001100000013310111001312123300122102131001044121111214401001312012210033252131001110133100000011000", // tmp/microban1.144
183
	  "9", "000151000000111000002333200113222311113202311113222311002333200000111000000111000", // tmp/microban1.145
184
	  "7", "0112110123332113212312315132132123112333210112110", // tmp/microban1.146
185
	  "8", "02100000011111000103331101011001020111110110111001110000151100001011000012110000", // tmp/microban1.147
186
	  "5", "11100101102201111201112010501111131110311101100031000110003100011", // tmp/microban1.148
187
	  "8", "01100000531110000013100001100000011322220110100000101000013010000111100001100000", // tmp/microban1.149
188
	  "6", "000110011310010110010310011310112010132311000111001100001500002100002110002110", // tmp/microban1.150
189
	  "8", "00011110001100100011313111303111111111100000005000000110000001100000011200000222", // tmp/microban1.151
190
	  "7", "1213112101100110111151100101111110100101011310101101011310110111101104011011100110020001111", // tmp/microban1.152
191
	  "8", "2222222200000022131111115313131101000000111111111131313100000010111111111313131111100000", // tmp/microban1.153
192
	//"15", "000000000000002111111111111131100000000000005101111111111111101000000000000101011111111111101010000000001101010111111101101010100000101101010101110101101010101010101101010101010101101010101010101101010101010101101010101010101101010101010101101010101010101101010101010101101010101010101101010101010101101010111010101101010000010101101011111110101101000000000101101111111111101100000000000001111111111111111", // tmp/microban1.154
193
	//"15", "011000000000111011000011011101011111111010111001000111011110001011100000010001021111111010111000000101010111111000111010010101000000010010111111000010010101011000010010111010000010010000010011011010111110111111010110110110110010010000010000011011111010110011011011010131010000010010115010111110010110010110110010010010010000011010011011111111010011011000010010010000011010011110110111011111111111111011000011011011000000", // tmp/microban1.155
194

  
195
	  "4", "110011001100233511211100", // tmp/microban2.1
196
	  "4", "011102011151113110401110", // tmp/microban2.2
197
	  "5", "000111101112121153311010011100", // tmp/microban2.3
198
	  "6", "011100110310501311111111011011021200011100001100", // tmp/microban2.4
199
	  "5", "110001300013110115110012200110", // tmp/microban2.5
200
	  "6", "051000021000040000111110111111000301000111", // tmp/microban2.6
201
	  "5", "0011111301112310100201115", // tmp/microban2.7
202
	  "5", "110001100011211543411101111000", // tmp/microban2.8
203
	  "4", "11111035124210311111", // tmp/microban2.9
204
	  "4", "11321132113200510011", // tmp/microban2.10
205
	  "4", "2011533122310111", // tmp/microban2.11
206
	  "6", "011011011031011246111031111011011000011000", // tmp/microban2.12
207
	  "5", "111001111111111002001343111611", // tmp/microban2.13
208
	  "5", "0110012311523111231001100", // tmp/microban2.14
209
	  "5", "1100011011234450111101110", // tmp/microban2.15
210
	  "6", "000011001331001011012035111111122000", // tmp/microban2.16
211
	  "4", "011103050131111024211111", // tmp/microban2.17
212
	  "5", "011100305101311011001321121211", // tmp/microban2.18
213
	  "5", "111111333201052010120110100111", // tmp/microban2.19
214
	  "5", "011000311101201042111310015100", // tmp/microban2.20
215
	  "7", "000011002121100110151001011100100110131100011310001010000111000", // tmp/microban2.21
216
	  "7", "000011111001011311111110002013000100100020111511011101100000110", // tmp/microban2.22
217
	  "6", "000111150111133111110010011011001111001011121000121100111100", // tmp/microban2.23
218
	  "10", "0000011100111001010013531111000010001000111111111011100012210000111101000010110100001100110000011110", // tmp/microban2.24
219
	  "5", "011101232113031123211111001500", // tmp/microban2.25
220
	  "6", "111111100031101131102435102011112011", // tmp/microban2.26
221
	  "5", "1161114341210121101111011110111303111011", // tmp/microban2.27
222
	  "6", "001100002100112300104311101511101100111000", // tmp/microban2.28
223
	  "6", "111100100300101311152421011111011000", // tmp/microban2.29
224
	  "7", "002221000110110011111001501000110100011010000001000110100011011113103110111311110111", // tmp/microban2.30
225
	  "7", "00001100000510111021011112100300210110001111313111101110", // tmp/microban2.31
226
	  "6", "111111111101002232001030001151000131000101000111", // tmp/microban2.32
227
	  "5", "000000001100015013310213102101121011000111111", // tmp/microban2.33
228
	  "7", "111000011201100122110010015101011110131000013000001310000111000", // tmp/microban2.34
229
	  "9", "000000011111111111110000222011110100013110100110501100101131000101310000110010000011110000", // tmp/microban2.35
230
	  "6", "000110001510001310001400111411101201101101110011011110", // tmp/microban2.36
231
	  "6", "011100010100131110113021013121011021000015000011", // tmp/microban2.37
232
	  "6", "001111001001122211113100103000113100115100", // tmp/microban2.38
233
	  "6", "011110110010501310114220010300011111000111", // tmp/microban2.39
234
	  "4", "0111012111411010113101410151", // tmp/microban2.40
235
	  "5", "111101005011330022410110101111", // tmp/microban2.41
236
	  "6", "001100111100102211102001101011133350011100011000", // tmp/microban2.42
237
	  "6", "001100001110002121001121000100111110533310011010001110", // tmp/microban2.43
238
	  "8", "000001110111110101100201013102011135021111100100030111100111111000000110", // tmp/microban2.44
239
	  "5", "0111001220002200011000110013000131001350113001111011110", // tmp/microban2.45
240
	  "8", "11100011111111210100001111000020111111101101302000013110000031000000510000001100", // tmp/microban2.46
241
	  "7", "111100013151101100010133131011111000010011122221111111111100000", // tmp/microban2.47
242
	  "5", "0011001311013010622201301113111010011100", // tmp/microban2.48
243
	  "5", "01110111101232003031023210111101510", // tmp/microban2.49
244
	  "5", "00111112111143100500134111121111100", // tmp/microban2.50
245
	  "5", "110151101133133221221101111011", // tmp/microban2.51
246
	  "6", "000110000310000110000500113111112241111011", // tmp/microban2.52
247
	  "5", "000111203111311121101253000110", // tmp/microban2.53
248
	  "9", "000001110000011010000011510000011110000000200001111211001030211113311000101111000111000000", // tmp/microban2.54
249
	  "7", "00011000131310011101000311100011010000101000210100020010002001011111111115111", // tmp/microban2.55
250
	  "6", "000111001201113435111201001011001110", // tmp/microban2.56
251
	  "6", "000111011111144310114120001050001110", // tmp/microban2.57
252
	  "7", "0000110011113101011010103335122110012210000011000", // tmp/microban2.58
253
	  "6", "000011110021133111110020111510030021011111000011", // tmp/microban2.59
254
	  "5", "001111113111010110111103111011010100501101031020110201002011111111101111000", // tmp/microban2.60
255
	  "4", "11321132113200320012003100110051", // tmp/microban2.61
256
	  "6", "000011000011000031113131122221015300011100", // tmp/microban2.62
257
	  "7", "1100000111000011300000310000011000003102100111110003221100121110001510", // tmp/microban2.63
258
	  "5", "1110013111010010312113210141201501001110", // tmp/microban2.64
259
	  "7", "11110001001000101410010541101014111101413110010201111000", // tmp/microban2.65
260
	  "12", "000001110000000001010000000001110000000000310000111132230000101321120111111021123101000032231111000013000000000011100000000010100000000015100000", // tmp/microban2.66
261
	  "8", "0001100000141100013123101121514114111211013213100011410000011000", // tmp/microban2.67
262
	  "9", "000020000000131000001111100011444110231454132011444110001111100000131000000020000", // tmp/microban2.68
263
	  "5", "1212123332135312333212121", // tmp/microban2.69
264
	  "6", "110111110221133333110222110111115111", // tmp/microban2.70
265
	  "6", "111011132321021131131120123231110115", // tmp/microban2.71
266
	  "7", "1111111143434113222311421241132223114343411111115", // tmp/microban2.72
267
	  "7", "1111111123232113232311235321132323112323211111111", // tmp/microban2.73
268
	  "7", "1111111132323112323210325230123232113232311111111", // tmp/microban2.74
269
	  "7", "1110111123232113232310235320132323112323211110111", // tmp/microban2.75
270
	  "7", "0112100013211111343312245422133431111123100012110", // tmp/microban2.76
271
	  "9", "001110000001011100011230111010323201113252311102323010111032110001110100000011100", // tmp/microban2.77
272
	  "7", "0111110113231113020310225221130203111323111110110", // tmp/microban2.78
273
	  "7", "0000110011111002010105313011123111102300110210000", // tmp/microban2.79
274
	  "7", "011000011200001214111012011100300000111100113050013111001100000", // tmp/microban2.80
275
	  "9", "000000011111000011111111111001001010113100010111321030020121112011300011005100011001100000", // tmp/microban2.81
276
	  "6", "000111122201103401101201105311101101113001113111111100", // tmp/microban2.82
277
	  "8", "11200000212000001120000011200000010000000111000005333111110111311111310000111000", // tmp/microban2.83
278
	  "6", "110011112211121121001000011110013351000131001101111131111100", // tmp/microban2.84
279
	  "11", "0000000011000000000110000000111100000011030000000131311000000311110000001100011111011000115110011001101122220011110000000", // tmp/microban2.85
280
	  "8", "0011100001101000011110001131000011330210003111100011011000000210000502100001121100011111", // tmp/microban2.86
281
	  "10", "00000110000000012110000021211100002110510000010011000011000000013100000013110000013110000013110000001110000000", // tmp/microban2.87
282
	  "5", "000112103111311241101253000110", // tmp/microban2.88
283
	  "6", "111111102011114111034310114500102000111000", // tmp/microban2.89
284
	  "5", "0111001110034310212112520134300111001110", // tmp/microban2.90
285
	  "7", "00110000011000001100000313101135311111011100000100001212001121200111110011000", // tmp/microban2.91
286
	  "6", "000110111110512110102010112010012110010000031000013100011310010131111111111000", // tmp/microban2.92
287
	  "6", "000011001211011111123210131000123000001111003011011011011510000110", // tmp/microban2.93
288
	  "8", "00000110000111110001101100003111011311000103330001011100110100001021200010212000110120000100101101115111000110110001011000011100", // tmp/microban2.94
289
	  "6", "110510111212110212110210100010101110113310001310113310111110110000", // tmp/microban2.95
290
	  "9", "000001100000001100011313100012011000012033110012011111114000511111111110012000000", // tmp/microban2.96
291
	  "10", "110000111011111113101100000100010131331101013101110101115100010120000001012000000100200000111120000010002000001111100000", // tmp/microban2.97
292
	  "7", "11100001013100101311110230051023111112000001211000111100", // tmp/microban2.98
293
	  "9", "000011110000011011111222221111111010110000050000001110000003311000011131000011331000011100", // tmp/microban2.99
294
	  "10", "01111100000100011000011100111101131000010003122222000110000100033011110113101000011510100001000010000111111000", // tmp/microban2.100
295
	  "6", "011000011000123100213231132312001321000510000110", // tmp/microban2.101
296
	  "10", "000110000000111000000011111110001110111000011112000000000200000000020000111112110011030211113313100011131510000011000000", // tmp/microban2.102
297
	  "10", "001100000000110000001111110000121111000012000000000200500000111111111112011133311000000100111111310000000011100000001110", // tmp/microban2.103
298
	  "8", "000111101111001010011111101101111133033100313130001111100000500001121221012212110120011100000111", // tmp/microban2.104
299
	  "6", "011000011110114121143431012321051100", // tmp/microban2.105
300
	  "5", "0011011210104111320503201113111110011000", // tmp/microban2.106
301
	  "7", "001100001133110101101013130101011010501101010301112222201110000", // tmp/microban2.107
302
	  "9", "000110000000130000001121100001232111132353231111232100001121100000031000000011000", // tmp/microban2.108
303
	  "8", "0121000003133131012212120311123113211130212122105313313000001210", // tmp/microban2.109
304
	  "8", "0011011100222121111101001511110000110100000013100001311000131100113110001111011111001111111111100110110000001100", // tmp/microban2.110
305
	  "10", "0011000000001100000011312000001130200011113120111100002013110000203051001121131100111000110001100000", // tmp/microban2.111
306
	  "5", "11111133311242102520124211333111111", // tmp/microban2.112
307
	  "5", "110111141114341114111252011411143411141111011", // tmp/microban2.113
308
	//"13", "0000001110000000011101000000001011100000000131300000111001010111010131222130101111025201111010312221310101110101001110000031310000000011101000000001011100000000111000000", // tmp/microban2.114
309
	  "11", "0000010000000001110000000123210000012323210001231313210113235323110123131321000123232100000123210000000111000000000100000", // tmp/microban2.115
310
	  "9", "111000011111111111010000011110000010111111020110111110000003020000111010000113020000111010000113020000111010000113010000111510", // tmp/microban2.116
311
	  "9", "000000011011100111111101131101003110101113100501203100112211000002100000001100000", // tmp/microban2.117
312
	  "10", "00112120000011212000001121200000110500000001111111110011001111100001101311001310013113311000131111000001110000", // tmp/microban2.118
313
	  "8", "011111000100021101012101010222115111200011011000010000001331110011331110001331100011111000011100", // tmp/microban2.119
314
	  "10", "0000011121000101512100011011210131100121011011112111111310211131010000010101000001001100000111300000010331000001111100000000110000", // tmp/microban2.120
315
	  "8", "000121110011211101342010010121100101210011000100101115001333011011111010001110100030011000111100", // tmp/microban2.121
316
	  "5", "000110144101135111411102101110", // tmp/microban2.122
317
	  "9", "011000000013100000110100000130100000111100000011111000033002200011112111000002151000001100", // tmp/microban2.123
318
	  "7", "111011113141312201022131013112353211310131220102213141311110111", // tmp/microban2.124
319
	  "12", "000000001110002120001110002121151100001110001111000200001111111100000000101100000000101000000000101111000000101303100000110113100000131130100000111011100000011111000000", // tmp/microban2.125
320
	  "12", "011111000000013311000000011300000000010110000000010310000000010110000000010010000000111122000000500022211111111020000131001020131331001121111011000000000011", // tmp/microban2.126
321
	  "5", "5121011411132310141100200011000130001100", // tmp/microban2.127
322
	  "7", "001500000131000114100110410010141111012101101110111000110111110", // tmp/microban2.128
323
	  "9", "000000011111113111110020011030011210011213010010002011010001511011131000011000000", // tmp/microban2.129
324
	//"15", "000000000000111000000000001141000000000011440000000000114410000000001144110000000011441100000000114411000000001144110000000011441100000000114411000000001144110000000011441100000000114411000000000153110000000000011100000000000012000000000000", // tmp/microban2.130
325
	//"15", "000000000002000000000000023150000000000232310000000002323310000000023233232000000232332320000002323323200000023233232000000232332320000002323323200000023233232000000032332320000000123323200000000113232000000000012320000000000011000000000000", // tmp/microban2.131
326
	//"25", "0000000000000000001110000000000000000111000101000000000000000010111111100000000001110001110000100000111000101000001000010000010111151100000100001000001110000300000010000111000001000012111111011110100000100001100110111101110000010000011001111010000000011111111100110001000000001010001011000001100000000111000111100011110001110000000011000001101000101000000001000110011111111100000000101111001100000100000111011110110011000010000010111101111111100001000001110000100000010000111000001000010000011111110100000100001000001010001110000010000111000111000000000011111110100000000000000001010001110000000000000000111000000000000000000", // tmp/microban2.132
327
	//"32", "0000111110111111111111111111000000011011011000000000000000011000001101101101111111111111111011000110110110110000000000000011011011011011011011111111111111011011101101101101100000000000011011011010110110110111111111111011011110101011011011000000000011011011101010101101101111111111011011011010101010110110000000011011011010101010101011011111111011011011101010101010101100000011011011011010101010101010111111011011010110101010101010101000011011010101101010101010101111111011010101011010101010101110010011010101010110101010101100100111010101010101101010101101111523010101010101011010101101100001010101010101010110101101101111110101010101010101101101101100000011010101010101011101101101111111101101010101010101101101100000000110110101010101101101101111111111011011010101011101101100000000001101101101010111101101111111111110110110110101101101100000000000011011011011011101101111111111111101101101101101101100000000000000110110110110001101111111111111111011011011000001100000000000000001101101100000001111111111111111110111110000", // tmp/microban2.133
328
	//"35", "0000000000001110000001100000000000000000000000011111111111000000000000000000000000010000000110000000000000000000001110110000001001100000000000000000011111100000111111000000000000000000010011001001110110000000000000001110110000111000001001100000000000011111100011111000111111000000000000010011001101111001110110000000001110110000111010111000001001100000011111100011110101111000111111000000010011001111101010111001110110001110110000111001011101111000001001111111100011111111101010111000111111010011001110000001110101111001110110100000111111111110101111111000001001000011100010100101010000011000010010001111111111115111111111111000100100001100000101010010100011100001001000001111111010111111111110000010110111001111010111000000111001100101111110001110101011111111100011111111001000001111011101001110000110111000110111001110101011111001100100000001111110001111010111100011111100000011001000001110101110000110111000000000110111001111011001100100000000000001111110001111100011111100000000000011001000001110000110111000000000000000110111001001100100000000000000000001111110111011111100000000000000000011001001010110111000000000000000000000110010100100000000000000000000000001113101211100000000000000000000000011000000111000000000000", // tmp/microban2.134
329
	//"39", "000000000000000000000001100000000000000000000000000000000000001100000000000000000000000000000000000001101110000000000000000000000000000000000111110000000000000000000000000000000111110000011000000000000001100000000110111010011011000000001100001100000000110000010011011011100001100001101110000110000010011001111100001100000111110000011111110001111100000000111111110000011111000111111100110000111110000010111011101100100000110110000111011000011111000001100100000110110000000011011111000000001100101110110000000000011011101011100000000111110000000000000000000001111100000111110000000000000000000001111100000000111010111000000000000000001110101110000000011111000000000000000000000111110000011111000001100000000000000111110000011011101001101100000000000110111010011011000001001101101110000110110000010011011000001001100113250000110110000010011001111111000111110000000110011111110001111100011111110011000000011111000111111100110010000011011000011111001100100000110110010000011011000011101101100100000110110010111011000000000001101100101110110000011111000000000000001100000111110000011111000000000000000000000111110000000011101011100000000000000000111010111000000001111100000000000000000000011111000001111100000000000000000000011111000000001110101110110000000000011011101001100000000111110110000000011011000001001100000111110000110111000011011000001001101110111010000011111000011001111111000111110000011111111000000001111100011111110000011111000001100001111100110010000011000011101100001100001110110110010000011000000001100001100000000110110010111011000000001100000000000000110000011111000000000000000000000000000000011111000000000000000000000000000000000011101100000000000000000000000000000000000001100000000000000000000000000000000000001100000000000000000000000", // tmp/microban2.135
330

  
331
	  "6", "110000110000110000233135112121110000", // tmp/microban3.1
332
	  "4", "01110311124415110011", // tmp/microban3.2
333
	  "5", "111111231102300115111230111111", // tmp/microban3.3
334
	  "4", "1151103112420031114111110011", // tmp/microban3.4
335
	  "4", "11001100113113210120032001500110", // tmp/microban3.5
336
	  "5", "111111445100111133101221000110", // tmp/microban3.6
337
	  "7", "0110000031113101202110100010132021015111300000110", // tmp/microban3.7
338
	  "6", "111111113111020000111111111111004000111111111511000400111111111111000020111311111111", // tmp/microban3.8
339
	  "6", "000011011032111151110032010011010111010000010110011210010310010210011310000110", // tmp/microban3.9
340
	  "5", "11011133311222110300123101251000110", // tmp/microban3.10
341
	  "6", "111110115110100100200110223110000100011311013111111000111000110000", // tmp/microban3.11
342
	  "6", "110000222110200110113131003131005111", // tmp/microban3.12
343
	  "5", "011000141101405014111123011110", // tmp/microban3.13
344
	  "6", "111151131131010010130130112210012210", // tmp/microban3.14
345
	  "6", "150000111110120211033331121200111100", // tmp/microban3.15
346
	  "6", "000510011110030221113101101311122030011110011000", // tmp/microban3.16
347
	  "6", "110011111331113011001210004210001251000111", // tmp/microban3.17
348
	  "5", "11100134111141120102114111143500111", // tmp/microban3.18
349
	  "6", "121000132100133210123321012335001231000121", // tmp/microban3.19
350
	  "7", "000110001211000131100000500011111001414110014141100141110001110", // tmp/microban3.20
351
	  "7", "00001110001151000101021211211100011013131001131000001100", // tmp/microban3.21
352
	  "9", "111000111111100111011113310011011310000110110000150000000111100000100100011110100022120100001000100001111100", // tmp/microban3.22
353
	//"13", "0000110000000000011210000000001131000000000010000000000001110011101101141111110230145410320111111411011011100111000000000000100000000001311000000000121100000000000110000", // tmp/microban3.23
354
	//"13", "0000110000000000011210000000001131000000000010000000000001100011101100141111110230141410320111111410011011100011000000000000100000000001311000000000125100000000000110000", // tmp/microban3.24
355
	  "6", "111000101100103200112311103201102301113215002301001101000111", // tmp/microban3.25
356
	  "9", "000000011000000111121212151103010110111101100001010100001011100001011000001131000001030000001110000", // tmp/microban3.26
357
	  "8", "0110000001111111010010110131011001010110115101102222101000011010000033100001311000011100", // tmp/microban3.27
358
	  "5", "1110013210033210121501211033211321011100", // tmp/microban3.28
359
	  "6", "001111013335011111013000022220022220000310111110133310111100", // tmp/microban3.29
360
	  "6", "110000110000411111230111460300230110411110110110110000", // tmp/microban3.30
361
	  "9", "001110000001310000013131100013131100011000100010111100011101011112221151212001011000001110", // tmp/microban3.31
362
	  "9", "111110000115110000110100000222200000000100000111100000113100000010000000111101110131301011003111101001111101000110011000011110", // tmp/microban3.32
363
	  "10", "00000001110000011101000002120100000111010000021201000001110100000212010000011101000000100100111151110113101000113100110010130131001031001100101310000011111000000001100000", // tmp/microban3.33
364
	  "5", "01110032101321053200132100321001110", // tmp/microban3.34
365
	  "6", "111000123210134110011431012321000115", // tmp/microban3.35
366
	  "9", "111011111112310011102300221100111330110111011033111001122003201110013211111510111", // tmp/microban3.36
367
	  "6", "111211111311000320000110000320000110000320000510", // tmp/microban3.37
368
	  "6", "150000110000233100112100110000233131112121110000", // tmp/microban3.38
369
	  "8", "00000011000001510001131100011110000010000013310012222200111331001010110011100000", // tmp/microban3.39
370
	  "9", "000111011000111111000003001011101001011101102001131102001101102003000002001011001111111115130011011111111000", // tmp/microban3.40
371
	  "8", "111001105031111011330010011110100030021100110212000112000001111000001110", // tmp/microban3.41
372
	  "8", "110011001110110011303100021012000230320002151200013031110110111101100000", // tmp/microban3.42
373
	  "9", "000110000000110000000321000001323311112252211113323100000123000000011000000011000", // tmp/microban3.43
374
	  "6", "001100111111131313424242131313424242151111", // tmp/microban3.44
375
	  "9", "001100000001313100001020200111110111101020201101313101110110101011011101001100011000115110", // tmp/microban3.45
376
	  "12", "110000000111131000001131113100011310011310113100001122221000000120020000000020021000000122221100001311013110013110001311131100000131511000000011", // tmp/microban3.46
377
	  "11", "00114141100001111111000001020100001110201110031102011301131020131110100500101113102013110311020113001110201110000102010000011111110000114141100", // tmp/microban3.47
378
	  "5", "11000511101441000111133111221100110", // tmp/microban3.48
379
	  "6", "000110001110112431114235011100011000", // tmp/microban3.49
380
	  "6", "000110001110112431114235011100001100", // tmp/microban3.50
381
	  "7", "0000111011131101103001412110114105000121100011000", // tmp/microban3.51
382
	  "7", "00001110111311011030014121101141050011411001210000011000", // tmp/microban3.52
383
	  "7", "00001110111311011030014121101141050011411001412000011100", // tmp/microban3.53
384
	  "10", "11100000001130000000011000000001301100000111110000011015000001101101100000111110001130001000111310200001001021000110222100031000000001100000", // tmp/microban3.54
385
	  "9", "111000111102101101113231321011323210003252300012323110123132311101101201111000111", // tmp/microban3.55
386
	  "9", "000111000000123000000321000131323311122252221113323131000123000000321000000111000", // tmp/microban3.56
387
	  "11", "0011111110000101010100113232323111023232320111320102311102315132011132010231110232323201113232323110010101010000111111100", // tmp/microban3.57
388
	//"13", "1111111111111101010101010111323232323111023232323201113232323231110232323232011132325232311102323232320111323232323111023232323201113232323231110101010101011111111111111", // tmp/microban3.58
389
	  "9", "123232111132323101123232101132323101123232101101010101101010101101010305101010101101010101101010101101010101101010101101010101111111111", // tmp/microban3.59
390
	  "6", "001110001011003201113205103201101111110100011100", // tmp/microban3.60
391
	  "5", "111111010113331122201500011000", // tmp/microban3.61
392
	  "5", "00000110001110013335022210110001100", // tmp/microban3.62
393
	  "5", "001100011000320113201032111151", // tmp/microban3.63
394
	  "6", "110000111000111100011110001111000100153331112221", // tmp/microban3.64
395
	  "6", "111000103211112305003211001100001100", // tmp/microban3.65
396
	  "6", "001111111001103211502300103200111110001110", // tmp/microban3.66
397
	  "5", "015110100113231123211010011100", // tmp/microban3.67
398
	  "6", "000111113201502311103200101100111100", // tmp/microban3.68
399
	  "5", "00110012100141001400113101151011000", // tmp/microban3.69
400
	  "6", "110000111110112010004010054111013111000110", // tmp/microban3.70
401
	  "4", "012101410141114115311100", // tmp/microban3.71
402
	  "5", "0121101401054110141000311011110101001110", // tmp/microban3.72
403
	  "6", "111000112100113100014151003101002011001110", // tmp/microban3.73
404
	  "6", "111000102100113151004111113100102000111000", // tmp/microban3.74
405
	  "4", "1110121013100410131112150011", // tmp/microban3.75
406
	  "5", "0001101215013110041011310102101110001100", // tmp/microban3.76
407
	  "6", "011000011000011000003311113211102200150100011100", // tmp/microban3.77
408
	  "5", "111001010053320032210101101111", // tmp/microban3.78
409
	  "5", "011100101003320132215110100111", // tmp/microban3.79
410
	  "5", "01110010100151003300132111220100111", // tmp/microban3.80
411
	  "5", "000110011111311124200131000510", // tmp/microban3.81
412
	  "4", "001100311242103111511110", // tmp/microban3.82
413
	  "7", "0001110000101101131011124211101311011050000111000", // tmp/microban3.83
414
	  "5", "00111005010121103430112101010011100", // tmp/microban3.84
415
	  "6", "111000113100034210012511011011000011", // tmp/microban3.85
416
	  "6", "111000105311113421000210011110011100", // tmp/microban3.86
417
	  "6", "001111001111115300103421101201101101100001111111", // tmp/microban3.87
418
	  "8", "0011000000111111001000111531101113421010002000100111111001110110", // tmp/microban3.88
419
	  "5", "001110011111410125301141001100", // tmp/microban3.89
420
	  "5", "0110001410125311141111011", // tmp/microban3.90
421
	  "5", "0011101411125301141100111", // tmp/microban3.91
422
	  "6", "011100010110141011253101141101001111001100", // tmp/microban3.92
423
	  "6", "001100001100013411114215111000110000", // tmp/microban3.93
424
	  "5", "11000111111134100420015100111001100", // tmp/microban3.94
425
	  "6", "005100001100003410114211111111000011", // tmp/microban3.95
426
	  "6", "011100011111001011003450014210111100111000", // tmp/microban3.96
427
	  "4", "511013310312012200110011", // tmp/microban3.97
428
	  "5", "11000510001331013121002210111001110", // tmp/microban3.98
429
	  "5", "1111011110013300135200122", // tmp/microban3.99
430
	  "4", "01110331135210221111", // tmp/microban3.100
431
	//"40", "000001110000000111000000011100000000000000000101011000010101100001010110011100000000011111110001111111000111111101211000000000010111100001011110000101111015110000000011101111001110111100111011110111101110001111011110111101111011110111101110101011011110111101111011110111101111010011111110111101111011110111101111011111110010111101111011110111101111011110110101011101111011110111101111011110111100011101111011110111101111011110111101111000000011110111101111011110111101111011110000000111101111011110111101111011110111100000001111011110111101111011110111101111000000011110111101111011110111101111011110111000111101111011110111101111011110111010101101111011110111101111011110111101001111111011110111101111011110111101111111001011110111101111011110111101111011010101110111101111011110111101111011110001110111101111011110111101111011110111100000001111011110111101111011110111101111000000011110111101111011110111101111011110000000111101111011110111101111011110111100000001111011110111101111011110111101111011100011110111101111011110111101111011101010110111101111011110111101111011110100111111101111011110111101111011110111111100101111011110111101111011110111101101010111011110111101111011110111101111000111011110111101111011110111101111011110000000111101111011110111101111011110111100000001111011110111101111011110111101111000000011110111101111011110111101111011110000000111101111011110111101111011110111101110001111011110111101111011110111101110101011011110111101111011110111101111010011111110111101111011110111101111011111110010111101111011110111101111011110110101011101111011110111101111011110111100011101111011110111001111011100111101110000000011110111101000011110100001111010000000000113101111111000111111100011111110000000001110011010100001101010000110101000000000000000001110000000111000000011100000", // tmp/microban3.101
432

  
433
	  "4", "011101110310541012101100", // tmp/microban4.1
434
	  "5", "001110015100310014100121003100141001210011000", // tmp/microban4.2
435
	  "5", "111111322103141141301223111151", // tmp/microban4.3
436
	  "4", "1231132113215230132113211231", // tmp/microban4.4
437
	  "5", "00000010000110001511011310020000200002001311111311001110001100001", // tmp/microban4.5
438
	  "6", "100000110000131000113110111110002000002000002000002000131111113111001510000110000010", // tmp/microban4.6
439
	  "7", "01100000111310030202011050101302021111131100010110001110", // tmp/microban4.7
440
	  "6", "121121233332132231132631233332121121", // tmp/microban4.8
441
	  "9", "000011000000032000001111100121141100131454131001444121001111100000230000000110000", // tmp/microban4.9
442
	  "10", "000011000000001100000000110000111010000011134011000005411110000320111100012001110003200000000120000000031000000001100000", // tmp/microban4.10
443
	  "5", "110151323112321123211323111011", // tmp/microban4.11
444
	  "5", "11511131310242001110132311232111011", // tmp/microban4.12
445
	  "5", "01511014310120001331112211110011000", // tmp/microban4.13
446
	  "6", "001511003211121300103210101010111110011100", // tmp/microban4.14
447
	  "5", "001101211013110005001110011411041110141100110", // tmp/microban4.15
448
	  "5", "00111011010230104111141001510011000", // tmp/microban4.16
449
	  "5", "111001151103402011330122101141", // tmp/microban4.17
450
	  "7", "00001100011110112031011414100141411013021101151000110000", // tmp/microban4.18
451
	  "6", "001100113110503010123212001111001100", // tmp/microban4.19
452
	  "5", "001111141111430112100023100151", // tmp/microban4.20
453
	  "6", "001100014100113110503010123212001111001100", // tmp/microban4.21
454
	  "5", "00000110111141123432105011111100000", // tmp/microban4.22
455
	  "7", "000000001101100513110011421000414000124110011311001101100000000", // tmp/microban4.23
456
	  "8", "001100000053000001210000012300000141111000200010013111110111011100000000", // tmp/microban4.24
457
	  "6", "001110011310020310025310020310020110010000011110111010101111111101010111011100", // tmp/microban4.25
458
	  "6", "000111000111112230112231030501131111111000", // tmp/microban4.26
459
	  "6", "000110000110011410011140010212133101110151110000", // tmp/microban4.27
460
	  "7", "000110001111110144411004241101151001310000104110011111000011100", // tmp/microban4.28
461
	  "7", "00110000111000114110014111000141000031000001151000042411014441101111110001100", // tmp/microban4.29
462
	  "11", "000000011000000000122100000001331000000001000000011011100001111111000011003200110050011002300110000111111100001110110000000100000000133100000001221000000000110000000", // tmp/microban4.30
463
	  "6", "011000112110112011134331002110001150", // tmp/microban4.31
464
	  "8", "0110110002301221123113311110010000000111121111111315032000110110", // tmp/microban4.32
465
	  "7", "1110111101010111434110025200114341110101011111111", // tmp/microban4.33
466
	  "6", "011100111110143431012121023430010521011111", // tmp/microban4.34
467
	  "7", "1112111103030113212312011102132123110303011116111", // tmp/microban4.35
468
	  "10", "1111111115103000000110201112311012312001101100310110130011011002132101132111020110000003011111111111", // tmp/microban4.36
469
	  "7", "0012100023132013141312145412131413102313200012100", // tmp/microban4.37
470
	  "7", "0111110132323112323211325231123232113232310111110", // tmp/microban4.38
471
	  "10", "001100000001110000000103110000111311000011130000000011000000001000000000100000000010000000011000110001111111000000000100000000010000000001000001110100001111011100105121220011100000", // tmp/microban4.39
472
	//"8", "0000110000111100012111001121100021200000010000000100000001000000011111110110001100000010000000100000001000000110000011100000353100013301000111010000111100001110", // tmp/microban4.40
473
	  "9", "000000110111111110110000010010000110010000111013200311011131110000200110000100000000200000000100000000100000011110000011511000000111000000011000", // tmp/microban4.41
474
	//"10", "0000001110000000101000000011100000113100110010010011101001001131311311013130010101131101050110011101000000011100000001000000000100000000010000000001000000000100011000010001110001000112110100001211010000120001000011220100001111111000122101100000000110", // tmp/microban4.42
475
	  "5", "01100013000131501301011010110102101010111212011110", // tmp/microban4.43
476
	  "6", "011000011000013011131131113011011010011050021010020110121200111100", // tmp/microban4.44
477
	  "8", "111100001001100011101211053442111110210011301000013110000101000001110000", // tmp/microban4.45
478
	  "9", "000000110111111110100051030111000011011011011131122031131022010101022011131022311101011011111000030001111131000000111", // tmp/microban4.46
479
	  "7", "11111002000100201313120113112013131200051011111101100000", // tmp/microban4.47
480
	  "7", "11111002000100201313120113112013131200150011111001100000", // tmp/microban4.48
481
	  "7", "11111002000100201313120113112013131205100011110001100000", // tmp/microban4.49
482
	  "12", "011000011000011110113111010110110001110100011102110111113102110110001101010110100105110000110101111111110102000000010002000001033101000001111111000001110111", // tmp/microban4.50
483
	  "5", "00111023211323012321132310111500000", // tmp/microban4.51
484
	  "5", "01111023211323112320132310111500110", // tmp/microban4.52
485
	  "5", "01111023211323012320132310111500011", // tmp/microban4.53
486
	  "5", "00111023211323012320132310111501100", // tmp/microban4.54
487
	  "7", "001100012110001311000005000011110001141411041411101410110111000", // tmp/microban4.55
488
	  "9", "110011111131113102110001002010001102131113102111001102001000002003011312111111111130110151111110111", // tmp/microban4.56
489
	  "7", "01111000141111114444111454111444411111141000111100001000000100000010000001000013310001221000001100", // tmp/microban4.57
490
	//"13", "0000000000000000000000000000000111000000000112100000000013431100000113020311000012425242100001130203110000011343100000000012110000000001110000000000000000000000000000000", // tmp/microban4.58
491
	  "11", "0001100000000011000000000112100000001343111100130203111002425242001113020310011113431000000012110000000001100000000011000", // tmp/microban4.59
492
	  "11", "0000111000000002320000000131310000013232310012324242321131320231311232424232100132323100000131310000000232000000001510000", // tmp/microban4.60
493
	  "8", "000011101110101013111110042043000121121000340240011151310101011101110000", // tmp/microban4.61
494
	  "9", "000011100111010100131111100042023000011141100003202300001141110000320240001115131001010111001110000", // tmp/microban4.62
495
	  "7", "011111001000101113111132224104363301322241111311101000100111110", // tmp/microban4.63
496
	  "7", "011111001001301110111142224104363401321231111011103100100111110", // tmp/microban4.64
497
	  "7", "1110110113431011232100021100012521101343110110111", // tmp/microban4.65
498
	  "7", "0111110014431013232111025201112323101443100111110", // tmp/microban4.66
499
	  "6", "000011131331122411021301022511021301122411131331000011", // tmp/microban4.67
500
	  "7", "000001101313310122411002030113225111121300002110000031000001100", // tmp/microban4.68
501
	  "9", "000001100000133131001222111012001310032324300132002110111222110013133500000110000", // tmp/microban4.69
502
	  "9", "000111000000111000113333310111212110010202000010462110000202010011212111013333311000111000000111000", // tmp/microban4.70
503
	  "6", "110000153131122211032310012300032100122211131331000011000011", // tmp/microban4.71
504
	  "9", "000110000000153131000122211000132331111002100111232000001021100011313100011000000011000000", // tmp/microban4.72
505
	  "8", "0000110013231400112121000042133101252111032132001310310011111100", // tmp/microban4.73
506
	  "7", "1100000110000013350000121000032000001200000320000112221013133111100111", // tmp/microban4.74
507
	  "11", "000011100000000131000000011110000000330001100001151111100042224031110210110111303222303111021011011130422240001111131100001100001111000000131010000001011100000011100", // tmp/microban4.75
508
	  "9", "110000011130000031131101131112222211030201030015141110030102030112222211131101131130000031110000011", // tmp/microban4.76
509
	  "7", "011100001010000132411012314100403251123141103241111110111110000", // tmp/microban4.77
510
	  "8", "000011000000130000001100001313000012231100025411000221000002330011121311111001110000011000000110", // tmp/microban4.78
511
	  "7", "011100001010110132411012314100403251123231103232111110110000011", // tmp/microban4.79
512
	  "10", "11000000001300000000110000000053313131001122222100002020300011212231311014332111111101100000001310000000111000", // tmp/microban4.80
513
	  "8", "011000000113131001042210112111001332233100111251012240100131311000000110", // tmp/microban4.81
514
	  "8", "000001100011011000133310002222201103230011132100131121510003231100011000", // tmp/microban4.82
515
	  "8", "000011000110110003203200132312111120323103251230013421100011100000111000", // tmp/microban4.83
516
	  "8", "0110110002303210023132110121213103202300131213101510111001100000", // tmp/microban4.84
517
	  "11", "000011100000000131000000001111000011000330001111151100013042223000110100120111301222303111010012011000222230310001131111111110000110101310000001110100000000111000000", // tmp/microban4.85
518
	  "7", "011111001030101213121132123100141001325231121312101030100111110", // tmp/microban4.86
519
	  "7", "1101100230320014141111121131014100011410001150000", // tmp/microban4.87
520
	  "10", "11100110001122435000013121100000020000000121110000014443000001113111110000301111000110001100011111100000000110", // tmp/microban4.88
521
	  "7", "0000000011215001232100233320012321001323100134310013231001232100233320012321001121100000000", // tmp/microban4.89
522
	  "7", "0000000012325001323100114110011411002343200321230023432001141100114110013231001232100000000", // tmp/microban4.90
523
	  "7", "0000000011115001111100343430021212001232100134310012321002121200343430011111001111100000000", // tmp/microban4.91
524
	  "7", "0000000011115003243200141410014141001141100114110011411001414100141410023423001111100000000", // tmp/microban4.92
525
	  "7", "0000000011215001323100132310024242001323100134310013231002424200132310013231001121100000000", // tmp/microban4.93
526
	  "7", "0000000011415001232100132310011321001323100232320013231001241100132310012321001141100000000", // tmp/microban4.94
527
	  "7", "0000000011215001343100232120014441001113100234320013111001444100212320013431001121100000000", // tmp/microban4.95
528
	  "7", "0000000011415001333100223220013331002212200134310022122001333100223220013331001141100000000", // tmp/microban4.96
529
	  "8", "0000000001323250012323100132321001132310011232100123231001323210012321100132311001232310013232100123231000000000", // tmp/microban4.97
530
	  "8", "0000000001411450014114100123321001422410014133100132231001322310013314100142241001233210014114100141141000000000", // tmp/microban4.98
531
	  "8", "0000000001111150013433100142241002313320024223200132131001312310023224200233132001422410013343100111111000000000", // tmp/microban4.99
532
	  "8", "0000000001123150031321200132321002132130013232100321132002311230012323100312312001232310021231300113211000000000", // tmp/microban4.100
533
	//"40", "0000000000000000000000110000011100011000000011100001101110000011000001111111100000001111111110111111111100000000100110001110000011111001000000100110111011010000111111111000001101110111111011111101011001000000100110111111011101100100110101100101110111111011001000000100011000010110011111011101100001101110111111101101010011001000000100110111111011100110111111001101101110111111011001000000000011001100110111111011101100000100111101100100110000011001000000100110010111110111111011100000000100110111111111011000011011101110000111011011011100110100101100100000000000011111101100000000011010111111011101100000100110111111111111101011011101111110111011000001100001101100100100000010011011111101100000110010000110011011101101000010110111111111101101111011101111110100001000011000100110000100101100010011010000101100100011010010000110010001100001000010111111011101111011011111111110110100001011011101100110000100110000011011111101100100000010010011011000011000001101110111111011101101011111111111110110010000011011101111110101100000000011011111100000000000010011010010110011101101101110000111011101100001101111111110110010000000011101111110111110100110010000001001100000110010011011110010000011011101111110110011001100000000001001101111110111011011001111110110011101111110110010000001001100101011011111110111011000011011101111100110100001100010000001001101111110111010011010110010011011101111110110010000001001101011111101111110111011000003251111110000101101110110010000001001111100000111000110010000000011111111110111111111000000011111111000001100000111011000011100000001100011100000110000000000000000000000", // tmp/microban4.101
534
	//"42", "000001100000000110110000000001101100000000000001100000001111111000000011111110000000000001100000001100011000000011000110000000000011011000110110110110001101101101100000000011111101111110111111011111101111110000000001101101101100011011011011000110110000000000001000100000000010001000000000100000000001101101101100011011011011000110110000000011111101111110111111011111101111110000000011011000110110110110001101101101100000000001000000000100010000000001000100000000000011011000110110110110001101101101100000000011111101111110111111011111101111110000000001101101101100011011011011000110110000000000011000110000000110001100000001100110011011011111110110110111111101101101111111111111101101101111111011011011111110110011110001100000001100011000000011000110000010010011011000110110110110001101101101100110011011111101111110111111011111101111110110011001101101101100011011011011000110110010010000011000110000000110001100000001100011110110011111110110110111111101101101111111111111001101101111111011011011111110110110011011000000001100011000000011000110000000000110011000110110110110001101101101100000000111111101111110111111011111101111110000000011001101101100011011011011000110110000000000001000100000000010001000000000100000000001101101101100011011011011000110110000000011111101111110111111011111101111110000000011011000110110110110001101101101100000000001000000000100010000000001000100000000000011011000110110110110001101101101100000000011111101111110111111011111101111110000000001101101101100011011011011000110110000000000001000100000000010001000000000100000000001101101101100011011011011000110110000000011111101111110111111011111101111110000000011011000110110110110001101101101100000000001000000000100010000000001000100000000000011011000110110110110001101101101100000000011111101111110111111011111101111110000000001101101101100011011011011000110110000000000011000110000000110001100000001300000000000011111110000000111111100000005100000000000001101100000000011011000000001200000", // tmp/microban4.102
535

  
536
	  "6", "001110131010101121111101010111051100", // tmp/minicosmos.1
537
	  "6", "001110131010101121111101030211051100", // tmp/minicosmos.2
538
	  "6", "001110131010101121121101030231051100", // tmp/minicosmos.3
539
	  "6", "000011111311112011010010111111150111110000", // tmp/minicosmos.4
540
	  "6", "000011111311142011010010111111150111110000", // tmp/minicosmos.5
541
	  "6", "000011111411142011010010131111150111110000", // tmp/minicosmos.6
542
	  "6", "011100010310131111212011001510001010001110", // tmp/minicosmos.7
543
	  "6", "011100020310131111212031001510001010001110", // tmp/minicosmos.8
544
	  "6", "011100030100111351101101102121111000", // tmp/minicosmos.9
545
	  "6", "011100030100112351101101102231111000", // tmp/minicosmos.10
546
	  "6", "011100120100111111120101010311011310000510", // tmp/minicosmos.11
547
	  "6", "011100120100111111120101010311021330000510", // tmp/minicosmos.12
548
	  "7", "0000110013111011010302521110010101101111110110000", // tmp/minicosmos.13
549
	  "7", "0000110013111011010302522110010101101113110110000", // tmp/minicosmos.14
550
	  "6", "000110131110112010010211151131111000", // tmp/minicosmos.15
551
	  "6", "000110131310112010010211151131211000", // tmp/minicosmos.16
552
	  "7", "00001110001141001131001111001211000105000011110000111000", // tmp/minicosmos.17
553
	  "7", "00001110001141001131001141001211000105000011110000111000", // tmp/minicosmos.18
554
	  "6", "110000111110111110001000133110121251000111", // tmp/minicosmos.19
555
	  "6", "110000111110111110001000133310122251000111", // tmp/minicosmos.20
556
	  "5", "11100111110111100030113101511100212", // tmp/minicosmos.21
557
	  "5", "11100121110131100030113101511100212", // tmp/minicosmos.22
558
	  "7", "011100001110000133100011010001001100121512110010111111110000110", // tmp/minicosmos.23
559
	  "7", "011100001130000133100011020001001100121512110010111111110000110", // tmp/minicosmos.24
560
	  "7", "0000011000122101330110101050111111111101110000011", // tmp/minicosmos.25
561
	  "7", "0000011000122101330110101050114111111101110000011", // tmp/minicosmos.26
562
	  "6", "011000011111010211040030111111101511111100", // tmp/minicosmos.27
563
	  "6", "011000011111010211040030111141101511111100", // tmp/minicosmos.28
564
	  "6", "111011111111010211111100101210133010001150", // tmp/minicosmos.29
565
	  "6", "111011111111010212111100101410133010001150", // tmp/minicosmos.30
566
	  "5", "111001011021031115112003011110", // tmp/minicosmos.31
567
	  "5", "110001111012031015110203001110", // tmp/minicosmos.32
568
	  "5", "00111111111411004050131101210001100", // tmp/minicosmos.33
569
	  "5", "01100111001411004050131101211100111", // tmp/minicosmos.34
570
	  "5", "011110100111111141400302001510", // tmp/minicosmos.35
571
	  "6", "111000101100111431001105001421001100", // tmp/minicosmos.36
572
	  "5", "00110011101143110105114210011000110", // tmp/minicosmos.37
573
	  "6", "001100001211053331121210111000110000", // tmp/minicosmos.38
574
	  "6", "001110111110110200053331020201011111011000", // tmp/minicosmos.39
575
	  "5", "001100121053331212011011111100", // tmp/minicosmos.40
576

  
577
	  "7", "011100001111110014401110414511141001100110011111002301100110000", // tmp/picocosmos.1
578
	  "8", "00000011000001110000125200013311001412000113110002320000113100001010000011100000", // tmp/picocosmos.2
579
	  "7", "00011000001100114341111454010124411010111011110001110000", // tmp/picocosmos.3
580
	  "7", "0001100014141011414101141411113141500210000011000", // tmp/picocosmos.4
581
	  "6", "001600011100014100111311104141111410014100001100", // tmp/picocosmos.5
582
	  "6", "001100013231112311123205012321013231000110", // tmp/picocosmos.6
583
	  "6", "011000011311042221111311144440111350011000", // tmp/picocosmos.7
584
	  "7", "000110000111110044421011111011440001111100004345000111100011000", // tmp/picocosmos.8
585
	  "7", "00110001113110114041001141610140411001414000111100011100", // tmp/picocosmos.9
586
	  "7", "01100001111110144544101101110144310011411000121000001100", // tmp/picocosmos.10
587
	  "7", "00011000001110001241000414111144411111310001451000110000", // tmp/picocosmos.11
588
	  "5", "016100323001410014100141001411114111111001100", // tmp/picocosmos.12
589
	  "6", "011000014110011111004141001100000100011311014441111110116000110000", // tmp/picocosmos.13
590
	  "7", "00110110111111010101111444105041130114441000121100000110", // tmp/picocosmos.14
591
	  "7", "0011000051310001241001334241102210111131110011000", // tmp/picocosmos.15
592
	  "6", "001500114141143411114141121410001110000110", // tmp/picocosmos.16
593
	  "5", "016100323001410014100141011410114111141100110", // tmp/picocosmos.17
594
	  "6", "001100124111114101114435014110114410111100", // tmp/picocosmos.18
595
	  "6", "000011000131114111114411011401014211054100001100", // tmp/picocosmos.19
596
	  "6", "001100011100114441114501014421011111010300011100", // tmp/picocosmos.20
597
	  /*
598
	  "5", "000110001111111101311110000100003000010000100111312221100150", // tmp/microban5.1
599
	  "11", "0000000111100000001151000000012000000110320000001101200000013132001110110120011113300000000011000000000110000000001100000", // tmp/microban5.2
600
	  "9", "001101100003203200121131131131121121003252300121121131131131121002302300001101100", // tmp/microban5.3
601
	  "10", "111100000011210000000021000000001111111111100013115022200310112220011000011003100000011310000001110000000011100000001310000000031000000001100000000310000000131100000111110000011100", // tmp/microban5.4
602
	  "5", "001110111111441144110324514411114410111100111", // tmp/microban5.5
603
	  "6", "111100144100141110114411111441054230111441114411141110144100111100", // tmp/microban5.6
604
	  "7", "01100000111310010031001001100100310015011001003100100110010001111222211110110", // tmp/microban5.7
605
	  "9", "110000011111111111130000001010112222010101000010101110010111111010050111011110000000031000000013100000011310000001110000000110", // tmp/microban5.8
606
	  "8", "01100000013000000221100011301110111000500100011101110311000112200000031000000110", // tmp/microban5.9
607
	  "6", "011510011011023032011411023032011011001111", // tmp/microban5.10
608
	  "6", "011510011011023032011011023432011011023032011011001111", // tmp/microban5.11
609
	  "7", "1100110112321111030110114115010301011232101110110", // tmp/microban5.12
610
	  "5", "01110011110243102200113311151100011", // tmp/microban5.13
611
	  "6", "001100003110014221113131152240001131000111", // tmp/microban5.14
612
	  "6", "111100110100143411124211143411110100015100", // tmp/microban5.15
613
	  "6", "011000013000111000143211542211143211111000013000011000", // tmp/microban5.16
614
	  "6", "001100003100001100001000112210134211110315000111", // tmp/microban5.17
615
	  "7", "01100001111110110133001000100512131112140112141110011000", // tmp/microban5.18
616
	  "11", "0000010000000001210000000114110000011323110001132323110124235324210113232311000113231100000114110000000121000000000100000", // tmp/microban5.19
617
	  "7", "1121110123230123132311235321132313210323210111211", // tmp/microban5.20
618
	  "8", "1111111112323231132323211230023113200321123232311323232151111111", // tmp/microban5.21
619
	  "9", "000121100011313110110020010130111031212151212130111031010020011011313110001121000", // tmp/microban5.22
620
	  "9", "111000111101000101113131311001222100003202300001222100113131311101001005111001111", // tmp/microban5.23
621
	  "9", "111101111101101101114434411114212411003151300114212411114434411101101101111101111", // tmp/microban5.24
622
	  "8", "1321112123321233123323321121132112351211233233213321233212111231", // tmp/microban5.25
623
	  "11", "2111121111210011011001100013100011100333001111132223111203325233021113222311111003330011100013100011001101100121111211112", // tmp/microban5.26
624
	  
625
	  */
626
	  };
627

  
628
	  public static final int BUILTIN_LEVELS = bl.length/2;
629

  
630
///////////////////////////////////////////////////////////////////
631

  
632
	private SokobanDatabase( Context co )
633
	{
634
	    context= co;
635
	    
636
	    mLevels = SokobanLevels.getInstance();
637
	    numrunnings = 0;
638
	    numplayings = 0;
639
	    uniqueid    = 0;
640
	    username    ="";
641
	    veriname    ="";
642
	    scrollpos   = 0;
643
	    
644
	    for(int i=0; i<BUILTIN_LEVELS; i++)
645
	      {
646
	      int xlen = Integer.valueOf(bl[2*i]).intValue();
647
	      SokobanLevel sl = new SokobanLevel( null, null, INVALID, INVALID, null, false,xlen, bl[2*i+1]);
648
	      mLevels.addLevel(sl,i);
649
	      }
650

  
651
	    hash = computeHash();
652
	    
653
	    try
654
		  {
655
		  SharedPreferences settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
656
		  readPreferences(settings);
657
		  }
658
		catch( Exception ex )
659
		  {
660
		  Log.e( TAG_DB, "Failed to retrieve preferences: "+ex.toString());
661
		  }
662
	    
663
	    if( veriname==null ) veriname="";
664
	    if( username==null ) username="";  
665
	    if( uniqueid==0 ) uniqueid = getDeviceID();
666

  
667
	    mLevels.setScroll(scrollpos);
668
	    mLevels.updateMyRecords(username);
669

  
670
	    if( numrunnings==0 ) SokobanCanvas.setState(SokobanCanvas.STATE_HELP);
671

  
672
	    if( hash != computeHash() )  // someone has been messing with RMS !
673
	      {
674
	    Log.e(TAG_DB, "messing in DB");	
675
	    	
676
	      SokobanLevel sl;
677
	      veriname = "";
678

  
679
	      for(int i=0; ; i++)
680
	        {
681
	        sl = SokobanLevels.getLevel(i);
682
	        if( sl==null ) break;
683
	        sl.resetPrivate();
684
	        }
685
	      }
686

  
687
	    finishedBootup = true;
688
	    SokobanCanvas.setRepaint();
689
	}
690

  
691
///////////////////////////////////////////////////////////////////
692

  
693
	private void readPreferences(SharedPreferences settings)
694
	{
695
		String key, sett;
696
		int num;
697
		
698
		for (Map.Entry<String, ?> entry : settings.getAll().entrySet()) 
699
		{
700
            Object val = entry.getValue();
701
        
702
            if( val!=null )
703
            {
704
            	key = entry.getKey();
705
            
706
            	try
707
            	{
708
            		num = Integer.valueOf(key).intValue();
709
            		sett= String.valueOf(val);
710
            		
711
            		switch(num)
712
            		{
713
            		case 1 : username    = sett; break;
714
            		case 2 : veriname    = sett; break;
715
            		case 3 : hash        = Integer.valueOf(sett).intValue(); break;
716
            		case 4 : numrunnings = Integer.valueOf(sett).intValue(); break;
717
            		case 5 : numplayings = Integer.valueOf(sett).intValue(); break;
718
            		case 6 : uniqueid    = Integer.valueOf(sett).intValue(); break;
719
            		case 7 : scrollpos   = Integer.valueOf(sett).intValue(); break;
720
            		default: recoverLevel(num,sett); break;
721
            		}
722
            	}
723
            	catch( Exception ex )
724
            	{
725
            		Log.e(TAG_DB, "error retrieving preference "+String.valueOf(val)+" :"+ex.toString());
726
            	}                     	     
727
            }   
728
        }
729
	}
730

  
731
///////////////////////////////////////////////////////////////////
732
	  
733
	private void recoverLevel(int id, String value)
734
	{
735
		int begin=0,end=0,lvlNum;
736
		String tmp;
737

  
738
		//Log.d(TAG_DB, "recovering level "+id+" :"+value);
739
		
740
		end = value.indexOf(" ", begin+1);
741

  
742
		if( end<0 )
743
		{
744
			Log.e(TAG_DB, "error recovering level! value: "+value);
745
			return;
746
		}
747

  
748
		tmp = value.substring(begin,end);
749
		lvlNum = Integer.valueOf(tmp).intValue();
750
		
751
		recoverLevelData(id,lvlNum,end,value);
752
	}
753

  
754
///////////////////////////////////////////////////////////////////
755

  
756
	private void recoverLevelData(int id, int num, int begin, String value)
757
	{
758
		int end;
759
		String tmp;
760
		SokobanLevel sl;
761
		int intrinsic   = INVALID;
762
		int mytime      = INVALID;
763
		int mymoves     = INVALID;
764
		int worldtime   = INVALID;
765
		int worldmoves  = INVALID;
766
		String worldname   = "";
767
		String worldcountry= "";
768
		boolean submitted  = false;
769

  
770
		// recover intrinsic num
771
		end = value.indexOf(" ", begin+1);
772

  
773
		if( end<0 )
774
		{
775
			Log.e(TAG_DB, "1 error recovering builtin level, value: "+value);
776
			return;
777
		}
778

  
779
		try
780
		{
781
			tmp = value.substring( begin+1,end);
782
			intrinsic = Integer.valueOf(tmp).intValue();
783
		}
784
		catch(Exception ex1 ) {Log.e(TAG_DB, "1: "+ex1.toString()); }
785

  
786
		begin = end;
787

  
788
		// recover mytime
789
		end = value.indexOf(" ", begin+1);
790

  
791
		if( end<0 )
792
		{
793
			Log.e(TAG_DB, "1 error recovering builtin level, value: "+value);
794
			return;
795
		}
796

  
797
		try
798
		{
799
			tmp = value.substring( begin+1,end);
800
			mytime = Integer.valueOf(tmp).intValue();
801
		}
802
		catch(Exception ex1 ) {Log.e(TAG_DB, "1: "+ex1.toString()); }
803

  
804
		begin = end;
805

  
806
		// recover mymoves
807
		end = value.indexOf(" ", begin+1);
808

  
809
		if( end<0 )
810
		{
811
			Log.e(TAG_DB, "2 error recovering builtin level, value: "+value);
812
			return;
813
		}
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff